Последняя версия для работы с ЖКИ NOKIA 1110i / 1112i
Подключение ЖКИ на картинке ниже
CODE
// pavel-pervomaysk
// Final version Nokia 1110i LCD module
// Time 03.10.2011
// Lcd controller по командам частично совместимый с PCF8814
// SET X adress lcd
// 0x10,0x00 начало строки с 0 го адреса строки
// количество столбцов ЖКИ 96 , штук адрес установки с 0 - 95
// адрес столбца нам нужен 39 , 39 -> HEX = 0x27.
// Установка адреса будет иметь такой вид 0x12,0x07
// 3 старших бита адреса передаются в первой команде
// 4 младших бита адреса передаются во второй команде
// SET Y adress lcd
// Всего 8 полных строк и 9й не полный
// установка адреса Y происходит подачей команд
// 0xB0 первая - 0xB8 девятая строки.
// Дополнительные команды для управления и инициализации ЖКИ
// Сдвиг всей области ЖКИ вверх на 1 0x41
// Сдвиг всей области ЖКИ вверх на 2 0x42
// Сдвиг всей области ЖКИ вверх на 4 0x43
// Сдвиг всей области ЖКИ вверх на 8 0x44
// Сдвиг всей области ЖКИ вверх на 10 0x45
// Сдвиг всей области ЖКИ вверх на 16 0x48
// Сдвиг всей области ЖКИ вниз на 21 0x65
// Контрастность ЖКИ 0x90 ... 0x9F установка по дисплею в проекте
// Очистка картинки (данные соханяются) 0xA2
// Реверсное изображение с низу к верху 0xC8
// Позитивное изображение ЖКИ 0xA6
// Негативное изображение ЖКИ 0xA7
// Заполнение строки с лева на право 0xA1
// |||||||||||||||||||||||||||||||||
// lsb adress ->
// Заполнение строки с права на лево 0xA9
// |||||||||||||||||||||||||||||||||
// <- lsb adress
// Начальное значение курсора строка 0 0xAC
// ЖКИ выключен 0xAE
// ЖКИ включен 0xAF
// RESET lcd 0xE2
// Температурная компенсация включена 0xEB
// DSEG data reserved
.dseg // RAM
.org 0x70 // Set Ram adress begin
line_x: .byte 1 // Lcd line select
cmd_xll: .byte 1 // X address low byte
cmd_xlh: .byte 1 // X address high byte
cmd_yl: .byte 1 // X address low byte next string
cmd_yh: .byte 1 // X address high byte next string
display: .byte 864 // массив для вывода на ЖКИ
.cseg // FLASH
// LCD names pinouts
.equ LCD = PORTC // Порт ЖКИ
.equ dat = PC4 // вывод данных в ЖКИ
.equ clk = PC3 // вывод тактов в ЖКИ
.equ cs = PC5 // выбор чипа
.equ line1 = 0xB0 // 1
.equ line2 = 0xB1 // 2
.equ line3 = 0xB2 // 3
.equ line4 = 0xB3 // 4
.equ line5 = 0xB4 // 5
.equ line6 = 0xB5 // 6
.equ line7 = 0xB6 // 7
.equ line8 = 0xB7 // 8
init_lcd: // Инициализация ЖКИ модуля
ldi tmp,0xE2 // Internal reset
rcall lcd_cmd // выводим команду на ЖКИ
ldi tmp,0xEB // температурная компенсация включена
rcall lcd_cmd // выводим команду на ЖКИ
ldi tmp,0x2F // режим питания
rcall lcd_cmd // выводим команду на ЖКИ
ldi tmp,0xA1 // направление LSB -> MSB
rcall lcd_cmd // выводим команду на ЖКИ
ldi tmp,0x9F // Контрастность ЖКИ 0х90 ... 0х9F
rcall lcd_cmd // выводим команду на ЖКИ
ldi tmp,0xA4 // очистить все пиксели жки
rcall lcd_cmd // выводим команду на ЖКИ
ldi tmp,0xA6 // позитивное изображение
;ldi tmp,0xA7 // негативное изображение
rcall lcd_cmd // выводим команду на ЖКИ
ldi tmp,0xAF // включить дисплей
rcall lcd_cmd // выводим команду на ЖКИ
rcall clr_lcd // Очищаем ЖКИ от случайного мусора
ret // на выход
clr_line: // Очистка линии ЖКИ
ldi xl,low (96) // загружаем количество столбцов
ldi xh,high(96) //
ldi tmp,0 // загружаем данные
rjmp clr_c // очищаем их
clr_lcd: // Очистка ЖКИ
rcall lcd_line1 // выбираем начало ЖКИ
ldi xl,low (864) // количество столбцов ЖКИ = 864
ldi xh,high(864) //
ldi tmp,0 // загружаем данные
clr_c: // цикл очистки ЖКИ
rcall lcd_data // выводим данные на ЖКИ
sbiw xl,1 // счетчик цикла - 1
brne clr_c // если не равно 0 - то переходим к началу
ret // выход
print_data: // выводим 864 байта из RAM в ЖКИ
rcall lcd_line1 // выбираем начало ЖКИ
ldi xl,low (864) // количество байт ЖКИ = 864
ldi xh,high(864) //
ldi yl,low (display) // загружаем адрес L начала блока RAM
ldi yh,high(display) // загружаем адрес H начала блока RAM
print_c: // цикл вывода данных в ЖКИ
ld tmp,Y+ // загружаем данные в регистр из RAM с постинкрементом адреса
rcall lcd_data // выводим данные на ЖКИ
sbiw xl,1 // счетчик цикла - 1
brne print_c // если не равно 0 - то переходим к началу
ret // выход
lcd_cmd: // передача команды на ЖКИ
cbi lcd,cs // CS -> 0
cbi lcd,dat // DAT -> 0
sbi lcd,clk // CLK -> 1
cbi lcd,clk // CLK -> 0
rjmp out_byte // вывести 8 битов
lcd_data: // передача данных на ЖКИ
cbi lcd,cs // выбор чипа
sbi lcd,dat // DAT -> 1
sbi lcd,clk // CLK -> 1
cbi lcd,clk // CLK -> 0
out_byte: // вывод 8 битов из регистра
ldi loop,8 // bit counter
out_c: // цикл
clc // очищаем кари флаг
rol tmp // tmp << 1
brcc d_zer // если флаг очищен , до значит данные DATA -> 0
sbi lcd,dat // если установлен DATA -> 1
rjmp d_one //
d_zer: //
cbi lcd,dat // DATA=0
d_one: //
sbi lcd,clk // CLK -> 1 импульс
cbi lcd,clk // CLK -> 0
dec loop // счетчик цикла - 1
brne out_c //
sbi lcd,cs // CS -> 1
ret // выход
print_char: // Вывод на ЖКИ символа ASCII 5 х 7
push zl // сохранить zl регистр в стеке
push zh // сохранить zh регистр в стеке (последним зашел , первым вышел)
ldi tmp,5 // загрузить значение первого множителя
muls xl,tmp // Multiply signed xh and tmp
movw xl,r0 // Copy result back in xl:xh
ldi tmp,160 // загрузить число 160 DEC в регистр
sub xl,tmp // отнять от пары число 160 0x00 - 0x1F ненужная дата 0x1F * 5 (количество байтов в символе) = 160.
sbc xh,zero // число 160 - это количество сэкономленых и ненужных байт в флэш мк
ldi ZH,high(Code*2) // загрузить старший адрес строки данных
ldi ZL,low (Code*2) // загрузить младший адрес строки данных
add ZL,xl // выбираем нужный символ в строке
adc ZH,xh // путем прибавления данных к адресу строки
ldi tmp1,5 // загружаем счетчик цикла
flash_rc: // Чтение символа ASCII в цикле
lpm tmp,Z+ // загрузить в регистр данные по адресу Z с прибавлением 1 к Z
rcall lcd_data // вывести байт на ЖКИ
dec tmp1 // счетчик - 1
brne flash_rc // если не = 0 то опять по кругу
clr tmp // вывести пробел после символа
rcall lcd_data // вывести байт на ЖКИ
pop zh // извлечь zh из стека
pop zl // извлечь zl из стека
ret // выход
out_text: // Вывод текста из данных флэши
lpm xl,Z+ // загрузить в регистр данные по адресу Z с прибавлением 1 к Z
rcall print_char // вывести символ на ЖКИ
dec loop2 // счетчик символов - 1
brne out_text // если не равно 0 то опять все повторяем
ret // выход
print_char_b: // вывод на ЖКИ символа 9 х 14.
lds tmp,line_x // загружаем данные начальной строки вывода
sts cmd_yl,tmp // сохраняем данные команды адреса верхней строки
inc tmp // данные строки + 1
sts cmd_yh,tmp // сохраняем данные команды адреса нижней строки
lds tmp,cmd_xlh // загружаем старший байт адреса Х
rcall lcd_cmd // выводим команду
lds tmp,cmd_xll // загружаем младший байт адреса Х
rcall lcd_cmd // выводим команду
lds tmp,cmd_yl // загружаем адрес Y
rcall lcd_cmd // выводим команду
ldi tmp,18 // загрузить значение первого множителя
muls xl,tmp // Multiply signed xh and tmp
movw xl,r0 // Copy result back in xl:xh
ldi zh,high(Cod*2) // загрузить старший адрес строки данных
ldi zl,low (Cod*2) // загрузить младший адрес строки данных
add zl,xl // выбираем нужный символ в строке
adc zh,xh // путем прибавления данных к адресу строки
adiw xl,9 // прибавляем к адресу чтения данных 9
ldi tmp1,9 // загружаем счетчик цикла
flash_rc1: // Чтение символа ASCII в цикле
lpm tmp,z+ // загрузить в регистр данные по адресу Z с прибавлением 1 к Z
rcall lcd_data // вывести байт на ЖКИ
dec tmp1 // счетчик - 1
brne flash_rc1 // если не = 0 то опять по кругу
lds tmp,cmd_xlh // загружаем старший байт адреса Х
rcall lcd_cmd // выводим команду
lds tmp,cmd_xll // загружаем младший байт адреса Х
rcall lcd_cmd // выводим команду
lds tmp,cmd_yh // загружаем адрес Y+1
rcall lcd_cmd // выводим команду
ldi zh,high(Cod*2) // загрузить старший адрес строки данных
ldi zl,low (Cod*2) // загрузить младший адрес строки данных
add zl,xl // выбираем нужный символ в строке
adc zh,xh // путем прибавления данных к адресу строки
ldi tmp1,9 // загружаем счетчик цикла
flash_rc2: // Чтение символа ASCII в цикле
lpm tmp,z+ // загрузить в регистр данные по адресу Z с прибавлением 1 к Z
andi tmp,0x3F // чистим 2 ненужных бита
rcall lcd_data // вывести байт на ЖКИ
dec tmp1 // счетчик - 1
brne flash_rc2 // если не = 0 то опять по кругу
ret // выход
lcd_line1: // 1я Линия ЖКИ для вывода информации
rcall lcd_line //
ldi tmp,0xB0 //
rcall lcd_cmd //
ret //
lcd_line2: // 2я Линия ЖКИ для вывода информации
rcall lcd_line //
ldi tmp,0xB1 //
rcall lcd_cmd //
ret //
lcd_line3: // 3я Линия ЖКИ для вывода информации
rcall lcd_line //
ldi tmp,0xB2 //
rcall lcd_cmd //
ret //
lcd_line4: // 4я Линия ЖКИ для вывода информации
rcall lcd_line //
ldi tmp,0xB3 //
rcall lcd_cmd //
ret //
lcd_line5: // 5я Линия ЖКИ для вывода информации
rcall lcd_line //
ldi tmp,0xB4 //
rcall lcd_cmd //
ret //
lcd_line6: // 6я Линия ЖКИ для вывода информации
rcall lcd_line //
ldi tmp,0xB5 //
rcall lcd_cmd //
ret //
lcd_line7: // 7я Линия ЖКИ для вывода информации
rcall lcd_line //
ldi tmp,0xB6 //
rcall lcd_cmd //
ret //
lcd_line8: // 8я Линия ЖКИ для вывода информации
rcall lcd_line //
ldi tmp,0xB7 //
rcall lcd_cmd //
ret //
lcd_line: //
ldi tmp,0x10 //
rcall lcd_cmd //
ldi tmp,0x00 //
rcall lcd_cmd //
ret //
simvol_1: // установка адреса 1 символа 1
ldi tmp,0x10 //
sts cmd_xlh,tmp //
ldi tmp,0x01 //
sts cmd_xll,tmp //
rcall print_char_b // вывести символ 9 х 14 на ЖКИ
ret // выход
simvol_2: // установка адреса 13 символа 2
ldi tmp,0x10 //
sts cmd_xlh,tmp //
ldi tmp,0x0d //
sts cmd_xll,tmp //
rcall print_char_b // вывести символ 9 х 14 на ЖКИ
ret // выход
simvol_3: // установка адреса 25 символа 3
ldi tmp,0x11 //
sts cmd_xlh,tmp //
ldi tmp,0x09 //
sts cmd_xll,tmp //
rcall print_char_b // вывести символ 9 х 14 на ЖКИ
ret // выход
simvol_4: // установка адреса 37 символа 4
ldi tmp,0x12 //
sts cmd_xlh,tmp //
ldi tmp,0x05 //
sts cmd_xll,tmp //
rcall print_char_b // вывести символ 9 х 14 на ЖКИ
ret // выход
simvol_5: // установка адреса 49 символа 5
ldi tmp,0x13 //
sts cmd_xlh,tmp //
ldi tmp,0x01 //
sts cmd_xll,tmp //
rcall print_char_b // вывести символ 9 х 14 на ЖКИ
ret // выход
simvol_6: // установка адреса 61 символа 6
ldi tmp,0x13 //
sts cmd_xlh,tmp //
ldi tmp,0x0d //
sts cmd_xll,tmp //
rcall print_char_b // вывести символ 9 х 14 на ЖКИ
ret // выход
simvol_7: // установка адреса 73 символа 7
ldi tmp,0x14 //
sts cmd_xlh,tmp //
ldi tmp,0x09 //
sts cmd_xll,tmp //
rcall print_char_b // вывести символ 9 х 14 на ЖКИ
ret // выход
simvol_8: // установка адреса 85 символа 8
ldi tmp,0x15 //
sts cmd_xlh,tmp //
ldi tmp,0x05 //
sts cmd_xll,tmp //
rcall print_char_b // вывести символ 9 х 14 на ЖКИ
ret // выход
demonstration: // Вывод текста из FLASH на ЖКИ
rcall lcd_line2 // выбираем строку
ldi zh,high(txt1*2) // загружаем начальный адрес строки текста
ldi zl,low (txt1*2) // умножаем указатель адреса на 2
ldi loop2,16 // загружаем количество символов в строке
rcall out_text // выводим текст на ЖКИ
rcall lcd_line4 // выбираем строку
ldi zh,high(txt2*2) // загружаем начальный адрес строки текста
ldi zl,low (txt2*2) // умножаем указатель адреса на 2
ldi loop2,16 // загружаем количество символов в строке
rcall out_text // выводим текст на ЖКИ
rcall lcd_line6 // выбираем строку
ldi zh,high(txt3*2) // загружаем начальный адрес строки текста
ldi zl,low (txt3*2) // умножаем указатель адреса на 2
ldi loop2,16 // загружаем количество символов в строке
rcall out_text // выводим текст на ЖКИ
rcall lcd_line8 // выбираем строку
ldi zh,high(txt4*2) // загружаем начальный адрес строки текста
ldi zl,low (txt4*2) // умножаем указатель адреса на 2
ldi loop2,16 // загружаем количество символов в строке
rcall out_text // выводим текст на ЖКИ
;rcall wait_075s
rcall wait_075s
rcall clr_lcd // очистка ЖКИ
ret // выход
Txt1: // Текст 1
.db "pavel-pervomaysk"
Txt2: // Текст 2
.db "www.cnc-lab.com "
Txt3: // Текст 3
.db "ATmega8A-PU cpu "
Txt4: // Текст 4
.db "Nokia 1110i LCD "
// ASCII CODE from lcd 5 x 7 pixels. Один символ = 5 байт
Code:.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5f,0x00,0x00 ; 0x20 ' ' ; 0x21 '!'
.db 0x00,0x07,0x00,0x07,0x00,0x14,0x7f,0x14,0x7f,0x14 ; 0x22 '"' ; 0x23 '#'
.db 0x24,0x2a,0x7f,0x2a,0x12,0x23,0x13,0x08,0x64,0x62 ; 0x24 '$' ; 0x25 '%'
.db 0x36,0x49,0x55,0x22,0x50,0x00,0x05,0x03,0x00,0x00 ; 0x26 '&' ; 0x27 ''
.db 0x00,0x1c,0x22,0x41,0x00,0x00,0x41,0x22,0x1c,0x00 ; 0x28 '(' ; 0x29 ')'
.db 0x14,0x08,0x3e,0x08,0x14,0x08,0x08,0x3e,0x08,0x08 ; 0x2A '*' ; 0x2B '+'
.db 0x00,0x50,0x30,0x00,0x00,0x08,0x08,0x08,0x08,0x08 ; 0x2C ',' ; 0x2D '-'
.db 0x00,0x60,0x60,0x00,0x00,0x20,0x10,0x08,0x04,0x02 ; 0x2E '.' ; 0x2F '/'
.db 0x3e,0x51,0x49,0x45,0x3e,0x00,0x42,0x7f,0x40,0x00 ; 0x30 '0' ; 0x31 '1'
.db 0x42,0x61,0x51,0x49,0x46,0x21,0x41,0x45,0x4b,0x31 ; 0x32 '2' ; 0x33 '3'
.db 0x18,0x14,0x12,0x7f,0x10,0x27,0x45,0x45,0x45,0x39 ; 0x34 '4' ; 0x35 '5'
.db 0x3c,0x4a,0x49,0x49,0x30,0x01,0x71,0x09,0x05,0x03 ; 0x36 '6' ; 0x37 '7'
.db 0x36,0x49,0x49,0x49,0x36,0x06,0x49,0x49,0x29,0x1e ; 0x38 '8' ; 0x39 '9'
.db 0x00,0x36,0x36,0x00,0x00,0x00,0x56,0x36,0x00,0x00 ; 0x3A ':' ; 0x3B ';'
.db 0x08,0x14,0x22,0x41,0x00,0x14,0x14,0x14,0x14,0x14 ; 0x3C '<' ; 0x3D '='
.db 0x00,0x41,0x22,0x14,0x08,0x02,0x01,0x51,0x09,0x06 ; 0x3E '>' ; 0x3F '?'
.db 0x32,0x49,0x79,0x41,0x3e,0x7e,0x11,0x11,0x11,0x7e ; 0x40 '' ; 0x41 'A'
.db 0x7f,0x49,0x49,0x49,0x36,0x3e,0x41,0x41,0x41,0x22 ; 0x42 'B' ; 0x43 'C'
.db 0x7f,0x41,0x41,0x22,0x1c,0x7f,0x49,0x49,0x49,0x41 ; 0x44 'D' ; 0x45 'E'
.db 0x7f,0x09,0x09,0x09,0x01,0x3e,0x41,0x49,0x49,0x7a ; 0x46 'F' ; 0x47 'G'
.db 0x7f,0x08,0x08,0x08,0x7f,0x00,0x41,0x7f,0x41,0x00 ; 0x48 'H' ; 0x49 'I'
.db 0x20,0x40,0x41,0x3f,0x01,0x7f,0x08,0x14,0x22,0x41 ; 0x4A 'J' ; 0x4B 'K'
.db 0x7f,0x40,0x40,0x40,0x40,0x7f,0x02,0x0c,0x02,0x7f ; 0x4C 'L' ; 0x4D 'M'
.db 0x7f,0x04,0x08,0x10,0x7f,0x3e,0x41,0x41,0x41,0x3e ; 0x4E 'N' ; 0x4F 'O'
.db 0x7f,0x09,0x09,0x09,0x06,0x3e,0x41,0x51,0x21,0x5e ; 0x50 'P' ; 0x51 'Q'
.db 0x7f,0x09,0x19,0x29,0x46,0x46,0x49,0x49,0x49,0x31 ; 0x52 'R' ; 0x53 'S'
.db 0x01,0x01,0x7f,0x01,0x01,0x3f,0x40,0x40,0x40,0x3f ; 0x54 'T' ; 0x55 'U'
.db 0x1f,0x20,0x40,0x20,0x1f,0x3f,0x40,0x38,0x40,0x3f ; 0x56 'V' ; 0x57 'W'
.db 0x63,0x14,0x08,0x14,0x63,0x07,0x08,0x70,0x08,0x07 ; 0x58 'X' ; 0x59 'Y'
.db 0x61,0x51,0x49,0x45,0x43,0x00,0x7f,0x41,0x41,0x00 ; 0x5A 'Z' ; 0x5B '['
.db 0x02,0x04,0x08,0x10,0x20,0x00,0x41,0x41,0x7f,0x00 ; 0x5C '' ; 0x5D ']'
.db 0x04,0x02,0x01,0x02,0x04,0x40,0x40,0x40,0x40,0x40 ; 0x5E '^' ; 0x5F '_'
.db 0x00,0x01,0x02,0x04,0x00,0x20,0x54,0x54,0x54,0x78 ; 0x60 '' ; 0x61 'a'
.db 0x7f,0x48,0x44,0x44,0x38,0x38,0x44,0x44,0x44,0x20 ; 0x62 'b' ; 0x63 'c'
.db 0x38,0x44,0x44,0x48,0x7f,0x38,0x54,0x54,0x54,0x18 ; 0x64 'd' ; 0x65 'e'
.db 0x08,0x7e,0x09,0x01,0x02,0x0c,0x52,0x52,0x52,0x3e ; 0x66 'f' ; 0x67 'g'
.db 0x7f,0x08,0x04,0x04,0x78,0x00,0x44,0x7d,0x40,0x00 ; 0x68 'h' ; 0x69 'i'
.db 0x20,0x40,0x44,0x3d,0x00,0x7f,0x10,0x28,0x44,0x00 ; 0x6A 'j' ; 0x6B 'k'
.db 0x00,0x41,0x7f,0x40,0x00,0x7c,0x04,0x18,0x04,0x78 ; 0x6C 'l' ; 0x6D 'm'
.db 0x7c,0x08,0x04,0x04,0x78,0x38,0x44,0x44,0x44,0x38 ; 0x6E 'n' ; 0x6F 'o'
.db 0x7c,0x14,0x14,0x14,0x08,0x08,0x14,0x14,0x18,0x7c ; 0x70 'p' ; 0x71 'q'
.db 0x7c,0x08,0x04,0x04,0x08,0x48,0x54,0x54,0x54,0x20 ; 0x72 'r' ; 0x73 's'
.db 0x04,0x3f,0x44,0x40,0x20,0x3c,0x40,0x40,0x20,0x7c ; 0x74 't' ; 0x75 'u'
.db 0x1c,0x20,0x40,0x20,0x1c,0x3c,0x40,0x30,0x40,0x3c ; 0x76 'v' ; 0x77 'w'
.db 0x44,0x28,0x10,0x28,0x44,0x0c,0x50,0x50,0x50,0x3c ; 0x78 'x' ; 0x79 'y'
.db 0x44,0x64,0x54,0x4c,0x44,0x00,0x08,0x36,0x41,0x00 ; 0x7A 'z' ; 0x7B '{'
.db 0x00,0x00,0x7f,0x00,0x00,0x00,0x41,0x36,0x08,0x00 ; 0x7C '|' ; 0x7D '}'
.db 0x10,0x08,0x08,0x10,0x08,0x06,0x09,0x09,0x06,0x00 ; 0x7E '->'; 0x7F ' ' градус цельсия
// ASCII CODE from lcd 9 x 14 pixels. Один символ = 18 байт
Cod: .db 0xff,0xff,0x03,0x03,0x03,0x03,0x03,0xff,0xff,0x3f,0x3f,0x30,0x30,0x30,0x30,0x30,
0x3f,0x3f ; '0'
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x3f,0x3f ; '1'
.db 0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xff,0xff,0x3f,0x3f,0x30,0x30,0x30,0x30,0x30,
0x30,0x30 ; '2'
.db 0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xff,0xff,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
0x3f,0x3f ; '3'
.db 0xff,0xff,0xc0,0xc0,0xc0,0xc0,0xc0,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x3f,0x3f ; '4'
.db 0xff,0xff,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
0x3f,0x3f ; '5'
.db 0xff,0xff,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x3f,0x3f,0x30,0x30,0x30,0x30,0x30,
0x3f,0x3f ; '6'
.db 0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x3f,0x3f ; '7'
.db 0xff,0xff,0xc3,0xc3,0xc3,0xc3,0xc3,0xff,0xff,0x3f,0x3f,0x30,0x30,0x30,0x30,0x30,
0x3f,0x3f ; '8'
.db 0xff,0xff,0xc3,0xc3,0xc3,0xc3,0xc3,0xff,0xff,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
0x3f,0x3f ; '9'
.db 0xfc,0xfe,0xc3,0xc3,0xc3,0xc3,0xc3,0xfe,0xfc,0x3f,0x3f,0x00,0x00,0x00,0x00,0x00,
0x3f,0x3f ; 'A'
.db 0xff,0xff,0xc3,0xc3,0xc3,0xc3,0xc3,0x3c,0x3c,0x3f,0x3f,0x30,0x30,0x30,0x30,0x30,
0x0f,0x0f ; 'B'
.db 0xfc,0xfc,0x03,0x03,0x03,0x03,0x03,0x0c,0x0c,0x0f,0x0f,0x30,0x30,0x30,0x30,0x30,
0x0c,0x0c ; 'C'
.db 0xff,0xff,0x03,0x03,0x03,0x03,0x03,0xfc,0xfc,0x3f,0x3f,0x30,0x30,0x30,0x30,0x30,
0x0f,0x0f ; 'D'
.db 0xff,0xff,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x03,0x3f,0x3f,0x30,0x30,0x30,0x30,0x30,
0x30,0x30 ; 'E'
.db 0xff,0xff,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x03,0x3f,0x3f,0x00,0x00,0x00,0x00,0x00,
0x00,0x00 ; 'F'
.db 0xfc,0xfe,0x03,0x03,0x83,0x83,0x83,0x8e,0x8c,0x0f,0x1f,0x30,0x30,0x31,0x31,0x31,
0x1f,0x0f ; 'G'
.db 0xff,0xff,0xc0,0xc0,0xc0,0xc0,0xc0,0xff,0xff,0x3f,0x3f,0x00,0x00,0x00,0x00,0x00,
0x3f,0x3f ; 'H'
.db 0x00,0x03,0x03,0xff,0xff,0x03,0x03,0x00,0x00,0x00,0x30,0x30,0x3f,0x3f,0x30,0x30,
0x00,0x00 ; 'I'
.db 0x00,0x00,0x00,0x03,0x03,0xff,0xff,0x03,0x03,0x0c,0x1c,0x30,0x30,0x30,0x1f,0x0f,
0x00,0x00 ; 'J'
.db 0xff,0xff,0xc0,0xe0,0x30,0x18,0x0c,0x07,0x03,0x3f,0x3f,0x00,0x01,0x03,0x06,0x0c,
0x38,0x30 ; 'K'
.db 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x3f,0x30,0x30,0x30,0x30,0x30,
0x30,0x30 ; 'L'
.db 0xff,0xff,0x06,0x0c,0x18,0x0c,0x06,0xff,0xff,0x3f,0x3f,0x00,0x00,0x00,0x00,0x00,
0x3f,0x3f ; 'M'
.db 0xff,0xff,0x30,0x60,0xc0,0x80,0x00,0xff,0xff,0x3f,0x3f,0x00,0x00,0x00,0x01,0x03,
0x3f,0x3f ; 'N'
.db 0xfc,0xfe,0x03,0x03,0x03,0x03,0x03,0xfe,0xfc,0x0f,0x1f,0x30,0x30,0x30,0x30,0x30,
0x1f,0x0f ; 'O'
.db 0xff,0xff,0xc3,0xc3,0xc3,0xc3,0xc3,0x7e,0x3c,0x3f,0x3f,0x00,0x00,0x00,0x00,0x00,
0x00,0x00 ; 'P'
.db 0xfc,0xfe,0x03,0x03,0x03,0x03,0x03,0xfe,0xfc,0x0f,0x1f,0x30,0x30,0x34,0x2c,0x18,
0x37,0x2f ; 'Q'
.db 0xff,0xff,0xc3,0xc3,0xc3,0xc3,0xc3,0x7e,0x3c,0x3f,0x3f,0x01,0x03,0x06,0x0c,0x18,
0x30,0x20 ; 'R'
.db 0x3c,0x7e,0xc3,0xc3,0xc3,0xc3,0xc3,0x83,0x00,0x00,0x30,0x30,0x30,0x30,0x30,0x30,
0x1f,0x0f ; 'S'
.db 0x03,0x03,0x03,0xff,0xff,0xff,0x03,0x03,0x03,0x00,0x00,0x00,0x3f,0x3f,0x3f,0x00,
0x00,0x00 ; 'T'
.db 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x0f,0x1f,0x30,0x30,0x30,0x30,0x30,
0x1f,0x0f ; 'U'
.db 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x03,0x07,0x0c,0x18,0x30,0x18,0x0c,
0x07,0x03 ; 'V'
.db 0xff,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xff,0x0f,0x1f,0x30,0x30,0x1f,0x30,0x30,
0x1f,0x0f ; 'W'
.db 0x07,0x0f,0x18,0xf0,0xe0,0xf0,0x18,0x0f,0x07,0x38,0x3c,0x06,0x03,0x01,0x03,0x06,
0x3c,0x38 ; 'X'
.db 0x3f,0x7f,0xc0,0xc0,0xc0,0xc0,0xc0,0x7f,0x3f,0x00,0x00,0x00,0x3f,0x3f,0x3f,0x00,
0x00,0x00 ; 'Y'
.db 0x03,0x03,0x03,0x83,0xc3,0x63,0x33,0x1f,0x0f,0x3c,0x3e,0x33,0x31,0x30,0x30,0x30,
0x30,0x30 ; 'Z'
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00 ; ' '
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x3c,0x3c,0x00,
0x00,0x00 ; '.'
.db 0x00,0x00,0x00,0x3c,0x3c,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x0f,0x0f,0x00,
0x00,0x00 ; ':'
.db 0x00,0x1c,0x3e,0x63,0x63,0x63,0x3e,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00 ; 'o' градус цельсия
.db 0x00,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00 ; '-' минус
.db 0xc0,0xc0,0xc0,0xf8,0xf8,0xc0,0xc0,0xc0,0x00,0x00,0x00,0x00,0x07,0x07,0x00,0x00,
0x00,0x00 ; '+' плюс
.db 0x80,0x40,0x40,0x40,0x80,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0x00,0x00,0x01,0x01,
0x01,0x00 ; '~' переменка
; .db 0x,0x,0x,0x,0x,0x,0x,0x,0x, ; здесь добавляем свои символы 9 х 14
; .db 0x,0x,0x,0x,0x,0x,0x,0x,0x ; ' '