- •Міністерство транспорту та зв’язку україни львівський коледж державного університету інформаційно-комунікаційних технологій
- •Алгоритм виводу алфавітно-цифрової інформації на знако-цифрове табло (дисплей).
- •3. Підготовка до виконання роботи та індивідуальне завдання до лабораторної роботи
- •4. Питання вхідного контролю
- •5. Інструмент, обладнання, прилади
- •6. Порядок виконання роботи
- •7. Питання вихідного контролю
- •8. Оформлення звіту :
- •Перелік посилань
Алгоритм виводу алфавітно-цифрової інформації на знако-цифрове табло (дисплей).
Для того, щоб вивести інформацію на дисплей у лабораторній роботі, потрібно задати код символу та місце його засвічування. В алгоритмі виводу алфавітно-цифрової інформації на знако-цифрове табло (блок схема наведена на Рис. 7) спочатку треба передбачити ввід адреси комірки, куди має бути встановлений символ. Адреса комірки набирається за допомогою пульта вводу двійкової інформації, заноситься в мікроконтролер та висвітлюється на світлодіодному індикаторі. Перевіряється натискуванням кнопки «Ввід». Якщо вивід даних на світлодіодний індикатор не відбувся, то операція повторюється спочатку, а якщо вивід даних відбувся, то далі вводяться значення кодів з пульта стенду у двійковій формі в регістр коду символу на табло. В контролері встановлюємо адреси старших розрядів світлодіодного індикатора. Далі копіюється вміст регістру адреси символу в регістр даних світлодіодного індикатора і виводяться дані на світлодіодний індикатор та знову перевіряється натискуванням кнопки «Ввід». Якщо перевірка не відбулася, то значення сигналів вводяться з пульта вводу двійкової інформації в регістр коду на дисплей, а якщо перевірка відбулася, то далі дані виводяться на табло. Якщо не було перевірки, то алгоритм виводу алфавітно-цифрової інформації на знако-цифрове табло починається спочатку, а якщо перевірка відбулася тоді відбувається вихід в меню сервісної програми.
Рис. 7 Блок - схема алгоритму виводу символів на дисплей
Програма, що реалізована в навчальному лабораторному стенді.
;++++++ Variable BIT declarations +++++++++++++++++++++++++++++++++++++++++++
DISP_EN BIT p1.1 ; Display Enable
DISP_R_W BIT p2.4 ; Display Read/Write signal
DISP_RS BIT p2.5 ; Display Register Select signal
;++++++ Display Init ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
mov a,#40d ; Delay 40 ms
call Delay_ms
mov b,#4d
DISP_Init_do:
mov a,#38h ; 2 - line, 5*8 - dots
call DISP_Control ; Init 4 commands
mov a,#5d ; Delay > 4,1 ms
call Delay_ms
djnz b,DISP_Init_do
mov a,#08h ; Display OFF
call DISP_Control
mov a,#01h ; Display Clear
call DISP_Control
mov a,#06h ; Entry Mode Set
call DISP_Control
mov a,#10d ; Delay 10 msec
call Delay_ms
mov a,#0Ch ; Display On
call DISP_Control
mov a,#02h ; Return Home
call DISP_Control
mov a,#084h ; Output string "LK DUIKT"
mov dptr,#DISP_Init_Data1
call DISP_Text
mov a,#0C1h ; Output string "LABORATORIJA CT"
mov dptr,#DISP_Init_Data2
call DISP_Text
jmp DISP_Init_END
DISP_Init_Data1:
db 0a7h,04bh,20h,0e0h,0a9h,049h,04bh,054h,00h ; "LK DUIKT"
DISP_Init_Data2:
db 0A7h,041h,0A0h,04Fh,050h,041h,054h,04Fh,050h,049h,0B1h,020h,0E1h,054h,00h ; "LABORATORIJA CT"
DISP_Init_END:
;------ end Display Init ----------------------------------------------------
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+++++++++++++++++++++ dusplay ++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;++++++ LAB_NUM_4 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
LAB_NUM_4:
push acc
mov a,#01h ; Display Clear
call DISP_Control
mov a,#085h ; Output string "Robota"
mov dptr,#Zagolovok4 ;
call DISP_Text ;
mov a,#0C3h ; Output string "z dusplejem"
mov dptr,#Zagolovok41 ;
call DISP_Text ;
mov a,#03d
call Delay_sec
mov a,#01h ; Display Clear
call DISP_Control
;------------------------test program----------------------------------------
c1: call Read_Key_In
mov Symbol_A,KEYREG
mov LEDDR,Symbol_A
mov CFGA,#09h ;#90h
mov CFGD,#40h
mov a,#06h
call Write_LED
jnb BUT_CNT,c5
jnb BUT_ENT,c02
jmp c1
c02:
mov a,255d
call Delay_ms
c2: call Read_Key_In
mov Symbol_C,KEYREG
mov LEDDR,Symbol_C
mov CFGA,#10h ;#90h
mov CFGD,#00h
mov a,#05h
call Write_LED
jnb BUT_CNT,c5
jnb BUT_ENT,c4
jmp c2
c4: mov a,Symbol_A
call DISP_Control
mov a,Symbol_C ;
call DISP_Write
mov a,255d
call Delay_ms
jmp c1
;----------------------end test program------------------------------------
c5:
mov LEDDR,#00h ; clear LED
call Write_LED_H ;
call Write_LED_L ;
mov a,#01h ; Display Clear
call DISP_Control
jb BUT_INC,ISO1
call big_str1
ISO1:
jmp c6
Zagolovok4:
db 050h,04fh,0a0h,04fh,054h,041h,00h ; 'Robota'
Zagolovok41:
db 0a4h,020h,0e0h,0a5h,043h,0a8h,0a7h,045h,045h,04dh,00h ; 'z dusplejem'
c6:
pop acc
ret
;------ end LAB_NUM_4 -------------------------------------------------------
Підпрограми, що реалізовані в навчальному лабораторному стенді.
DISP_Control
;++++++ DISP_Control +++++++++++++++++++++++++++++++++++++++++++++++++++
; a = code control (DISP_R_W = 0, DISP_RS = 0) ; 01h - Clear Display (Очищення дисплею)
; 02h - Return Home Cursor (Повернення курсора в початкове положення)
; (04-07)h - Entry Mode Set (вибрати тип курсора)
; (08-0F)h - Display ON/OFF (Вкл.\Викл. дисплея)
; (20-38)h - Function Set (Функціональні встановлення, керуючі коди) ; (40-7F)h - Set CG RAM Address
; (80-FF)h - Set DD RAM Address
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Підпрограма здійснює налаштування режиму виводу інформації на рідинно-
кристалічний індикатор (табло)
вхідний параметр : акумулятор повинен містити байт, що відповідає
певному режиму виводу
(див. документацію по опису індикатора)
Приклад:
DISP_Control:
push acc
clr DISP_R_W ; DISP_R_W = 0
clr DISP_RS ; DISP_RS = 0
mov p0,a ; Запис керуючого коду
setb DISP_EN ; 0 -> 1
clr DISP_EN ; 1 -> 0
anl a,#0FCh
jnz DISP_Control_ND
mov a,#2d ; Затримка > 1,6 ms
call Delay_ms
DISP_Control_ND:
mov a,#37d ; Затримка 43 us (20 MHz)
djnz acc,$
pop acc
ret
Використовує підпрограму: Delay_ms ;_____________________________________________________________________________
DISP_Write
;++++++ DISP_Write ++++++++++++++++++++++++++++++++++++++++++++++++++++
; a = code of symbol (DISP_R_W = 0, DISP_RS = 1) +
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Підпрограма здійснює вивід символу на рідинно-кристалічний індикатор
(табло) за поточною позицією курсора або за
попередньо встановленою (підпрограмою DISP_Control)
адресою DD RAM
вхідний параметр : акумулятор повинен містити байт, що відповідає
коду символа,,що виводиться
(див.документацію по опису індикатора)
Приклад:
DISP_Write:
push acc
clr DISP_R_W ; DISP_R_W = 0
setb DISP_RS ; DISP_RS = 1
mov p0,a ; Write Data to DD/CG RAM
setb DISP_EN ; 0 -> 1
clr DISP_EN ; 1 -> 0
mov a,#37d ; Затримка 43 us (20 MHz)
djnz acc,$
pop acc
ret
;_____________________________________________________________________________