| |
TIC5231,
TIC8148,
TIC15
(специализированный заказной)
Описание работы, подключение индикаторов TIC5231, TIC8148, TIC15.
Примеры программ для PIC-контроллеров.
Фирма
Ampire CO.,LTD. является мировым лидером по выпуску ЖКИ индикаторов.
Это алфавитно-цифровые и графические(в том числе цветные), со встроенным
контроллером и без, с подсветкой и без подсветки, для стандартного (0..+50) и
расширенного(-20....+70) температурного диапазона. Возможно производство ЖКИ
индикаторов соответствующих чертежам и техническим требованиям заказчика.
TIC5231 относиться к специализированным ЖКИ
индикаторам. Приобрести его можно
http://www.microchip.ua/ в Украине или
http://www.gamma.spb.ru в России.
Описание индикатора TIC5231.
Габаритные размеры:
Нумерация сегментов:
Назначение выводов индикатора:
1- питание 3-5 вольт
2-общий
3-сигнал загрузки данных в регистр индикации
4-входные данные
5-синхоимпульсы данных
6-выход последовательного регистра данных
Описание подпрограмм эффектной смены индикации для TIC5231
для PIC - контроллеров 16 семейства.
call
ckrl_up_cl ; скролинг буфера вверх очистка
call ckrl_up ;
скролинг буфера вверх наложение
call ckrl_ri_cl ;
скролинг буфера вправо очистка
call ckrl_right ;
скролинг буфера вправо наложение
call ckrl_le_cl ;
скролинг буфера влево очистка
call ckrl_left ;
скролинг буфера влево наложение
call ckrl_dn_cl ; скролинг
буфера вниз очистка
call ckrl_dn ;
скролинг буфера вниз наложение
call big_str ;
подпрограмма бегущая строка
call och_ind_L ; очистка
индикатора "<-"
call och_ind_R ; очистка
индикатора "->"
call zam_ind_L ; замена
индикатора "<-"
call zam_ind_R ; замена
индикатора "->"
call bu_in ;
непосредственная загрузка из буфера в индикатор
;============================================================================================
Используемые переменные
buf1 ; буфер передачи в индикатор
buf2 ;
buf3 ;
buf4 ;
buf5 ;
buf_ind_1 ; буфер для подпрограмм динамической смены индикации
buf_ind_2 ;
buf_ind_3 ;
buf_ind_4 ;
buf_ind_5 ;
;входной интерфейс индикатора TIC15
ind_1 ; цифра/буква
ind_2 ; цифра/буква
ind_3 ; цифра/буква
ind_4 ; цифра/буква
ind_5 ; цифра/буква
fsos_1 ; 4(5-7);3(5-6);2(5-5);1(4-5);0(2-6)символы индикатора
persin ; переменная
TEMP1 ; переменная
perem1 ; переменная
perem2 ; переменная
perem3 ; переменная
perem4 ; переменная
perem5 ; переменная
zad_in ; переменная
schet_sim1 ; счетчик цикла вывода
schet_sim2 ; счетчик выбора символа
#DEFINE TCH2 fsos_1,0 ; точка 2
#DEFINE TCH1 fsos_1,1 ; точка 1
#DEFINE EDINC fsos_1,2 ; единица в 6 разряде
#DEFINE MINS fsos_1,3 ; символ минус
#DEFINE OVRL fsos_1,4 ; символ переполнения
#DEFINE LOAD PORTA,0 ; выход
линия выбора индикатора (загрузка данных для индикации)
#DEFINE DIN PORTA,1 ; выход шина данных
#DEFINE DCLK PORTA,2 ; выход шина синхронизации
;============================================================================================
;============================================================================================
; цикл индикации
ind_zad
clrwdt ; сброс сторожевого таймера++++++
movfw uskor ; первая константа длительности свечения
movwf perem1 ;
movfw uskor ; вторая костанта длительности свечения
movwf perem2 ;
decfsz perem1,f ; цикл свечения индикатора
call indic ;
movf perem1,f ;
btfsc STATUS,Z ;
goto $-4 ;$-4
decfsz perem2,f ;
goto $-6 ;$-6
return ;
;============================================================================================
;============================================================================================
ckrl_right ; скролинг буфера вправо наложение
movlw SK_S ;
movwf uskor ;
movlw b'11001111' ;
andwf ind_1,f ;
call ind_zad ;
movlw b'00110000' ;
andwf buf_ind_1,w ;
iorwf ind_1,f ;
movlw b'10110110' ;
andwf ind_1,f ;
call ind_zad ;
movlw b'01001001' ;
andwf buf_ind_1,w ;
iorwf ind_1,f ;
movlw b'01111001' ;
andwf ind_1,f ;
call ind_zad ;
movlw b'10000110' ;
andwf buf_ind_1,w ;
iorwf ind_1,f ;
movlw b'11001111' ;
andwf ind_2,f ;
call ind_zad ;
movlw b'00110000' ;
andwf buf_ind_2,w ;
iorwf ind_2,f ;
movlw b'10110110' ;
andwf ind_2,f ;
call ind_zad ;
movlw b'01001001' ;
andwf buf_ind_2,w ;
iorwf ind_2,f ;
movlw b'01111001' ;
andwf ind_2,f ;
call ind_zad ;
movlw b'10000110' ;
andwf buf_ind_2,w ;
iorwf ind_2,f ;
movlw b'11001111' ;
andwf ind_3,f ;
call ind_zad ;
movlw b'00110000' ;
andwf buf_ind_3,w ;
iorwf ind_3,f ;
movlw b'10110110' ;
andwf ind_3,f ;
call ind_zad ;
movlw b'01001001' ;
andwf buf_ind_3,w ;
iorwf ind_3,f ;
movlw b'01111001' ;
andwf ind_3,f ;
call ind_zad ;
movlw b'10000110' ;
andwf buf_ind_3,w ;
iorwf ind_3,f ;
movlw b'11001111' ;
andwf ind_4,f ;
call ind_zad ;
movlw b'00110000' ;
andwf buf_ind_4,w ;
iorwf ind_4,f ;
movlw b'10110110' ;
andwf ind_4,f ;
call ind_zad ;
movlw b'01001001' ;
andwf buf_ind_4,w ;
iorwf ind_4,f ;
movlw b'01111001' ;
andwf ind_4,f ;
call ind_zad ;
movlw b'10000110' ;
andwf buf_ind_4,w ;
iorwf ind_4,f ;
movlw b'11001111' ;
andwf ind_5,f ;
call ind_zad ;
movlw b'00110000' ;
andwf buf_ind_5,w ;
iorwf ind_5,f ;
movlw b'10110110' ;
andwf ind_5,f ;
call ind_zad ;
movlw b'01001001' ;
andwf buf_ind_5,w ;
iorwf ind_5,f ;
movlw b'01111001' ;
andwf ind_5,f ;
call ind_zad ;
movlw b'10000110' ;
andwf buf_ind_5,w ;
iorwf ind_5,f ;
call ind_zad ;
return
;============================================================================================
ckrl_le_cl ; скролинг буфера влево очистка
movlw SK_S ;
movwf uskor ;
movlw b'01111001' ;
andwf ind_5,f ;
call ind_zad ;
movlw b'10110110' ;
andwf ind_5,f ;
call ind_zad ;
movlw b'11001111' ;
andwf ind_5,f ;
call ind_zad ;
movlw b'01111001' ;
andwf ind_4,f ;
call ind_zad ;
movlw b'10110110' ;
andwf ind_4,f ;
call ind_zad ;
movlw b'11001111' ;
andwf ind_4,f ;
call ind_zad ;
movlw b'01111001' ;
andwf ind_3,f ;
call ind_zad ;
movlw b'10110110' ;
andwf ind_3,f ;
call ind_zad ;
movlw b'11001111' ;
andwf ind_3,f ;
call ind_zad ;
movlw b'01111001' ;
andwf ind_2,f ;
call ind_zad ;
movlw b'10110110' ;
andwf ind_2,f ;
call ind_zad ;
movlw b'11001111' ;
andwf ind_2,f ;
call ind_zad ;
movlw b'01111001' ;
andwf ind_1,f ;
call ind_zad ;
movlw b'10110110' ;
andwf ind_1,f ;
call ind_zad ;
movlw b'11001111' ;
andwf ind_1,f ;
call ind_zad ;
return
;============================================================================================
;============================================================================================
ckrl_dn ; скролинг буфера вниз наложение
movlw SK_S ;
movwf uskor ;
movlw b'11111110' ;
andwf ind_1,f ;
andwf ind_2,f ;
andwf ind_3,f ;
andwf ind_4,f ;
andwf ind_5,f ;
call ind_zad ;
movlw b'00000001' ;
andwf buf_ind_1,w ;
iorwf ind_1,f ;
movlw b'00000001' ;
andwf buf_ind_2,w ;
iorwf ind_2,f ;
movlw b'00000001' ;
andwf buf_ind_3,w ;
iorwf ind_3,f ;
movlw b'00000001' ;
andwf buf_ind_4,w ;
iorwf ind_4,f ;
movlw b'00000001' ;
andwf buf_ind_5,w ;
iorwf ind_5,f ;
movlw b'11011101' ;
andwf ind_1,f ;
andwf ind_2,f ;
andwf ind_3,f ;
andwf ind_4,f ;
andwf ind_5,f ;
call ind_zad ;
movlw b'00100010' ;
andwf buf_ind_1,w ;
iorwf ind_1,f ;
movlw b'00100010' ;
andwf buf_ind_2,w ;
iorwf ind_2,f ;
movlw b'00100010' ;
andwf buf_ind_3,w ;
iorwf ind_3,f ;
movlw b'00100010' ;
andwf buf_ind_4,w ;
iorwf ind_4,f ;
movlw b'00100010' ;
andwf buf_ind_5,w ;
iorwf ind_5,f ;
movlw b'10111111' ;
andwf ind_1,f ;
andwf ind_2,f ;
andwf ind_3,f ;
andwf ind_4,f ;
andwf ind_5,f ;
call ind_zad ;
movlw b'01000000' ;
andwf buf_ind_1,w ;
iorwf ind_1,f ;
movlw b'01000000' ;
andwf buf_ind_2,w ;
iorwf ind_2,f ;
movlw b'01000000' ;
andwf buf_ind_3,w ;
iorwf ind_3,f ;
movlw b'01000000' ;
andwf buf_ind_4,w ;
iorwf ind_4,f ;
movlw b'01000000' ;
andwf buf_ind_5,w ;
iorwf ind_5,f ;
movlw b'11101011' ;
andwf ind_1,f ;
andwf ind_2,f ;
andwf ind_3,f ;
andwf ind_4,f ;
andwf ind_5,f ;
call ind_zad ;
movlw b'00010100' ;
andwf buf_ind_1,w ;
iorwf ind_1,f ;
movlw b'00010100' ;
andwf buf_ind_2,w ;
iorwf ind_2,f ;
movlw b'00010100' ;
andwf buf_ind_3,w ;
iorwf ind_3,f ;
movlw b'00010100' ;
andwf buf_ind_4,w ;
iorwf ind_4,f ;
movlw b'00010100' ;
andwf buf_ind_5,w ;
iorwf ind_5,f ;
movlw b'01110111' ;
andwf ind_1,f ;
andwf ind_2,f ;
andwf ind_3,f ;
andwf ind_4,f ;
andwf ind_5,f ;
call ind_zad ;
movlw b'10001000' ;
andwf buf_ind_1,w ;
iorwf ind_1,f ;
movlw b'10001000' ;
andwf buf_ind_2,w ;
iorwf ind_2,f ;
movlw b'10001000' ;
andwf buf_ind_3,w ;
iorwf ind_3,f ;
movlw b'10001000' ;
andwf buf_ind_4,w ;
iorwf ind_4,f ;
movlw b'10001000' ;
andwf buf_ind_5,w ;
iorwf ind_5,f ;
return ;
;============================================================================================
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
bu_in ; непосредстенная загрузка из буфера в индикатор
movfw buf_ind_1 ;
movwf ind_1 ;
movfw buf_ind_2 ;
movwf ind_2 ;
movfw buf_ind_3 ;
movwf ind_3 ;
movfw buf_ind_4 ;
movwf ind_4 ;
movfw buf_ind_5 ;
movwf ind_5 ;
return
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;============================================================================================
big_str ; подпрограмма бегущая строка
movwf perem2 ;
call och_ind_L ; очистка индикатора
movfw perem2 ; начало чтения данных
movwf schet_sim2
call text_1 ; подпрограма текста
movwf schet_sim1 ; запись количества символов текста в счетчик
incf schet_sim2,f ; увеличения счетчика вывора символа
decfsz schet_sim1,f ; уменьшения счет. циклов на 1 и проверка на 0
goto $+.2 ; начало очистки
goto $+.15 ; конец очистки
clrwdt ; сброс сторожевого таймера++++++
movfw ind_2 ; данные 2 ЗМ в 1 ЗМ
movwf ind_1 ; загрузка в знакоместо
movfw ind_3 ; данные 3 ЗМ в 2 ЗМ
movwf ind_2 ; загрузка в знакоместо
movfw ind_4 ; данные 4 ЗМ в 3 ЗМ
movwf ind_3 ; загрузка в знакоместо
movfw ind_5 ; данные 5 ЗМ в 4 ЗМ
movwf ind_4 ; загрузка в знакоместо
movfw schet_sim2 ; вызов значения в аккумулятор
call text_1 ; вызов текущего символа
movwf ind_5 ; загрузка в знакоместо
call c_ind ; цикл индикации
goto $-.17 ; повтор очистки
call och_ind_L ; очистка индикатора
return ;
;============================================================================================
och_ind_L ; очистка индикатора "<-"
movlw .6 ; количество знакомест индикатора +1
movwf schet_sim2 ; закрузка счетчика циклов
decfsz schet_sim2,f ; уменьшения счет. циклов на 1 и проверка на 0
goto $+.2 ; начало очистки
return ; конец очистки
clrwdt ; сброс сторожевого таймера++++++
movfw ind_2 ; данные 2 ЗМ в 1 ЗМ
movwf ind_1 ; загрузка в знакоместо
movfw ind_3 ; данные 3 ЗМ в 2 ЗМ
movwf ind_2 ; загрузка в знакоместо
movfw ind_4 ; данные 4 ЗМ в 3 ЗМ
movwf ind_3 ; загрузка в знакоместо
movfw ind_5 ; данные 5 ЗМ в 4 ЗМ
movwf ind_4 ; загрузка в знакоместо
clrf ind_5 ; очистить 5 знакоместо
call c_ind ; цикл индикации
goto $-.14 ; повтор очистки
;=====================цикл индикации
=========================================================
c_ind clrwdt ; сброс сторожевого таймера++++++
movlw 0x20 ; костанта длительности свечения
movwf zad_in ;
call indic ; цикл индикации
decfsz zad_in,f ;
goto $-2 ;
return
;============================================================================================
;cl_digit ; очистка буфера индикатора
; clrf fsos_1 ; сброс индикации символов
; clrf ind_1 ;
; clrf ind_2 ;
; clrf ind_3 ;
; clrf ind_4 ;
; clrf ind_5 ;
; return
;============================================================================================
;============================================================================================
; подпрограмма индикации для TIC5231
; входные переменные - ind_1 .... ind_5
; выходные - buf1 .... buf5
indic
clrf buf1 ; очистка регистров буфера
clrf buf2 ;
clrf buf3 ;
clrf buf4 ;
clrf buf5 ;
btfsc ind_1,0 ; декодирование цифры №1
bsf buf5,4 ;
btfsc ind_1,1 ;
bsf buf4,6 ;
btfsc ind_1,2 ;
bsf buf5,0 ;
btfsc ind_1,3 ;
bsf buf5,1 ;
btfsc ind_1,4 ;
bsf buf5,2 ;
btfsc ind_1,5 ;
bsf buf5,3 ;
btfsc ind_1,6 ;
bsf buf4,7 ;
btfsc ind_2,0 ; декодирование цифры №2
bsf buf4,4 ;
btfsc ind_2,1 ;
bsf buf3,6 ;
btfsc ind_2,2 ;
bsf buf4,0 ;
btfsc ind_2,3 ;
bsf buf4,1 ;
btfsc ind_2,4 ;
bsf buf4,2 ;
btfsc ind_2,5 ;
bsf buf4,3 ;
btfsc ind_2,6 ;
bsf buf3,7 ;
btfsc ind_3,0 ; декодирование цифры №3
bsf buf3,5 ;
btfsc ind_3,1 ;
bsf buf2,7 ;
btfsc ind_3,2 ;
bsf buf3,1 ;
btfsc ind_3,3 ;
bsf buf3,2 ;
btfsc ind_3,4 ;
bsf buf3,3 ;
btfsc ind_3,5 ;
bsf buf3,4 ;
btfsc ind_3,6 ;
bsf buf3,0 ;
btfsc ind_4,0 ; декодирование цифры №4
bsf buf2,5 ;
btfsc ind_4,1 ;
bsf buf1,7 ;
btfsc ind_4,2 ;
bsf buf2,1 ;
btfsc ind_4,3 ;
bsf buf2,2 ;
btfsc ind_4,4 ;
bsf buf2,3 ;
btfsc ind_4,5 ;
bsf buf2,4 ;
btfsc ind_4,6 ;
bsf buf2,0 ;
btfsc ind_5,0 ; декодирование цифры №5
bsf buf1,6 ;
btfsc ind_5,1 ;
bsf buf1,0 ;
btfsc ind_5,2 ;
bsf buf1,2 ;
btfsc ind_5,3 ;
bsf buf1,3 ;
btfsc ind_5,4 ;
bsf buf1,4 ;
btfsc ind_5,5 ;
bsf buf1,5 ;
btfsc ind_5,6 ;
bsf buf1,1 ;
; обработка индикации точек и символов
btfsc OVRL ; символ переполнения
bsf buf5,7 ;
btfsc MINS ; символ минус
bsf buf5,6 ;
btfsc EDINC ; символ единица
bsf buf5,5 ;
btfsc TCH1 ; символ точка1
bsf buf4,5 ;
btfsc TCH2 ; символ точка2
bsf buf2,6 ;
; загрузка индикатора
MOVLW .40 ; Количество битов для пересылки
MOVWF TEMP1 ;
bcf STATUS,C ;
vz_ip rlf buf1,F ; Сдвиг left, чтобы определить через бит С первый бит для
пересылки
rlf buf2,F ;
rlf buf3,F ;
rlf buf4,F ;
rlf buf5,F ;
BTFSS STATUS,C ; Смотреть бит С == 1
GOTO sen_0
bsf DIN ; Установить динию в "1" если бит С == 1
GOTO sin_imp
sen_0 bcf DIN ; Установить линию в "0", если бит С == 0
sin_imp ; импульс синхронизации данных передача
bsf DCLK ;
movlw .30 ;
movwf persin ;
decfsz persin,f ;
goto $-1 ;
bcf DCLK ;
movlw .30 ;
movwf persin ;
decfsz persin,f ;
goto $-1 ;
DECFSZ TEMP1,F ; Уменьшить счетчик переданных битов и проверить достигнут ли
ноль
GOTO vz_ip ; Повторить передачу бита
; импульс синхронизации данных вывод индикации
bsf LOAD ;
movlw .30 ;
movwf persin ;
decfsz persin,f ;
goto $-1 ;
bcf LOAD ;
movlw .30 ;
movwf persin ;
decfsz persin,f ;
goto $-1 ;
DSEND_IND_END ;
RETLW H'00' ;
;********************************************************************************************
Примеры программ:
Пример программ в ассемблере для индикаторов
TIC5231 и TIC8148
для контроллеров
PIC12F675
Пример программ в ассемблере для индикаторов
TIC5231
для контроллеров
PIC16F628A
Для получения дополнительной информации используйте:
MAGETEX
Ukraine
Телефон: +380-50-575-98-63
Факс: +380-50-575-98-63
Интернет:
invent-systems@ya.ru
|