《基于单片机控制的数字电压表.doc》由会员分享,可在线阅读,更多相关《基于单片机控制的数字电压表.doc(13页珍藏版)》请在三一办公上搜索。
1、基于单片机控制的数字电压表摘 要:在现代检测技术中,常需要高精度数字电压表进行现场检测,将检测到的数据送入微计算机系统,完场计算、存储、控制和显示等功能。本文中数字电压表的控制系统采用AT89c51单片机,A/D转换器采用ADC0809为主要硬件,实现数字电压表的硬件电路与软件设计。该系统的数字电压表电路简单,所用元器件较少,成本低,调节工作可实现自动化。还可方便地进行8路A/D转换量的测量,远程测量结果传送等功能。数字电压表可以测量05V的8路输入电压值,并在四路LED数码管上轮流显示或单路选择显示。关键字:单片机;数字电压表;A/D转换;模拟信号1. 引言数字电压表是诸多数字化仪表的核心与
2、基础,电压表的数字化是将连续的模拟量如直流电压转化成不连续的离散的数字形式并加以显示,这是有区别于传统的以指针加刻度盘进行读数的方法,避免了读数的视差和视觉疲劳。目前数字万用表的内部核心器件是A/D转换器,转换器的精度很大程度上影响了数字万用表的精确度,本文的A/D转换器采用ADC0809对模拟信号进行转换,控制核心AT89c51再转换的结果进行运算和处理,最后驱动输出装置显示数字电压信号。2. 总体设计方案2.1 设计思路本设计采用ADC0809对模拟信号进行转换,经控制核心89C51再转换的结果进行运算和处理,最后由驱动输入装置74245显示数字电压信号。ADC0809通过IN0IN7采集
3、模拟电压信号送给单片机,单片机将采集来的信号通过一定的处理然后通过并口扩展的共阳极LED数码管显示采集的电压值。2.1.1 方案确立经过各个方面的考虑,总共得出两个比较可行的方案,如下。(1)方案一:用电位器控制输入电压,经ADC0809模数转换,然后送入AT89C51处理,最后经74LS164驱动显示数字电压信号,本电路一个特点就是另外接一报警电路,显示电路属串行显示,优点是电路原理比较简单,但所用元器件较为冗多(6个74LS164,LM386、ADC0809、AT89C51各一个,极性电容、发光二极管等若干)。大致电路设计原理图见附录一。(2)方案二:主要用4个芯片AT89C51,ADC0
4、809,74245,14024来控制整个电路,优点是所用元器件个数较少,原理图简单明了,但也存在一定的缺点,就是实际制作电路板时所需跳线较多,电路设计原理图见附录二。本设计经多方位考虑,采用方案二,所用电子元器件见表1。 表1 电子元器件清单材料类型材料型号数量ICAT89C511ADC0809174LS2451140241电阻51074.7K68.2K3三极管85504共阳数码管XD110504非极性电容30F210F1晶振12MHz12.2 总体设计框图本设计采用方案二,根据ADC0809、AT89C51的特点以及他们的接口顺序,绘出总体设计方框图如下图1所示。3. 设计原理分析3.1 数
5、字电压表硬件电路设计硬件电路设计主要包括:89C51单片机系统,A/D转换电路,显示电路。测量最大电压位5V,显示最大值为5.00V。图2为数字电压表硬件电路原理图。3.1.1 89C51单片机系统和显示电路由于单片机体积小、重量轻、价格便宜,所以本系统采用89C51内部有4KB的EEPROM,128字节的RAM,所以一般都要根据系统所需存储容量的大小来扩展ROM,所以一般都要根据系统所需存储容量大小来扩展ROM和RAM。本电路/EA接高电平,没扩展片外ROM和RAM。89C51的P1、P3.0P3.3端口作为四位LED数码管控制。P3.5端口用作单路显示转换按钮,P3.6端口用作单路显示时选
6、择通道。P0端口用作0809的A/D转换数据读入用,P2端口用作0809的A/D转换控制。8路模拟输入A/D转换89C51单片机通讯模块LED显示 图1 总体设计方框图图2 数字电压表硬件电路原理图3.1.2 A/D转换电路 A/D转换由集成电路0809完成。0809具有8路模拟信号输入端口,地址线(2325脚)可决定对哪一路模拟信号进行A/D转换。22脚为地址锁存控制。6脚为测试控制,当输入一个2s宽高电平脉冲时,就开始A/D转换。7管脚为A/D转换结束标志,当A/D转换数据结束时,7管脚输出高电平。9管脚为A/D转换数据输出允许控制端,当OE脚为高电平时,A/D转换数据从该端口输出。10脚
7、为0809的时钟输入端,利用单片机30引脚的六分频晶振频率再通过14024二分频得到1MHz时钟。3.1.3 ADC0809的结构和工作原理ADC0809是一种8位逐次逼近型A/D转换器,带8个模拟量输入通道,芯片内有通道地址译码锁存器,有输出三态数据锁存器,启动信号为脉冲启动方式,每个通道的转换大约为100s,可以和单片机直接接口。ADC0809的引脚图和内部逻辑结构如图3所示。由图3可知,ADC0809是由一个八路模拟开关、一个地址锁存与译码器、一个八位A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道IN0IN7,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁
8、存器用于锁存A/D转换完的数字量,当OE端为高电平时才可以从三态输出锁存器取出转换完的数据。IN0IN7:8条模拟量输入通道。ADC0809对输入模拟量要求:信号单极性,电压范围是05V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。 地址输入和控制线:4条。ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0IN7上的一路模拟量输入。通道选择表如下表2所示。数字量输出及控制线
9、:11条。ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE1,输出转换得到的数据;OE0,输出数据线呈高阻状态。D7D0为数字量输出线。CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,VREF(),VREF()为参考电压输入。3.1.4ADC0809应用说明 (1)ADC0809内部带有输出锁存器,可以
10、与AT89C51单片机直接相连。(2)初始化时,使ST和OE信号全为低电平。(3)送要转换的哪一通道的地址到A,B,C端口上。(4)在ST端给出一个至少有100ns宽的正脉冲信号。(5)是否转换完毕,我们根据EOC信号来判断。(6)当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。表2 通道选择表地址编码被选中的通道ABC000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7如果中断允许控制位为1,则表示第二次中断,再判断T0运行的时间;如果运行的时间13.5ms或1ms,则认为是误码,退出;如果在1ms和13.5ms之间,再判断是
11、否小于2ms,2ms可判为收到的数据为“0”,转到数据“0”处理;如果2ms,再判断是否11.25ms,11.25ms的可判为接收到的数据为“1”,转数据“1”处理;如果11.25ms,则收到的为简码。数据“0”和“1”用C位储存,数据“0”时C=0,数据“1”时C=1。用移位指令将数据进行移位保存。连续接收32位数据后进行数据有效性判断,可再判断用户码是否和自己需要的相同。如果数据有效,则将低8位用户码、高8位用户码、按键码进行BCD码分离并存于显示缓冲中作显示用,数据无效则退出外中断0。中断退出时重设T0初值为0,T0中断中将引导标志位置0,为下次接收红外线信号做准备。3.1.5 ADC0
12、809的接口方法图4是ADC0809和ATC89c51单片机的连线图,此图是最简单的连接方法,本设计就基本采用此种接法。由图4可以看出,ADC0809的D0D7直接与单片机的总线P0相连。时钟CLK由单片机的ALE取得,对于晶振为12MHz的单片机ALE输出为2MHz的方波,而本设计又在此基础上加以变化,又另接14024二分频器,使其输出1MHz的方波,前面提到ADC0809的时钟频率一般为500KHz,最大能超过1280KHz,故1MHz的信号可以使ADC0809正常工作。3.2 数字电压表系统的软件设计3.2.1 初始化程序系统上电后,初始化程序将70H77H内存单元清0,P2口置0。系统
13、默认为循环显示8个通道的电压值,当进行一次测量后,将显示每一通道的A/D转换值,每次通道显示时间为1s。70H77H内存单元存放采样值,78H7BH内存放显示数据,依次为个位、十位、百位、通道标志位。3.2.2 A/D转换子程序A/D转换子程序用来控制对0809八路模拟输入电压的A/D转换,并将对应的数值存入70H77H内存单元。 图3 ADC0809引脚图和内部逻辑结构图3.2.3 显示子程序显示子程序采用动态扫描实现四位数码管的数值显示。测量数据在显示时需转换成BCD码放在78H7BH内存单元中,其中7BH存放通道标志位。R3作为8路循环控制,R0用作显示数据指针。3.2.4 程序流程图主
14、程序流程图和A/D转换测量程序流程图分别如图5(a)、(b)所示。图4 ADC0809和89C51的连线图开始开始启动测试初始化A/D转换结束?P3.7=1?调用A/D转换子程序取数据(P2.5=1)调用显示子程序(a )主程序0809地址加1地址数小于8?返回 (b ) A/D转换测试程序 图5 数字电压表程序流程图4 结束语根据以上设计进行测试,该数字电表可以测量05V电压值,89C51为8位处理器,当ADC0809输入电压值为5.00V时,输出数据为255(FFH),因此最大分辨率为0.0196V(5/255),满足设计要求最大分辨率0.02V。如需获得更大的分辨率,可采用12位、13位
15、的A/D转换器,数字电压显示可能有偏差。可以通过校正0809的基准电压来解决,或者用软件编程来校正测量值。本系统用89C51构成数字电压表控制系统,具有精度高、速度快、性能稳定和电路简单且工作可靠等特点,具有很好的实用价值。参考文献 1李朝青.单片机原理及接口技术M.第三版.北京:北京航空航天大学出版社,2005.259262 2余永权,汪明慧,黄英.单片机在控制系统中的应用M.电子工业出版社,2003.10 3丁元杰.单片微机原理及应用M.北京:机械工业出版社,1994 4邱关源.电路M.第五版.北京:高等教育出版社,2006 5康华光.电子技术基础M.第五版.北京:高等教育出版社,2006
16、6谢自美.电子线路设计实验测试M.第三版.武汉:华中科技大学出版社,2006.08附录一待添加的隐藏文字内容2 图6 数字电压表硬件电路原理图附录二 图7 方案一电路设计原理图附录三数字电压表汇编源程序清单:ORG 0000HLJMP STARTORG 0003HRETIORG 000BHRETIORG 0013HRETIORG 001BHRETIORG 0023HRETICLEAREMEMIO:CLR A MOV P2,A MOV R0,#70H MOV R2,#0CHLOOPMEM:MOV R0,A INC R0 DJNZ R2,LOOPMEM MOV A,#0FFH MOV P0,A M
17、OV P1,A MOV P3,ARETSTART:LCALL CLEAREMEMIOMAIN:LCALL DISPLAY LCALL TEST AJMP MAIN NOP NOP NOP LJMP STARTDISPLAY:MOV R3,#08H MOV R0,#70H MOV 7BH,#00HDISLOOP1:MOV A,R0 MOV B,#100 DIV AB MOV 7AH,A MOV A,#10 XCH A,B DIV AB MOV 79H,A MOV 78H,B MOV R2,#0FFHDISLOOP2:LCALL DISP DJNE R2,DISLOOP2 INC R0 INC 7
18、BH DJNZ R3,DISLOOP1 RETDISP:MOV R1,#78H MOV R5,#0FEHPLAY:MOV P1,#0FFH MOV A,R5 ANL P3,A MOV A,R1 MOV DPTR,#TAB MOVC A,A+DPTR MOV P1,A LCALL DL1MS INC R1 MOV A,P3 JNB ACC.3,ENDOUT RL A MOV R5,A MOV P3,#0FFH AJMP PLAYENDOUT:MOV P3,#0FFH MOV P1,#0FFHRETTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90
19、H,0FFHDL1MS:MOV R6,#14HDL1:MOV R7,#19HDL2:DJNZ R7,DL2 DJNZ R6,DL1RETTEST:CLR A MOV P2,A MOV R0,#70H MOV R7,#08H LCALL TESTARTWAIT:JB P3.7,MOVD AJMP WAITTESTART:SETB P2.3 NOP NOP CLR P2.3 SETB P2.4 NOP NOP CLR P2.4 NOP NOP NOP NOP RETMOVD:SETB P2.5 MOV A,P0 MOV R0,A CLR P2.5 INC R0 MOV A,P2 INC A MOV P2,A CLR C CJNE A,#08H,TESTCON JC TESTCON CLR A MOV P2,A MOV A,#0FFH MOV P0,A MOV P1,A MOV P3,A RETTESTCON:LCALL TESTART LJMP WAITEND
链接地址:https://www.31ppt.com/p-4148402.html