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

№ 1’2005
В данной статье рассматривается применение микроконтроллера HT46R63 фирмы Holtek Semiconductor для разработки цифрового вольтметра. Основная идея заключается в использовании микроконтроллера для преобразования измеряемого напряжения в соответствующее цифровое значение и отображения на ЖКиндикаторе после программной обработки. Так как HT46R63 имеет встроенный аналогоцифровой преобразователь и драйвер ЖКИ, схема вольтметра очень проста.

на базе микроконтроллера HT46R63

В данной статье рассматривается применение микроконтроллера HT46R63 фирмы Holtek
Semiconductor для разработки цифрового вольтметра. Основная идея заключается в использовании микроконтроллера для преобразования измеряемого напряжения
в соответствующее цифровое значение и отображения на ЖКиндикаторе после программной обработки. Так как HT46R63 имеет встроенный аналогоцифровой преобразователь и драйвер ЖКИ, схема вольтметра очень проста.

Рис. 1

HT46R63 представляет собой восьмиразрядный однократно программируемый (ОТР) микроконтроллер Holtek нового поколения со встроенным АЦП и драйвером ЖКИ. Внутренняя ОТР-память емкостью 4 К и 32 линии ввода-вывода
значительно упрощают построение интерфейса с внешними устройствами, например, с клавиатурой. Возможность напрямую работать с ЖК-индикатором 19*4 обеспечивается встроенным драйвером ЖКИ. С помощью этого микроконтроллера можно управлять внешними достаточно мощными приборами (симисторами или реле). Встроенный
восьмиканальный АЦП может непосредственно контролировать внешние аналоговые сигналы (индикаторы состояния батарей, измерители тока и температуры), четырехканальным восьмиразрядным ШИМ с цифро-аналоговым преобразователем можно управлять внешними устройствами или оборудованием.

Рабочее напряжение HT46R63 составляет 2,2–5,5 В, что позволяет использовать этот микроконтроллер для различных устройств потребительского рынка
и промышленности с индикацией на ЖК-панелях, например, в водонагревателях, печах СВЧ, цифровых камерах, автомобильных системах и т. п.

Набор программных и аппаратных средств, объединенных в систему разработки HT-IDE30000, дополняет линейку микроконтроллеров Holtek. Эмуляция
в реальном времени, модификация регистров памяти, аппаратная реализация точек останова, трассировочные анализаторы и т. д. являются стандартными
составляющими HT-IDE30000 и предоставляют разработчикам средства, необходимые для быстрой и эффективной разработки и отладки изделия. Дополнительная возможность моделирования ЖК-панели позволяет разработчику полностью провести наладку без подключения непосредственно к ЖКИ.

Основные характеристики HT46R63

Таблица 1

Тактовая частота HT46R63 определяется внешней RC-цепью или кварцевым резонатором. В качестве
опорного напряжения AVDD используется напряжение питания VDD. Структура микроконтроллера приведена на рис. 1, варианты конструктивного оформления — на рис. 2.

Рис. 2

В случаях повышенной нагрузки на источник питания, провалов напряжения питания
и электрических помех точность преобразования будет ниже, чем определено в технических характеристиках. Встроенный АЦП имеет в своем составе три регистра — ADR (21H), ADCR
(22H) и ACSR (23H). В регистр ADR заносятся результаты аналого-цифрового преобразования. Его содержимое для получения данных должно быть считано после завершения работы АЦП. Номер канала АЦП, выбор аналогового канала, установка бита запуска преобразования и флага окончания преобразования задаются регистром управления ADCR. Чтобы запустить аналого-цифровое преобразование, надо после выбора аналогового канала, сигнал
с которого необходимо обработать, установить бит запуска START. По окончании работы АЦП бит ЕОСВ очищается и устанавливается запрос на прерывание от АЦП (если оно предварительно установлено). Для выбора источника тактирования АЦП предназначен регистр ACSR.

Ввод-вывод данных в микроконтроллере HT46R63 осуществляется через 32 двунаправленные линии ввода-вывода, обозначенные РА-РD и отображаемые в областях памяти [12Н], [14Н], [16Н] и [18Н] соответственно.

Все эти порты, имеющие собственные регистры управления РАС, РВС, РСС и РDС, могут использоваться как для операций ввода, так и операций вывода с каждой линией ввода-вывода.

Принцип работы цифрового вольтметра

Основной принцип работы цифрового вольтметра прост — преобразование аналогового сигнала в цифровой, результат отображается в цифровом виде. Наличие АЦП в соста-
ве HT46R63 позволяет обойтись без дополнительного преобразователя.

