单片微型计算机课程设计
题 目: 基于单片机的数字电压表设计 姓 名: 张峰
班 级: 数控1103
学 号: 201123040318
成 绩:
2013年 12月 25日
I
目 录
摘 要„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„4 关键词 „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„4 前言 „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„5 1、 总体结构 „„„„„„„„„„„„„„„„„„„„„„„„„„„„5 2、 系统硬件电路的设计 „„„„„„„„„„„„„„„„„„„„„„„6 2.1、 10 倍放大器电路 „„„„„„„„„„„„„„„„„„„„„„6 2.2、 A / D 转换电路„„„„„„„„„„„„„„„„„„„„„„„7 2.3、 电桥输入电路„„„„„„„„„„„„„„„„„„„„„„„„8 2.4、 测试电路„„„„„„„„„„„„„„„„„„„„„„„„„„8 3、 系统程序的设计„„„„„„„„„„„„„„„„„„„„„„„„„11 3.1、 初始化程序 „„„„„„„„„„„„„„„„„„„„„„„„11 3.2、 主程序 „„„„„„„„„„„„„„„„„„„„„„„„„„11 3.3、 显示子程序 „„„„„„„„„„„„„„„„„„„„„„„„11 3.4、 A / D 转换测量子程序 „„„„„„„„„„„„„„„„„„„11 、 调试与性能分析„„„„„„„„„„„„„„„„„„„„„„„„„12 、 调试与测试 „„„„„„„„„„„„„„„„„„„„„„„„12 、 性能分析 „„„„„„„„„„„„„„„„„„„„„„„„„13 5、 结 语 „„„„„„„„„„„„„„„„„„„„„„„„„„„„„14 、 单片机汇编程序清„„„„„„„„„„„„„„„„„„„„„„„„14 参考文献„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„21
2
4 4.1 4.2 6
基于单片机数字电压表的设计
摘 要: 数字电压表的诞生打破了传统电子测量仪器的模式和格局。它显示清晰直观、读数准确,
采用了先进的数显技术,大大地减少了因人为因素所造成的测量误差事件。数字电压表是把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式,并加以显示的仪表。数字电压表把电子技术、计算技术、自动化技术的成果与精密电测量技术密切的结合在一起,成为仪器、仪表领域中而完整的一个分支,数字电压表标志着电子仪器领域的一场,也开创了现代电子测量技术的先河。本设计采用了以单片机为开发平台,控制系采用ATC52单片机,A/D转换采用ADC0809。系统除能确保实现要求的功能外,还可以方便进行8路其它A/D转换量的测量、远程测量结果传送等扩展功能。简易数字电压测量电路由A/D转换、数据处理、显示控制等组成。
关键词:单片机;ATC52;A/D转换;ADC0809;数据处理
引言
数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。新型数字电压表以其高准确度、高可靠性、高分辨率、高性价比等优良特性倍受人们的青睐。目前,数字电压表作为数字化仪表的基础与核心,已被广泛用于电子和电工测量、工业自动化仪表、自动测试系统等领域,显示出强大的生命力。与此同时,由电压表扩展而成的各种通用及专用仪表(含数字万用表),也将电量及非电量测量技术提高到崭新水平本文重点介绍单片A/D 转换器以及由它们构成的基于单片机的数字电压表的工作原理。
1、 总体结构
数字电压表的组成(图1)
3
图1 数字电压表的组成框图
DVM(Digital Voltage Meter)的核心是A/D转换器。
按系统功能实现要求,决定控制系统采用ATC52单片机,A/D转换采用ADC0809。系统除能确保实现要求的功能外,还可以方便地进行8路其他A/D转换量的测量和远程测量结果传送等扩展功能。数字电压表系统设计方案框图如图2所示。
上电复位 串口通信 电源电路 ATC52 P0 P2 P1 P3 ADC0809 4位LED显示
图2 数字电压表系统设计方案框图
2、系统硬件电路的设计
2.1、10倍放大器电路
下图是一个最简单的10倍放大电路,运算放大器使用的是精度比较高的OP07,利用它,可以把0~200mV的电压放大到0~2.000V。在使用的数字电压表量程为2.000V时,特别有用。如果把它应用在基本量程为±200.0mV的数字电压表上,就相当于把分
4
辨力提高了10倍,在一些测量领域中,传感器的信号往往觉得太小了,这时,可以考虑在数字压表前面加上这种放大器来提高分辨力。
图3 10倍放大器电路
2.2、 A/D转换电路
在电流或者电压的测量中,经常遇见测量的并不是直流而是交流,这时候,绝对不可以把交流信号直接输入到数字电压表去,必须先把被测的交流信号变成直流信号后,才可以送入数字电压表进行测量。下图就是一个把交流信号转换成为直流信号的参考电路。(说明:更好的交流转换成为直流的电路是一种“真有效值”转换电路,但是由于其专用芯片价格昂贵,多应用在一些高档场合。)
本电路中,输入的是0~200.0mV的交流信号,输出的是0~200.0mV的直流信号,从信号幅度来看,并不要求电路进行任何放大,但是,正是电路本身具有的放大作用,才保证了其几乎没有损失地进行AC-DC的信号转换。因此,这里使用的是低功耗的高阻输入运算放大器,其不灵敏区仅仅只有2mV左右,在普通数字万用表中大量使用,电路大同小异。首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。
5
图4 AC-DC转换电路
2.3、 电桥输入电路
在温度测量和其他物理及化学量的测量中,经常会出现“零点”的时候信号不是零的情况,这时候,下面的“电桥输入”电路就被优先采用了。可以根据被测信号的特点,用传感器替换电桥回路中的某一个电阻元件。数字电压表的两个输入端也不再有接地点,作为一种典型的“差分”输入来使用了。
图5 电桥输入(差分输入,比例输入)电路
2.4、 测量电路
电桥输入电路的变种还可以延伸到下面的电路,这是一个把4~20mA电流转换为数字显示的电路。它的零点就是4mA而不是0mA。当输入零点电流为4mA的时候,利
6
用IN-上面建立起来的电压,抵消掉IN+由于4mA出现的无用信号,使得数字电压表差分输入=0,就实现了4mA输入时显示为0的要求。随着信号的继续增大,例如到了20mA,对数字电压表来说,相当于差分输入电流为20-4=16mA,这个16mA在62.5R电阻上的压降,就是数字电压表的最大输入信号。这时候,把数字电压表的基准电压调整到与16*62.5=1000mV相等,显示就是1000个字。
图6 测量电路
简易数字电压表测量电路由A/D转换、数据处理及显示控制等组成,电路原理图如图8所示。
A/D转换有集成电路ADC0809完成。ADC0809具有8路模拟输入端口,地址线(第23-25脚)可决定对哪一路模拟输入作A/D转换。第22脚位地址锁存控制,当输入为高电平时,对地址信号进行锁存。第6脚位测试控制,当输入一个2μs 宽高电平脉冲时,就开始A/D转换。第7脚为A/D转换结束标志,当A/D转换结束时,第7脚输出高电平。第9脚为A/D转换数据输出允许控制,当OE脚为高电平时,A/D转换数据从端口输出。第10脚为ADC0809的时钟输入端,利用单片机第30脚嘚分频晶振频率,再通过14024二分频得到1MHz时钟。
单片机的P1、P3.0-P3.3端口作为4位LED数码管显示控制。P3.5端口用作单路显示/循环显示转换按钮。P3.6端口用作单路显示时选择显示的通道。P0端口用作A/D转换数据读入,P2端口用作ADC0809的A/D转换控制。
7
8
3、 系统程序的设计
3.1 初始化程序
系统上电时,初始化程序主要用来执行70H-77H内存单元清0和P2口置0等准备工作。
3.2 主程序
在刚上电时,系统默认为循环显示8个通道的电压值状态。当进行一次测量后,将显示每一通道的A/D转换值,每个通道的数据显示时间在1s左右。主程序在调用显示子程序与测量子程序之间循环。
主程序流程图如图7所示。
开 始 初始化 调用A/D转换测量子程序 调用显示子程序 结 束
图7 主程序流程图
3.3 显示子程序
显示子程序采用动态扫描法实现4位数码管的数值显示。测量所得的A/D转换数据放在70H-77H内存单元中,测量数据在显示时须经过转换成为十进制BCD码放在78H-7BH单元中,其中7BH存放通道标志数。寄存器R3用作8路循环控制,R0用作显示数据地址指针。
3.4 A/D转换测量子程序
A/D转换测量子程序用来控制对ADC0809的8路模拟输入电压的A/D转换,
并将对应的数值移入70H-77H内存单元。
9
A/D转换测量子程序流程图如图9所示
图9 A/D转换测量子程序流程图 4、 调试及性能分析 4.1 调试与测量 采用Wave或Keil C51编译器进行源程序编译及仿真调试,同时进行硬件电路板的设计制作,烧录好程序后进行软硬件联调,最后进行端口电压的对比测试。测试对比表如表1所列。表中标准电压值采用UT56数字万用表测得。 表1 简易数字电压表与“标准”数字电压表对比测试表 标准电压值/V
0.00 0.15 0.85 1.00 1.25 1.75 1. 2.32 2.65
简易电压表测得值/V
0.00 0.17 0.86 1.02 1.26 1.76 2.00 2.33 2.65
绝对误差/V
0.00 +0.02 +0.01 +0.02 +0.01 +0.01 +0.02 +0.01 +0.01
10
从表1中可以看出,简易数字电压表与“标准”数字电压表测得的绝对误差均在0.02V以内,这与采用8位A/D转换器所能到达到的理论误差精度相一致,在一般的应用场合完全可以满足要求。
4.2 性能分析
图10 数字电压表工作过程波形图
图10示出的是数字电压表工作过程波形图,启动脉冲位于斜坡脉冲起点,关门脉冲位于斜坡脉冲与被测电压Ux的交点,图10(d)表示在这个时间间隔内通过T门的标准时间脉冲个数。数字电压表的准确度首先取决于标准时间脉冲发生器所发脉冲频率的稳定程度,因为若单位时间发出的脉冲个数发生波动,必然影响读数。其次决定于斜坡上升的线性,若斜坡呈线性上升,则可保证电压上升值与时间间隔成正比。目前这两方面的技术都比较成熟,所以数字电压表准确度也比较高。
(1)由于单片机为8位处理器,当输入电压为5.00 V时,ADC0809输出数据值为255(FFH),因此单片机最高的数值分辨率为0.0196 V(5/255)。这就决定了该电压表
11
的最高分辨率(精度)只能达到0.0196 V,测试时电压一般以0.02 V的幅度变化。如果要获得更高的精度要求,则应采用12位、13位的A/D转换器。
(2)从表1中可以看出,简易数字电压表测得的值基本上均比标准电压值偏大0.01-0.01 V。这可以通过校正ADC0809的基准电压来解决。因为该电压表设计时直接用5 V的供电电源作为基准电压,所以电压有可能有偏差。另外,还可以用软件编程来校正测量值。
(3)ADC0809的直流输入阻抗为1 MΩ,能满足常用的电压测试需要。另外,经测试ADC0809可直接在2 MHz的时钟频率下工作,这样可省去二进制分频器14024集成块。
(4)当要测量大于5的电压时,可在输入口使用分压电阻,而程序中只要将计算程序的除数进行调整就可以了。但是量程越大,测量的精度会越低。
5、 结 语
基于单片机ATC52,A/D转换器ADC0809的数字电压表,它代表着数字仪表的基础。也标志着电子仪器领域的一场,也开创了现代电子测量技术的先河。数字电压表具有读数准确方便、精度高、误差小、灵敏度高和分辨率高、测量速度快等特点而倍受青睐。
6、 单片机汇编源程序清单
;简易数字电压表;
;测量电压最大为5V,显示最大值为5.00V
;70H—77H存放采样值,78H—7BH存放显示数据,依次为个位、十位、百位、通道标志
;P3.5作单路显示/循环显示转换用,P3.6作单路显示时选择通道按键用 ;* 主程序和中断程序入口 *
ORG 0000H
LJMP START
ORG 0003H
RETI
ORG 000BH RETI
ORG 0013H
12
RETI
ORG 001BH RETI ORG 0023H RETI
ORG 002BH
RETI
;* 初始化程序中的各变量 * CLEARMEMIO: CLR A MOV P2,A MOV R0,#70H MOV R2,#0DH LOOPMEM: MOV @R0,A INC R0
DJNZ R2,LOOPMEM MOV 20H,#00H MOV A,#0FFH MOV P0,A MOV P1,A MOV P3,A RET
;* 主 程 序 *
START: LCALL CLEARMEMIO ;初始化 MAIN: LCALL TEST ;测量一次 LCALL DISPLAY ;显示数据一次 AJMP MAIN NOP
;PC值出错处理
NOP
NOP
13
LJMP START
;* 显 示 控 制 程 序 *
DISPLAY: JB 00H,DISP11 ;
MOV R3,#08H ;8路信号循环显示控制 MOV R0,#70H ;显示数据初址70H~77H MOV 7BH,#00H ;显示通道路数初值
DISLOOP1: LCALL TUNBCD ;显示数据转为三位BCD码存入7AH、79H、78H MOV R2,#0FFH ;每路显示时间控制 4MS*255 DISLOOP2: LCALL DISP ;调四位显示程序 LCALL KEYWORK1 ; DJNZ R2,DISLOOP2 ;
INC R0 ;显示下一路 INC 7BH ;通道显示数加一 DJNZ R3,DISLOOP1 RET
DISP11: MOV A,7BH ;单路显示控制子程序 SUBB A,#01H ; MOV 7BH,A ; ADD A,#70H ; MOV R0,A ;
DISLOOP11: LCALL TUNBCD ;显示数据转为三位BCD码存入7AH、79H、78H(最大5.00v)
MOV R2,#0FFH ;每路显示时间控制 4MS*25 DISLOOP22: LCALL DISP ;调四位显示程序 LCALL KEYWORK2 ;按键检测 DJNZ R2,DISLOOP22
INC 7BH ;通道显示数加一 RET
;* 显示数据转为三位BCD码程序 *
14
;显示数据转为三位BCD码存入7AH、79H、78H(最大值5.00v); TUNBCD: MOV A,@R0 ;255/51=5.00V运算 MOV B,#51 ; DIV AB ;
MOV 7AH,A ;个位数放入7AH
MOV A,B ;余数大于19H,F0为1,乘法溢出,结果加5
CLR F0 SUBB A,#1AH MOV F0,C
MOV A,#10 ; MUL AB ; MOV B,#51 ; DIV AB
JB F0,LOOP2 ; ADD A,#5
LOOP2: MOV 79H,A ; MOV A,B CLR F0 SUBB A,#1AH MOV F0,C
MOV A,#10 ; MUL AB ; MOV B,#51 ; DIV AB
JB F0,LOOP3 ; ADD A,#5
LOOP3: MOV 78H,A ; RET
小数后第一位放入79H 小数后第二位放入78H 15
;* 显 示 子 程 序 * ;共阳显示子程序,显示内容在78H—7BH;
DISP: MOV R1,#78H ;共阳显示子程序,显示内容在78H—7BH MOV R5,#0FEH ;数据在P1输出,列扫描在P3.0-P3.3 PLAY: MOV P1,#0FFH MOV A,R5 ANL P3,A MOV A,@R1 MOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,A
JB P3.2,PLAY1 ;小数点处理
CLR P1.7 ;小数点显示(显示格式为XX.XX)PLAY1: LCALL DL1MS INC R1 MOV A,P3
JNB ACC.3,ENDOUT RL A MOV R5,A MOV P3,#0FFH AJMP PLAY ENDOUT: MOV P3,#0FFH MOV P1,#0FFH RET TAB: DB
0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;断码表 ;* 延时程序 *
DL10MS: MOV R6,#0D0H ;10MS延时子程序 DL1: MOV R7,#19H
16
DL2: DJNZ R7,DL2 DJNZ R6,DL1 RET
DL1MS: MOV R4,#0FFH ;(513+513)ms=1MS LOOP11: DJNZ R4,LOOP11 MOV R4,#0FFH LOOP22: DJNZ R4,LOOP22 RET
;* 电压测量(A/D)子程序 * ; 一次测量数据8个,依次放入70H-77H单元中; TEST: CLR A ;模数转换子程序 MOV P2,A
MOV R0,#70H ;转换值存放首址 MOV R7,#08H ;转换8次控制 LCALL TESTART ;启动测试
WAIT: JB P3.7,MOVD ;等A/D转换结束信号 AJMP WAIT
TESTART: SETB P2.3 ;测试启动 NOP NOP
CLR P2.3 SETB P2.4 NOP NOP
CLR P2.4 NOP NOP NOP NOP
17
RET
MOVD: SETB P2.5 ;取A/D转换数据 MOV A,P0 MOV @R0,A CLR P2.5 INC R0
MOV A,P2 ;通道地址加1 INC A MOV P2,A
CJNE A,#08H,TESTEND ;等8路A/D转换结束TESTEND: JC TESTCON
CLR A ;结束恢复端口 MOV P2,A MOV A,#0FFH MOV P0,A MOV P1,A MOV P3,A RET
TESTCON: LCALL TESTART LJMP WAIT
;* 按键检测子程序 * KEYWORK1: JNB P3.5,KEY1 KEYOUT: RET
KEY1: LCALL DISP ;延时消抖 JB P3.5,KEYOUT WAIT11: JNB P3.5,WAIT12 CPL 00H MOV R2,#01H MOV R3,#01H
18
RET
WAIT12: LCALL DISP ;键释放等待时显示用 AJMP WAIT11 KEYWORK2: JNB P3.5,KEY1 JNB P3.6,KEY2 RET
KEY2: LCALL DISP ;延时消抖用 JB P3.6,KEYOUT WAIT22: JNB P3.6,WAIT21 INC 7BH MOV A,7BH
CJNE A,#08H,KEYOUT11 KEYOUT11: JC KEYOUT1 MOV 7BH,#00H KEYOUT1: RET
WAIT21: LCALL DISP ;键释放等待时显示用 AJMP WAIT22 END
参考文献:
[1]电子科技大学 王祎磊;制作简易AT系列编程器[N];电子报;2004年 [2]安徽 芦 涛;数字万用表的电压表头故障检修[N];电子报;2004年
[3]一飞;TCL HiD背投彩电 数字会聚电路原理及维修(上)[N];电子报;2003年 [4]北京 施珍珠;利用数字电压表测量脉冲占空比的方法[N];电子报;2001年 [5].杨恢先,黄辉先.单片机原理及应用[M].北京:人民邮电出版社,2006 [6]胡跃荣,田建军;组合式钢水测温数字仪[J];冶金自动化;1980年03期 [7]李光锡;光电控制型恒流源[J];电测与仪表;1980年01期
[8]周栋;马刚;闫广;;PIC16F87X单片机的特点及应用[A];第十三届全国煤矿自动化学术年会、中国煤炭学会自动化专业委员会学术会议论文集[C];2003年
19
因篇幅问题不能全部显示,请点此查看更多更全内容