Различные варианты вывода информации на LCD, а именно большие цифры, большие цифры + маленькие цифры + буквы русского алфавита, бегущая строка.
'*******************************************************************************
'***************** ***************************
'***************** Конфигурация программы ***************************
'***************** и контроллера ***************************
'***************** ***************************
'*******************************************************************************
$regfile = "m8def.dat" : $crystal = 1000000 : $framesize = 0 : $hwstack = 0 : $swstack = 0 : $baud = 4800 '1200 '2400 '4800 '9600 '19200 '38400 '57600 '115000
'*******************************************************************************
'-------------------------------------------------------------------------------
'*******************************************************************************
'************************** Конфигурация LCD ***************************
'*******************************************************************************
'-------------------------------------------------------------------------------
' Выводы МК к которым подключен LCD, !!! Обратите внимание, библиотеки не используются, выводы могут быть любые
'-------------------------------------------------------------------------------
Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.1 , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5
Config Lcd = 16 * 4 ' Используемый LCD
Initlcd ' Инициализируем LCD
Waitms 50 ' Ждем пока все запустится
Cursor Off Noblink ' Выключаем неморгающий курсор
' Cursor On Noblink ' Включаем неморгающий курсор
' Cursor On Blink ' Включаем моргающий курсор
Cls ' Чистим экран, на всякий случай
'-------------------------------------------------------------------------------
'Upperline 1 строка, Lowerline 2 строка, Thirdline 3 строка, Fourthline 4 строка - один из вариантов перехода на строку
'-------------------------------------------------------------------------------
'--------------------- Графика для формирования цифр ---------------------------
'-------------------------------------------------------------------------------
Deflcdchar 1 , 31 , 31 , 32 , 32 , 32 , 32 , 32 , 32 ' replace [x] with number (0-7)
Deflcdchar 2 , 32 , 32 , 32 , 32 , 32 , 32 , 31 , 31 ' replace [x] with number (0-7)
Deflcdchar 3 , 31 , 31 , 32 , 32 , 32 , 32 , 31 , 31 ' replace [x] with number (0-7)
Deflcdchar 4 , 31 , 31 , 31 , 31 , 31 , 31 , 31 , 31 ' replace [x] with number (0-7)
Deflcdchar 5 , 32 , 32 , 32 , 32 , 32 , 14 , 14 , 14 ' точка
Deflcdchar 6 , 32 , 32 , 32 , 32 , 32 , 32 , 32 , 32 ' пробел
Deflcdchar 7 , 32 , 32 , 31 , 31 , 31 , 31 , 32 , 32 ' replace [x] with number (0-7)
'-------------------------------------------------------------------------------
'------------- Переменные для подпрограммы вывода больших цифр -------------
'-------------------------------------------------------------------------------
Dim Цикл_1 As Byte , Цикл_2 As Byte , X1 As Byte , X2 As Byte , Y As Byte
Dim Выводимая_строка_big As String * 6 , Большие_цифры_lcd As String * 6
Dim Большие_символы_верх As String * 6 , Большие_символы_низ As String * 6
'-------------------------------------------------------------------------------
'-------------------- Подпрограммы вывода больших цифр ---------------------
'-------------------------------------------------------------------------------
Declare Sub Формирование_больших_цифр() ' Подпрограмма вывода больших цифр
'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
'------------------ Конфигурация выхода для светодиодика -------------------
'-------------------------------------------------------------------------------
Config Portd.7 = Output ' Натраиваем порт на выход
Светодиод Alias Portd.7 ' Присваиваем собственное имя ножке порта контроллера
'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
'----------------------------- Переменные ----------------------------------
'-------------------------------------------------------------------------------
Dim A_byte As Byte , B_byte As Byte
Dim A_word As Word , B_word As Word
Dim A_single As Single , B_single As Single
Dim A_integer As Integer , B_integer As Integer
Dim A_string As String * 5 , B_string As String * 5'-------------------------------------------------------------------------------
'---------------------------- Подпрограммы ---------------------------------
'-------------------------------------------------------------------------------'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
A_word = 0 ' Начальные значения переменных
B_word = 9999 ' Начальные значения переменных
'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
'----------------------- Оcновной_цикл_программы ---------------------------
'-------------------------------------------------------------------------------
Do
Главный_цикл:
'-------------------------------------Incr A_word ' Увеличиваем переменную
If A_word = 9999 Then A_word = 0 ' Если больше 9999, сбрасываем в 0Decr B_word ' Уменьшаем переменную
If B_word = 0 Then B_word = 9999 ' Если достигло 0, пишем в переменную 9999Большие_символы_верх = Str(a_word) ' Делаем строковой, выводимую переменную
Большие_символы_низ = Str(b_word) ' Делаем строковой, выводимую переменную
Call Формирование_больших_цифр ' Переходим к подпрограмме вывода больших символов
Waitms 200
Toggle Светодиод ' Моргаем светодоидиком ( типа, все нормально, ещё не зависли)
'------------------------------------
Goto Главный_цикл
Loop
End
'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
Sub Формирование_больших_цифр:
'-------------------------------------------------------------------------------'-------------------------------------------------------------------------------
Большие_символы_верх = Format(большие_символы_верх , " 0") 'форматируем выводимую переменную
Большие_символы_низ = Format(большие_символы_низ , " 0") 'форматируем выводимую переменнуюX1 = 1 ' Координаты места вывода
X2 = 2 ' Координаты места вывода
Y = 1 ' Координаты места выводаFor Цикл_1 = 1 To 2
If Цикл_1 = 1 Then
Выводимая_строка_big = Большие_символы_верх
Else
Выводимая_строка_big = Большие_символы_низ
End If
For Цикл_2 = 1 To 5
Большие_цифры_lcd = Mid(выводимая_строка_big , Цикл_2 , 1) 'разбиваем на цифры
'-------------------------------------------------------------------------------
'------------------------- Большие цифры ---------------------------------------
'-------------------------------------------------------------------------------
Select Case Большие_цифры_lcd 'выбираем выводимый символ
'-------------------------------------------------------------------
Case "0" :
Locate X1 , Y : Lcd Chr(4) ; Chr(1) ; Chr(4)
Locate X2 , Y : Lcd Chr(4) ; Chr(2) ; Chr(4)
'-------------------------------------------------------------------
Case "1":
Locate X1 , Y : Lcd Chr(1) ; Chr(4) ; Chr(6)
Locate X2 , Y : Lcd Chr(2) ; Chr(4) ; Chr(2)
'-------------------------------------------------------------------
Case "2":
Locate X1 , Y : Lcd Chr(3) ; Chr(3) ; Chr(4)
Locate X2 , Y : Lcd Chr(4) ; Chr(2) ; Chr(2)
'-------------------------------------------------------------------
Case "3":
Locate X1 , Y : Lcd Chr(1) ; Chr(3) ; Chr(4)
Locate X2 , Y : Lcd Chr(2) ; Chr(2) ; Chr(4)
'-------------------------------------------------------------------
Case "4":
Locate X1 , Y : Lcd Chr(4) ; Chr(2) ; Chr(4)
Locate X2 , Y : Lcd Chr(6) ; Chr(6) ; Chr(4)
'-------------------------------------------------------------------
Case "5":
Locate X1 , Y : Lcd Chr(4) ; Chr(3) ; Chr(3)
Locate X2 , Y : Lcd Chr(2) ; Chr(2) ; Chr(4)
'-------------------------------------------------------------------
Case "6":
Locate X1 , Y : Lcd Chr(4) ; Chr(3) ; Chr(3)
Locate X2 , Y : Lcd Chr(4) ; Chr(2) ; Chr(4)
'-------------------------------------------------------------------
Case "7":
Locate X1 , Y : Lcd Chr(1) ; Chr(1) ; Chr(4)
Locate X2 , Y : Lcd Chr(6) ; Chr(6) ; Chr(4)
'-------------------------------------------------------------------
Case "8":
Locate X1 , Y : Lcd Chr(4) ; Chr(3) ; Chr(4)
Locate X2 , Y : Lcd Chr(4) ; Chr(2) ; Chr(4)
'-------------------------------------------------------------------
Case "9":
Locate X1 , Y : Lcd Chr(4) ; Chr(3) ; Chr(4)
Locate X2 , Y : Lcd Chr(2) ; Chr(2) ; Chr(4)
'-------------------------------------------------------------------
Case ":":
Locate X1 , Y : Lcd Chr(7)
Locate X2 , Y : Lcd Chr(7)
Y = Y - 2
'-------------------------------------------------------------------
Case ".":
Y = Y - 1
Locate X1 , Y : Lcd Chr(6)
Locate X2 , Y : Lcd Chr(5)
Y = Y - 2
'-------------------------------------------------------------------
Case " ":
Locate X1 , Y : Lcd Chr(6)
Locate X2 , Y : Lcd Chr(6)
'-------------------------------------------------------------------
End Select
Y = Y + 4
Next Цикл_2
X1 = 3 : X2 = 4 : Y = 1
Next Цикл_1
End Sub
'-------------------------------------------------------------------------------
'*******************************************************************************
End
'*******************************************************************************
'***************** ***************************
'***************** Конфигурация программы ***************************
'***************** и контроллера ***************************
'***************** ***************************
'*******************************************************************************
$regfile = "m8def.dat" : $crystal = 8000000 : $framesize = 0 : $hwstack = 0 : $swstack = 0 : $baud = 4800 '1200 '2400 '4800 '9600 '19200 '38400 '57600 '115000
'*******************************************************************************
'-------------------------------------------------------------------------------
'*******************************************************************************
'************************** Конфигурация LCD ***************************
'*******************************************************************************
'-------------------------------------------------------------------------------
' Выводы МК к которым подключен LCD, !!! Обратите внимание, библиотеки не используются, выводы могут быть любые
'-------------------------------------------------------------------------------
Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.1 , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5
'-------------------------------------------------------------------------------
Config Lcd = 20 * 2 ' Используемый LCD
Initlcd ' Инициализируем LCD
Waitms 50 ' Ждем пока все запустится
Cursor Off Noblink ' Выключаем неморгающий курсор
' Cursor On Noblink ' Включаем неморгающий курсор
' Cursor On Blink ' Включаем моргающий курсор
Cls ' Чистим экран, на всякий случай
'-------------------------------------------------------------------------------
'Upperline 1 строка, Lowerline 2 строка, Thirdline 3 строка, Fourthline 4 строка - один из вариантов перехода на строку
'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
'----------------------------- Переменные ----------------------------------
'-------------------------------------------------------------------------------
Dim A As Byte
Dim X As Byte
Dim Y As Byte
Dim Позиция As Byte
Dim Пробелы As String * 22
Dim Вывод_на_lcd As String * 21
Dim Количество_пробелов As Byte
Dim Текст_сообщения As String * 214
Dim Выводимое_сообщение As String * 254
Dim Количество_знаков_в_сообщении As Byte
'-------------------------------------------------------------------------------
'---------------------------- Подпрограммы ---------------------------------
'-------------------------------------------------------------------------------
Declare Sub Бегущая_строка()
'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
' Текст_сообщения = "01.07.2013 Пример вывода информации в режиме бегущей строки. Максимальное количество символов 254. Пользуйтесь на здоровье. Удачи!"
' Текст_сообщения = "01.07.2013 Ёpёјep іГіoгa ёЅдopјaеёё і pe¶ёјe Іeґyжe№ cїpoєё. Maєcёјa»ДЅoe єo»ёАecїіo cёјіo»oі 254. Ёo»Д·y№їecД Ѕa ·гopoіДe. ©гaАё!"' Текст_сообщения = "01.07.2013 Sample output information in a marquee. Maximum number of characters 254. Use of health. Good luck!"
'------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
'----------------------- Оcновной_цикл_программы ---------------------------
'-------------------------------------------------------------------------------
Do
Главный_цикл:
'-------------------------------------Текст_сообщения = Lookupstr(a , Выводимые_сообщения)
Call Бегущая_строка
Incr A
If A > 1 Then A = 0'------------------------------------
Goto Главный_цикл
Loop
End
'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
Бегущая_строка:
'-------------------------------------------------------------------------------
X = 1 : Y = 1Пробелы = String(20 , 30)
Количество_знаков_в_сообщении = Len(текст_сообщения)
Количество_знаков_в_сообщении = Количество_знаков_в_сообщении + 40
If Количество_знаков_в_сообщении > 40 Then
Количество_знаков_в_сообщении = Количество_знаков_в_сообщении - 20
End IfВыводимое_сообщение = Пробелы + Текст_сообщения + Пробелы
Do
Позиция = 0
While Позиция < Количество_знаков_в_сообщении
Incr ПозицияВывод_на_lcd = Mid(выводимое_сообщение , Позиция , 20)
Locate X , Y
Lcd Вывод_на_lcd
Waitms 200
Wend
Cls
X = X + 1
Loop Until X = 3
'---------
Return
'-------------------------------------------------------------------------------
'*******************************************************************************'*******************************************************************************
'-------------------------------------------------------------------------------
Выводимые_сообщения:
'-------------------------------------------------------------------------------
' Data "01.07.2013 Пример вывода информации в режиме бегущей строки. Максимальное количество символов 254. Пользуйтесь на здоровье. Удачи!"
Data "01.07.2013 Ёpёјep іГіoгa ёЅдopјaеёё і pe¶ёјe Іeґyжe№ cїpoєё. Maєcёјa»ДЅoe єo»ёАecїіo cёјіo»oі 254. Ёo»Д·y№їecД Ѕa ·гopoіДe. ©гaАё!"
Data "01.07.2013 Sample output information in a marquee. Maximum number of characters 254. Use of health. Good luck!"
'-------------------------------------------------------------------------------
'*******************************************************************************
'*******************************************************************************
'***************** ***************************
'***************** Конфигурация программы ***************************
'***************** и контроллера ***************************
'***************** ***************************
'*******************************************************************************
$regfile = "m8def.dat" : $crystal = 1000000 : $framesize = 0 : $hwstack = 0 : $swstack = 0 : $baud = 4800 '1200 '2400 '4800 '9600 '19200 '38400 '57600 '115000
'*******************************************************************************
'-------------------------------------------------------------------------------
'*******************************************************************************
'************************** Конфигурация LCD ***************************
'*******************************************************************************
'-------------------------------------------------------------------------------
' Выводы МК к которым подключен LCD, !!! Обратите внимание, библиотеки не используются, выводы могут быть любые
'-------------------------------------------------------------------------------
Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.1 , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5
'-------------------------------------------------------------------------------
Config Lcd = 40 * 2 ' Используемый LCD
Initlcd ' Инициализируем LCD
Waitms 50 ' Ждем пока все запустится
Cursor Off Noblink ' Выключаем неморгающий курсор
' Cursor On Noblink ' Включаем неморгающий курсор
' Cursor On Blink ' Включаем моргающий курсор
Cls ' Чистим экран, на всякий случай
'-------------------------------------------------------------------------------
'Upperline 1 строка, Lowerline 2 строка, Thirdline 3 строка, Fourthline 4 строка - один из вариантов перехода на строку
'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
'----------------------------- Переменные ----------------------------------
'-------------------------------------------------------------------------------
Dim A As Byte
Dim X As Byte
Dim Y As Byte
Dim Позиция As Byte
Dim Пробелы As String * 22
Dim Вывод_на_lcd As String * 21
Dim Количество_пробелов As Byte
Dim Текст_сообщения As String * 214
Dim Выводимое_сообщение As String * 254
Dim Количество_знаков_в_сообщении As Byte
'-------------------------------------------------------------------------------
'---------------------------- Подпрограммы ---------------------------------
'-------------------------------------------------------------------------------
Declare Sub Бегущая_строка()
'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
' Текст_сообщения = "01.07.2013 Пример вывода информации в режиме бегущей строки. Максимальное количество символов 254. Пользуйтесь на здоровье. Удачи!"
' Текст_сообщения = "01.07.2013 Ёpёјep іГіoгa ёЅдopјaеёё і pe¶ёјe Іeґyжe№ cїpoєё. Maєcёјa»ДЅoe єo»ёАecїіo cёјіo»oі 254. Ёo»Д·y№їecД Ѕa ·гopoіДe. ©гaАё!"' Текст_сообщения = "01.07.2013 Sample output information in a marquee. Maximum number of characters 254. Use of health. Good luck!"
'------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
'----------------------- Оcновной_цикл_программы ---------------------------
'-------------------------------------------------------------------------------
Do
Главный_цикл:
'-------------------------------------Текст_сообщения = Lookupstr(a , Выводимые_сообщения)
Call Бегущая_строка
Incr A
If A > 1 Then A = 0'------------------------------------
Goto Главный_цикл
Loop
End
'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
Бегущая_строка:
'-------------------------------------------------------------------------------
X = 1 : Y = 1Пробелы = String(40 , 30)
Количество_знаков_в_сообщении = Len(текст_сообщения)
Количество_знаков_в_сообщении = Количество_знаков_в_сообщении + 80
If Количество_знаков_в_сообщении > 40 Then
Количество_знаков_в_сообщении = Количество_знаков_в_сообщении - 40
End IfВыводимое_сообщение = Пробелы + Текст_сообщения + Пробелы
Do
Позиция = 0
While Позиция < Количество_знаков_в_сообщении
Incr ПозицияВывод_на_lcd = Mid(выводимое_сообщение , Позиция , 40)
Locate X , Y
Lcd Вывод_на_lcd
Waitms 75
Wend
Cls
X = X + 1
Loop Until X = 3
'---------
Return
'-------------------------------------------------------------------------------
'*******************************************************************************'*******************************************************************************
'-------------------------------------------------------------------------------
Выводимые_сообщения:
'-------------------------------------------------------------------------------
' Data "01.07.2013 Пример вывода информации в режиме бегущей строки. Максимальное количество символов 254. Пользуйтесь на здоровье. Удачи!"
Data "01.07.2013 Ёpёјep іГіoгa ёЅдopјaеёё і pe¶ёјe Іeґyжe№ cїpoєё. Maєcёјa»ДЅoe єo»ёАecїіo cёјіo»oі 254. Ёo»Д·y№їecД Ѕa ·гopoіДe. ©гaАё!"
Data "01.07.2013 Sample output information in a marquee. Maximum number of characters 254. Use of health. Good luck!"
'-------------------------------------------------------------------------------
'*******************************************************************************
'*******************************************************************************
'***************** ***************************
'***************** Конфигурация программы ***************************
'***************** и контроллера ***************************
'***************** ***************************
'*******************************************************************************
$regfile = "m8def.dat" : $crystal = 1000000 : $framesize = 0 : $hwstack = 0 : $swstack = 0 : $baud = 4800 '1200 '2400 '4800 '9600 '19200 '38400 '57600 '115000
'*******************************************************************************
'-------------------------------------------------------------------------------
'*******************************************************************************
'************************** Конфигурация LCD ***************************
'*******************************************************************************
'-------------------------------------------------------------------------------
' Выводы МК к которым подключен LCD, !!! Обратите внимание, библиотеки не используются, выводы могут быть любые
'-------------------------------------------------------------------------------
Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.1 , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5
'-------------------------------------------------------------------------------
Config Lcd = 20 * 4 ' Используемый LCD
Initlcd ' Инициализируем LCD
Waitms 50 ' Ждем пока все запустится
Cursor Off Noblink ' Выключаем неморгающий курсор
' Cursor On Noblink ' Включаем неморгающий курсор
' Cursor On Blink ' Включаем моргающий курсор
Cls ' Чистим экран, на всякий случай
'-------------------------------------------------------------------------------
'Upperline 1 строка, Lowerline 2 строка, Thirdline 3 строка, Fourthline 4 строка - один из вариантов перехода на строку
'-------------------------------------------------------------------------------
'--------------------- Графика для формирования цифр ---------------------------
'-------------------------------------------------------------------------------
Deflcdchar 1 , 31 , 31 , 32 , 32 , 32 , 32 , 32 , 32 ' replace [x] with number (0-7)
Deflcdchar 2 , 32 , 32 , 32 , 32 , 32 , 32 , 31 , 31 ' replace [x] with number (0-7)
Deflcdchar 3 , 31 , 31 , 32 , 32 , 32 , 32 , 31 , 31 ' replace [x] with number (0-7)
Deflcdchar 4 , 31 , 31 , 31 , 31 , 31 , 31 , 31 , 31 ' replace [x] with number (0-7)
Deflcdchar 5 , 32 , 32 , 32 , 32 , 32 , 14 , 14 , 14 ' точка
Deflcdchar 6 , 32 , 32 , 32 , 32 , 32 , 32 , 32 , 32 ' пробел
Deflcdchar 7 , 32 , 32 , 31 , 31 , 31 , 31 , 32 , 32 ' replace [x] with number (0-7)
'-------------------------------------------------------------------------------
'------------- Переменные для подпрограммы вывода больших цифр -------------
'-------------------------------------------------------------------------------
Dim Цикл_1 As Byte , Цикл_2 As Byte , X1 As Byte , X2 As Byte , Y As Byte
Dim Выводимая_строка_big As String * 6 , Большие_цифры_lcd As String * 6
Dim Большие_символы_верх As String * 6 , Большие_символы_низ As String * 6
'-------------------------------------------------------------------------------
'-------------------- Подпрограммы вывода больших цифр ---------------------
'-------------------------------------------------------------------------------
Declare Sub Формирование_больших_цифр() ' Подпрограмма вывода больших цифр
'-------------------------------------------------------------------------------
'----------- Подпрограмма вывода русского текста на LCD HD44780 -----------
'-------------------------------------------------------------------------------
Declare Sub Lcd_print(byval Копия_lcd_print As String) ' Подпрограмма вывода русского текста на LCD HD44780
'-------------------------------------------------------------------------------
Dim Длина As Integer , Цикл_lcd_print As Integer
Dim Код_символа As Byte , Код_символа_lcd As Byte
Dim Символ_lcd As String * 1 , Символ As String * 1 , Вывод_на_lcd As String * 20
'-------------------------------------------------------------------------------
Dim Строка_lcd As Byte , Курсор_lcd As Byte , Цикл_lcd As Byte
Dim Буфер_lcd As String * 20
'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
'------------------ Конфигурация выхода для светодиодика -------------------
'-------------------------------------------------------------------------------
Config Portd.7 = Output ' Натраиваем порт на выход
Светодиод Alias Portd.7 ' Присваиваем собственное имя ножке порта контроллера
'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
'----------------------------- Переменные ----------------------------------
'-------------------------------------------------------------------------------
Dim A_byte As Byte , B_byte As Byte , C_byte As Byte , D_byte As Byte
Dim A_word As Word , B_word As Word , C_word As Word , D_word As Word
Dim A_single As Single , B_single As Single , C_single As Single , D_single As Single
Dim A_integer As Integer , B_integer As Integer , C_integer As Integer , D_integer As Integer
Dim A_string As String * 5 , B_string As String * 5 , C_string As String * 5 , D_string As String * 5
'-------------------------------------------------------------------------------
'---------------------------- Подпрограммы ---------------------------------
'-------------------------------------------------------------------------------'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
A_byte = 0 ' Начальные значения переменных
B_byte = 0 ' Начальные значения переменных
A_word = 0 ' Начальные значения переменных
B_word = 9999 ' Начальные значения переменных
C_word = 1111 ' Начальные значения переменных
D_word = 8888 ' Начальные значения переменных
C_string = "" ' Начальные значения переменных
D_string = "" ' Начальные значения переменных
'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
'----------------------- Оcновной_цикл_программы ---------------------------
'-------------------------------------------------------------------------------
Do
Главный_цикл:
'-------------------------------------Incr A_word ' Увеличиваем переменную
If A_word = 9999 Then A_word = 0 ' Если больше 9999, сбрасываем в 0Decr B_word ' Уменьшаем переменную
If B_word = 0 Then B_word = 9999 ' Если достигло 0, пишем в переменную 9999Incr C_word ' Увеличиваем переменную
If C_word = 8888 Then C_word = 1111 ' Если больше 9999, сбрасываем в 0C_string = Str(c_word) ' Преобразуем переменную "Word"( числовая ), в переменную "String" ( строковая )
C_string = Format(c_string , " 0") ' Форматируем, как нам надо ( в данном случае, убираем незначащие "0", ровняем по правому краю )Decr D_word ' Уменьшаем переменную
If D_word = 1111 Then D_word = 8888 ' Если достигло 0, пишем в переменную 9999D_string = Str(d_word) ' Преобразуем переменную "Word"( числовая ), в переменную "String" ( строковая )
D_string = Format(d_string , " 0") ' Форматируем, как нам надо ( в данном случае, убираем незначащие "0", ровняем по правому краю )Большие_символы_верх = Str(a_word) ' Делаем строковой, выводимую переменную
Большие_символы_низ = Str(b_word) ' Делаем строковой, выводимую переменную
Call Формирование_больших_цифр ' Переходим к подпрограмме вывода больших символов
Locate 3 , 17 ' Указываем начальное положение знакоместа
Lcd C_string ' Выводим переменную на LCDLocate 4 , 17 ' Указываем начальное положение знакоместа
Lcd D_string ' Выводим переменную на LCDIncr A_byte ' Увеличиваем переменную на 1
If A_byte > 7 Then A_byte = 0 ' Если достигли, обнуляемБуфер_lcd = Lookupstr(a_byte , Выводимый_русский_текст ) ' Берем выводимый текст из таблицы "Выводимый_русский_текст", ( искать внизу исходника )
Строка_lcd = 1 ' Указываем номер строки
Курсор_lcd = 17 ' Указываем начальное положение знакоместаLcd_print Буфер_lcd ' Выводим переменную на LCD с пощью подпрограммы "Lcd_print"
Incr B_byte ' Увеличиваем переменную на 1
If B_byte > 17 Then B_byte = 0 ' Если достигли, обнуляемБуфер_lcd = Lookupstr(b_byte , Выводимый_русский_алфавит ) ' Берем выводимый текст из таблицы "Выводимый_русский_алфавит", ( искать внизу исходника )
Строка_lcd = 2 ' Указываем номер строки
Курсор_lcd = 17 ' Указываем начальное положение знакоместаLcd_print Буфер_lcd ' Выводим переменную на LCD с пощью подпрограммы "Lcd_print"
Waitms 200
Toggle Светодиод ' Моргаем светодоидиком ( типа, все нормально, ещё не зависли)
'------------------------------------
Goto Главный_цикл
Loop
End
'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
Sub Формирование_больших_цифр:
'-------------------------------------------------------------------------------'-------------------------------------------------------------------------------
Большие_символы_верх = Format(большие_символы_верх , " 0") 'форматируем выводимую переменную
Большие_символы_низ = Format(большие_символы_низ , " 0") 'форматируем выводимую переменнуюX1 = 1 ' Координаты места вывода
X2 = 2 ' Координаты места вывода
Y = 1 ' Координаты места выводаFor Цикл_1 = 1 To 2
If Цикл_1 = 1 Then
Выводимая_строка_big = Большие_символы_верх
Else
Выводимая_строка_big = Большие_символы_низ
End If
For Цикл_2 = 1 To 5
Большие_цифры_lcd = Mid(выводимая_строка_big , Цикл_2 , 1) 'разбиваем на цифры
'-------------------------------------------------------------------------------
'------------------------- Большие цифры ---------------------------------------
'-------------------------------------------------------------------------------
Select Case Большие_цифры_lcd 'выбираем выводимый символ
'-------------------------------------------------------------------
Case "0" :
Locate X1 , Y : Lcd Chr(4) ; Chr(1) ; Chr(4)
Locate X2 , Y : Lcd Chr(4) ; Chr(2) ; Chr(4)
'-------------------------------------------------------------------
Case "1":
Locate X1 , Y : Lcd Chr(1) ; Chr(4) ; Chr(6)
Locate X2 , Y : Lcd Chr(2) ; Chr(4) ; Chr(2)
'-------------------------------------------------------------------
Case "2":
Locate X1 , Y : Lcd Chr(3) ; Chr(3) ; Chr(4)
Locate X2 , Y : Lcd Chr(4) ; Chr(2) ; Chr(2)
'-------------------------------------------------------------------
Case "3":
Locate X1 , Y : Lcd Chr(1) ; Chr(3) ; Chr(4)
Locate X2 , Y : Lcd Chr(2) ; Chr(2) ; Chr(4)
'-------------------------------------------------------------------
Case "4":
Locate X1 , Y : Lcd Chr(4) ; Chr(2) ; Chr(4)
Locate X2 , Y : Lcd Chr(6) ; Chr(6) ; Chr(4)
'-------------------------------------------------------------------
Case "5":
Locate X1 , Y : Lcd Chr(4) ; Chr(3) ; Chr(3)
Locate X2 , Y : Lcd Chr(2) ; Chr(2) ; Chr(4)
'-------------------------------------------------------------------
Case "6":
Locate X1 , Y : Lcd Chr(4) ; Chr(3) ; Chr(3)
Locate X2 , Y : Lcd Chr(4) ; Chr(2) ; Chr(4)
'-------------------------------------------------------------------
Case "7":
Locate X1 , Y : Lcd Chr(1) ; Chr(1) ; Chr(4)
Locate X2 , Y : Lcd Chr(6) ; Chr(6) ; Chr(4)
'-------------------------------------------------------------------
Case "8":
Locate X1 , Y : Lcd Chr(4) ; Chr(3) ; Chr(4)
Locate X2 , Y : Lcd Chr(4) ; Chr(2) ; Chr(4)
'-------------------------------------------------------------------
Case "9":
Locate X1 , Y : Lcd Chr(4) ; Chr(3) ; Chr(4)
Locate X2 , Y : Lcd Chr(2) ; Chr(2) ; Chr(4)
'-------------------------------------------------------------------
Case ":":
Locate X1 , Y : Lcd Chr(7)
Locate X2 , Y : Lcd Chr(7)
Y = Y - 2
'-------------------------------------------------------------------
Case ".":
Y = Y - 1
Locate X1 , Y : Lcd Chr(6)
Locate X2 , Y : Lcd Chr(5)
Y = Y - 2
'-------------------------------------------------------------------
Case " ":
Locate X1 , Y : Lcd Chr(6)
Locate X2 , Y : Lcd Chr(6)
'-------------------------------------------------------------------
End Select
Y = Y + 4
Next Цикл_2
X1 = 3 : X2 = 4 : Y = 1
Next Цикл_1
End Sub
'-------------------------------------------------------------------------------
'*******************************************************************************'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
Sub Lcd_print(byval Копия_lcd_print As String * 20)
'-------------------------------------------------------------------------------
' Local Длина As Integer , Цикл_lcd_print As Integer
' Local Код_символа As Byte , Код_символа_lcd As Byte
' Local Символ_lcd As String * 1 , Символ As String * 1 ', Вывод_на_lcd As String * 20
'-------------------------------------------------------------------------------
Длина = Len(копия_lcd_print) : If Длина = 0 Then Exit SubВывод_на_lcd = ""
For Цикл_lcd_print = 1 To Длина
Символ = Mid(копия_lcd_print , Цикл_lcd_print , 1)
Код_символа = Asc(символ)
Код_символа_lcd = Lookup(код_символа , Cp1251_to_lcd_hd44780)
Символ_lcd = Chr(код_символа_lcd)
Вывод_на_lcd = Вывод_на_lcd + Символ_lcd
Next Цикл_lcd_printLocate Строка_lcd , Курсор_lcd
Lcd Вывод_на_lcd
'-------------------------------------------------------------------------------
End Sub
'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
'**********************************************************************************************************************
'************ Таблица для перекодировки из символов Cp1251 в символы знакосинтезирующего LCD *************
'**********************************************************************************************************************
'----------------------------------------------------------------------------------------------------------------------
Cp1251_to_lcd_hd44780:
'----------------------------------------------------------------------------------------------------------------------
'**********************************************************************************************************************
'----------------------------------------------------------------------------------------------------------------------
'----------------------------------------- первые 128 знаков ----------------------------------------------------
'----------------------------------------------------------------------------------------------------------------------
Data &H00 , &H01 , &H02 , &H03 , &H04 , &H05 , &H06 , &H07 , &H08 , &H09 , &H0A , &H0B , &H0C , &H0D , &H0E , &H0F
Data &H10 , &H11 , &H12 , &H13 , &H14 , &H15 , &H16 , &H17 , &H18 , &H19 , &H1A , &H1B , &H1C , &H1D , &H1E , &H1F
Data &H20 , &H21 , &H22 , &H23 , &H24 , &H25 , &H26 , &H27 , &H28 , &H29 , &H2A , &H2B , &H2C , &H2D , &H2E , &H2F
Data &H30 , &H31 , &H32 , &H33 , &H34 , &H35 , &H36 , &H37 , &H38 , &H39 , &H3A , &H3B , &H3C , &H3D , &H3E , &H3F
Data &H40 , &H41 , &H42 , &H43 , &H44 , &H45 , &H46 , &H47 , &H48 , &H49 , &H4A , &H4B , &H4C , &H4D , &H4E , &H4F
Data &H50 , &H51 , &H52 , &H53 , &H54 , &H55 , &H56 , &H57 , &H58 , &H59 , &H5A , &H5B , &H20 , &H5D , &H5E , &H5F
Data &H60 , &H61 , &H62 , &H63 , &H64 , &H65 , &H66 , &H67 , &H68 , &H69 , &H6A , &H6B , &H6C , &H6D , &H6E , &H6F
Data &H70 , &H71 , &H72 , &H73 , &H74 , &H75 , &H76 , &H77 , &H78 , &H79 , &H7A , &H5B , &H20 , &H5D , &HE9 , &H7F
'----------------------------------------------------------------------------------------------------------------------
'----------------------------------------- вторые 128 знаков ----------------------------------------------------
'----------------------------------------------------------------------------------------------------------------------
Data &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20
Data &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20
Data &HCB , &H20 , &H49 , &H69 , &H04 , &H20 , &HFE , &HEF , &HA2 , &HCC , &H00 , &HC9 , &H20 , &H20 , &H20 , &H02
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HB5 , &H4E , &H00 , &H00 , &H00 , &H00 , &H00 , &H00
Data &H41 , &HA0 , &H42 , &HA1 , &HE0 , &H45 , &HA3 , &HA4 , &HA5 , &HA6 , &H4B , &HA7 , &H4D , &H48 , &H4F , &HA8
Data &H50 , &H43 , &H54 , &HA9 , &HAA , &H58 , &HE1 , &HAB , &HAC , &HE2 , &HAD , &HAE , &H62 , &HAF , &HB0 , &HB1
Data &H61 , &HB2 , &HB3 , &HB4 , &HE3 , &H65 , &HB6 , &HB7 , &HB8 , &HB9 , &HBA , &HBB , &HBC , &HBD , &H6F , &HBE
Data &H70 , &H63 , &HBF , &H79 , &HE4 , &H78 , &HE5 , &HC0 , &HC1 , &HE6 , &HC2 , &HC3 , &HC4 , &HC5 , &HC6 , &HC7
'----------------------------------------------------------------------------------------------------------------------
'**********************************************************************************************************************
'----------------------------------------------------------------------------------------------------------------------
'----------------------------------------- первые 128 знаков ----------------------------------------------------
'----------------------------------------------------------------------------------------------------------------------
' Data " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " "
' Data " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " "
' Data " " , "!" , " " , "#" , "$" , "%" , "&" , "'" , "(" , ")" , "*" , "+" , "," , "-" , "." , "/"
' Data "0" , "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , ":" , ";" , "<" , "=" , ">" , "?"
' Data "@" , "A" , "B" , "C" , "D" , "E" , "F" , "G" , "H" , "I" , "J" , "K" , "L" , "M" , "N" , "O"
' Data "P" , "Q" , "R" , "S" , "T" , "U" , "V" , "W" , "X" , "Y" , "Z" , "[" , "\" , "]" , "^" , "_"
' Data "`" , "a" , "b" , "c" , "d" , "e" , "f" , "g" , "h" , "i" , "j" , "k" , "l" , "m" , "n" , "o"
' Data "p" , "q" , "r" , "s" , "t" , "u" , "v" , "w" , "x" , "y" , "z" , "{" , "|" , "}" , "~" , "¦"
'----------------------------------------------------------------------------------------------------------------------
'----------------------------------------- вторые 128 знаков ----------------------------------------------------
'----------------------------------------------------------------------------------------------------------------------
' Data " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " "
' Data " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " "
' Data " " , " " , " " , " " , " " , " " , " " , " " , "ў" , " " , " " , " " , " " , " " , " " , " "
' Data " " , " " , " " , " " , " " , " " , " " , " " , "µ" , " " , " " , " " , " " , " " , " " , " "
' Data "A" , " " , "B" , "Ў" , "а" , "E" , "Ј" , "¤" , "Ґ" , "¦" , "K" , "§" , "M" , "H" , "O" , "Ё"
' Data "P" , "C" , "T" , "©" , "Є" , "X" , "б" , "«" , "¬" , "в" , "" , "®" , "b" , "Ї" , "°" , "±"
' Data "a" , "І" , "і" , "ґ" , "г" , "e" , "¶" , "·" , "ё" , "№" , "є" , "»" , "ј" , "Ѕ" , "o" , "ѕ"
' Data "p" , "c" , "ї" , "y" , "д" , "x" , "е" , "А" , "Б" , "ж" , "В" , "Г" , "Д" , "Е" , "Ж" , "З"
'----------------------------------------------------------------------------------------------------------------------
'**********************************************************************************************************************'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
Выводимый_русский_текст:
'-------------------------------------------------------------------------------
Data " "
Data "Тест"
Data "LCD "
Data "Вот "
Data "Так "
Data "Оно "
Data "Рабо"
Data "тает"
'-------------------------------------------------------------------------------
'*******************************************************************************'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
Выводимый_русский_алфавит:
'-------------------------------------------------------------------------------
Data " "
Data "АаБб"
Data "ВвГг"
Data "ДдЕе"
Data "ЁёЖж"
Data "ЗзИи"
Data "ЙйКк"
Data "ЛлМм"
Data "НнОо"
Data "ПпРр"
Data "СсТт"
Data "УуФф"
Data "ХхЦц"
Data "ЧчШш"
Data "ЩщЪъ"
Data "ЫыЬь"
Data "ЭэЮю"
Data "Яя"
'-------------------------------------------------------------------------------
'*******************************************************************************
Фото, как выглядит в железе