Помимо аналого-цифрового преобразователя необходимо программное и аппаратное обеспечение для отображения результата
на ЖКИ, так как после преобразования сигнал имеет шестнадцатеричный вид, а для отображения на ЖК-панели он должен быть в десятичной форме. Эта проблема снимается наличием в составе HT46R63 драйвера ЖКИ.
Более того, фирма Holtek поставляет программу моделирования ЖК-панели, что позволяет разработчику полностью отладить систему без «живого» ЖКИ.

Чтобы вывести результат измерения на ЖКИ, необходимо установить ВР (Bank pointer) в 1 и выбрать соответствующую таблицу из памяти ЖКИ. Отображаемые данные будут храниться по адресу 40Н – 53Н.

Принципиальная схема

Принципиальная схема цифрового вольтметра, состоящая из микроконтроллера, ЖКИ и нескольких внешних элементов, показана на рис. 3.

Рис. 3

При разработке устройства и его тестировании использовались микросхемы TICE46SER0000A и HT-IDE3000.

Программа цифрового вольтметра состоит из четырех основных блоков:

  1. выполнение АЦ-преобразования;
  2. чтение регистра ADR;
  3. преобразование результата измерения в десятичную форму;
  4. отображение результата измерения на ЖК- панели.

Аналогоцифровое преобразование

Чтобы использовать АЦП микроконтроллера HT46, необходимо выполнить следующее:

  1. сконфигурировать каналы порта В установкой PCR2, PCR1 и PRC0;
  2. выбрать канал для АЦП установкой ACS2, ACS1 и ACS0. Выбранный канал должен быть сконфигурирован;
  3. установить бит ADCR.7 = 0>1>0 для запуска преобразования, ЕОС будет находиться в 1, пока будет идти этот процесс;
  4. ожидать завершения 76 тактов АЦП для окончания преобразования, после чего ЕОС устанавливается в 0 (завершение процесса). Если разрешено прерывание от АЦП, то устанавливается флаг запроса на прерывание от АЦП;
  5. считать результат преобразования в регистре ADR.

Каждое аналого-цифровое преобразование занимает 76 тактов, длительность которых задается установкой битов ADCS1 и ADCS0 (табл. 2).

Таблица 2

Моделирование ЖКдисплея

Как уже упоминалось, на ЖК-дисплей выводится результат измерения напряжения.
Экран компьютера при моделировании этого ЖКИ приведен на рис. 4, а на рис. 5 дано обозначение сегментов 7-сегментного знакоместа.
Отображение 7-сегментного индикатора в памяти ЖКИ приведено на рис. 6.

Рис. 4
Рис. 5
Рис. 6

Исходный код программы приведен ниже.

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 r e

CLR_MEM_COUNTER register

AD_VALUE DB ? ;declare AD_VALUE register

;—————————————————

CODE. SECTION AT 0 ‘CODE’ ;start of program block

ORG 00Н

JMP START

START:

MOV A,0FFH-30H

MOV CLR_MEM_COUNTER,A

MOV A,31H

MOV MP0,A

CLR_MEM:

CLR R0

INC MP0

DZ CLR_MEM_COUNTER

JMP CLR_MEM

MAIN:

MOV A,48H

MOV ADCR,A ;set AN0 as the only input channel

SET ADCR.7

CLR ADCR.7 ;start of A/D transformation

LOOP:

SZ ADCR.6 ;EOCB = 0, indicating the end of A/D transformation

JMP LOOP ;if EOCB = 1, then go to LOOP

CLR РАС ;set PA as OUTPUT

CLR PA ;set PA to be LOW VOLTAGE

NOP

MOV A,ADR ;read the value of ADR

MOV TBLP,A

TABRDL [36H] ;read from data base

ORG OF00H ;data base for measurement results

DC

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

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 0FD0H

DC

0408H,0410H,0412H,0414H,0416H,0418H,0420H,0422H,0424H,0425H,04

27H,0429H,0431H,0433H,0435H,0437H

ORG 0FF0H

DC

0471H,0473H,0475H,0476H,0478H,0480H,0482H,0484H,0486H,0488H,04

90H,0492H,0494H,0496H,0498H,0500H

;—————————————————————

;Data base for LCD display

;—————————————————————

FUNC .SECTION ‘CODE’

LCD PROC

MOV A,01H ;set BP to be 1

MOV BP,A

MOV A,[36H]

MOV [70H],A

MOV A,0FH

AND A,[70H]

MOV TBLP,A

TABRDL [50H] ;store the 2nd digit after decimal point into [50H]

SWAPA [70H]

AND A,0FH

MOV TBLP,A

TABRDL [51H] ;store the 1st digit after decimal point into [51H]

MOV A,TBLH

MOV [71H],A

MOV A,0FH

AND A,[71H]

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *