Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kharakhnin / ПОСОБИЕ_Харахнин.doc
Скачиваний:
278
Добавлен:
08.03.2016
Размер:
17.89 Mб
Скачать

5.2.3. Жидкокристаллический дисплей

В качестве примера ЖК дисплея рассмотрим жидкокристаллический модуль МТ10Т7-7 (фирма МЭЛТ). Он состоит из БИС контроллера и жидкокристаллической (ЖК) панели. Рассмотрим функциональную схему модуля, представленную на рис. 45.

Модуль позволяет отображать 10 знакомест (цифр с точкой). Любой сегмент любого знакоместа можно включать и выключать независимо от остальных сегментов. Регистры данных в БИС контроллера делятся на две тетрады: SGx(L) и SGx(H). Запись данных в знакоместо производится за два такта: сначала в младшую, затем в старшую. Младшая тетрада данных отвечает за сегменты g, e, d, a, а старшая – за сегменты h, b, c, f (рис. 46).

Контрастность индикатора зависит от напряжения питания модуля. Управление контрастностью производится подключением внешнего резистора RВН на вывод V0. При RВН = 0 ( вывод V0 закорочен на GND) – контрастность максимальная, при RВН =  (нет резистора) – контрастность минимальна.

Рис. 45. Функциональная схема жидкокристаллического модуля

Рис. 46. Обозначение сегментов дисплейного модуля МТ10Т7-7

Рассмотрим назначение внешних выводов дисплейного модуля (табл. 25).

Таблица 25

Наименование

Назначение вывода

1

А0

Выбор адрес /данные:А0="L" – адрес, А0="H" – данные

2

WR2

Запись в модуль. Активный уровень "L".

3

WR1

Запись в модуль. Активный уровень "H".

4

DB3

Разряд шины адреса/данных

5

DB2

Разряд шины адреса/данных

6

DB1

Разряд шины адреса/данных

7

DB0

Разряд шины адреса/данных

8

GND

Земля. Вывод, подключаемый к общей шине.

9

V0

Управление контрастностью.

10

Питание модуля.

Рис. 47. Временные диаграммы работы дисплейного модуля

Каждое знакоместо модуля имеет свой адрес. Рассмотрим таблицу адресов регистров модуля (табл.26).

Таблица 26

№ знакоместа

1

2

3

4

5

6

7

8

9

10

Наименование

Sg1

Sg2

Sg3

Sg4

Sg5

Sg6

Sg7

Sg8

Sg9

Sg10

Блок.

Адрес (HEX)

00

01

02

03

04

05

06

07

08

09

0F

Рассмотрим работу жидкокристаллического модуля МТ-10Т7-7.

В начале работы необходимо выставить адрес знакоместа, куда будут посылаться данные. Фиксация адреса в регистре RGA происходит при низком уровне на входе А0 (рис.46) при WR1=1 и WR2=0. Сигналы на входах WR1 и WR2 защелкивают информацию, стоящую на DB0-3 во внутренних регистрах статического типа. При записи адреса знакоместа указатель тетрады сбрасывается в состояние "младшая". Запись данных производится в младшую тетраду при А0=1, WR1=1 и WR2=0 (рис.47). По этому же сигналу указатель тетрады переключается в положение "старшая", при этом сохраняется тот же адрес знакоместа. Данные в старшую тетраду записываются аналогично младшей тетраде. После записи второй тетрады содержимое регистра инкрементируется, и можно записывать данные в следующее знакоместо без записи адреса.

По адресу 0Fh расположен триггер блокировки шины DB0-3. Разблокировка шины происходит при записи DB0-3="1111" по адресу 0Fh. После подачи питания содержимое регистров SGx не определено, поэтому при включении питания необходимо делать программную очистку регистров. Состояние триггера блокировки также не определено, поэтому перед началом вывода информации на индикатор необходимо произвести разблокировку шины.

Электрические параметры модуля дисплея МТ-10Т7-7 по постоянному току и динамические характеристики представлены в табл. 27 и 28.

Таблица 27

Параметры

Обозначение

Минимальное значение

Номинальное значение

Максимальное значение

Напряжение питания, В

Ucc

3

5

Ток потребления, мкА

Icc

30

Входное напряжение высокого уровня, В

Uiн

Ucc + 0,6

Входное напряжение низкого уровня, В

Uil

Ucc – 0,6

Таблица 28

Параметры

Обозначение

Минимальное значение

Максимальное значение

Время предустановки, нс

Tsad

0

-

Время удержания, нс

Thad

100

-

Длительность сигнала записи, нс

Twr

100

-

Пауза между WR, нс

Tp

200

-

Задержка изменения сигналов WRx, нс

Tнw

50

-

Время нарастания импульса, нс

TR

0

50

Время убывания импульса, нс

TF

0

50

Габаритные размеры модуля дисплея представлены на рис. 48.

Рис.48. Габаритные размеры ЖК дисплея МТ10Т7-7

