Подключаем монохромный графический 94x64 ЖКИ от Motorola C115 к МиниБоту — различия между версиями
EdGull (обсуждение | вклад) |
EdGull (обсуждение | вклад) |
||
Строка 11: | Строка 11: | ||
Начнем подключение ЖКИ с кода товарища под ником Ведущий специалист. <br /> | Начнем подключение ЖКИ с кода товарища под ником Ведущий специалист. <br /> | ||
Код взят от сюда http://bascomavr.3bb.ru/viewtopic.php?id=109 <br /> | Код взят от сюда http://bascomavr.3bb.ru/viewtopic.php?id=109 <br /> | ||
+ | |||
+ | |||
+ | <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> |
Версия 15:27, 10 июля 2008
Характеристики:
- Монохромный
- Разрешение 94x64
- LCD чип ST7558 - Wintek Lcd
- Технология FSTN
- Адресс 0x78
Начнем подключение ЖКИ с кода товарища под ником Ведущий специалист.
Код взят от сюда 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>