Подключаем цветной графический 96х65 пикселей, 4096 цветов ЖКИ от Nokia 3510i к МиниБоту
Этот ЖКИ можно так же как и МиниБот приобрести в http://minibot.webasyst.net/shop/
ВНИМАНИЕ!!! Недоработанная версия
<source lang="vb">
$regfile = "m8def.dat" ' we use the M48 $crystal = 8000000 $baud = 115200
$hwstack = 128 $swstack = 128 $framesize = 128 'Display Pin 1 Reset => AVR Pin B0 ' 2 CS B1 ' 3 GND GND ' 4 Sdata B3 ' 5 Sclk B2 ' 6 Vdigital Vdd (3 Volt) ' 7 Vbooster Vdd ' 8 Vlcd
'----------------Программа работы с экраном от нокии 3510i---------------------- '---------------Одна строка по горизонтали занимает 98 точек-------------------- '------------------------Всего в дисплее 67 строк------------------------------- '---------------------------Итого 6566 байт------------------------------------ 'В режиме Doublesize=1 экран выводит 8 по горизонтали и 4 строки по вертикали Const Lcd_cmd = 0 Const Lcd_prm = 1 Ddrb = &B11111111 Dim Lcd_doublesize As Byte , Temp As Byte , Temp1 As Byte Dim Lcd_posx As Byte Dim Lcd_posy As Byte Dim Lcd_fcolor As Byte Dim Lcd_bcolor As Byte Dim Digit As Byte , Dsa As Byte
Declare Sub Lcd_cls Declare Sub Display_setup Declare Sub Lcd_setcolor(byval Forecolor As Byte , Byval Backcolor As Byte) Declare Sub Lcd_sendbyte(byval Lcd_command As Byte , Byval Lcd_data As Byte) Declare Sub Lcd_setframe(byval Lcd_left As Byte , Byval Lcd_top As Byte , Byval Lcd_width As Byte , Byval Lcd_height As Byte) Declare Sub Lcd_locate(byval Lcd_x As Byte , Byval Lcd_y As Byte) Declare Sub Lcd_print(byval Lcd_text As String) '------------------------------------------------------------------------------- Call Display_setup Call Lcd_setcolor(&Hff , &H00) 'Установим цвет точки и цвет фона Call Lcd_cls ' 'Начало работы программы
Do Dsa = Inkey() Call Lcd_locate(1 , 1) Call Lcd_print( "ABCDEFGHIJKLMN" )
Call Lcd_locate(1 , 2) 'x,y Call Lcd_print( "OPQRSTUVWXYZ" )
Loop
'------------------------------------------------------------------------------- '------------------------------------------------------------------------------- '------------------------------------------------------------------------------- '-----------------------------------Подпрограммы--------------------------------
Sub Lcd_cls
Local R As Integer
Call Lcd_setframe(0 , 0 , 97 , 67) For R = 1 To 6566 Call Lcd_sendbyte(lcd_prm , Lcd_bcolor) Next
End Sub
Sub Lcd_setcolor(byval Forecolor As Byte , Byval Backcolor As Byte)
Lcd_fcolor = Forecolor Lcd_bcolor = Backcolor
End Sub
'-----------Подпрограмма отправки данных либо команды в LCD---------------------
Sub Lcd_sendbyte(byval Lcd_command As Byte , Byval Lcd_data As Byte)
Reset Portb.1 If Lcd_command = Lcd_cmd Then 'команда Portb.1 = 0 '
Portb.3 = 0 Portb.2 = 0 ' Portb.3 = 1
Else 'данные Portb.1 = 0 '
Portb.3 = 0 Portb.2 = 1 ' Portb.3 = 1
End If
Shiftout Portb.2 , Portb.3 , Lcd_data , Msbl
Set Portb.1
End Sub '-------------------Выбор кусочка экрана---------------------- Sub Lcd_setframe(byval Lcd_left As Byte , Byval Lcd_top As Byte , Byval Lcd_width As Byte , Byval Lcd_height As Byte)
Call Lcd_sendbyte(lcd_cmd , &H2A) Call Lcd_sendbyte(lcd_prm , Lcd_left) Call Lcd_sendbyte(lcd_prm , Lcd_width)
Call Lcd_sendbyte(lcd_cmd , &H2B) Call Lcd_sendbyte(lcd_prm , Lcd_top) Call Lcd_sendbyte(lcd_prm , Lcd_height)
Call Lcd_sendbyte(lcd_cmd , &H2C) '
End Sub '-----------------------------Инициализация дисплея----------------------------- Sub Display_setup
Reset Portb.0 'hard Reset Waitms 5 Set Portb.0
Set Portb.1 Set Portb.2 Set Portb.3
Call Lcd_sendbyte(lcd_cmd , &H01) 'Software Reset Waitms 5
Call Lcd_sendbyte(lcd_cmd , &H11) 'Sleep out
Call Lcd_sendbyte(lcd_cmd , &H25) 'Contrast Call Lcd_sendbyte(lcd_prm , 63)
Call Lcd_sendbyte(lcd_cmd , &H29) 'Display ON
Call Lcd_sendbyte(lcd_cmd , &H03) 'Booster voltage ON Waitms 40
Call Lcd_sendbyte(lcd_cmd , &H3A) 'Interface pixel format 8 bit Call Lcd_sendbyte(lcd_prm , &H02)
Call Lcd_sendbyte(lcd_cmd , &H2D) 'Colour set 'Green Restore Setup_data For Temp = 1 To 20 Read Temp1 Call Lcd_sendbyte(lcd_prm , Temp1) Next Temp
Call Lcd_sendbyte(lcd_cmd , &H2C)
Lcd_doublesize = 0 Lcd_posx = 1 Lcd_posy = 1 End Sub
'----------------Подпрограмма перекодировки строки в код из еепрома-------------
Sub Lcd_print(byval Lcd_text As String)
Local R As Integer Local A As Byte Local B As Byte Local C As Long Local D As Byte Local E As Byte Local F As Byte Local G As Long Local Zeichen As String * 10
Call Lcd_sendbyte(lcd_cmd , &H36) ' Call Lcd_sendbyte(lcd_prm , &B00100000)
Call Lcd_sendbyte(lcd_cmd , &H2C) '
For R = 1 To Len(lcd_text)
Zeichen = Mid(lcd_text , R , 1) 'Hole char G = Asc(zeichen) ' G = G - 32 G = G * 5
Readeeprom B , G
Call Lcd_locate(lcd_posx , Lcd_posy)
A = 8 '1.linie frei 'If Lcd_doublesize = 1 Then A = 32 'If Lcd_doublesize = 2 Then A = 16 While A > 0 Call Lcd_sendbyte(lcd_prm , Lcd_bcolor) Decr A Wend
For F = 1 To 5 C = 1 While C > 0 D = B ' For E = 1 To 8 A = D And 1 If A = 1 Then Call Lcd_sendbyte(lcd_prm , Lcd_fcolor) Else Call Lcd_sendbyte(lcd_prm , Lcd_bcolor) End If Shift D , Right , 1 Next Decr C Wend G = G + 1 Readeeprom B , G Next
Incr Lcd_posx
If Lcd_posx > 16 Then Lcd_posx = 1 Incr Lcd_posy If Lcd_posy > 8 Then Lcd_posy = 1 End If
Next
Call Lcd_sendbyte(lcd_cmd , &H36) ' Call Lcd_sendbyte(lcd_prm , 0)
Call Lcd_sendbyte(lcd_cmd , &H2C) 'команда записи в память
End Sub
'------------------------------------------------------------------------------- 'установим координаты '------------------------------------------------------------------------------- Sub Lcd_locate(byval Lcd_x As Byte , Byval Lcd_y As Byte)
Local A As Byte Local B As Byte Local C As Byte Local D As Byte
Lcd_posx = Lcd_x Lcd_posy = Lcd_y
A = Lcd_x - 1 A = A * 6 C = A + 5 B = Lcd_y - 1 B = B * 8 B = B + 2 D = B + 7
Call Lcd_setframe(a , B , C , D)
End Sub
Decode: Select Case Digit Case 0 : Call Lcd_print( "0") Case 1 : Call Lcd_print( "1") Case 2 : Call Lcd_print( "2") Case 3 : Call Lcd_print( "3") Case 4 : Call Lcd_print( "4") Case 5 : Call Lcd_print( "5") Case 6 : Call Lcd_print( "6") Case 7 : Call Lcd_print( "7") Case 8 : Call Lcd_print( "8") Case 9 : Call Lcd_print( "9") End Select Return
Setup_data:
Data &H00 , &H02 , &H04 , &H06 , &H09 , &H0B , &H0D , &H0F Data &H00 , &H02 , &H04 , &H06 , &H09 , &H0B , &H0D , &H0F Data &H00 , &H04 , &H0B , &H0F
$eeprom Data &H00 , &H00 , &H00 , &H00 , &H00 ' "(space)" Data &H00 , &H06 , &H5F , &H06 , &H00 ' "!" Data &H07 , &H03 , &H00 , &H07 , &H03 ' """ Data &H24 , &H7E , &H24 , &H7E , &H24 ' "#" Data &H24 , &H2B , &H6A , &H12 , &H00 ' "$" Data &H63 , &H13 , &H08 , &H64 , &H63 ' "%" Data &H36 , &H49 , &H56 , &H20 , &H50 ' "&" Data &H00 , &H07 , &H03 , &H00 , &H00 ' "'" '40 Data &H00 , &H3E , &H41 , &H00 , &H00 ' "(" Data &H00 , &H41 , &H3E , &H00 , &H00 ' ")" Data &H08 , &H3E , &H1C , &H3E , &H08 ' "*" Data &H08 , &H08 , &H3E , &H08 , &H08 ' "+" Data &H00 , &HE0 , &H60 , &H00 , &H00 ' "," Data &H08 , &H08 , &H08 , &H08 , &H08 ' "-" Data &H00 , &H60 , &H60 , &H00 , &H00 ' "." Data &H20 , &H10 , &H08 , &H04 , &H02 ' "/" Data &H3E , &H51 , &H49 , &H45 , &H3E ' "0" Data &H00 , &H42 , &H7F , &H40 , &H00 ' "1" '50 Data &H62 , &H51 , &H49 , &H49 , &H46 ' "2" Data &H22 , &H49 , &H49 , &H49 , &H36 ' "3" Data &H18 , &H14 , &H12 , &H7F , &H10 ' "4" Data &H2F , &H49 , &H49 , &H49 , &H31 ' "5" Data &H3C , &H4A , &H49 , &H49 , &H30 ' "6" Data &H01 , &H71 , &H09 , &H05 , &H03 ' "7" Data &H36 , &H49 , &H49 , &H49 , &H36 ' "8" Data &H06 , &H49 , &H49 , &H29 , &H1E ' "9" Data &H00 , &H6C , &H6C , &H00 , &H00 ' ":" Data &H00 , &HEC , &H6C , &H00 , &H00 ' ";" '60 Data &H08 , &H14 , &H22 , &H41 , &H00 ' "<" Data &H24 , &H24 , &H24 , &H24 , &H24 ' "=" Data &H00 , &H41 , &H22 , &H14 , &H08 ' ">" Data &H02 , &H01 , &H59 , &H09 , &H06 ' "?" Data &H3E , &H41 , &H5D , &H55 , &H1E ' "@" Data &H7E , &H09 , &H09 , &H09 , &H7E ' "A" Data &H7F , &H49 , &H49 , &H49 , &H36 ' "B" Data &H3E , &H41 , &H41 , &H41 , &H22 ' "C" Data &H7F , &H41 , &H41 , &H41 , &H3E ' "D" Data &H7F , &H49 , &H49 , &H49 , &H41 ' "E" '70 Data &H7F , &H09 , &H09 , &H09 , &H01 ' "F" Data &H3E , &H41 , &H49 , &H49 , &H7A ' "G" Data &H7F , &H08 , &H08 , &H08 , &H7F ' "H" Data &H00 , &H41 , &H7F , &H41 , &H00 ' "I" Data &H30 , &H40 , &H40 , &H40 , &H3F ' "J" Data &H7F , &H08 , &H14 , &H22 , &H41 ' "K" Data &H7F , &H40 , &H40 , &H40 , &H40 ' "L" Data &H7F , &H02 , &H04 , &H02 , &H7F ' "M" Data &H7F , &H02 , &H04 , &H08 , &H7F ' "N" Data &H3E , &H41 , &H41 , &H41 , &H3E ' "O" Data &H7F , &H09 , &H09 , &H09 , &H06 ' "P" '80 Data &H3E , &H41 , &H51 , &H21 , &H5E ' "Q" Data &H7F , &H09 , &H09 , &H19 , &H66 ' "R" Data &H26 , &H49 , &H49 , &H49 , &H32 ' "S" Data &H01 , &H01 , &H7F , &H01 , &H01 ' "T" Data &H3F , &H40 , &H40 , &H40 , &H3F ' "U" Data &H1F , &H20 , &H40 , &H20 , &H1F ' "V" Data &H3F , &H40 , &H3C , &H40 , &H3F ' "W" Data &H63 , &H14 , &H08 , &H14 , &H63 ' "X" Data &H07 , &H08 , &H70 , &H08 , &H07 ' "Y" Data &H71 , &H49 , &H45 , &H43 , &H00 ' "Z" Data &H00 , &H7F , &H41 , &H41 , &H00 ' "[" '90 Data &H02 , &H04 , &H08 , &H10 , &H20 ' "\" Data &H00 , &H41 , &H41 , &H7F , &H00 ' "]" Data &H04 , &H02 , &H01 , &H02 , &H04 ' "^" Data &H80 , &H80 , &H80 , &H80 , &H80 ' "_" Data &H00 , &H03 , &H07 , &H00 , &H00 ' "`" Data &H20 , &H54 , &H54 , &H54 , &H78 ' "a" Data &H7F , &H44 , &H44 , &H44 , &H38 ' "b" Data &H38 , &H44 , &H44 , &H44 , &H28 ' "c" Data &H38 , &H44 , &H44 , &H44 , &H7F ' "d" Data &H38 , &H54 , &H54 , &H54 , &H18 ' "e" Data &H08 , &H7E , &H09 , &H09 , &H00 ' "f" '100 Data &H18 , &HA4 , &HA4 , &HA4 , &H7C ' "g" Data &H7F , &H04 , &H04 , &H78 , &H00 ' "h" Data &H00 , &H00 , &H7D , &H00 , &H00 ' "i" Data &H40 , &H80 , &H84 , &H7D , &H00 ' "j" Data &H7F , &H10 , &H28 , &H44 , &H00 ' "k" Data &H00 , &H00 , &H7F , &H40 , &H00 ' "l" Data &H7C , &H04 , &H18 , &H04 , &H78 ' "m" Data &H7C , &H04 , &H04 , &H78 , &H00 ' "n" Data &H38 , &H44 , &H44 , &H44 , &H38 ' "o" Data &HFC , &H44 , &H44 , &H44 , &H38 ' "p" Data &H38 , &H44 , &H44 , &H44 , &HFC ' "q" '110 Data &H44 , &H78 , &H44 , &H04 , &H08 ' "r" Data &H08 , &H54 , &H54 , &H54 , &H20 ' "s" Data &H04 , &H3E , &H44 , &H24 , &H00 ' "t" Data &H3C , &H40 , &H20 , &H7C , &H00 ' "u" Data &H1C , &H20 , &H40 , &H20 , &H1C ' "v" Data &H3C , &H60 , &H30 , &H60 , &H3C ' "w" Data &H6C , &H10 , &H10 , &H6C , &H00 ' "x" Data &H9C , &HA0 , &H60 , &H3C , &H00 ' "y" Data &H64 , &H54 , &H54 , &H4C , &H00 ' "z" Data &H08 , &H3E , &H41 , &H41 , &H00 ' "{" '120 Data &H00 , &H00 , &H7F , &H00 , &H00 ' "|" Data &H00 , &H41 , &H41 , &H3E , &H08 ' "}" Data &H02 , &H01 , &H02 , &H01 , &H00 ' "~"
Data &H3F , &H21 , &H21 , &H21 , &H21 ' "[" Data &H21 , &H21 , &H21 , &H21 , &H21 Data &H21 , &H21 , &H21 , &H21 . &H3F ' "]" Data &H3F , &H3F , &H3F , &H3F , &H3F Data &H3F , &H00 , &H00 , &H00 , &H00
</source>