• Главная • Назад • I2C •








Counter

 


Графические индикаторы на драйвере PCF8531 34 ´ 128 pixel matrix driver


Описание работы, подключение индикаторов TIC32, TIC95, TIC96, TIC48, TIC120, TIC154, TIC149  и другие. Примеры программ для PIC-контроллеров.

автор Геннадий Чернов


Приобрести эти индикаторы можно http://www.microchip.ua/ в Украине.


Внешний вид

(изображение подготавливается)


 

подключение для 5 вольтового питания:

Описание: E:\Baza_data\Мои веб-узлы\МАГЕТЭКС - системы управления микроклиматом помещений\images\tic_324.gif

подключение для 3 (3,3) вольтового питания:

Описание: E:\Baza_data\Мои веб-узлы\МАГЕТЭКС - системы управления микроклиматом помещений\images\tic_325.gif

Вся разница заключается в том что напряжение питания на выводе генератора напряжения VDD1 не должно превышать 4,5 вольт.

Схема подключения аналогична для всех типов индикаторов на драйвере PCF8531
 


Краткое описание драйвера PCF8531 необходимое для понимания программирования индикаторов.

Этот драйвер не поддерживает режим 'чтения'. PCF8531 – это только приемник ведомого устройства. Поэтому, он отвечает только когда бит R/W = 0.

Для начала передачи данных по шине I2C необходимо сначала обратиться к устройству и получить от него ответ. В драйвере PCF8531 зарезервированы два 7-битных адреса (0111100 и 0111101 в индикаторах используется b'01111000').

Протокол I2C-шины иллюстрирован в Рисунке 1

 Описание: E:\Baza_data\Мои веб-узлы\МАГЕТЭКС - системы управления микроклиматом помещений\images\tic_326.jpg

биты в байте адресе SA0 и R/W - для индикаторов всегда "0". Еще повторимся адрес индикаторов b'01111000'

Последовательность начинается с формирования условия START (S) на шине  I2C, и сопровождается адресом ведомого устройства.

Все ведомые устройства с соответствующим адресом отвечают одновременно, все другие игнорируют передачу по I2C-шине. После подтверждения, далее следуют одно или несколько управляющих слов, которые определяют статус ведомых устройств, к которым обращаются.

Управляющее слово состоит из байта управления (control byte), который определяется битами Co и RS, плюс байт данных (см. Рис. 1).

Биты Co и RS в байте управления определяют тип следующих данных и тип последовательности передачи.

Бит RS сообщает драйверу, что следующие данные будут командой или данными.
Если
RS = 1, то следующие байты представляют собой данные которые записываются в RAM драйвера и отображаются на дисплее. Если RS = 0, то следующие передающиеся байт это команда.

Бит Co - это бит типа последовательности данных. Если  Co = 1 это значит, что после байта управления будет следовать один байт данных "изображения" или один байт команды. Если Co = 0 это значит, что после байта управления следует последовательность данных "изображения".

На рисунке 2 приведен принцип записи данных и управления индикаторов на драйвере PCF8531.

Описание: E:\Baza_data\Мои веб-узлы\МАГЕТЭКС - системы управления микроклиматом помещений\images\tic_327.jpg

Управление происходит следующим образом: передаем условие Старт (S), затем адрес устройства (01111000). Для передачи команд надо формировать последовательно "пары" байта управления - команда. Для передачи данных изображения - формируем байт управления и необходимою последовательность байт данных. Все заканчивается формированием условия "стоп".

Набор команд драйвера PCF8531 и их краткое описание.

Обратите внимание (еще раз) в драйвер можно только записывать данные читать "НИЗЯ", поэтому бит R/W записи/чтения всегда должен быть "0".

Таблица 1.

Команда

Бит байта управления

Биты байта команды (данных)

описание

RS

D7

D6

D5

D4

D3

D2

D1

D0

Команды независимые от установки битов H1 and H0

NOP

0

0

0

0

0

0

0

0

0

Нет операций

Запись данных в ОЗУ дисплея

1

D7

D6

D5

D4

D3

D2

D1

D0

Запись данных в ОЗУ дисплея

Установка страницы команд по умолчанию H[1:0]

0

0

0

0

0

0

0

0

1

Биты страниц команд H[1:0] = 0 (устанавливаются в ноль)

(00) H1 = 0/H0 = 0. Команды страницы по умолчанию.

Выбор страницы команд

0

0

0

0

0

1

0

H1

H0

выбор страницы команд

Настройка дисплея

0

0

0

1

0

0

PD

V

0

Управление режимом питания дисплея, режим ввода данных ОЗУ дисплея.

Установка Y адрес RAM

0

0

1

0

0

0

Y2

Y1

Y0

Установка Y адрес RAM;
0 ≤ Y ≤ 5

Установка X адрес RAM

0

1

X6

X5

X4

X3

X2

X1

X0

Установка X обращается к части RAM; 0 ≤ X ≤ 127

(01)  H1 = 0/H0 = 1. Команды настройки дисплея.

Multiplex rate

0

0

0

0

0

0

1

M1

M0

Выбор режима мультиплексирования

Режимы дисплея

0

0

0

0

0

1

D

IM

E

Настройка конфигурации дисплея

Система уклона

0

0

0

0

1

0

BS2

BS1

BS0

set Bias System (BSx)

(10) H1 = 1/H0 = 0. Настройка умножителя напряжения.

HV-gen управление

0

0

0

0

0

0

1

PRS

HVE

Настройка умножителя напряжения VLCD

HV-gen конфигурирование

0

0

0

0

0

1

0

S1

S0

Установка коэффициента умножителя напряжения

Температурный контроль

0

0

0

1

0

0

TC2

TC1

TC0

Установка температурного коэффициента

Тестовый режим

0

0

1

X

X

X

X

X

X

Данную команду не использовать. (зарезервирована для теста дисплея)

VLCD управление

0

1

VOP6

VOP5

VOP4

VOP3

VOP2

VOP1

VOP0

задание VLCD напряжения
0 ≤ VOP ≤ 127

Описание таблицы в двух словах. Все команды дисплея расположены в 3 страницах. Для того, чтобы выбрать определенную команду необходимо посмотреть на какой странице эта команда находиться, переключить страницу и передать команду в драйвер. Для того, чтобы можно было вернуться в "начало" существует команда которая выполняется независимо от выбранной странице. А также передача данных для изображения не зависит от выбранной странице команд.

Теперь упрощенные объяснение битов встречающихся в таблице 1.

Бит

Значение

Описание

Примечание

PD

0

Активный режим

 

1

Спящий режим

 

V

0

Горизонтальная адресация

 

1

Вертикальная адресация

 

IM

0

Нормальное способ изображения

Полный показ + иконки

1

Режим иконки

Отображаются только иконки

H[1:0]

00

Страница по умолчанию. Задаются функции дисплея и выбор страниц команд

Страница команд (H)

01

Страница настроек дисплея

10

Страница настроек умножителя напряжения

D and E

00

Дисплей отключен

Режимы дисплея (D,E)

01

Нормальный режим

10

Индикация всех сегментов

11

Инверсный режим

HVE

0

Умножитель напряжения отключен

 

1

Умножитель напряжения включен

 

PRS

0

Режим VLCD. Выбран диапазон низких напряжений от 2,94 до 6,75 Вольта.

 

1

Режим VLCD. Выбран диапазон высоких напряжений от 6,75 до 10,56 Вольта.

 

TC[2:0]

000

Температурный коэффициент 0

Температурный коэффициент (TC)

001

Температурный коэффициент 1

010

Температурный коэффициент 2

011

Температурный коэффициент 3

100

Температурный коэффициент 4

101

Температурный коэффициент 5

110

Температурный коэффициент 6

111

Температурный коэффициент 7

S[1:0]

00

2 х умножителя напряжения

Фактор умножителя напряжения (S)

01

3 х умножителя напряжения

10

4 х умножителя напряжения

11

5 х умножителя напряжения

M1,M0

00

1:17

MUX RATE

10

1:26

01

1:34

 

 

 

 

 

 

 

 

Далее нам необходимо понимать, что настроено в дисплее после функции RESET. В это состояние драйвер переходит после формирования импульса сброса (подачи высокого уровня) на выводе RES (вывод 2).

• Режим пониженного энергопотребления - вкл. (PD = 1)

• Адресация RAM - горизонтальная (V = 0)

