Czy ma ktoś może jakąś sprawdzoną procedurkę odczytu 4 wejść układu PCF8591 - do których podłączone są LM35. Kostkę procek wykrywa pod adresem 158. Do wejścia Vref podpięty LM385 1,2 z rezystorem 470 Ohm.
Pozdrawiam
Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięPCF8591 - odczyt wejść
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
$regfile = "89C2051.dat"
Config Scl = P1.0
Config Sda = P1.1
Config Lcdpin = Pin , Db4 = P1.4 , Db5 = P1.5 , Db6 = P1.6 , Db7 = P1.7 , E = P1.2 , Rs = P1.3
Config Lcd = 16 * 2 ' LCD 16*2
Cursor Off Noblink ' Kursor
Cls ' LCD Clean
Declare Sub Odczyt_pcf8591(kanal As Byte )
Dim Pomiar As Byte , Pomiar1 As Integer
Dim Kanal As Byte
'Dim Read_ad As Const 145 , Write_ad As Const 144
Const Read_ad = 145
Const Write_ad = 144
Dim U0 As Integer , U1 As Integer , U2 As Integer , U3 As Integer
Do
Call Odczyt_pcf8591(0) 'Kanał 0
U0 = Pomiar1
Call Odczyt_pcf8591(1) 'Kanał 1
U1 = Pomiar1
Call Odczyt_pcf8591(2) 'Kanał 2
U2 = Pomiar1
Call Odczyt_pcf8591(3) 'Kanał 3
U3 = Pomiar1
Waitms 200
Cls
Upperline
Lcd "U0= " ; U0 'U 0
Locate 1 , 10
Lcd "U1= " ; U1 'U 1
Lowerline
Lcd "U2= " ; U2 'U 2
Locate 2 , 10
Lcd "U3= " ; U3 'U 3
Loop
End
Sub Odczyt_pcf8591(kanal As Byte)
Dim Kanal1 As Byte
I2cstart ' I2C start
I2cwbyte Write_ad ' Wpis adresu PCF8591
I2cwbyte Kanal1 ' Kanał
I2cstart
I2cwbyte Read_ad ' Odczyt adresu PCF8591
I2crbyte Pomiar , Ack ' Odczyt kilku bajtów
I2crbyte Pomiar , Nack ' Odczyt ostatniego bajtu
I2cstop
Pomiar1 = Pomiar
Pomiar1 = Pomiar1 * 128
Pomiar1 = Pomiar1 / 133
End Sub
Config Scl = P1.0
Config Sda = P1.1
Config Lcdpin = Pin , Db4 = P1.4 , Db5 = P1.5 , Db6 = P1.6 , Db7 = P1.7 , E = P1.2 , Rs = P1.3
Config Lcd = 16 * 2 ' LCD 16*2
Cursor Off Noblink ' Kursor
Cls ' LCD Clean
Declare Sub Odczyt_pcf8591(kanal As Byte )
Dim Pomiar As Byte , Pomiar1 As Integer
Dim Kanal As Byte
'Dim Read_ad As Const 145 , Write_ad As Const 144
Const Read_ad = 145
Const Write_ad = 144
Dim U0 As Integer , U1 As Integer , U2 As Integer , U3 As Integer
Do
Call Odczyt_pcf8591(0) 'Kanał 0
U0 = Pomiar1
Call Odczyt_pcf8591(1) 'Kanał 1
U1 = Pomiar1
Call Odczyt_pcf8591(2) 'Kanał 2
U2 = Pomiar1
Call Odczyt_pcf8591(3) 'Kanał 3
U3 = Pomiar1
Waitms 200
Cls
Upperline
Lcd "U0= " ; U0 'U 0
Locate 1 , 10
Lcd "U1= " ; U1 'U 1
Lowerline
Lcd "U2= " ; U2 'U 2
Locate 2 , 10
Lcd "U3= " ; U3 'U 3
Loop
End
Sub Odczyt_pcf8591(kanal As Byte)
Dim Kanal1 As Byte
I2cstart ' I2C start
I2cwbyte Write_ad ' Wpis adresu PCF8591
I2cwbyte Kanal1 ' Kanał
I2cstart
I2cwbyte Read_ad ' Odczyt adresu PCF8591
I2crbyte Pomiar , Ack ' Odczyt kilku bajtów
I2crbyte Pomiar , Nack ' Odczyt ostatniego bajtu
I2cstop
Pomiar1 = Pomiar
Pomiar1 = Pomiar1 * 128
Pomiar1 = Pomiar1 / 133
End Sub
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 40 gości