Главная » Микроконтроллеры
Призовой фонд
на июль 2017 г.
1. Осциллограф DSO138
Паяльник
2. Регулируемый паяльник 60 Вт
Паяльник
3. 200 руб.
От пользователей

ЖКИ MT-10T8

ЖКИ MT-10T8
Рис.1 ЖКИ MT-10T8

Индикатор MT-10T8 (внешний вид приведен на рис.1) является очень популярным изделием российской фирмы “МЭЛТ”. Он содержит собственный встроенный контроллер, отвечающий за работу внутренней логики устройства и управление сегментами на жидких кристаллах. Его работоспособность сохраняется при напряжении питания 3…5 В; максимальный ток потребления составляет 30 мкА (без подсветки). Подобно ЖКИ на базе HT1611 от также содержит 10 знакомест, но обладает намного большей функциональностью. Во-первых, протокол обмена предусматривает адресацию любой позиции на экране. Это означает, что для изменения одного или нескольких символов не придется перезаписывать все остальные. Во-вторых, MT-10T8 допускает независимое управление каждым из 8 сегментов (присутствует десятичная точка), что дает возможность отображать такое же количество символов, как и на светодиодном индикаторе.

Назначение выводов модуля приведено в табл.1. Помимо выводов питания модуля +E и GND и питания подсветки +L, -L, имеется также выводы управления контрастностью V0. Напряжение на нем имеет положительную полярность и может быть подано с любого резистивного делителя включенного между шиной питания и общим проводом.

Табл.1. Функциональное назначение выводов ЖКИ МТ-10Т8:

Номер вывода

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

Функциональное назначение

1

A0

Выбор записи данные/адрес

2

   _WR2

Инверсный вход тактовых импульсов

3

WR1 

Прямой вход тактовых импульсов

4-7

BD3-DB0

Шина данных/адреса

8

GND

Общий вывод

9

V0

Напряжение управления контрастностью

10

+E

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

11

+L

Анод светодиодной подсветки

12

-L

Катод светодиодной подсветки

Схема подключения ЖКИ MT-10T8 к микроконтроллеру
Рис.2 Схема подключения ЖКИ MT-10T8 к микроконтроллеру

Схема подключения MT-10T8 к микроконтроллеру показана на рис.2. В целом для управления индикатором требуется как минимум 6 линий. Информация передается посредством 4-разрядной шины BD3:DB0 и записывается по фронту синхроимпульса на входе WR1. Помимо этого существует еще инверсный синхронизирующий вход _WR2, объединенный с WR1 по схеме WR1 AND _WR2. Если в его использовании нет необходимости, то он должен быть соединен с землей. Уровень напряжения на выводе A0 определяет будет ли производится запись адреса (A0=0) или данных (A0=1).   

Последовательность передачи данных в MT-10T8
Рис.3 Последовательность передачи данных в MT-10T8

Временная диаграмма сигналов приведена на рис.3. В самом начале записи на линиях BD3…DB0 выставляется адреса знакоместа в диапазоне 0x00…0x09(нумерация ведется слева на право). После чего A0 переводится в состояние лог.0 и на WR1 формируется импульс подтверждения. Далее следуют, непосредственно, данные. Так как для кодирования каждого символа требуется 8 бит, то запись каждого из них происходит за 2 такта: сначала младшая тетрада, затем старшая. При передачи данных, как уже говорилось выше перед синхроимпульсом на линии WR1, на входе выбора данных/адреса A0 должен присутствовать высокий логический уровень. Внутри схемы управления MT-10T8 имеется счетчик текущего адреса, который автоматически инкрементируется после каждого принятого символа. Благодаря этому существует возможность произвести запись сразу в несколько ячеек подряд. Необходимо передать только начальный адрес, а за ним последовательность символов. Кроме 10-ти ячеек видеопамяти ЖКИ имеет еще один управляющий регистр по адресу 0x0F, отвечающий за блокировку работы модуля. В отличии от всех остальных этот регистр 4-битный. Запись в него значения BD3:DB0 = 0b0000 делает невозможным доступ к индикатору в течении последующих 30 циклов обращения. Принудительное снятие блокировки осуществляется записью в регистр значения BD3:DB0 = 0b0001. Активизировать MT-10T8 необходимо в самом начале программы поскольку сразу после подачи напряжения питания режим блокировки включается автоматически.

Коды наиболее распространенных символов MT-10T8
Рис.4 Коды наиболее распространенных символов MT-10T8

Коды наиболее распространенных символов приведены на рис.4. Расположение сегментов A…H для каждой позиции совпадает с их расположением у светодиодных индикаторов. Младший полубайт кода содержит биты, отвечающие за сегменты A,D,E,G, старший полубайт - за F,C,B,H (отображаемому сегменту соответствует лог.1). Для записи символа “1”, например, необходимо последовательно передать BD3:DB0 = 0b0000 (сегменты A,D,E,G погашены) и BD3:DB0 = 0b0110 (сегменты F,H погашены, сегменты C,B отображаются).

   .def data = R16  ;регистр для передачи адреса и данных 
   .def temp = R17  ;регистр для промежуточных операций
   .def cnt  = R18  ;счетчик циклов
 
   .equ WR1  = PB4  
   .equ A0   = PB5

   ldi   temp,high(RAMEND) ;инициализация стека 
   out   SPH,temp
   ldi   temp,low(RAMEND)
   out   SPL,temp
  .
   clr   temp            ;обнуляем регистр PORTB
   out   PORTB,temp
   ldi   temp,0b00111111 ;настраиваем линии PB5…PB0 на вывод 
   out   DDRB,temp
   rcall mt10t8_init ;инициализируем модуль перед началом работы
  .
   ldi   data,3     ;устанавливаем адрес 3 ячейки видеопамяти,
   rcall write_adr  ;в которую будет  выведен следующий символ 
   ldi   data,21    ;выводим символ “H”
   rcall write_dat
   ldi   data,14    ;выводим символ “E”
   rcall write_dat
   ldi   data,20    ;выводим символ “L”
   rcall write_dat
   ldi   data,20    ;выводим символ “L”
   rcall write_dat
   ldi   data,0     ;выводим символ “O”
   rcall write_dat 
  .

