Подключаем монохромный графический 94x64 ЖКИ от Motorola C115 к МиниБоту
Характеристики:
- Монохромный
- Разрешение 94x64
- LCD чип ST7558 - Wintek Lcd
- Технология FSTN
- Адресс 0x78
Аппаратная часть:
Переделка по железу заключается в подпаивании подтягивающих резисторов на 10к по шине I2C.
Сам ЖКИ прекрасно вписывается своими размерами в плату МиниБота. Крепится к плате двухстороним скотчем.
Программная часть:
Начнем описывание ЖКИ с кода товарища под ником Ведущий специалист.
Код взят от сюда http://bascomavr.3bb.ru/viewtopic.php?id=109
В итоге как нам и обещал товарищ Ведущий специалист видим на экране вертикальную черту о восьми пиксалах.
А дальше дело за вами... :-)))
<source lang="vb">
$regfile = "m32DEF.dat" $crystal = 11059200 $baud = 19200
'знакогенератор еще не загонял... 'программа переконвертированна из си файла, пока не до конца ' но уже проверенна Declare Sub Column_set(byval Y As Byte) Declare Sub Video_mode(byval Vid_mode As Byte) Declare Sub Clear_lcd() Declare Sub Lcd_init() Res Alias Portd.3 : Set Ddrd.3 Config Pinc.7 = Output
Dim I As Word , Temp As Byte Dim X As Byte , Y As Byte Config Scl = Portc.0 Config Sda = Portc.1 I2cinit
Call Lcd_init()
I2cstart I2cwbyte &H78 I2cwbyte &H40 'команда записи в дисплей
'............ '............ '............ можно так все 918 байт выводить
'Call Column_set(8) I2cwbyte &HFF 'вывести вертикальную строчку в 8 бит I2cstop Wait 3
Do
Portc.7 = 1 : Wait 1 Portc.7 = 0 : Wait 1
Loop
Sub Column_set(byval Y As Byte) 'Выбор координаты по Y
If X < 8 Then I2cstart ' I2cwbyte &H78 ' I2cwbyte &H00 ' I2cwbyte &H20 ' I2cwbyte &H80 Temp = X + &H40 I2cwbyte X I2cstop ' End If
End Sub
Sub Video_mode(byval Vid_mode As Byte) 'выбор режима вывода
'1 -инверсия 0 -нормальный I2cstart If Vid_mode = 1 Then I2cwbyte &H78 I2cwbyte &H00 I2cwbyte &H20 I2cwbyte &H0C I2cstop Else I2cwbyte &H78 I2cwbyte &H00 I2cwbyte &H20 I2cwbyte &H0D I2cstop End If
End Sub
Sub Clear_lcd() 'очистка диспа
I2cstart I2cwbyte &H78 I2cwbyte &H40 For I = 0 To 918 'Заполняем весь контент диспа I2cwbyte &H00 Next I
End Sub
Sub Lcd_init() 'инициализация дисплея
Reset Res Waitms 500 Set Res
I2cstop Waitms 100
I2cstart
I2cwbyte &H78
I2cwbyte &H00
I2cwbyte &H2E
I2cwbyte &H21
I2cwbyte &H12 I2cwbyte &HC0 I2cwbyte &H0B I2cwbyte &H20
I2cwbyte &H11 I2cwbyte &H0C I2cwbyte &H40 I2cwbyte &H80 I2cstop
I2cstart I2cwbyte &H78 I2cwbyte &H00 I2cwbyte &H20 I2cwbyte &H08 I2cstop
Call Video_mode(1) 'нормальный режим Call Clear_lcd() 'очистим дисплей
End Sub
</source>