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








Counter

 


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
 

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