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

Материал из roboforum.ru Wiki
Перейти к: навигация, поиск
Строка 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

C115.GIF

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

Shema C115 MiniBot.GIF

Начнем подключение ЖКИ с кода товарища под ником Ведущий специалист.
Код взят от сюда 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>