WH1604B-YGH-CT# WH1602B-TMI-CT#

WH2002A-YGH-CP# WH2004D-YGH-CP#

Вверху слева: WH2004D-YGH-CP# справа: WH1602B-TMI-CP#
нижний WH2004L-TMI-CP#
Фото и видео для наглядности, протеус не показывает 8 ряд пикселей в знакоместе ( выглядит не совсем так, как в железе ).
Документация на LCD "Winstar"
Подробное описание pdf ( англ. ) - http://www.promelec.ru/pdf/TECH.pdf
Как выглядят и datasheet ( сайт производителя ) - http://www.winstar.com.tw/products_detail.php?CID=17
Расшифровка маркировки на русском языке - http://www.promelec.ru/catalog_info/57/150/626/675/
Всё, что необходимо: - исходники, эмуляция протеуса, прошивки, программы для кодирования LED и LCD под Windows ( все проверены в Windows_7x64 ), находится в архиве.
Видео СКАЧАТЬ: http://www.fayloobmennik.net/2981791 ( Залиты все варианты, правда качество не очень, но думаю разобрать можно ).
Архив СКАЧАТЬ: http://www.fayloobmennik.net/2980689 ! Если ссылки не будут работать, напишите.
Кому не жалко, делитесь информацией. Учиться никогда не поздно!
Отредактировано sasha_1973 (2013-07-19 12:35:29)











