《简易数字电压表的设计.pdf》由会员分享,可在线阅读,更多相关《简易数字电压表的设计.pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、.-.一、简易数字电压表的设计一、简易数字电压表的设计l功能要求简易数字电压表可以测量05V 的 8 路输入电压值,并在四位 LED 数码管上轮流显示或单路选择显示。测量最小分辨率为0.019 V,测量误差约为土 0.02V。2方案论证按系统功能实现要求,决定控制系统采用AT89C52单片机,AD转换采用ADC0809。系统除能确保实现要求的功能外,还可以方便地进展 8 路其它 AD 转换量的测量、远程测量结果传送等扩展功能。数字电压表系统设计方案框图如图1-1。AT89C51上电复位ADC0809P0串行通信P2LED 显示器P1电源电路P3图1-1 数字电压表系统设计方案3系统硬件电路的设
2、计简易数字电压测量电路由 AD 转换、数据处理及显示控制等组成,电路原理图如图 1-2 所示。AD 转换由集成电路 0809 完成。0809 具有 8 路模拟输人端口,地址线(2325 脚)可决定对哪一路模拟输入作AD 转换,22 脚为地址锁存控制,当输入为高电平时,对地址信号进展锁存,6 脚为测试控制,当输入一个 2us 宽高电平脉冲时,就开场 AD转换,7 脚为 AD 转换完毕标志,当AD 转换完毕时,7 脚输出高电平,9 脚为 AD转换数据输出允许控制,当 OE 脚为高电平时,AD 转换数据从该端口输出,10 脚为0809 的时钟输入端,利用单片机30 脚的六分频晶振频率再通过14024
3、 二分频得到 1 MHz时钟。单片机的P1、P3.0P3.3 端口作为四位 LED 数码管显示控制。P3.5 端口用作单路显示循环显示转换按钮,P3.6 端口用作单路显示时选择通道。P0 端口作 AD 转换数据读入用,P2 端口用作 0809 的 AD 转换控制。4系统程序的设计1初始化程序系统上电时,初始化程序将70H77H 内存单元清 0,P2 口置 0。2主程序在刚上电时,系统默认为循环显示8 个通道的电压值状态。当进展一次测量后,将-.word 资料.-.显示通道abcdefgh百位abcdefgh十位abcdefgh个位abcdefgh510 x874244AT89C511 P1.0
4、2 P1.13 P1.24 P1.35 P1.46 P1.57 P1.68 P1.79 RST10 RXD11 TXD12 INT013 INT114 T015 T116 WR17 RD18 XTAL219 XTAL120 Vss Vcc 40P0.0 39P0.1 38P0.2 37P0.3 36P0.4 35P0.5 34P0.6 33P0.7 32EA 31ALE 30PSEN 29P2.7 28P2.6 27P2.5 26P2.4 25P2.3 24P2.2 23P2.1 22P2.0 21 5VADC080917 D014 D115 D28 D318 D419 D520 D621 D
5、7IN0 26IN1 27IN2 28IN3 1IN4 2IN5 3IN6 4IN7 5Vcc 11VREF+12GND 13VREF-161G 2G模拟输入(0-5V)8550 x44.7Kx4 5V 5V 5V1Kx2 5V通道选择10uF12MHz30Px29 OE6 START22 ALE23 CCLOCK 1024 BEOC 725 A单路/循环8.2K 5V1418714024图1-2 数字电压表电路原理图显示每一通道的 AD 转换值,每个通道的数据显示时间为1s 左右。主程序在调用显示子程序和测试子程序之间循环,主程序流程图见图1-3。3显示子程序显示子程序采用动态扫描法实现四位
6、数码管的数开始值显示。测量所得的 AD 转换数据放在 70H77H初始化内存单元中,测量数据在显示时需转换成为十进制BCD 码放在 78H7BH 单元中,其中 7BH 存放通道标志数。存放器 R3 用作 8 路循环控制,R0 用作显示调用A/D转换子程序数据地址指针。4模数转换测量子程序调用显示子程序模数转换测量子程序用来控制对 ADC0809 八路模拟输入电压的 AD 转换,并将对应的数值移入70H77H 内存单元。其程序流程见图1-4。图1-3 主程序流程5调试及性能分析1调试与测试采用 WaveE2000 编译器进展源程序编译及仿真调试,同时进展硬件电路板的设计制作,烧好程序后进展软硬件
7、联调,最后进展端口电压的比照测试,测试比照表见表 1-1。表中标准电压值采用 UT56 数字万用表测得。从表中可以看出,简易数字电压表与“标准数字电压表测得的绝对误差均在002V 以内,这与采用 8 位 AD 转换器所能到达的理论误差精度相一致,在一般的应用场合可完全满足要求。表 1-1简易数字电压表与“标准数字电压表比照测试表-.word 资料.-.标准值V简易电压表测得值V绝对误差V标准值V简易电压表测得值V绝对误差V0.000.000.003.003.0l0.150.173.453.470.850.863.553.561.001.024.004.011.251.264.504.521.7
8、51.764.604.621.982.004.704.722.322.334.8l4.822.652.664.904.92+0.02+0.01+0.02+0.01+0.01+0.02+0.01+0.01+0.01+0.02+0.01+0.01+0.02+0.02+0.02+0.01+0.022性能分析由于单片机为 8 位处理器,当输入电压为5.00 V 时,输出数据值为 255FFH,因此单片机最大的数值分辨率为 0.0196V 5255。这就决定了该电压表的最大分辨率 精度 只能到达 0.0196V。测试时电压数值的变化一般以0.02 的电压幅度变化,如要获得更高的精度要求,应采用12 位、
9、13 位的 AD 转换器。简易电压表测得的值根本上均比标准值偏大 0.010.02V。这可以通过校正ADC0809 的基准电压来解决,因为该电压表设计时直接用7805 的供电电源作为基准电压,电压可能有偏差。另外可以用软件编程来校正测量值。ADC0809 的直流输入阻抗为 1M,能满足一般的电压测试需要。另外,经测试ADC0809可直接在 2 MHz 的频率下工作,这样可省去分频器 14024。6控制源程序清单以下是简易数字电压表的单片机控制源程序。;*;*简易数字电压表*;*;测量电压最大值为 5V,显示最大值为 5.00V开始起动测试(TESTART)A/D 转换结束?P3.7=1?Y取数
10、据(P2.5=1)N0809 地址加1Y地址数小于8?N结束图1-4 A/D转换测量程序流程;70H77H 存放采样值,78H7BH 存放显示数据,依次为个位、十位、百位、通道标志位;P3.5 作单路显示循环显示转换按键用,P3.6 作单路显示时选择通道按键用。;*;*主程序和中断程序入口*;*ORGORG0000H0003HLJMPSTART-.word 资料.-.RETIORG000BHRETIORG0013HRETIORG001BHRETIORG0023HRETIORG002BHRETI;*;*初始化程序中的各变量*;*CLEARMEMIO:CLRAMOVP2,AMOVR0,#70HMO
11、VR2,#0DHLOOPMEM:MOVR0,AINCR0DJNZR2,LOOPMEMMOV20H,#00HMOVA,#0FFHMOVP0,AMOVP1,AMOVP3,ARET;*;*主程序*;*START:LCALLCLEARMEMIO;初始化MAIN:LCALLTEST;测量一次LCALLDISPLAY;显示数据一次AJMPMAINNOP;PC 值出错处理NOPNOPLJMPSTART;*-.word 资料.-.;*显示控制程序*;*DISPLAY:00H,DISP11;标志位为 1,那么转单路显示控制子程序MOVR3,#08HMOVR0,#70HMOV7BH,#00HMOVR2,#0FFH
12、DISPLCALLDJNZINCINCDJNZRETMOVA,7BHSUBBA,#70HMOVR0,A;显示数据转为三位 BCD 码存入 7AH、79H、78H;调四位显示程序;按键检测;通道显示数加 1MOVR2,#0FFHLCALLDJNZINCRET;每路显示时间控制在 4ms255,约 1sMOV7BH,A;单路显示控制子程序A,#01H;8 路信号循环显示控制子程序;显示数据初址 70H77H;显示通道路数初值;显示数据转为三位 BCD 码存入 7AH、79H、78H;调四位显示程序;按键检测;显示下一路;通道显示数加 1DISLOOP1:LCALLDISLOOP2:LCALLTUN
13、BCD;每路显示时间控制在 4ms255,约 1sKEYWORK1R2,DISLOOP2R07BHR3,DISLOOP1DISP11:ADDDISLOOP11:LCALLTUNBCDDISLOOP22:LCALLDISPKEYWORK27BHR2,DISLOOP22;*;*显示数据转换为三位 BCD 码子程序*;*;显示数据转为三位 BCD 码存入 7AH、79H、78H最大值为 5.00VTUNBCD:MOVA,R0MOVB,#51DIVAB;个位数放入 7AH;余数大于 19H,F0 为 1,乘法溢出,结果加 5MOV7AH,AMOVA,BCLRSUBBF0A,#1AH;255/51=5.
14、00V 运算MOVF0,C-.word 资料.-.MOVA,#10MULDIVADDMOVA,BCLRSUBBF0A,#1AHABABF0,LOOP2A,#5;小数后第 1 位放入 79HMOVB,#51LOOP2:MOV79H,AMOVF0,CMOVA,#10MULDIVADDRETABABF0,LOOP3A,#5;小数后第 2 位放入 78HMOVB,#51LOOP3:MOV78H,A;*;*显示子程序*;*;共阳显示子程序,显示内容在 78H7BHDISP:PLAY:MOVR1,#78HMOVR5,#0FEHMOVP1,#0FFHMOVA,R5ANLP3,AMOVA,R1MOVDPTR,
15、#TABMOVCA,A+DPTRP3.2,PLAY1P1.7DL1MSR1ACC.3,ENDOUTA;小数点处理;小数点显示显示格式为 xx.xxMOVP1,ACLRLCALLINCJNBRL;共阳显示子程序,显示内容在 78H、7BH;数据在 P1 输出,列扫描在 P3.0P3.3PLAY1:MOVA,P3-.word 资料.-.MOVR5,AMOVP3,#0FFHAJMPPLAYENDOUT:MOVP3,#0FFHMOVP1,#0FFHRETTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH;段码表;*;*延 时 程 序*;*D
16、L10MS:MOVR6,#0D0H;10ms 延时子程序DL1:MOVR7,#19HDL2:DJNZR7,DL2DJNZR6,DL1RET;DL1MS:MOVR4,#0FFH;513+513=1msLOOP11:DJNZR4,LOOP11MOVR4,#0FFHLOOP22:DJNZR4,LOOP22RET;*;*电压测量A/D子程序*;*;一次测量数据 8 个,依次放入 70H77H 单元中TEST:CLRA;数/模转换子程序MOVP2,AMOVR0,#70H;转换值存放首址MOVR7,#08H;转换 8 次控制LCALLTESTART;启动测试WAIT:P3.7,MOVD;等 A/D 转换完
17、毕信号AJMPWAIT;TESTART:SETBP2.3;测试启动NOPNOPCLRP2.3SETBP2.4NOP-.word 资料.-.NOPCLRP2.4NOPNOPNOPNOPRET;MOVD:SETBP2.5MOVA,P0MOVR0,ACLRP2.5INCR0MOVA,P2INCAMOVP2,ACJNEA,#08H,TESTENDTESTEND:JCTESTCONCLRAMOVP2,AMOVA,#0FFHMOVP0,AMOVP1,AMOVP3,ARET;TESTCON:LCALLTESTARTAJMPWAIT;*;*按键检测子程序;*KEYWORK1:JNBP3.5,KEY1KEYOU
18、T:RET;KEY1:LCALLDISPP3.5,KEYOUTWAIT11:JNBP3.5,WAIT12CPL00HMOVR2,#01H-.;取 A/D 转换数据;通道地址加 1;等 8 路 A/D 转换完毕;完毕恢复端口*;延时消抖用word 资料.-.MOVR3,#01HRET;WAIT12:LCALLDISPAJMPWAIT11;KEYWORK2:JNBP3.5,KEY1JNBP3.6,KEY2RET;KEY2:LCALLDISPP3.6,KEYOUTWAIT22:JNBP3.6,WAIT21INC7BHMOVA,7BHCJNEA,#08H,KEYOUT11KEYOUT11:JC KEYOUT1MOV7BH,#00HKEYOUT1:RET;WAIT21:LCALLDISPAJMPWAIT22;END-.;键释放等待时显示用;延时消抖用;键释放等待时显示用word 资料.