|
Набор команд драйвера PCF8531 и их краткое описание. Обратите внимание (еще раз) в драйвер можно только записывать данные читать "НИЗЯ", поэтому бит R/W записи/чтения всегда должен быть "0". Таблица 1.
;============================================================================================ Инициализация дисплея
;Как вызвать movlw LOW inittic32b ; адрес таблицы инициализации дисплея movwf TBLPTRL ; movlw HIGH inittic32b ; movwf TBLPTRH ; call load_tab ; загрузка таблиц ;============================================================================================ ; сама функция ;============================================================================================ load_tab movlw ADR_TIC ; адрес индикатора 0х78 movwf adres ;
TBLRD*+ ; Чтение TABLAT и инкремент указателя movff TABLAT,Au ; загрузка счетчика количества байт в последовательности call b_start_w ; формирования начала START - цикл запись cikl_tab ; цикл чтения последовательности TBLRD*+ ; Чтение TABLAT и инкремент указателя movf TABLAT,w ; call i2c_write ; формирования передачи адреса устройства (цикл последующая запись) decfsz Au,f ; уменьшения счет. циклов на 1 и проверка на 0 bra cikl_tab ; повтор call b_stop ; формировать бит стоп return ; ;============================================================================================ Функция очистки дисплея
Для этого надо установить курсор
в "начало" и прописать все ОЗУ дисплея нулями, clr_lcd ; очистка дисплея movlw ADR_TIC ; адрес индикатора 0х78 movwf adres ;
call b_start_w ; формирования начала START - цикл запись movlw b'00000000' ; последовательность команд call i2c_write ; movlw b'00000001' ; установить страницу команд 00 call i2c_write ; movlw b'01000000' ; курсор по Y = 0 call i2c_write ; movlw b'10000000' ; курсор по X = 0 call i2c_write ; call b_restart_w ; movlw b'01000000' ; последовательность данных call i2c_write ; clrf Au ; ck_och_01 ; очистка банков 0-1 movlw 0x00 ; call i2c_write ; decfsz Au,f ; уменьшения счет. циклов на 1 и проверка на 0 bra ck_och_01 ; повтор ck_och_23 ; очистка банков 2-3 movlw 0x00 ; call i2c_write ; decfsz Au,f ; уменьшения счет. циклов на 1 и проверка на 0 bra ck_och_23 ; повтор ck_och_45 ; очистка банков 4-4 (иконки) movlw 0x00 ; call i2c_write ; decfsz Au,f ; уменьшения счет. циклов на 1 и проверка на 0 bra ck_och_45 ; повтор call b_stop ; формировать бит стоп ;======================================== movlw .0 ; установить курсор в позицию 0;0 movwf y_cursor ; movlw .0 ; movwf x_cursor ; call cursor ; return ;
;============================================================================================ Функция управления курсором. Весь дисплей представляет собой 4 страницы по 128 "столбиков" байт. Если мы ходим
куда то записать байт данных и этим сформировать изображение мы должны предварительно выставить курсор. по Y мы будем иметь значение 0-3, а по X 0 - 127. Как надо вызывать:
movlw
.0 ;
установить курсор в позицию 0х0 ;============================================================================================ cursor ; x_cursor,y_cursor установка положения курсора
movlw ADR_TIC ; адрес индикатора 0х78 movwf adres ; call b_start_w ; movlw b'00000000' ; последовательность команд call i2c_write ; movlw b'00000001' ; установить страницу команд 00 call i2c_write ; movlw b'00000111' ; andwf y_cursor,w ; movwf regisr ; bsf regisr,6 ; movf regisr,w ; call i2c_write ; movff x_cursor,regisr ; bsf regisr,7 ; movf regisr,w ; call i2c_write ; call b_stop ; формировать бит стоп return ; ;============================================================================================
Сервисная функция очистки текущей строки ;============================================================================================ clr_tstrok ; очистка текущей строки movlw ADR_TIC ; адрес индикатора 0х78 movwf adres ;
movlw .0 ; movwf x_cursor ; call cursor ;/
call b_start_w ; формирования начала START - цикл запись movlw b'01000000' ; последовательность данных call i2c_write ; movlw .127 movwf Au ; ck_tstrok ; очистка movlw 0x00 ; call i2c_write ; decfsz Au,f ; уменьшения счет. циклов на 1 и проверка на 0 bra ck_tstrok ; повтор
call b_stop ; формировать бит стоп return ; ;============================================================================================
Знакогенератор
Для вывода на дисплей символов необходимо создать таблицу символов и разместить ее в памяти программ. Таблица создана с правилами WINDOWS, что бы можно было составлять тексты не только латинскими символами, но и в кириллице. ;============================================================================================
;=================================================== S_kir db 0x00,0x00,0x00,0x00,0x00,0x00 ; 0x20 пробел db 0x00,0x00,0x4F,0x00,0x00,0x00 ; 0x21 ! db 0x00,0x07,0x00,0x07,0x00,0x00 ; 0x22 " db 0x14,0x7F,0x14,0x7F,0x14,0x00 ; 0x23 # db 0x24,0x2A,0x7F,0x2A,0x12,0x00 ; 0x24 $ db 0x63,0x13,0x08,0x64,0x63,0x00 ; 0x25 % db 0x36,0x49,0x55,0x22,0x50,0x00 ; 0x26 & db 0x00,0x05,0x03,0x00,0x00,0x00 ; 0x27 ' db 0x1C,0x22,0x41,0x00,0x00,0x00 ; 0x28 ( db 0x00,0x00,0x41,0x22,0x1C,0x00 ; 0x29 ) db 0x14,0x08,0x3E,0x08,0x14,0x00 ; 0x2A * db 0x08,0x08,0x3E,0x08,0x08,0x00 ; 0x2B + db 0x00,0x00,0x50,0x30,0x00,0x00 ; 0x2C , db 0x08,0x08,0x08,0x08,0x08,0x00 ; 0x2D - db 0x00,0x00,0x60,0x60,0x00,0x00 ; 0x2E . db 0x20,0x10,0x08,0x04,0x02,0x00 ; 0x2F /
chis db 0x3E,0x51,0x49,0x45,0x3E,0x00 ; 0x30 0 db 0x00,0x42,0x7F,0x40,0x00,0x00 ; 0x31 1 db 0x42,0x61,0x51,0x49,0x46,0x00 ; 0x32 2 db 0x21,0x41,0x45,0x4B,0x31,0x00 ; 0x33 3 db 0x18,0x14,0x12,0x7F,0x10,0x00 ; 0x34 4 db 0x27,0x45,0x45,0x45,0x39,0x00 ; 0x35 5 db 0x3C,0x4A,0x49,0x49,0x30,0x00 ; 0x36 6 db 0x01,0x71,0x09,0x05,0x03,0x00 ; 0x37 7 db 0x36,0x49,0x49,0x49,0x36,0x00 ; 0x38 8 db 0x06,0x49,0x49,0x29,0x1E,0x00 ; 0x39 9 db 0x00,0x00,0x36,0x36,0x00,0x00 ; 0x3A : db 0x00,0x00,0x56,0x36,0x00,0x00 ; 0x3B ; db 0x08,0x14,0x22,0x41,0x00,0x00 ; 0x3C < db 0x14,0x14,0x14,0x14,0x14,0x00 ; 0x3D = db 0x00,0x41,0x22,0x14,0x08,0x00 ; 0x3E > db 0x02,0x01,0x51,0x09,0x06,0x00 ; 0x3F ?
db 0x32,0x49,0x39,0x42,0x3C,0x00 ; 0x40 @ db 0x7E,0x11,0x11,0x11,0x7E,0x00 ; 0x41 А db 0x7F,0x49,0x49,0x49,0x36,0x00 ; 0x42 В db 0x3E,0x41,0x41,0x41,0x22,0x00 ; 0x43 С db 0x7F,0x41,0x41,0x22,0x1C,0x00 ; 0x44 D db 0x7F,0x49,0x49,0x49,0x41,0x00 ; 0x45 Е db 0x7F,0x09,0x09,0x09,0x01,0x00 ; 0x46 F db 0x3E,0x41,0x49,0x49,0x7A,0x00 ; 0x47 G db 0x7F,0x08,0x08,0x08,0x7F,0x00 ; 0x48 Н db 0x00,0x41,0x7F,0x41,0x00,0x00 ; 0x49 I db 0x20,0x40,0x41,0x3F,0x01,0x00 ; 0x4A J db 0x7F,0x08,0x14,0x22,0x41,0x00 ; 0x4B К db 0x7F,0x40,0x40,0x40,0x40,0x00 ; 0x4C L db 0x7F,0x02,0x04,0x02,0x7F,0x00 ; 0x4D М db 0x7F,0x04,0x08,0x10,0x7F,0x00 ; 0x4E N db 0x3E,0x41,0x41,0x41,0x3E,0x00 ; 0x4F О
db 0x7F,0x09,0x09,0x09,0x06,0x00 ; 0x50 Р db 0x3E,0x41,0x51,0x21,0x5E,0x00 ; 0x51 Q db 0x7F,0x09,0x19,0x29,0x46,0x00 ; 0x52 R db 0x46,0x49,0x49,0x49,0x31,0x00 ; 0x53 S db 0x01,0x01,0x7F,0x01,0x01,0x00 ; 0x54 Т db 0x3F,0x40,0x40,0x40,0x3F,0x00 ; 0x55 U db 0x1F,0x20,0x40,0x20,0x1F,0x00 ; 0x56 V db 0x3F,0x40,0x38,0x40,0x3F,0x00 ; 0x57 W db 0x63,0x14,0x08,0x14,0x63,0x00 ; 0x58 Х db 0x07,0x08,0x78,0x08,0x07,0x00 ; 0x59 Y db 0x61,0x51,0x49,0x45,0x43,0x00 ; 0x5A Z db 0x00,0x7F,0x41,0x41,0x00,0x00 ; 0x5B [ db 0x18,0x24,0x7E,0x24,0x18,0x00 ; 0x5C ф db 0x00,0x41,0x41,0x7F,0x00,0x00 ; 0x5D ] db 0x04,0x02,0x01,0x02,0x04,0x00 ; 0x5E ^ db 0x40,0x40,0x40,0x40,0x40,0x00 ; 0x5F _
db 0x00,0x00,0x01,0x02,0x00,0x00 ; 0x60 ' db 0x20,0x54,0x54,0x54,0x78,0x00 ; 0x61 а db 0x7F,0x48,0x44,0x44,0x38,0x00 ; 0x62 b db 0x38,0x44,0x44,0x44,0x20,0x00 ; 0x63 с db 0x38,0x44,0x44,0x48,0x7F,0x00 ; 0x64 d db 0x38,0x54,0x54,0x54,0x18,0x00 ; 0x65 е db 0x08,0x7E,0x09,0x01,0x02,0x00 ; 0x66 f db 0x08,0x54,0x54,0x54,0x3C,0x00 ; 0x67 g db 0x7F,0x08,0x04,0x04,0x78,0x00 ; 0x68 h db 0x00,0x44,0x7D,0x40,0x00,0x00 ; 0x69 i db 0x20,0x40,0x44,0x3D,0x00,0x00 ; 0x6A j db 0x00,0x7F,0x10,0x28,0x44,0x00 ; 0x6B k db 0x00,0x41,0x7F,0x40,0x00,0x00 ; 0x6C l db 0x7C,0x04,0x18,0x04,0x78,0x00 ; 0x6D m db 0x7C,0x08,0x04,0x04,0x78,0x00 ; 0x6E n db 0x38,0x44,0x44,0x44,0x38,0x00 ; 0x6F o
db 0x7C,0x14,0x14,0x14,0x08,0x00 ; 0x70 р db 0x08,0x14,0x14,0x14,0x7C,0x00 ; 0x71 q db 0x7C,0x08,0x04,0x04,0x08,0x00 ; 0x72 r db 0x48,0x54,0x54,0x54,0x24,0x00 ; 0x73 s db 0x04,0x3F,0x44,0x40,0x20,0x00 ; 0x74 t db 0x3C,0x40,0x40,0x20,0x7C,0x00 ; 0x75 u db 0x1C,0x20,0x40,0x20,0x1C,0x00 ; 0x76 v db 0x3C,0x40,0x30,0x40,0x3C,0x00 ; 0x77 w db 0x44,0x28,0x10,0x28,0x44,0x00 ; 0x78 х db 0x0C,0x50,0x50,0x50,0x3C,0x00 ; 0x79 у db 0x44,0x64,0x54,0x4C,0x44,0x00 ; 0x7A z db 0x00,0x08,0x36,0x41,0x00,0x00 ; 0x7B { db 0x00,0x00,0x7F,0x00,0x00,0x00 ; 0x7C | db 0x00,0x41,0x36,0x08,0x00,0x00 ; 0x7D } db 0x10,0x08,0x08,0x10,0x10,0x00 ; 0x7E ~
;============================================================================================ ;С этого места можно формировать любые символы. Самое главное не удалять строки. И что бы количество данных было сохранено
db 0xFF,0x01,0x01,0x01,0x01,0x01 ; 0x7F символы псевдографики db 0x01,0x01,0x01,0x01,0x01,0x01 ; 0x80 db 0x01,0x01,0xFF,0x01,0x01,0x01 ; 0x81 db 0x01,0x01,0x01,0x01,0x01,0xFF ; 0x82 db 0xFF,0x00,0x00,0x00,0x00,0x00 ; 0x83 db 0x00,0x00,0xFF,0x00,0x00,0x00 ; 0x84 DB 0x00,0x00,0x00,0x00,0x00,0xFF ; 0x85 db 0xFF,0x08,0x08,0x08,0x08,0x08 ; 0x86 db 0x08,0x08,0x08,0x08,0x08,0x08 ; 0x87 db 0x80,0x80,0xFF,0x80,0x80,0x80 ; 0x88 db 0x80,0x80,0x80,0x80,0x80,0xFF ; 0x89 db 0xFF,0x80,0x80,0x80,0x80,0x80 ; 0x8A db 0x80,0x80,0x80,0x80,0x80,0x80 ; 0x8B db 0x08,0x08,0xFF,0x08,0x08,0x08 ; 0x8C db 0x08,0x08,0x08,0x08,0x08,0xFF ; 0x8D db 0xFF,0x01,0xFD,0x05,0x05,0x05 ; 0x8E db 0x05,0x05,0x05,0x05,0x05,0x05 ; 0x8F db 0x05,0xFD,0x01,0xFD,0x05,0x05 ; 0x90 db 0x05,0x05,0x05,0xFD,0x01,0xFF ; 0x91 db 0xFF,0x00,0xFF,0x00,0x00,0x00 ; 0x92 db 0x00,0xFF,0x00,0xFF,0x00,0x00 ; 0x93 db 0x00,0x00,0x00,0xFF,0x00,0xFF ; 0x94 db 0xFF,0x00,0xF7,0x14,0x14,0x14 ; 0x95 db 0x14,0x14,0x14,0x14,0x14,0x14 ; 0x96 db 0x14,0xF7,0x00,0xF7,0x14,0x14 ; 0x97 db 0x14,0x14,0x14,0xF7,0x00,0xFF ; 0x98 DB 0xFF,0x80,0xBF,0xA0,0xA0,0xA0 ; 0x99 DB 0xA0,0xA0,0xA0,0xA0,0xA0,0xA0 ; 0x9A db 0xA0,0xBF,0x80,0xBF,0xA0,0xA0 ; 0x9B db 0xA0,0xA0,0xA0,0xBF,0x80,0xFF ; 0x9C
chis_m db 0x00,0x00,0x7C,0x44,0x7C,0x00 ; 0x9D 0 маленькие цифры db 0x00,0x00,0x00,0x00,0x7C,0x00 ; 0x9E 1 db 0x00,0x00,0x74,0x54,0x5C,0x00 ; 0x9F 2 db 0x00,0x00,0x54,0x54,0x7C,0x00 ; 0xA0 3 db 0x00,0x00,0x1C,0x10,0x7C,0x00 ; 0xA1 4 db 0x00,0x00,0x5C,0x54,0x74,0x00 ; 0xA2 5 db 0x00,0x00,0x7C,0x54,0x74,0x00 ; 0xA3 6 db 0x00,0x00,0x04,0x04,0x7C,0x00 ; 0xA4 7 db 0x00,0x00,0x7C,0x54,0x7C,0x00 ; 0xA5 8 db 0x41,0x5D,0x55,0x49,0x41,0x5D ; 0xA6 dli db 0x51,0x51,0x41,0x5D,0x41,0x00 ; 0xA7 db 0x11,0x2A,0x44,0x11,0x2A,0x44 ; 0xA8 нагрев db 0x55,0x55,0x55,0x55,0x55,0x00 ; 0xA9 дымогенератор
db 0x08,0x04,0x08,0x08,0x04,0x00 ; 0xAA ~; spe * db 0x04,0x02,0x7F,0x02,0x04,0x00 ; 0xAB su * стрелка верх db 0x10,0x20,0x7F,0x20,0x10,0x00 ; 0xAC sd * // вниз db 0x08,0x08,0x2A,0x1C,0x08,0x00 ; 0xAD sr * стрелка в право -> db 0x08,0x1C,0x2A,0x08,0x08,0x00 ; 0xAE sl * <- стрелка в влево
db 0x00,0xE0,0x10,0xC8,0x24,0x14 ; 0xAF верхний левый угол db 0x14,0x14,0x14,0x14,0x14,0x14 ; 0xB0 горизонтальные линии верняя db 0x14,0x24,0xC8,0x10,0xE0,0x00 ; 0xB1 верний правый угол db 0x00,0xFF,0x00,0xFF,0x00,0x00 ; 0xB2 веритикальные левые линии db 0x00,0x00,0xFF,0x00,0xFF,0x00 ; 0xB3 вертикальные правые линии db 0x00,0x07,0x08,0x13,0x24,0x28 ; 0xB4 нижний левый угол db 0x28,0x24,0x13,0x08,0x07,0x00 ; 0xB5 нижний правый угол db 0x28,0x28,0x28,0x28,0x28,0x28 ; 0xB6 горизонтальные линии нижняя
db 0x08,0x1C,0x3E,0x7F,0x00,0x00 ; 0xB7 треугольник влево db 0x00,0x7F,0x3E,0x1C,0x08,0x00 ; 0xB8 треугольник вправо
db 0x10,0x1E,0x3F,0x1E,0x10,0x00 ; 0xB9 kol * колокольчик db 0xC6,0xA4,0x18,0x18,0x25,0x63 ; 0xBA вентилятор
db 0x7E,0x42,0x42,0x42,0x7E,0x00 ; 0xBB квадрат пустой db 0x7E,0x7E,0x7E,0x7E,0x7E,0x00 ; 0xBC квадрат полный db 0x0C,0x30,0xC0,0x30,0x0C,0x03 ; 0xBD птичка db 0x01,0xFF,0x80,0x80,0xFF,0x01 ; 0xBE импульс
db 0x06,0x09,0x09,0x06,0x00,0x00 ; 0xBF градус * ;============================================================================================ ;С этого места начинается кириллица и коды менять нельзя
db 0x7E,0x11,0x11,0x11,0x7E,0x00 ; 0xC0 А db 0x7F,0x49,0x49,0x49,0x30,0x00 ; Б db 0x7F,0x49,0x49,0x49,0x36,0x00 ; В db 0x7F,0x01,0x01,0x01,0x03,0x00 ; Г db 0xE0,0x51,0x4F,0x41,0xFF,0x00 ; Д db 0x7F,0x49,0x49,0x49,0x41,0x00 ; Е db 0x77,0x08,0x7F,0x08,0x77,0x00 ; Ж db 0x49,0x49,0x49,0x49,0x36,0x00 ; З db 0x7F,0x10,0x08,0x04,0x7F,0x00 ; И db 0x7C,0x21,0x12,0x09,0x7C,0x00 ; Й db 0x7F,0x08,0x14,0x22,0x41,0x00 ; К db 0x20,0x41,0x3F,0x01,0x7F,0x00 ; Л db 0x7F,0x02,0x04,0x02,0x7F,0x00 ; М db 0x7F,0x08,0x08,0x08,0x7F,0x00 ; Н db 0x3E,0x41,0x41,0x41,0x3E,0x00 ; О db 0x7F,0x01,0x01,0x01,0x7F,0x00 ; П db 0x7F,0x09,0x09,0x09,0x06,0x00 ; Р db 0x3E,0x41,0x41,0x41,0x22,0x00 ; С db 0x01,0x01,0x7F,0x01,0x01,0x00 ; Т db 0x47,0x28,0x10,0x08,0x07,0x00 ; У db 0x18,0x24,0x7F,0x24,0x18,0x00 ; ф db 0x63,0x14,0x08,0x14,0x63,0x00 ; Х db 0x7F,0x40,0x40,0x40,0xFF,0x00 ; Ц db 0x07,0x08,0x08,0x08,0x7F,0x00 ; Ч db 0x7F,0x40,0x7F,0x40,0x7F,0x00 ; Ш db 0x7F,0x40,0x7F,0x40,0xFF,0x00 ; Щ db 0x01,0x7F,0x48,0x48,0x30,0x00 ; Ъ db 0x7E,0x48,0x30,0x00,0x7E,0x00 ; Ы db 0x7E,0x48,0x48,0x48,0x30,0x00 ; Ь db 0x22,0x41,0x49,0x49,0x3E,0x00 ; Э db 0x7F,0x08,0x3E,0x41,0x3E,0x00 ; Ю db 0x46,0x29,0x19,0x09,0x7F,0x00 ; Я
db 0x20,0x54,0x54,0x54,0x78,0x00 ; а db 0x3C,0x4A,0x4A,0x49,0x31,0x00 ; б db 0x7C,0x54,0x54,0x28,0x00,0x00 ; в db 0x7C,0x04,0x04,0x04,0x0C,0x00 ; г db 0xE0,0x54,0x4C,0x44,0xFC,0x00 ; д db 0x38,0x54,0x54,0x54,0x18,0x00 ; е db 0x6C,0x10,0x7C,0x10,0x6C,0x00 ; ж db 0x44,0x44,0x54,0x54,0x28,0x00 ; з db 0x7C,0x20,0x10,0x08,0x7C,0x00 ; и db 0x78,0x42,0x24,0x12,0x78,0x00 ; й db 0x7C,0x10,0x28,0x44,0x00,0x00 ; к db 0x20,0x44,0x3C,0x04,0x7C,0x00 ; л db 0x7C,0x08,0x10,0x08,0x7C,0x00 ; м db 0x7C,0x10,0x10,0x10,0x7C,0x00 ; н db 0x38,0x44,0x44,0x44,0x38,0x00 ; o db 0x7C,0x04,0x04,0x04,0x7C,0x00 ; п db 0x7C,0x14,0x14,0x14,0x08,0x00 ; р db 0x38,0x44,0x44,0x44,0x20,0x00 ; с db 0x04,0x04,0x7C,0x04,0x04,0x00 ; т db 0x0C,0x50,0x50,0x50,0x3C,0x00 ; у db 0x1C,0x22,0x7F,0x22,0x1C,0x00 ; Ф db 0x44,0x28,0x10,0x28,0x44,0x00 ; х db 0x7C,0x40,0x40,0x40,0xFC,0x00 ; ц db 0x0C,0x10,0x10,0x10,0x7C,0x00 ; ч db 0x7C,0x40,0x7C,0x40,0x7C,0x00 ; ш db 0x7C,0x40,0x7C,0x40,0xFC,0x00 ; щ db 0x04,0x7C,0x50,0x50,0x20,0x00 ; ъ db 0x7C,0x50,0x20,0x00,0x7C,0x00 ; ы db 0x7C,0x50,0x50,0x20,0x00,0x00 ; ь db 0x28,0x44,0x54,0x54,0x38,0x00 ; э db 0x7C,0x10,0x38,0x44,0x38,0x00 ; ю db 0x08,0x54,0x34,0x14,0x7C,0x00 ; я
;============================================================================================
Формирование символьных строк в памяти
Правило цифра перед строкой обозначает количество символов в строке, далее в скобках сама строка. ;============================================================================================
;------------------------------------------------ LOGO db .07, "MAGETEX" LOGO1 db .10, "ch-6О9О-05" LOGO2 db .07, "Ukraine" LOGO3 db .07, "=======" ;------------------------------------------------ sskte db .19, "Контроль температур" ; ssizp db .16, "Изменен параметр" ; для общих параметров
;============================================================================================
Функции вывода символа (числа)
Для вывода символа используются следующие параметры ; DUWH Символы 2х2 ; DUBLE Удвоенная ширина символов ; CURSOR Включить курсор ; CUR_tip ; тип курсора 1-знакоместо/0-подчеркивание
Константа - COL_COL ; количество столбцов в используемом индикаторе 63 для TIC120, 127 для других
Вы должны выделить два бита и при необходимости можно формировать символы удвоенной ширины, и плюс удвоенной высоты и ширины. Эти тараметры можно использовать как вместе так и отдельно. Для символов необходимо применять функцию indik_s, (если возникает вывести на индикацию число 0-9 то используйте функцию indik_chi) Пример вывода символа
bcf DUWH ; обычная прорисовка bcf DUBLE ;
movlw 0xBB ; call indik_s ;
bsf DUWH ; удвоенная ширина и высота
movlw ' ' ; ввод провела между символами call indik_s ;индикация символа
movlw 't' ; call indik_s ;индикация символа
bcf DUWH ; bsf DUBLE ; удвоенная ширина
movlw 'Ь' ; call indik_s ;индикация символа
bsf DUWH ; получиться 4 кратное увеличение символа bsf DUBLE ;
movlw 'Д' ; call indik_s ;индикация символа
Пример вывода числа movlw .9 ; call indik_chi ;индикация символа
;============================================================================================ indik_s ;индикация символов в ACKI movwf temp_sim ; movlw 0x20 ; subwf temp_sim,w ; mullw .6 ; константа 0xC0 movlw HIGH S_kir ; movwf TBLPTRH ; movlw LOW S_kir ; movwf TBLPTRL ; movf PRODL,w ; addwf TBLPTRL ; movf PRODH,w ; addwfc TBLPTRH ; bra zagru ; загрузка числа ;============================================================================================ indik_chi ;индикация числа (число 0-9) mullw .6 ; константа movlw HIGH chis ; movwf TBLPTRH ; movlw LOW chis ; movwf TBLPTRL ; movf PRODL,w ; addwf TBLPTRL ; movf PRODH,w ; addwfc TBLPTRH ; zagru ; вход для загрузки числа movlw ADR_TIC ; адрес индикатора 0х78 movwf adres ; movlw .6 ; Загрузка количества байт в символе movwf Au ; Загрузка счетчика call b_start_w ; формирования начала START - цикл запись movlw b'01000000' ; команда "далее следует последовательность данных" call i2c_write ; ;---------------------------------------- btfss CURSOR ; включить курсор bra no_cur btfss CUR_tip ; тип курсора 1-квадрат/0-подчеркивание bra $+.14 ; btfsc MIG ; bra $+.6 ; bsf CUR_zna ; bra $+.4 ; bcf CUR_zna ; bra end_fcu btfsc MIG ; bra $+.6 ; bsf CUR_pod ; bra $+.4 ; bcf CUR_pod ; bra end_fcu no_cur bcf CUR_pod ; bcf CUR_zna ; end_fcu ;---------------------------------------- btfsc DUWH ; символы двойной ширины и высоты bra zagscl ; ; символы обычные и двойной ширины cikl_cim ; цикл чтения последовательности TBLRD*+ ; Чтение TABLAT и инкремент указателя btfsc CUR_pod ; bsf TABLAT,7 ; movf TABLAT,w ; btfsc CUR_zna ; негатив символов xorlw b'11111111' ; call i2c_write ; запись байта данных incf x_cursor,f ; увеличить позиции по Х rcall cosrro ; для переноса по строкам btfss DUBLE ; бит удвоенной ширины символов bra con_cim ; btfsc CUR_pod ; bsf TABLAT,7 ; movf TABLAT,w ; btfsc CUR_zna ; негатив символов xorlw b'11111111' ; call i2c_write ; incf x_cursor,f ; rcall cosrro ; для переноса по строкам con_cim decfsz Au,f ; уменьшения счет. циклов на 1 и проверка на 0 bra cikl_cim ; повтор call b_stop ; формировать бит стоп btfss CUR_end ; выключение курсора bcf CURSOR ; в конце символа return ;
;========================================= контроль автопереноса строк cosrro movlw COL_COL ; 63 для TIC120, 127 для других CPFSGT x_cursor ; return ; clrf x_cursor ; btfsc DUWH ; символы двойной ширины и высоты incf y_cursor,f ; incf y_cursor,f ; cur_s call b_stop ; формировать бит стоп call cursor ; call b_start_w ; формирования начала START - цикл запись movlw b'01000000' ; команда "далее следует последовательность данных" call i2c_write ; return ;============================================================================================ zagscl ; символы двойной высоты + опиция двойная ширина TBLRD*+ ; Чтение TABLAT и инкремент указателя movlw .8 ; преобразование в символы двойной величины movwf cikl_dohi ; bsf BSR,0
btfsc CUR_pod ; bsf TABLAT,7 ; movf TABLAT,w ; btfsc CUR_zna ; негатив символов xorlw b'11111111' ; movwf TABLAT ; hjkl rrcf TABLAT,w ; rrcf busm_0,f ; rrcf busm_1,f ; rrcf TABLAT,f ; rrcf busm_0,f ; rrcf busm_1,f ; decfsz cikl_dohi,f ; bra hjkl
movf busm_0,w ; call i2c_write ; запись байта данных movf busm_0,w ; call i2c_write ; запись байта данных btfss DUBLE ; бит удвоенной ширины символов bra dlnz ; movf busm_0,w ; call i2c_write ; запись байта данных movf busm_0,w ; call i2c_write ; запись байта данных dlnz movff y_cursor,y_cursorP ; запомнить положение курсора decf y_cursor,f ; btfss y_cursor,7 ; bra $+.6 movlw .3 ;если по Y курсор стоят но првой строке movf y_cursor ;то выводить вер символов на 4 (надо подумать!!! call cur_s ; установка курсора (по X возврат на 2 точки) movf busm_1,w ; call i2c_write ; запись байта данных movf busm_1,w ; call i2c_write ; запись байта данных btfss DUBLE ; бит удвоенной ширины символов bra dlvh ; movf busm_1,w ; call i2c_write ; запись байта данных movf busm_1,w ; call i2c_write ; запись байта данных dlvh movff y_cursorP,y_cursor ; востановить прежнее значение курсора по Y incf x_cursor,f ; incf x_cursor,f ; btfss DUBLE ; бит удвоенной ширины символов bra dlco ; incf x_cursor,f ; incf x_cursor,f ; dlco call cur_s ; установка курсора rcall cosrro ; для переноса по строкам
decfsz Au,f ; уменьшения счет. циклов на 1 и проверка на 0 bra zagscl call b_stop ; формировать бит стоп btfss CUR_end ; выключение курсора 1-курсор строка, 0-символ bcf CURSOR ; в конце символа return ; ;============================================================================================
Вывод строк.
Все параметры, которые были затронуты для вывода символа, они также актуальны и для строки. Добавлен параметр автоматического центрирования строки на индикаторе, что очень удобно.
;============================================================================================ sim_zag_str ;программа вывода строк на индикатор из памяти ПИК ; CENTER Центрирование строки ; DUWH Символы 2х2 ; DUBLE Удвоенная ширина символов ;------------------------------------------------ movwf TBLPTRH ; movf perzas,w ; movwf TBLPTRL ; clrf TBLPTRU ; адреса начала таблицы в памяти TBLRD*+ ; Чтение TABLAT movf TABLAT,w ; и инкремент указателя movwf sch_zas ; запись количества символов текста в счетчик
btfss CENTER ; Центрирование строки bra sbcntr ; bsf BSR,0 ; выбрать банк 1 btfsc DUWH ; центрование строк удвоенной ширины bra $+.10 ; btfsc DUBLE ; bra $+.6 ; movlw .6 ; bra $+.4 ; movlw .12 ; MULWF sch_zas ; (Х*6)
movlw COL_COL ; если полученное значение больше размера индикатора cpfsgt PRODL ; поставить значение .127 bra $+.4 ; movwf PRODL ;
movf PRODL,w ; 127-(Х*6) sublw COL_COL ; movwf PRODL ;
bcf STATUS,C ; разделить на 2 rrcf PRODL,f ; (127-(Х*6))/2
movff PRODL,x_cursor ; call cursor ; sbcntr clrf polukash ; movff TBLPTRL,TBLPTRL_temp ; movff TBLPTRH,TBLPTRH_temp ; bra semic ; semi movff TBLPTRL_temp,TBLPTRL ; movff TBLPTRH_temp,TBLPTRH ; decfsz sch_zas,f ; уменьшения счет. циклов на 1 и проверка на 0 bra $+.4 ; начало очистки return ; конец очистки ;================================================ semic TBLRD*+ ; Чтение TABLAT movff TBLPTRL,TBLPTRL_temp ; movff TBLPTRH,TBLPTRH_temp ;
btfss CURSOR_S ; bra $+.10 ; movf polukash,w ; cpfseq polukas ; bra $+.4 ; bsf CURSOR ; movf TABLAT,w ; и инкремент указателя call indik_s ; вывод символа в индикатор btfsc CURSOR_S ; bcf CURSOR ; incf polukash,f ; bra semi ; повтор очистки ;============================================================================================
Все выдохся!! продолжение следует …
Для получения дополнительной информации используйте: |
|