• Режим отображения - чистое поле (D = 0, E = 0, IM = 0)

• Указатель на RAM - X[6:0] = 0, Y[2:0] = 0

• Коэффициент деления напряжения (bias) - 1 / 4 (BS[2:0] = 0)

• Коэффициент мультиплексирования - 1 / 17 (M[1:0] = 0)

• Температурная компенсация - выкл (TS[2:0] = 0)

• Внутренний умножитель напряжения VLCD - выкл (HVE = 0, PRS = 0, S[1:0] = 0)

• Напряжение на выходе внутреннего умножителя VLCD - 0 В (VOP[6:0] = 0)

• Состояние RAM - неопределено

• Страница команд - 0 (H[1:0] = 0)

 

Теперь мы знаем, как все настроено. И нам надо определить, как необходимо настроить дисплей чтобы приступись к выводу изображений.

Для тех кто хочет увидеть готовую программу советую обратиться на страницу Осциллограф на PIC18 и TIC-32.

А мы разберем последовательность команд на ассемблере для контроллеров семейства PIC18.

 

Вначале необходимо сформировать импульс сброса для индикатора. Я надеюсь здесь разжевывать нет необходимости. Сначала на выводе сброса выставляем "1" (индикатор "резетится") а затем устанавливаем "0".

Далее необходимо выполнить инициализацию драйвера. Как я это делаю? Для экономии места я последовательность команд записываю в память программ в виде массива:

 

inittic32b

db     .13,.0,0x01,b'00100000',b'00001001',b'00001100',b'00000101',b'000100000'

db     0x01,b'00001010',b'00001000',b'00100000',b'00000101',b'11100000'

ниже описано назначение каждого байта в последовательности передачи, первый байт ,13 это количество байт для программы 
load_tab - загрузка таблиц. Байты записаны в необходимой последовательности для инициализации драйвера.


; 13 - команд в группе (необходим для функции загрузки таблиц)
; .0 - последовательность команд
; b'00000001'(0x01) - установка страницы команд - 00
; b'00100000' - контроль настройка дисплея - режим дисплей в активном режиме, ввод - горизонтальный
; b'00001001' - выбор страницы команд - 01
; b'00001100' - режим работы дисплея - нормальный режим индикации,показ полного дисплея
; b'00000101' - режим мультиплексирования - (0;1) - 1/34*
; b'00010011' система уклона 011=TIC32, 100=TIC48,120 (регулировка яркости от 0 до 4)

; 0x01 установка страницы команд - 00
; b'00001010' выбор страницы команд - 10
; b'000010**' установка коэф. умножит. напряжения 2х
; b'00100***' температурный контроль - коэф 0 выкл
; b'00000101' режим работы умножителя диапазон низкий, умножитель включен
; b'1*******' настройка напряжения умножителя '11000100'-TIC32, '11010000'-TIC48,'11001111'-TIC120

 

Теперь приведем подпрограммы необходимые для работы с дисплеем.


Функция для чтения таблиц и загрузки данных в индикатор. Как формировать вызов программы:

;============================================================================================ 

Инициализация дисплея


;============================================================================================

;Как вызвать

                          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 "столбиков" байт. Если мы ходим

Описание: E:\Baza_data\Мои веб-узлы\МАГЕТЭКС - системы управления микроклиматом помещений\images\tic_328.jpg

куда то записать байт данных и этим сформировать изображение мы должны предварительно выставить курсор. по Y мы будем иметь значение 0-3, а по X 0 - 127.

Как надо вызывать:

movlw             .0                     ; установить курсор в позицию 0х0
           
movwf            y_cursor         ;
           
movlw            .0                     ;
           
movwf            x_cursor         ;
           
call                  cursor             ;

;============================================================================================                                              

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                                                   ; повтор очистки

;============================================================================================

 

 

Все выдохся!! продолжение следует …

 

 

 

 

 

 


Для получения дополнительной информации используйте:

MAGETEX
Ukraine
Телефон: +380-50-575-98-63
Факс: +380-50-575-98-63
Интернет: invent-systems@ya.ru
 

Главная | Назад | I2C
 
Отправить сообщение для: gchernov@mail.ru с вопросами и замечаниями об этом веб-узле.
© 2007 MAGETEX
Дата изменения: 23.08.2013