;      Набор подпрограмм для работы с MT-10T8
; R16 – регистр для передачи адреса и данных
; R17 – регистр для промежуточных операций
; R18 – счетчик циклов
; ZH:ZL – указатель для перекодировки символов

;    Вспомогательная подпрограмма записи полубайта

write_nibl:
     andi  R16,0x0F ;выделяем младший полубайт в регистре 
	 in    R17,PORTB ;копируем содержимое порта во временный
	 andi  R17,0xF0 ;регистр для модификации	
     or    R17,R16  ;оставляем неизменным состояние старших 4-х 
	 out   PORTB,R17 ;линий и выводим новое значение в порт
	 nop             ;задержка времени в 3 цикла
	 nop
     nop
     sbi   PORTB,WR1 ;формируем синхроимпульс на линии WR1
     nop             ;задержка времени в 3 цикла
	 nop
     nop
	 cbi   PORTB,WR1 ;окончание синхроимпульса на линии WR1
     ret

;     Подпрограмма записи адреса ячейки памяти 
;  В R16 передается адреса ячейки памяти (0…9) перед вызовом  
; подпрограммы. 

write_adr:
     cbi   PORTB,A0    ;устанавливаем на линии A0 лог.0
	 rcall write_nibl  ;записываем адрес
	 ret 

;             Подпрограмма записи символа 
;  В R16 передается номер символа из таблицы перекодировки 
; mt10t8_tabl перед вызовом подпрограммы. В старшем разряде R16
; в подпрограмму передается десятичная точка (сегмент H).                           

write_dat:
     bst   data,7   ;копируем бит с десятичной точкой во флаг T
     andi  data,0b01111111  ;очищаем старший бит R16
     sbi   PORTD,A0   ;выставляем на линии A0 лог.1    
     ldi   ZH,high(2*mt10t8_tabl);заносим в указатель Z адрес
     ldi   ZL,low(2*mt10t8_tabl) ;начала таблицы перекодировки 
     add   ZL,data  ;добавляем к указателю Z смещение,
	 adc   ZH,zero  ;соответствующее положению символа в таблице
     lpm   data,Z     ;извлекаем в R16 из таблицы символ   
     rcall write_nibl ;записываем младший полубайт кода символа
	 lpm   data,Z     ;снова извлекаем в R16 из таблицы символ   
	 swap  data       ;обмениваем местами полубайты 
     bld   data,0     ;копируем флаг T в разряд десятичной точки
     rcall write_nibl ;записываем старший полубайт кода символа
	 ret

;          Подпрограмма инициализации 

mt10t8_init:
     ldi   R16,0x0F  ;устанавливаем адрес 0x0F 
     rcall write_adr ;управляющего регистра
     ldi   R16,1     ;записываем в регистр 4-битное значение 
	 sbi   PORTB,A0  ;0b0001 для снятия блокировки
     rcall write_nibl 
	 clr   R16       ;устанавливаем начальный адрес 0
	 rcall write_adr ;ячейки видеопамяти 
     clr   R16
     ldi   R18,10     ;инициализируем счетчик байтов 
	 sbi   PORTB,A0
di1: rcall write_nibl ;очищаем сегменты, всех 10 ячеек 
     rcall write_nibl ;последовательно записывая в каждую 
	 dec   R18        ;из них 0(space)
	 brne  di1
	 ret 

mt10t8_tabl:           ;таблица символов MT-10T8  
                               ;символы      номер в таблице
 .db 0xEE, 0x60, 0x2F, 0x6D    ;0,1,2,3       0,  1,  2,  3 
 .db 0xE1, 0xCD, 0xCF, 0x68    ;4,5,6,7       4,  5,  6,  7
 .db 0xEF, 0xED, 0xEB, 0xC7    ;8,9,A,b       8,  9, 10, 11
 .db 0x8E, 0x67, 0x8F, 0x8B    ;C,d,E,F      12, 13, 14, 15
 .db 0x00, 0xAB, 0x82, 0xF6    ;space,P,I,U  16, 17, 18, 19
 .db 0x86, 0xE3, 0x66, 0xE5    ;L,H,J,Y      20, 21, 22, 23
 .db 0xCE, 0xFA, 0x46, 0xC3    ;G,П,u,h      24, 25, 26, 27
 .db 0x07, 0x43, 0xA9, 0x87    ;c,n,o,t      28, 29, 30, 31
 .db 0x03, 0x40, 0xA9, 0x04    ;r,i,grad,_   32, 33, 34, 35
 .db 0x01, 0x08                ;-,~          36, 37

Набор подпрограмм для управления ЖКИ MT-10T8 приведен выше. Подпрограммы write_adr, write_dat производят запись адреса и данных соответственно. Процедура инициализации mt10t8_init обязательно должна быть вызвана перед началом работы. Она снимает блокировку индикатора и очищает от “мусора” все ячейки видеопамяти, записывая во все сегменты лог.0.

Перейти к следующей части:

Теги:

Котов Игорь Юрьевич Опубликована: 2012 г. 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (0) | Я собрал (0) | Подписаться

Статью еще никто не комментировал. Вы можете стать первым.
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

AVR-программатор USB ASP
AVR-программатор USB ASP
Arduino UNO Pickit 2 - USB-программатор PIC-микроконтроллеров
вверх