Az Ext1 panelen található TCN75 hőmérő élesztésével probálkozok. Felmerült néhány probléma.
- 1*16-os LCD-t használok de a kijelző fele csak akkor müködik ha Locate parancsal a 8. karakter utáni kiírásokat a második sor 1. poziciójába teszem.
- Az egyedi karaktereket bizonytalanul kezeli, előfordul hogy néhány másodperc után szétesnek, és mint a programban is látszik a 2. és a 3. karakter ugyanaz de csak a 3.-ra hivatkozva müködik. 2. csak krix-kraxokat ad.
Mi lehet a probléma?
Kód: Egész kijelölése
$regfile = "m8def.dat"
$crystal = 8000000
Config Lcd = 16 * 1a 'LCD tipusa
Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portd.7 , Db6 = Portb.0 , Db7 = Portb.1 , E = Portd.5 , Rs = Portd.4 ' LCD lábkiosztás Ext11-hez
Config Lcdmode = Port
Config Portb.5 = Output
Config Sda = Portc.4
Config Scl = Portc.5
Deflcdchar 1 , 14 , 12 , 14 , 12 , 14 , 31 , 31 , 14 ' homero
Deflcdchar 2 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32
Deflcdchar 3 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32 ' replace ? with number (0-7)
Dim Tempmsb As Byte
Dim Templsb As Byte
Dim Th As Byte
Dim Tl As Byte
Dim Confg As Byte
Dim Count As Byte
Dim Slope As Byte
Do
Goto Loop
'write TH
I2cstart
I2cwbyte &H90
I2cwbyte &HA1
I2cwbyte 25
I2cstop
'--------------
'write TL
I2cstart
I2cwbyte &H90
I2cwbyte &HA2
I2cwbyte 20
I2cstop
'--------------
'read TH
I2cstart
I2cwbyte &H90
I2cwbyte &HA1
I2cstop
I2cstart
I2cwbyte &H91
I2crbyte Th , Nack
I2cstop
'--------------
'read TL
I2cstart
I2cwbyte &H90
I2cwbyte &HA2
I2cstop
I2cstart
I2cwbyte &H91
I2crbyte Tl , Nack
I2cstop
'--------------
'read config
I2cstart
I2cwbyte &H90
I2cwbyte &HAC
I2cstop
I2cstart
I2cwbyte &H91
I2crbyte Confg , Nack
I2cstop
'--------------
Goto Loop
'read counter
Readcnt:
I2cstart
I2cwbyte &H90
I2cwbyte &HA8
I2cstop
I2cstart
I2cwbyte &H91
I2crbyte Count , Nack
I2cstop
Return
'--------------
'read slope
Readslp:
I2cstart
I2cwbyte &H90
I2cwbyte &HA9
I2cstop
I2cstart
I2cwbyte &H91
I2crbyte Slope , Nack
I2cstop
Return
'--------------
'read config
I2cstart
I2cwbyte &H90
I2cwbyte &HAC
I2cstop
I2cstart
I2cwbyte &H91
I2crbyte Confg , Nack
I2cstop
'start convert
I2cstart
I2cwbyte &H90
I2cwbyte &H00
I2cstop
'-------------
Loop:
I2cstart
I2cwbyte &H90
I2cwbyte &H01
I2cstop
I2cstart
I2cwbyte &H90
I2cwbyte &H18
I2cstop
'read temperature
I2cstart
I2cwbyte &H90
I2cwbyte &H00
I2cstop
I2cstart
I2cwbyte &H91
I2crbyte Tempmsb , Ack
I2crbyte Templsb , Nack
I2cstop
Wait 1
Portb.5 = 1
Initlcd
Cls
Cursor Off Noblink
If Templsb = 128 Then Templsb = 5 Else Templsb = 0
Locate 1 , 1
Lcd Chr(1) ; " Temp :"
Locate 2 , 1
Lcd Tempmsb ; "," ; Templsb ; "c" ; Chr(3) ;
Waitms 1000
Goto Loop
Loop
End