Программа для LCD2004A 4х20 с I2C модулем на Bascom-AVR
с
использованием библиотеки lcd_i2c_pcf8574.lib
$Regfile="attiny13a.dat" '!Программа
занимает почти всю память
$hwstack=32
$swstack=8
$framesize=16
$lib "lcd_i2c_pcf8574.lib"
Config Pinb.5 = Input
Set Portb.5 'включить внутренний подтягивающий резистор
Config Portb.2 = Output
Config Portb.0 = Output
Config Pinb.1 = Output
Waitms 100
'конфигурация I2C
Config Scl = PortB.3 'линия тактовых импульсов
Config Sda = PortB.4 'линия данных
CONFIG I2CDELAY = 10 'скорость - 100 кГц
I2cinit
Config Lcd = 20 * 4
Dim _out_rw As Byte
Dim _out_e2 As Byte
Dim _lcd_e As Byte
Const Pcf8574_lcd = &H4E ' Defines the address of the I/O expander for LCD
Const Pcf_e2_is_output = 1 ' festlegen das E2 ein Ausgang ist
Const Pcf_rw_is_output = 1 ' festlegen das RW ein Ausgang ist
Const Pcf_rs = 0
Const Pcf_rw = 1
Const Pcf_e1 = 2 '2
Const Pcf_e2 = 3 '3
Const Pcf_d4 = 4
Const Pcf_d5 = 5
Const Pcf_d6 = 6
Const Pcf_d7 = 7
_lcd_e = 128 ' 64=E2 128=E1 192=E1+E2
_out_rw = 1 ' Ausgang ein schalten
_out_e2 = 1
Cursor Off
Cls
Toggle _out_rw
Do
Cls
Lcd " Temp: "
Lowerline
Lcd "Humidity: "
Thirdline
Lcd " Date: "
Fourthline
Lcd " Time: "
Locate 1 , 19
Lcd "." : Wait 1
Locate 1 , 19
Lcd "o" : Wait 1
Locate 1 , 19
Lcd "O" : Wait 1
Locate 1 , 19
Lcd "o" : Wait 1
Loop
End
$swstack=8
$framesize=16
$lib "lcd_i2c_pcf8574.lib"
Config Pinb.5 = Input
Set Portb.5 'включить внутренний подтягивающий резистор
Config Portb.2 = Output
Config Portb.0 = Output
Config Pinb.1 = Output
Waitms 100
'конфигурация I2C
Config Scl = PortB.3 'линия тактовых импульсов
Config Sda = PortB.4 'линия данных
CONFIG I2CDELAY = 10 'скорость - 100 кГц
I2cinit
Config Lcd = 20 * 4
Dim _out_rw As Byte
Dim _out_e2 As Byte
Dim _lcd_e As Byte
Const Pcf8574_lcd = &H4E ' Defines the address of the I/O expander for LCD
Const Pcf_e2_is_output = 1 ' festlegen das E2 ein Ausgang ist
Const Pcf_rw_is_output = 1 ' festlegen das RW ein Ausgang ist
Const Pcf_rs = 0
Const Pcf_rw = 1
Const Pcf_e1 = 2 '2
Const Pcf_e2 = 3 '3
Const Pcf_d4 = 4
Const Pcf_d5 = 5
Const Pcf_d6 = 6
Const Pcf_d7 = 7
_lcd_e = 128 ' 64=E2 128=E1 192=E1+E2
_out_rw = 1 ' Ausgang ein schalten
_out_e2 = 1
Cursor Off
Cls
Toggle _out_rw
Do
Cls
Lcd " Temp: "
Lowerline
Lcd "Humidity: "
Thirdline
Lcd " Date: "
Fourthline
Lcd " Time: "
Locate 1 , 19
Lcd "." : Wait 1
Locate 1 , 19
Lcd "o" : Wait 1
Locate 1 , 19
Lcd "O" : Wait 1
Locate 1 , 19
Lcd "o" : Wait 1
Loop
End
lcd_i2c_pcf8574.lib с другим примером здесь
Фьюзы
Таблица кодов предназначена для
не библиотечного программирования и для написания собственной библиотеки. Показывает
процесс отправки кодов по I2C. В таблице не только инициализация LCD2004A_ I2C, но способ вывода слов и цифр.
Если сразу послать коды 0x4E 0x3С 0x38 то LCD2004A сразу переключится
с 2х линейного
режима в 4х линейный.
Практически
Спасибо, всё работает!
ОтветитьУдалитьПриветствую! возможно ли подключение двух дисплеев по i2c в bascom? толком ни где не могу найти примеры.
ОтветитьУдалить