您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于51单片机制作的数字电压表
基于51单片机数字电压表的设计基于51单片机数字电压表的设计摘要:本文介绍了基于STC89C52单片机为核心的,以AD0809数模转换芯片作为采样,以四位八段数码管作为显示的具有测量功能的具有一定精度的数字电压表。在实现基础功能的情况下,另外还可以扩展串行口通信,时钟,等其他一系列功能,使系统达到了良好的设计效果和要求。本课题主要解决A/D转换,数据处理及显示控制等三个模块。关键词:STC89C52;数字电压表;模数转换;数字信号Abstract:ThispaperintroducesSTC89C52SCMasthecorebasedonAD0809analog-to-digitalconversionchip,assampledtofoursevensegmentdigitaltubeasdisplaywithcertainwithmeasuringfunctionofdigitalvoltmeteraccuracy.Thebasicfunctioninrealizingcircumstance,alsocanexpandserialportcommunication,clock,andotherseriesoffunction,makethesystemtoachieveagooddesigneffectandrequirements.ThissubjectmainlytosolveAD,dataprocessinganddisplaycontrolthreemodules.Keywords:Digitalvoltmeter;Frequency-field;Digitalsignal本设计在分析研究和总结了单片机技术的发展历史及趋势的基础上,以使用可靠,经济,精度高等设计原则为目标,设计出基于单片机的数字测量电压表。单片机有着微处理所具备的功能,它可单独地完成现代工业控制所要求的智能化控制功能,这是单片机最大的特征。单片机控制系统能够取代以前利用复杂电子线路或数字电路构成的控制系统,可用软件控制来实现,并能够实现智能化。由于单片机具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此,现在单片机控制范畴无所不在,例如通信产品,家用电器,智能化仪器仪表,过程控制和专用控制装置等等,单片机的应用领域越来越广泛。1系统构成该电压表的测量电路主要由三个模块组成:A/D转换模块、数据处理模块及显示控制模块。A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量再传送到数据处理模块。数据处理则由芯片STC89C51来完成,其负责把ADC0809传送来的数字量,经一定的数据处理,产生相应的显示码送到显示模块进行显示;另外它还控制着ADC0809芯片的工作。显示模块主要由7段数码管显示测量到的电压值系统构成框图2系统硬件设计2.1电源电路原理由于本系统的主控芯片是单片机,所以应提供五伏的恒流源作为单片机的基准电压。主要原理是用变压器将220V交流电压进行变压,然后经过电桥整流,将交流电变为直流电源,经过稳压管稳压,得到稳定的5V电源供单片机使用。电桥由整流二极管1N4007所搭建的电桥将交流变为直流,为了保证电源更加的平稳,减少波动分别在稳压管两端加470μF滤波电容,和两个0.1μF的104瓷片电容。由三极稳压管7805稳压,保证有稳定的五伏电源,为了显示通电状况,有一红色发光二级管作为显示电路显示,外接限流电阻1kΩ。原理图如图所示:组成电桥电源模块总原理图2.2单片机最小系统电路1、复位电路:复位电路为高电平复位通常在复位引脚RST上接一个电容到VCC,在连接一个电阻到GND,由此形有足够的高电平时间进行复位,随后返回到低电平进入正常的工作状态,这个电阻和电容的典型值是8.2k和10uF。复位电路原理图2、振荡电路:STC89C52使用11.0592MHz的晶体振荡器作为振荡源,由于单片机内部带有振荡电路,所以外部只要连接一个晶振和两个电容即可,电容容量一般在15pF至50pF之间。51单片机引脚图2.3A/D转换器与单片机接口电路A/D转换器主要采用ADC0809,由于ADC0809在进行A/D转换时需要有CLK信号,而此时的ADC0809的CLK是接在STC89C52单片机的P3.3端口上,也就是要求从P3.3输出CLK信号供ADC0809使用。因此产生CLK信号的方法就得用软件来产生了,单片机的P0.0~P0.7与A/D转换器D0~D7相连,产生相应的数字量经过其输出通道D0~D7传送给单片机进行处理。P3.0与A/D转换器ST相连,控制A/D转换器的启动端,P3.1与A/D转换器OE相连,控制A/D转换器的输出允许端,P3.2与A/D转换器EOC相连,控制转换结束信号。2.4显示电路显示电路主要由四位一体七段LED数码管组成,用于显示测量到的电压值。它是一个共阳极的数码管,每一位数码管的a,b,c,d,e,f,g和dp端都各自连接在一起,用于接收单片机的P1口产生的显示段码。1,2,3,4引脚端为其位选端,用于接收单片机的P2口产生的位选码。数码管内部原理图数码管引脚图2.5总电路原理图:3单片机内部程序源C语言源程序#includeAT89C52.Hunsignedcharcodedispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};unsignedchardispbuf[8]={10,10,10,10,10,0,0,0};unsignedchardispcount;unsignedchargetdata;unsignedinttemp;longinti;\\代替原来的unsignedchari;sbitST=P3^0;sbitOE=P3^1;sbitEOC=P3^2;sbitCLK=P3^3;voidmain(void){ST=0;OE=0;ET0=1;ET1=1;EA=1;TMOD=0x12;TH0=216;TL0=216;TH1=(65536-5000)/256;TL1=(65536-5000)%256;TR1=1;TR0=1;ST=1;ST=0;while(1){if(EOC==1){OE=1;getdata=P0;OE=0;i=getdata*196;dispbuf[5]=i/10000;i=i%10000;dispbuf[6]=i/1000;i=i%1000;dispbuf[7]=i/100;/*原来的:temp=getdata*235;temp=temp/128;i=5;dispbuf[0]=10;dispbuf[1]=10;dispbuf[2]=10;dispbuf[3]=10;dispbuf[4]=10;dispbuf[5]=0;dispbuf[6]=0;dispbuf[7]=0;while(temp/10){dispbuf[i]=temp%10;temp=temp/10;i++;}dispbuf[i]=temp;*/ST=1;ST=0;}}}voidt0(void)interrupt1using0//定时器0中断服务{CLK=~CLK;}voidt1(void)interrupt3using0//定时器1中断服务{TH1=(65536-6000)/256;TL1=(65536-6000)%256;P1=dispcode[dispbuf[dispcount]];P2=dispbitcode[dispcount];if(dispcount==5){P1=P1|0x80;}dispcount++;if(dispcount==8){dispcount=0;}}4测试结果与误差分析4.1电源模块电源模块通电后测量,显示电压值为4.98V,基本属于稳定的五伏直流电源,产生误差的原因可能是焊接问题,也可能是廉价的硬件不够精准,但基本达到预期目的。4.2最小系统模块经过对单片机内部程序的编写,最小系统模块可以控制流水灯的闪烁,证明单片机没有问题,最小系统性能完好,复位电路正常工作。4.3数码管测试将万用表调到测试档,逐个点亮数码管,数码管显示没有问题,数码管正常工作。4.4整体测试在A/D转换器上加3V电压,数码管没有显示,经过多项测试,数码管均没有显示。整体测试失败。4.5针对问题进行讨论与分析后经过分析,可能是由于系统电流过低,无法使数码管正常点亮。于是在数码管上加上8050三极管进行放大处理,从而驱动数码管显示。连接完毕后,仍无法解决问题。于是进行软件仿真来测试电路问题。5proteus仿真测试仿真后效果图:经过仿真测试,证明原理图没有问题,单片机内部程序无问题,所以可能是导线有断裂,或者接触不良所产生的。6结语本文通过单片机和A/D转换器经过数码管显示,制作了数字电压表,虽然实验作品失败了,没有通过测试,但是经过仿真证明,数字电压表是可以实现的,以后还要进行深一步的了解和研究,同时要提高焊接技术。
本文标题:基于51单片机制作的数字电压表
链接地址:https://www.777doc.com/doc-5047431 .html