На рис. 49 представлена схема подключения жидкокристаллического модуля к однокристальному МК. Модуль подключается своими выводами непосредственно к разрядам МК, так как ток, потребляемый дисплеем, составляет всего лишь 50 мкА. Разряды Р2.0 - Р2.3 управляют выдачей тетрад адреса знакоместа и данных, выводимых в дисплей. Вывод кода символа осуществляется в два этапа, вначале младшая тетрада, затем старшая. Управление пересылкой адреса или данных осуществляет разряд Р2.6. Сигналы записи информации в дисплей формируют разряды Р2.4 и Р2.5. Резистор, подключенный к V0, обеспечивает необходимую яркость свечения символов дисплея.

Рассмотрим коды символов для дисплея, показанные в табл. 29.

Таблица 29

Старшая тетрада

Младшая тетрада

Код

DB3

DB2

DB1

DB0

DB3

DB2

DB1

DB0

HEX

Сегменты

F

C

B

H

A

D

E

G

0

1

1

1

0

1

1

1

0

EEh

1

0

1

1

0

0

0

0

0

60h

2

0

0

1

0

1

1

1

1

2Fh

3

0

1

1

0

1

1

0

1

6Dh

4

1

1

1

0

0

0

0

1

E1h

5

1

1

0

0

1

1

0

1

CDh

6

1

1

0

0

1

1

1

1

CFh

7

0

1

1

0

1

0

0

0

68h

8

1

1

1

0

1

1

1

1

EFh

9

1

1

1

0

1

1

0

1

EDh

A

1

1

1

0

1

0

1

1

EBh

B

1

1

0

0

0

1

1

1

C7h

C

1

0

0

0

1

1

1

0

8Eh

D

0

1

1

0

0

1

1

1

67h

E

1

0

0

0

1

1

1

1

8Fh

F

1

0

0

0

1

0

1

1

8Bh

Рис. 49. Схема подключения ЖК модуля МТ10Т7-7

к однокристальному МК

Рассмотрим программу вывода информации на ЖК дисплей.

После включения питания содержимое регистров ЖК модуля не определено, поэтому необходимо произвести начальную инициализацию (шаги с 19 по 31).

<1> DB0 BIT P2.0

<2> DB1 BIT P2.1

<3> DB2 BIT P2.2

<4> DB3 BIT P2.3

<5> WR1 BIT P2.4

<6> WR2 BIT P2.5

<7> А0 BIT P2.6

<8> JMP START ; Переход на выполнение основной программы

;Установка информации на шину ЖК дисплея DB0 - DB3

<9>OUT_BUS: CLR C

<10> RRC A

<11> MOV DB0,C

<12> RRC A

<13> MOV DB1,C

<14> RRC A

<15> MOV DB2,C

<16> RRC A

<17> MOV DB3,C

<18> RET

; Разблокировка ЖК дисплея

<19>INIT_LCD: MOV A,#0FH

<20> CALL OUT_BUS

<21> CALL STROB_A0

<22> MOV A,#0FH

<23> CALL STROB_WR1

; Очистка всех знакомест ЖК дисплея

<24> CLR A

<25> CALL OUT_BUS

<26> CALL STROB_A0

<27> MOV R0,#00

<28>CLR_AGAIN:CALL STROB_WR1

<29> INC R0

<30> CJNE R0,#20,CLR_AGAIN

<31> RET

;Процедура кодировки в семисегментный формат

<32>CODER: MOV DPTR,#TABLE ;

<33> MOV A,@R0

<34> MOVC A,@A+DPTR

<35> MOV @R0,A

<36> RET

;Процедура подготовки вывода данных на дисплей

<37>PODGOTOVKA: MOV 20H,#0 ;Обнуление буфера дисплея

<38> MOV 21H,#0 ; 20H=0; 21H=0; 22H=0; 23H=0

<39> MOV 22H,#0 ;

<40> MOV 23H,#0 ;

; Упаковка тетрад в буфер ОЗУ из регистров R5 и R4

<41> MOV A,R5

<42> MOV R0,#21H

<43> XCHD A,@R0

<44> SWAP A

<45> MOV R0,#20H

<46> XCHD A,@R0

<47> MOV A,R4

<48> MOV R0,#23H

<49> XCHD A,@R0

<50> SWAP A

<51> MOV R0,#22H

<52> XCHD A,@R0

;Замена BCD кодов на семисегментные коды ЖК дисплея

<53> MOV R0,#20H

<54> CALL CODER

<55> INC R0

<56> CALL CODER

<57> INC R0

<58> CALL CODER

<59> INC R0

<60> CALL CODER

<61> MOV A,R3 ; Если нет запятой,

<62> JZ NO_COMMA ; то обходим процедуру

<63> MOV A,#1FH ; Если есть запятая, то вычисляем номер

<64> ADD A,R3 ; знакоместа, где она будет

<65> MOV R0,A ;

<66> MOV A,@R0 ; Добавляем к коду

