Mma7455 (ivmeölçer) & 16f877

Başlatan homer380, 20 Ekim 2013, 12:00:54

homer380

Bayramı fırsat bilip ebay'dan almış olduğum mma7455 ivemölçer ile calışmam. Tatilin son günü olduğu için daha fazla geliştiremedim. Aslında bulduğum örnekleri protona uyarladım. (picbasic den protona geçtim.)
Device 16F877A		'Proğramlanacak cihaz 16F877
@ CONFIG_REQ 
@ __config CP_ALL & CPD_ON & WDT_OFF & HS_OSC & PWRTE_OFF & BODEN_OFF & WRT_1FOURTH & LVP_OFF & DEBUG_OFF
Xtal =20			'Osilatör Hızı 20 Mhz
All_Digital= TRUE
	        
Declare LCD_DTPort  =PORTB      'GLCD DATA PORTLARI PORTB'YE BAĞLI
Declare LCD_RSPin  =PORTA.0      'GLCD RS PİNİ PORTC.5 BAĞLI bende d/i
Declare LCD_ENPin  =PORTA.2      'GLCD ENABLE PİNİ PORTC.1 BAĞLI
Declare LCD_RWPin  =PORTA.1     'GLCD RW PİNİ PORTC.4 BAĞLI
Declare LCD_CS1Pin =PORTD.6    'GLCD CS1 PİNİ PORTC.2 BAĞLI
Declare LCD_CS2Pin =PORTD.7    'GLCD CS2 PİNİ PORTC.3 BAĞLI
Declare GLCD_CS_Invert On
Declare LCD_Type =  GRAPHIC      'GLCD TİPİ GRAFİK 
Declare Internal_Font=  On                 
Declare Font_Addr =0

Symbol  datapin= PORTD.1 
Symbol clkpin= PORTD.0
Symbol cspin=PORTD.2

Dim address As Word
Dim senddata As Byte
Dim ReceiveData As Byte

Cls                                              'GLCD EKRANINI TEMİZLE
Print At 5,0,"KRC"                               'ekran çalışıyor mu ?
DelayMS 1500


kurulum:
address=$16:senddata=%01100101: GoSub DataOut

address = $10: senddata = 120& $FF: GoSub DataOut 'x eksenine ayarlanan (Calibration) değeri ata ; LOWBYTE
address = $11: senddata = 120 >> 8: GoSub DataOut '                               ; HIGHBYTE

address = $12: senddata = 120& $FF: GoSub DataOut 'y eksenine ayarlanan değeri ata ; LOWBYTE
address = $13: senddata = 120 >> 8: GoSub DataOut '                               ; HIGHBYTE

address = $14: senddata = 0& $FF: GoSub DataOut 'z eksenine ayarlanan değeri ata  ; LOWBYTE
address = $15: senddata = 0 >> 8: GoSub DataOut '                               ; HIGHBYTE

GoTo olc

olc:
Cls
address = $06:GoSub DataIn          'x ekseni ölçüleçek haber ver adres kaydedicisi ve oku (register address)
Print At 0,0,"X:",@ReceiveData      ' x değerini ekrana yaz

address = $07:GoSub DataIn          'y ekseni ölçüleçek haber ver adres kaydedicisi (register address)
Print At 1,0,"Y:",@ReceiveData      'y değerini ekrana yaz

address = $08:GoSub DataIn          'z ekseni ölçüleçek haber ver adres kaydedicisi (register address)
Print At 2,0,"Z:",@ReceiveData      'z değerini ekrana yaz

DelayMS 100
GoTo olc



DataOut:
Low cspin                                              'spi haberleşme başlayacak cs low çek
SHIFTOUT datapin, clkpin, MsbFirst, [(address|%1000000)<<1] 'secilen  adres kaydedicisi
SHIFTOUT datapin, clkpin, MsbFirst, [senddata]         'adres kaydedicisin senddata değerini yaz
High cspin                                             'spi haberleşme bitti
Return


DataIn:
Low cspin                                              'spi haberleşme başlayacak cs Low çek
SHIFTOUT datapin, clkpin, MsbFirst, [address<<1]       'secilen  adres kaydedicisi
SHIFTIN datapin, clkpin, MsbPre, [ReceiveData]         'adres kaydedicisinden gelen değeri oku
High cspin                                             'spi haberleşmenin sonu
Return

Include "font.inc"


Okunan veriler ham veriler olup işlenmemiştir.

Buda videosu

http://www.youtube.com/watch?v=B0QdOAK7Rl0#





isikyasar

GÜZEL BİR ÇALŞMA OLMUŞ.

ELİNE - EMEĞİNE SAĞLIK