Компоненты и технологии, № 1'2005
Компоненты
Цифровой вольтметр
на базе микроконтроллера HT46R63
В данной статье рассматривается применение микроконтроллера HT46R63 фирмы Holtek Semiconductor для разработки цифрового вольтметра. Основная идея заключается в использовании микроконтроллера для преобразования измеряемого напряжения в соответствующее цифровое значение и отображения на ЖК-индикаторе после программной обработки. Так как HT46R63 имеет встроенный
аналого-цифровой преобразователь и драйвер ЖКИ, схема вольтметра очень проста.
Вэн-Чинь Хуань
Перевод:
Николай Ракович
НТ46И63 представляет собой восьмиразрядный однократно программируемый (ОТР) микроконтроллер Нокек нового поколения со встроенным АЦП и драйвером ЖКИ. Внутренняя ОТР-память емкостью 4 К и 32 линии ввода-вывода значительно упрощают построение интерфейса с внешними устройствами, например, с клавиатурой. Возможность напрямую работать с ЖК-инди-катором 19x4 обеспечивается встроенным драйвером ЖКИ. С помощью этого микроконтроллера можно управлять внешними достаточно мощными приборами (симисторами или реле). Встроенный восьмиканальный АЦП может непосредственно контролировать внешние аналоговые сигналы (индикаторы состояния батарей, измерители тока и температуры), четырехканальным восьмиразрядным ШИМ с цифро-аналоговым преобразователем можно управлять внешними устройствами или оборудованием.
Рабочее напряжение НТ46И63 составляет 2,2-5,5 В, что позволяет использовать этот микроконтроллер для различных устройств потребительского рынка и промышленности с индикацией на ЖК-панелях, например, в водонагревателях, печах СВЧ, цифровых камерах, автомобильных системах и т. п.
Набор программных и аппаратных средств, объединенных в систему разработки НТ-ГОБ30000, дополняет линейку микроконтроллеров Нокек. Эмуляция в реальном времени, модификация регистров памяти, аппаратная реализация точек останова, трассировочные анализаторы и т. д. являются стандартными составляющими НТ-ГОБ30000 и предоставляют разработчикам средства, необходимые для быстрой и эффективной разработки и отладки изделия. Дополнительная возможность моделирования ЖК-панели позволяет разработчику полностью провести наладку без подключения непосредственно к ЖКИ.
4кх15
Program
ROM
INT0/INT1
Interput
Circuit
Program Counter,
Stack і Levels
INTCO
INTC1
Ж
RES И—► vddH—► vssKl—► avddH—►
;r DATA RAM (208x8)
Instruction
Decoder
OSC3E2—► OSC4KK—
Timing
Generator
ЗЦГ
\ mux/
Ж
ALU STATUS
Shifter
1L1JI
ACC
IVR Option
PROM
High -Middle “
Low-
LCD
R-BIAS 4x19/3x20
—► Logical Output Option
Рис.1
VLCD COMOCOM3/SEG19 SEGOSEG18
TMRC
TMR
-fSYS/4 -TMR
WDT
Generator
EN/DIS
- RTCOSC
- WDTOSC
- fSYS/4
<-l Time Base/RTC/LCD Generator
РАС
<PORJA>№ PA0-PA7
PBC
PORT В
<-------НЖ1 PB0/AN0-PB7/AN7
І-Channel A/D Converter
PCC
^PORTCna PCO-PC7
PWM
PDO/PWMO-PD3/PWM3 PORTD PD4/INT0
<-------HE PD5/INT1
PDÓ/TMR
PD7
Comparator EN/DIS
T
HALT
CHGO, CMPO CMPP, CMPN
fRTC
Основные характеристики ИТ46Р63
Тактовая частота ИТ46К63 определяется внешней ИС-цепью или кварцевым резонатором. В качестве опорного напряжения ЛУББ используется напряжение питания УББ. Структура микроконтроллера приведена на рис. 1, варианты конструктивного оформления — на рис. 2.
Таблица 1. Технические характеристики ИЇ46к63
Характеристика Значение
Рабочее напряжение, В 2,2-5,5
Число линий ввода-вывода 32
Разрядность таймера с прерыванием по переполнению (TMR) ló
Частота тактового генератора с прерыванием RTC, Гц 32768
Число каналов АЦП с восьмиразрядным разрешением (точность 7 бит) 8
Число каналов ШИМ 4
ПЗУ программ 4Кх15 бит
ОЗУ данных 208x8 бит
Командный цикл, мкс (^удкт = 8 МГц и иПиу = +5 В) <0,5
Число уровней стека 8
Число входов внешнего прерывания 2
Число компараторов 1
Драйвер ЖКИ 20x3 или 19x4
Компоненты и технологии, № 1'2005
Компоненты
Рис.2
OSC4 □ 1 56 □ CHGO
OSC3 □ 2 55 □ СМР0
VDD □ 3 54 □ СМРР
OSC2 □ 4 53 □ CMPN
OSC1 □ 5 52 □ VLCD
RES □ ó 51 □ COMO
РАО □ 7 50 □ СОМІ
РА1 □ 8 49 □ COM2
РА2 □ 9 48 □ COM3/SEG19
РАЗ □ 10 47 □ SEG14
РА4 □ 11 46 □ SEG13
РА5 □ 12 45 □ SEG12
РА6 □ 13 44 □ SEG11
РА7 □ 14 43 □ SEG10
VSS □ 15 42 □ SEG9
PB0/AN0 □ 16 41 □ SEG8
PB1/AN1 □ 17 40 □ SEG7
PB2/AN2 □ 18 39 □ SEGÓ
PB3/AN3 □ 19 38 □ SEG5
AVDD □ 20 37 □ SEG4
РСО □ 21 36 □ SEG3
РС1 □ 22 35 □ SEG2
РС2 □ 23 34 □ SEG1
РСЗ □ 24 33 □ SEGO
PD0/PWM0 □ 25 32 □ PD7
PD1/PWM1 □ 26 31 □ PD6/TMR
PD2/PWM2 □ 27 30 □ PD5/ÍÑT1
PD3/PWM3 □ 28 29 □ PD4/ÍÑT0
HT46R63/HT46C63 ) -56SSOP-A а)
NC
NC
NC
NC
РАО
РА1
РА2
РАЗ
РА4
РА5
РА6
РА7
VSS
PB0/AN0
PB1/AN1
PB2/AN2
PB3/AN3
PB4/AN4
PB5/AN5
PB6/AN6
PB7/AN7
AVDD
NC
NC
NC
NC
NC
NC
NC
NC
ОО ^ О О 9 QQ Q
ZZZZZZZSI^nK^^I
nnnnnnn
• 100
1
mIlíioOuVoo-dZ ООП
80
HT46R63/HT46C63 -100 QFP-A
ЗО
50
NC
NC
NC
NC
NC
NC
COMO
COMI
COM2
COM3/SEG19
SEG18
SEG17
SEG16
SEG15
SEG14
SEG13
SEG12
SEG11
SEG10
SEG9
SEG8
SEG7
SEGÓ
SEG5
SEG4
SEG3
SEG2
SEG1
SEGO
NC
-п-п-п-п tj “o “D “л tj ~п ~o _п_п_п_п_п 7777
ПППП ПППП DOODODOO ПППП
O — Ю CJ O.NI O—
lililí!
i5SSo1 6)
В случаях повышенной нагрузки на источник питания, провалов напряжения питания и электрических помех точность преобразования будет ниже, чем определено в технических характеристиках. Встроенный АЦП имеет в своем составе три регистра — ADR (21H), ADCR (22H) и ACSR (23H). В регистр ADR заносятся результаты аналого-цифрового преобразования. Его содержимое для получения данных должно быть считано после завершения работы АЦП. Номер канала АЦП, выбор аналогового канала, установка бита запуска преобразования и флага окончания преобразования задаются регистром управления ADCR. Чтобы запустить аналого-цифровое преобразование, надо после выбора аналогового канала, сигнал с которого необходимо обработать, установить бит запуска START. По окончании работы АЦП бит ЕОСВ очищается и устанавливается запрос на прерывание от АЦП (если оно предварительно установлено). Для выбора источника тактирования АЦП предназначен регистр ACSR.
Ввод-вывод данных в микроконтроллере HT46R63 осуществляется через 32 двунаправленные линии ввода-вывода, обозначенные РА-PD и отображаемые в областях памяти [12Н], [14Н], [16Н] и [18Н] соответственно.
Все эти порты, имеющие собственные регистры управления РАС, РВС, РСС и PDC, могут использоваться как для операций ввода, так и операций вывода с каждой линией ввода-вывода.
Принцип работы цифрового вольтметра
Основной принцип работы цифрового вольтметра прост — преобразование аналогового сигнала в цифровой, результат отобража-
'DC
І
R1 47 к
ZQ1 рХГ 4 МГц V
—I— С1 “I” 0,1 мк
Вход
+ <^
Рис. 3
HG1
0|CO|I^.|4D|LO|'4-|COICN|^| оо оо СО ю СО СО ю ю ю
ииииииийг.п --------ш • w '
NC NC NC РАО РАЇ PA2 РАЗ РА4 РА5 РА6 РА7 Vss
РВО/А NO PB1/AN1 PB2/AN2 PB3/AN3 PB4/AN4 PB5/AN5 PB6/AN6 PB7/AN7
avdd
NC NC NC NC NC NC NC
і j
DD1
HT46R63/HT46C63-
QFP-A
100
' ц? -О (s ,
NC NC NC NC NC COMO COM! COM2 COM3/SEG19 SEG18 SEG17 SEG16 SEG15 SEG14 SEG13 SEG12 SEG11 SEG10 SEG9 SEG8 SEG7 SEG6 SEG5 SEG4 SEG3 SEG2 SEG1 SEGO
O i— CN
2 5 5 ООО и и и
с/> СО со с/> со со с/>
■— сч со -ч- —
О О- со
1 CN n k <о ho S СО 9. о
ется в цифровом виде. Наличие АЦП в составе НТ46И63 позволяет обойтись без дополнительного преобразователя.
Помимо аналого-цифрового преобразователя необходимо программное и аппаратное обеспечение для отображения результата на ЖКИ, так как после преобразования сигнал имеет шестнадцатеричный вид, а для отображения на ЖК-панели он должен быть в десятичной форме. Эта проблема снимается
наличием в составе HT46R63 драйвера ЖКИ. Более того, фирма Holtek поставляет программу моделирования ЖК-панели, что позволяет разработчику полностью отладить систему без «живого» ЖКИ.
Чтобы вывести результат измерения на ЖКИ, необходимо установить ВР (Bank pointer) в 1 и выбрать соответствующую таблицу из памяти ЖКИ. Отображаемые данные будут храниться по адресу 40Н - 53Н.
Компоненты и технологии, № 1'2005
Компоненты
Принципиальная
схема
Принципиальная схема цифрового вольтметра, состоящая из микроконтроллера, ЖКИ и нескольких внешних элементов, показана на рис. 3.
При разработке устройства и его тестировании использовались микросхемы Т1СЕ468ЕК0000Л и НТ-ГОЕ3000.
Программа цифрового вольтметра состоит из четырех основных блоков:
• выполнение АЦ-преобразования;
• чтение регистра ЛБИ;
• преобразование результата измерения в десятичную форму;
• отображение результата измерения на ЖК-панели.
Аналого-цифровое преобразование
Чтобы использовать АЦП микроконтроллера НТ46, необходимо выполнить следующее:
• сконфигурировать каналы порта В установкой РСИ2, РСИ1 и РИС0;
• выбрать канал для АЦП установкой ЛС82, ЛС81 и ЛС80. Выбранный канал должен быть сконфигурирован;
Таблица 2
INCLUDE HT46R63.INC
HT46R63/HT46C63 8 bit A/D with LCD Type MCU An MCU-based digital voltage meter
DATA. SECTION AT З0Н 'DATA' ;start of data block
CLR_MEM_COUNTER DB ? ; d e c l a
CLR_MEM_COUNTER register
AD_VALUE DB ? ;declare AD_VALUE register
CODE. SECTION AT 0 'CODE'
;start of program block
DC
0314H,0316H,0318H,0320H,0322H,0324H,0325H,0327H,0329H,0331H,03
33H,0335H,0337H,0339H,0341H,0343H
ORG 0FB0H
DC
0345H,0347H,0349H,0351H,0353H,0355H,0357H,0359H,0361H,0363H,03
65H,0367H,0369H,0371H,0373H,0375H
ORG 0FC0H
DC
0376H,0378H,0380H,0382H,0384H,0386H,0388H,0390H,0392H,0394H,03
96H,0398H,0400H,0402H,0404H,0406H
ORG 00Н ORG 0FD0H
JMP START DC
START: 0408H,0410H,0412H,0414H,0416H,0418H,0420H,0422H,0424H,0425H,04
MOV A,0FFH-30H 27H,0429H,0431H,0433H,0435H,0437H
MOV CLR_MEM_COUNTER,A ORG 0FF0H
MOV A,31H DC
MOV MP0,A 0471H,0473H,0475H,0476H,0478H,0480H,0482H,0484H,0486H,0488H,04
CLR_MEM: 90H,0492H,0494H,0496H,0498H,0500H
CLR R0
INC MP0 ;Data base for LCD display
DZ CLR_MEM_COUNTER
JMP CLR_MEM FUNC .SECTION 'CODE'
MAIN: LCD PROC
MOV A,48H MOV A,01H ;set BP to be 1
MOV ADCR,A ;set AN0 as the only input channel MOV BP,A
SET ADCR.7 MOV A,[36H]
CLR ADCR.7 ;start of A/D transformation MOV [70H],A
LOOP: MOV A,0FH
SZ ADCR.6 ;EOCB = 0, indicating the end of A/D transforma- AND A,[70H]
tion MOV TBLP,A
JMP LOOP ;if EOCB = 1, then go to LOOP TABRDL [50H] ;store the 2nd digit after decimal point into [50H]
CLR РАС ;set PA as OUTPUT SWAPA [70H]
CLR PA ;set PA to be LOW VOLTAGE AND A,0FH
NOP MOV TBLP,A
MOV A,ADR ;read the value of ADR TABRDL [51H] ;store the 1st digit after decimal point into [51H]
MOV TBLP,A MOV A,TBLH
TABRDL [36H] ;read from data base MOV [71H],A
ORG OF00H ;data base for measurement results MOV A,0FH
DC AND A,[71H]
0000H,0002H,0004H,0006H,0008H,0010H,0012H,0014H,0016H,0018H,00
20H,0022H,0024H,0025H,0027H,0029H
ORG 0F10H
DC
0031H,0033H,0035H,0037H,0039H,0041H,0043H,0045H,0047H,0049H,00
53H,0053H,0055H,0057H,0059H,0061H
ORG 0F20H
DC
0063H,0065H,0067H,0069H,0071H,0073H,0075H,0076H,0078H,0080H,00
82H,0084H,0086H,0088H,0090H,0092H
ORG 0F30H
DC
0094H,0096H,0098H,0100H,0102H,0104H,0106H,0108H,0110H,0112H,01
14H,0116H,0118H,0120H,0122H,0124H
ORG 0F40H
DC
0125H,0127H,0129H,0131H,0133H,0135H,0137H,0139H,0141H,0143H,01
45H,0147H,0149H,0151H,0153H,0155H
ORG 0F50H
DC
0157H,0159H,0161H,0163H,0165H,0167H,0169H,0171H,0173H,0175H,01
76H,0178H,0180H,0182H,0184H,0186H
ORG 0F60H
DC
0188H,0190H,0192H,0194H,0196H,0198H,0200H,0202H,0204H,0206H,02
08H,0210H,0212H,0214H,0216H,0218H
ORG OF70H
DC
0220H,0222H,0224H,0226H,0228H,0230H,0231H,0233H,0235H,0237H,02
39H,0241H,0243H,0245H,0247H,0249H
ORG 0F80H
DC
0251H,0253H,0255H,0257H,0259H,0261H,0263H,0265H,0267H,0269H,02
71H,0273H,0275H,0276H,0278H,0280H
ORG 0F90H
DC
0282H,0284H,0286H,0288H,0290H,0292H,0294H,0296H,0298H,0300H,03
02H,0304H,0306H,0308H,0310H,0312H
ORG 0FA0H
MOV TBLP,A
TABRDL [52H] ;store the 1st digit before decimal point into [52H]
LCD Display part
MOV A,44H ;display the 2nd digit after decimal point
MOV MP1,A
MOV A,[50H]
MOV R1,A
INC MP1
SWAPA [50H]
MOV R1,A
INC MP1
MOV A,42H ;display the 1st digit after decimal point
MOV MP1,A
MOV A,[51H]
MOV R1,A
INC MP1
SWAPA [51H]
MOV R1,A
INC MP1
MOV A,40H ;display the 1st digit before the decimal point
MOV MP1,A
MOV A,[52H]
MOV R1,A
INC MP1
SWAPA [52H]
MOV R1,A
INC MP1
MOV A,46H ;display the decimal point
MOV MP1,A
MOV A,01H
MOV R1,A
ORG 0F00H ;data base for LCD display
DC 07DH,060H,03EH,07AH,063H
ORG 0F05H
DC 05BH,05FH,070H,07FH,07BH
LCD ENDP
END
ADCS1 ADCS0 Частота АЦП
0 0 Fsys/2
0 1 fsys/8
0 Fsys/32
1 Не определено
• установить бит ADCR.7 = 0^ 1^0 для запуска преобразования, ЕОС будет находиться в 1, пока будет идти этот процесс;
• ожидать завершения 76 тактов АЦП для окончания преобразования, после чего ЕОС устанавливается в 0 (завершение процесса). Если разрешено прерывание от АЦП, то устанавливается флаг запроса на прерывание от АЦП;
• считать результат преобразования в регистре ADR.
Каждое аналого-цифровое преобразование занимает 76 тактов, длительность которых задается установкой битов ADCS1 и ADCS0 (табл. 2).
Моделирование ЖК-дисплея
Как уже упоминалось, на ЖК-дисплей выводится результат измерения напряжения. Экран компьютера при моделировании этого ЖКИ приведен на рис. 4, а на рис. 5 дано обозначение сегментов 7-сегментного знакоместа. Отображение 7-сегментного индикатора в памяти ЖКИ приведено на рис. 6.
Исходный код программы приведен слева.
COM\SEG 0 1
0 F A
1 G В
2 E С
3 D
0 G01111101B=7DH 6 G01011111 B=5FH
1 GO1100000В=60Н 7 GO1110000В=70Н
2 GOOl11110В=ЗЕН 8 GOl111111B=7FH
3 GOl 111010B=7AH 9 G01111011 B=7BH
4 G01100011B=63H
5 GO 1011011 B=5BH decimal point: 00000001 B=01H Рис. 6