<67> ADD A,#10H ; цифры 10Н

<68> MOV @R0,A ;

<69>NO_COMMA: MOV R0,#20H ; Просматриваем цифры, начиная с первой,

<70>AGAIN: MOV A,@R0 ; заменяем лишние нули пробелом

<71> CJNE A,#0EEH,END_PROC ; Если не 0, то конец процедуры,

<72> MOV @R0,#0 ; если 0, то пишем пробел в знакоместо

<73> INC R0 ; Продвижение по буферу дисплея

<74> CJNE R0,#23H,AGAIN; Проверка на конец буфера

<75>END_PROC: RET ;

;Вывод в порт однокристального МК по тетрадам

<76>OUT_PORT: CALL OUT_BUS

<77> CALL STROB_WR1

<78> CALL OUT_BUS

<79> CALL STROB_WR1

<80> RET

;Процедура вывода информации на ЖК дисплей

<81>DISPLAY: CALL PODGOTOVKA

<82> MOV A,#6 ; Установка адреса шестого знакоместа

<83>CALL OUT_BUS;Установка кода знакоместа на шине DB0 - DB3

<84> CALL STROB_A0

<85> MOV R0,#20H

<86>DIGIT: MOV A,@R0

<87> CALL OUT_PORT

<88> INC R0

<89> CJNE R0,#24H,DIGIT

<90> RET

<91>START: CLR WR2 ; WR2 = 0

<92> CALL INIT_LCD ; Инициализация ЖК дисплея

<93> MAIN:CALL DISPLAY ; Индикация данных буфера дисплея

<94> JMP MAIN

<95>STROB_WR1: SETB WR1 ; Формирование импульса WR1

<96> CLR WR1 ; при записи знакоместа

<97> RET

<98>STROB_A0: CLR A0 ; Формирование импульсов при

<99> SETB WR1 ; записи адреса

<100> CLR WR1 ;

<101> SETB A0 ;

<102> RET

<103>TABLE:DB 0EEH,60H,2FH,6DH,0E1H,0CDH,0CFH,68H,0EFH,

DB 0EDH;коды цифр для ЖК дисплея 0,1,2,3,4,5,6,7,8,9.

Исходные данные, необходимые для отображения, находятся в паре регистров R5, R4 в BCD формате. Например, требуется отобразить число 9125, оно должно находиться в R5=91h и R4=25h. Положение десятичной точки задается в регистре R3. Так, например, требуется отобразить число 91,25. В регистре R3 должно быть записано 02h. Если же точку отображать не нужно, то R3=0. Перекодировка из BCD формата в семисегментный формат цифр ЖК дисплея происходит с шага 32 по 36. В качестве буфера дисплея выступают ячейки ОЗУ с 20Н по 23Н (старшая цифра в 20Н, младшая в 23Н). Для вывода десятичной точки необходимо к семисегментному коду цифры на соответствующем знакоместе добавить число 10Н. Подготовка цифр к индикации на дисплее происходит с шага 37 по 75. Вначале происходит обнуление буфера дисплея (шаги 37 - 40). Далее осуществляется упаковка отображаемых данных из R5, R4 в ячейки буфера ОЗУ (шаги с 41 по 52 ). С шага 53 по 60 в буфере дисплея заменяются BCD коды данных на семисегментные коды ЖК дисплея. Шаги с 61 по 75 выполняют проверку на наличие запятой (содержимое регистра R3). Если запятая есть, то определяется знакоместо, где она должна быть, и добавляется код 10Н к выводимому на дисплей коду числа. Если запятой нет, то эта процедура обходится. Шаги с 69 по 75 убирают незначащие нули из результата, например, число 0012 будет отображаться как 12, а число 00.12 как 0.12. Осуществляется просмотр числа слева направо, если встретился код “ нуль без точки ” 0ЕЕН, он заменяется кодом пробела 00Н, и так до первой цифры с отличным от 0ЕЕН кодом.

Процедура OUT_BUS (шаги с 9 по 18) выводит содержимое аккумулятора на шину DB0 – DB3 ЖК дисплея.

Процедура OUT_PORT ( шаги с 76 по 80 ) осуществляет вывод данных в порт однокристального МК по тетрадам.

Процедура DISPLAY ( шаги с 81 по 90 ) осуществляет вывод информации из буфера (с 20Н по 23Н) в ЖК дисплей.

В блоке MAIN (шаги с 93 по 94 ) выполняются процедуры основной программы и вывод информации на ЖК дисплей.

З а д а н и я д л я с а м о с т о я т е л ь н о й р а б о т ы

  1. Разработайте алгоритм и программу, обеспечивающую вывод одинаковых цифр (от 0 до 9 ) во все знакоместа дисплея, смена цифр производится через одну секунду ( схема по рис.49).

  2. Разработайте алгоритм и программу, обеспечивающую вывод цифр от 9 до 0 справа налево, смена цифры в каждом знакоместе осуществляется через 1 секунду.