Цифровой вольтметр на базе микроконтроллера ht46r63

Компоненты и технологии, № 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

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

ииииииийг.п --------ш • 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