Подключаем монохромный графический 94x64 ЖКИ от Motorola C115 к МиниБоту

Материал из roboforum.ru Wiki
Версия от 09:10, 6 января 2009; MiBBiM (обсуждение | вклад) (ссылка на инет магазин)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
MiniBot C115.jpg
C115.GIF

Характеристики:
- Монохромный
- Разрешение 94x64
- LCD чип ST7558 - Wintek Lcd
- Технология FSTN
- Адресс 0x78
- Прекрасный паябельный шлейф

Купить можно здесь http://www.MiniBot.ru

Shema C115 MiniBot.GIF

Аппаратная часть:
Переделка по железу заключается в подпаивании двух подтягивающих резисторов на 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>