ADC0809电压检测数码管显示(毕业论文).doc

上传人:仙人指路1688 文档编号:4192170 上传时间:2023-04-09 格式:DOC 页数:38 大小:839KB
返回 下载 相关 举报
ADC0809电压检测数码管显示(毕业论文).doc_第1页
第1页 / 共38页
ADC0809电压检测数码管显示(毕业论文).doc_第2页
第2页 / 共38页
ADC0809电压检测数码管显示(毕业论文).doc_第3页
第3页 / 共38页
ADC0809电压检测数码管显示(毕业论文).doc_第4页
第4页 / 共38页
ADC0809电压检测数码管显示(毕业论文).doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《ADC0809电压检测数码管显示(毕业论文).doc》由会员分享,可在线阅读,更多相关《ADC0809电压检测数码管显示(毕业论文).doc(38页珍藏版)》请在三一办公上搜索。

1、编号: (单片机综合设计实训) 实训 (论文)说明书题 目: ADC0809电压检测 院 (系): 信息与通信学院 专 业: 电子信息工程 学生姓名: 学 号: 指导教师: 2013年 12月 30 日摘 要为了适应当今社会的需求,我校积极培养学生的动手能力和实践创新能力。通过实训使学生学到电子产品的工艺设计知识。并通过真刀真枪的电子产品制作,使学生了解电子产品制作过程、熟悉电子产品工艺,掌握制作电子产品的操作技能,为了进一步学习和应用奠定基础。它不仅能使学生巩固模电、数电以及单片机三大技术,更能把动手实践糅和在一起,真正实现培养高素质、高层次、多样化、创造性的人才培养目标。本次实训内容为数字

2、电压表,数字电压表是利将被测模拟量转换成数字量,并用数字方式显示测量结果的电子测量仪表。通常数字电压表都采用A/D转换集成电路来采集电压,它具有测量精度高,读数方便,在体积、重量、耗电、稳定性及可靠性等方面性能指标均明显优于指针式万用表。其中,A/D转换器将输入的模拟量转换成数字量,通过单片机控制按规定的时序将A/D转换器中各组模拟开关接通或断开,保证A/D转换芯片ADC0809并通过数码管显示电压值,本次实训任务设计一个数字电压表,能够测量025V之间的直流电压值。通过四位数码循环显示8路电压。关键字:数字电压表、数码管显示、AT89S52、ADC0809AbstractIn order t

3、o meet the needs of todays society , our school actively cultivate the abilities of students and practice innovation. Through the training process designed to enable students to learn the knowledge of electronic products. And production of electronic products through a shooting , so that students un

4、derstand the production process of electronic products , electronic products familiar process , master production skills of electronic products , in order to lay the foundation for further study and application . It not only enables students to consolidate analog circuit, digital circuit and three s

5、ingle-chip technology, and more able hands-on practice and blends together to truly cultivate high-quality , high-level, diverse , creative personnel training objectives .The training content for the digital voltmeter, digital voltmeter is favorable to convert the measured analog to digital and digi

6、tally display the measurement results of electronic measuring instruments. Typically digital voltmeter are used A / D converter IC to collect voltage, which has high accuracy , easy reading , in terms of size, weight , power consumption , stability and reliability performance indicators are signific

7、antly better than the multimeter . Which , analog A / D converter converts the input into a digital, single-chip control as required by the timing of each set of analog A / D converter switch is turned on or off , to ensure A / D conversion chip ADC0809 and through digital display voltage value , th

8、is training task to design a digital voltmeter that can measure DC voltage between 0-25V . Cycle through four digital display 8 voltage .Keywords: digital voltmeter , digital display , AT89S52, ADC0809目 录引言11设计内容及要求12系统电路的组成及工作原理12.1 系统的组成12.2工作原理12.3 程序分析52.4 程序流程图113单元模块设计113.1复位电路、时钟电路、下载口模块的设计11

9、3.2单片机电路的设计123.3数码管显示电压电路的设计133.4数码管显示通道电路的设计143.5 A/D转换电路的设计143.6电阻分压电路的设计153.7电源输入电路的设计164总体电路的设计175调试工艺175.1 元器件安装焊接175.2调试步骤及结果185.3自我评价与完善186 总结18谢 辞20参考文献21附 录22引言单片机以其价格低廉、功能强大、体积小、性能稳定等优点,深受广大电子设计爱好者喜爱。目前,各类产品中都能看到单片机的身影,如台式机主板的各类控制器,玩具,智能设备,以及各类数据采集系统和控制终端等。单片机是现代电子设计中使用最广泛的电子元件。而其中的51系列单片机

10、是最早兴起的一类。51系列单片机功能完备、指令系统丰富,发展的最为成熟。ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。1设计内容及要求本次实训设计的内容是ADC0809电压检测,分为基本要求和发挥要求两部分。基本要求:1) 实现8路直流电压检测;2)测量电压范围05V;3)显示指定电压通道和电压值4)用按键切换显示通道发挥要求:1) 测量电压范围为025V;2)循环显示8路电压2系统电路的组成及工作原理2.1 系统的组成该电路由以下几个部分组成:1)复位电路、

11、时钟电路、下载口;2)AT89S52组成的单片机电路;3)数码管显示电压值电路;4)数码管显示通道电路;5)ADC0809组成A/D转换器电路;6)电阻分压电路;7)电源输入;8)电压调节电路2.2工作原理(1)分析系统的逻辑功能,画出其逻辑图如下:图1 逻辑图(2)P3口作为AT89S52的一些特殊功能口,功能如下表所示:表1 P3口引脚特殊功能表(3)A/D转换器芯片ADC0809简介:图2 ADC0809引脚图(4)ADC0809的内部逻辑结构图如图所示:图3 ADC0809内部逻辑结构图 图中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济

12、的多路数据采集方法。地址锁存与译码电路完成对A、B、C 3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连,表2为通道选择表。 表2 通道选择表地 址选中通道ADDCADDBADDA000011110011001101010101IN0IN1IN2IN3IN4IN5IN6IN7(5) ADC0809芯片为28引脚为双列直插式封装,对ADC0809主要信号引脚的功能说明如下:IN7IN0:8路模拟通道信号输入,通过模拟开关实现8路模拟输入信号分时选通。ALE:地址锁存允许信号。对应ALE上跳沿,A、B、C地址状态送入地址锁存器

13、中。START:转换启动信号。START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,START应保持低电平。ADDA,ADDB,ADDC:通道端口选择线,A为低地址,C为高地址其地址状态与通道对应关系见表2。CLK:输入时钟,为A/D转换器提供转换的时钟信号,典型的工作频率为640KHZ。EOC:转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。D7D0:数据输出线。为三态缓冲输出形式,可以和单片机的数据线直接相连。D0为最高位,D7为最低位。OE输出允许信号。用于控制三

14、态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。Vref(+)和Vref(-):基准电压输入,用于决定输入模拟电压的范围。允许Vref(+)和Vref(-)是差动的或不共地的电压信号,多数情况下,Vref(+)接+5V,Vref(-)接GND,此时输入量程为05V。当转换精度要求不高或电源电压Vcc较稳定和准确时,Vref(+)可以接Vcc,否则应单独提供基准电源2.3 程序分析(1)#include#define uint unsigned int#define uchar unsigned char#define lint long int

15、sfr T2MOD = 0xc9;/52单片机定时计数器2特殊寄存器/*函数定义*/uchar shuzu=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; sbit st=P13;sbit EOC=P12;sbit OE=P11;sbit add0=P16;sbit add1=P15;sbit add2=P14;sbit key1=P20;sbit key2=P21;sbit key3=P22;sbit DIG5=P27;sbit DIG4=P26;sbit DIG3=P25;sbit DIG2=P24;sbit DIG1=P23;void

16、 xianshi();void delay(uint z );void get_data();void key_scan();lint quzhi,zzhi,zhi;uint channel=0,mode=0,b=0,k=0;/*函数定义*/*延时函数*/void delay(uint z) uint x,y;for(x=z;x0;x-)for(y=110;y0;y-); /*延时函数*/该部分程序表示ADC0809芯片的一些控制端口跟AT89S52单片机端口一些管脚的连接。CLOCK与P1.0相连由C52的T2产生定时脉冲输出;ST与P1.3相连;EOC与P1.2相连;OE与P1.1相连;此

17、外还定义了数码显示的管脚位定义,分别为P0接数码管段选,P2高五位接数码管位选,低三位接按键;还声明了用到的函数和变量。(2)/*主程序*/void main()T2MOD=0X02;T2CON=0X00;RCAP2H=0xff; /0XFF 0XFFRCAP2L=0xf1; /0XFA=500khz , 0xf1=200khzTR2=1;while(1)get_data();xianshi();key_scan();if(mode=1)b+;if(b=50)b=0;channel+;if(channel=8)channel=0;/*主程序*/该部分程序表示程序的初始化,并且开定时/计数器2使

18、其工作在脉冲输出方式,周期为200KHZ,初始化完成后开始循环执行显示子程序,按键子程序,取数值子程序。(3)/*ADC0809配置*/void get_data()switch(channel) case 0:add0=0;add1=0;add2=0;break;case 1:add0=1;add1=0;add2=0;break;case 2:add0=0;add1=1;add2=0;break;case 3:add0=1;add1=1;add2=0;break;case 4:add0=0;add1=0;add2=1;break;case 5:add0=1;add1=0;add2=1;bre

19、ak;case 6:add0=0;add1=1;add2=1;break;case 7:add0=1;add1=1;add2=1;break; OE=0;st=0;st=1;/上降沿初始化st=0;/下降沿触发,开始工作delay(1);while(EOC=0);/查询EOC引脚状态,EOC引脚由0变1,表示A/D转换过程结束OE=1;/允许读数,将OE引脚设置为1状态quzhi=P3;/读取P1口的数值if(mode=3)zhi=quzhi*196*5;elsezhi=quzhi*196;/精确度19.6mv 相乘得输出数值delay(5);OE=0;if(mode=3)zzhi=zhi/1

20、0%10000;elsezzhi=zhi%10000;/*ADC0809配置*/该部分程序实现通道选择并通过脉冲来采集信号,等待信号采集完毕后,把采集到的数字量转化为模拟量,并把结果存起来。根据当前的模式选择计算的方式。由于ADC0809为8位经度的集成芯片所以相应的值为(采集电压值)*(参考电压/255)。(4)/*按键扫描*/void key_scan()/通道和模式选择 if(key1=0) delay(5); if(key1=0) channel+; if(channel=8) channel=0; while(!key1); if(key2=0) delay(5); if(key2=

21、0) if(mode=0) mode=1; else mode=0; while(!key2); if(key3=0) delay(5); if(key3=0) k+ ; if(k=1)mode=3; if(k=2)k=0;mode=0; while(!key3); /*按键扫描*/该部分程序表示按键扫描,通过按键的不同来选择不同的工作模式和采集电压通道,按键功能分别为1键通道选择顺序为18,2键循环扫描8个通道电压值,3键选择采集的电压为5V或25V。(5)/*显示函数*/void xianshi()DIG1=1; DIG2=1;DIG3=1;DIG4=1;P0=shuzuchannel+1

22、;DIG5=0;delay(4);DIG2=1;DIG3=1;DIG4=1;DIG5=1;if(mode=3)P0=shuzuzhi/100000;elseP0=shuzuzhi/10000+0x80;DIG1=0;delay(4);DIG1=1;DIG3=1;DIG4=1;DIG5=1;if(mode=3)P0=shuzuzzhi/1000+0x80;elseP0=shuzuzzhi/1000;DIG2=0;delay(4);DIG1=1;DIG2=1;DIG4=1;DIG5=1;P0=shuzuzzhi%1000/100;DIG3=0;delay(4);DIG1=1;DIG2=1;DIG3

23、=1;DIG5=1;P0=shuzuzzhi%100/10;DIG4=0;delay(4);DIG4=1;/*显示函数*/该部分程序实现了显示当前采集电压的通道和采集电压数值的输出。工作原理为首先对关闭所有显示,然后先送数码段选,显示字段为采集到电压的值,对采集到的电压进行分位,分别把十位,个位,小数点后三位的字符取出,经P0口送段选,然后打开相应位的开关,循环扫描便得到需要显示的数值。2.4 程序流程图程序流程图如图4所示:编译完成后下载运行程序程序初始化N完成?Y执行采样程序启动AD转换读入电压值NA/D完成?Y处理数据,调用显示模块执行显示模块并显示结束图4 程序流程图3单元模块设计3.

24、1复位电路、时钟电路、下载口模块的设计电路设计如下图5所示,该模块中的复位电路起到了复位的作用,时钟电路为总电路提供12MHZ的频率输入。图5 复位、时钟电路3.2单片机电路的设计电路设计如下图6所示:图6单片机电路3.3数码管显示电压电路的设计电路如图7所示,通过驱动电路来使四位共阳数码管发光。通过四位共阳数码管,来显示输入的测量电压的大小,随着选择的通道不同,当循环到所接入的通道时,则在该四位共阳数码管中显示当前输入的电压值。图7 数码管显示电压电路3.4数码管显示通道电路的设计电路如图8所示,通过该数码管来显示八路通道的循环,从07循环显示。图8 数码管显示通道电路3.5 A/D转换电路

25、的设计A/D转换电路如图9所示:本电路预留74LS74做时钟电路从单片机的30管脚去12MHZ六分频,再由74LS74进行四分频得到500KHZ频率供ADC0809的CLK。图9 A/D转换电路3.6电阻分压电路的设计电阻分压电路如图10所示,电阻为线性器件可以通过4个10K和10K的电位器约1:5的比例对25V输入电压进行分压,使得ADC0809的电压不超过5V,避免ADC0809芯片被烧坏。通过此比例使得测量电压最大可达到25V。图10电阻分压电路3.7电源输入电路的设计电源输入电路如图11所示,通过外接电源,使该电路运行。图11电源输入电路4总体电路的设计通过前面的单元电路的设计,将他们

26、合理的组合连接起来,就可以得到总体设计电路图,其图如图12所示:图12 总体原理图5调试工艺5.1 元器件安装焊接根据原理图和PCB图,首先明确元器件的位置和跳线的连接,要与所打的孔一一对应,尤其要注意大孔和小孔所安装元器件的不同,还有的就是要注意有些元器件比如电容等长短管脚所代表正负不同(长管脚接正,短管脚接负),还有芯片安装的正负之分,因此在安装时要特别注意。接着进行元器件的安装了,首先要做的就是把跳线连接好,于是要准备好长短适宜的铜线,接着对应好其相应的孔将其平整的安装进去,此时可以先对其进行焊接,待完成之后,便开始进行对其它元器件的安装,安装时有一个技巧,就是由低到高一级一级的进行安装

27、、焊接,这样做的目的是避免焊接时元器件会因为松动而脱落从而造成不美观甚至元器件没有被焊接进去。同时元器件可以一边安装一边焊接,这样可以避免漏焊以及当原件多的时候不好焊接的问题。还有的就是注意焊接时候经常会出现的问题:虚焊、拉尖、漏焊、短路等等,因此首先必须给烙铁头预热到足够的温度,还有焊接时要注意快、准、稳,同时烙铁头的清洁也要重视,还有就是当原件排布比较多比较挤的时候要特别注意,焊料的量要适度,避免一些会造成短路的地方粘连在一起。5.2调试步骤及结果在指定电源接口接入电源,注意正极和负极之分。然后再外接一个电源,正极接八路通道接口的任意一个接口,负极接在电源接口的地上即可。通过四位共阳数码管

28、显示当前电源的电压值,通过一位共阳数码管显示通道,可以任意接任何一个通道,让该通道显示当前电压的值。调试结果如下:烧录好程序后,接通电源,开机显示通道1的电压值,当按下按键1,一位数码管显示2通道,并显示当前通道电压值,再次按下按键1,切换至下一通道;当按下按键2,单片机开始循环扫描8个通道的电压值并显示当前的通道号和电压值;当按下按键3时,单片机切换到25V电压采集模式,需把25V电压接到相应的分压网络中,然后开始测量电压值。在进行调试过程中,曾出现过这样一个一个问题:四位共阴数码管显示不稳定,有时候有显示有时候没有显示,后经调试,发现进入显示程序时未对数码管位选进行初始化。5.3自我评价与

29、完善本次实训所做的电路板,实现了以下的功能:8路直流电压检测;测量电压范围025V;显示指定电压通道和电压值;循环显示8路电压。尽管如此,还是存在了一定的问题,数码管显示的输出电压值与实际输入的电压值之间存在着一定的误差,不能精确地输出或者较接近实际输入电压地输出。经过仔细地分析,得到了问题存在的原因,即程序本身存在着误差以及在使用电阻分压时也存在着一定的误差。对于该误差,可以在程序中加入精度调解程序来改进,也可以在电路中加入精调电位器,调到合适的电阻比值,这样才能减小误差的值。6 总结通过一段时间的努力,我的ADC0809电压检测实训设计总算完成了,从认识原理、绘制仿真图、编写单片机程序到原

30、理图、PCB制作、装配元器件、焊接到调试成功,都很不容易,我从中收获颇多,积累了很多做PCB的经验。 从中学到产品开发与调试的过程,经过网络中精挑细选,老师的指导,选择了适合自己的一些相关资料,并且经过自己的收集总结,终于整理出有用的信息以及得到了相应的程序。一个产品的开发真的不是一件容易的事,首先就是要绘制仿真图,接着编写程序、原理图、PCB图等等,这些都是让人头痛的事。其次就该到装配元器件了,装配元器件是一项对动手能力要求很高的工作,它也考验着我的耐心和毅力.当看到小小的电路板上密密麻麻的布满元器件的时候,同时为自己感到自豪。最后一项是调试,调试是考验我们的努力是否白费和实验的最后一步,所

31、以我们每个同学都在这一步上很紧张.像很多其他同学一样我在这里也出现了不少问题.经过老师的辅导和在同学们的相互研究下把问题逐一解决。通过这次课程的设计,巩固了模拟电路的知识,加深了对数字电路的理解,对课本里模糊的概念和市场上的一些简单的电子产品有了更清晰的认识.这次实训课程设计虽然短暂,可让我们在许多方面得到提高:1提高了我们的逻辑思维能力,使我们在逻辑电路的分析与设计上了很大的进步。加深了我们对组合电路的认识,和一些常见元器件的了解。2相互探讨和研究是获得知识的很好途径.我们在进行中经常出现一些问题,仅仅靠个人的力量是很难完成的,我们在交流彼此看法时就发现很多新颖的想法和实用的解决办法。3最重

32、要的是把理论运用于实践,理论与实践相结合.真理总是要经过实践的考验,我们只有在实践中认识到真理才可以真的为社会服务,真正的提高自己的理论水平和动手能力。 这次实训,考验了我很多,让我认识到自己的不足,但我也收获了很多,得到了不少的积累。同时在设计的过程中,我也认识到自己对以前所学过的知识理解得不够深刻,掌握得不够牢固,没有在日常生活中将理论与实际相结合起来,以后要多加努力,多多动手练习,这样才能更好地掌握所学的知识。谢 辞实训就这样匆匆结束了,过程中遇到问题或焦急或想放弃,但是还是坚持了下来,甚至通宵达旦去完成,过程虽艰辛,最后还是收获颇多,如果说这是人生中的一笔财富一点也不为过。在此最需要感

33、谢的就是老师们!是你们,与我们一同走过实训的日子;是你们,在实训过程中给予了我悉心的指导;是你们,以严谨的工作作风、渊博的知识和务实的工作态度,让我受益匪浅并深深的感动。当我们遇到困难时,你们给我们指点迷津,当我们迷惑时,你们循循善诱,不厌其烦,你们辛苦付出,却从未有过怨言,是你们让我懂得了什么叫做孜孜不倦,什么叫做诲人不倦,什么叫做为人师。在此,谨向老师们的辛勤培养和教育,致以最真诚的感谢!学校开展实训这样的课题,使我受益匪浅,从中使我在很短的时间里学到了很多很书本上没有的知识,而且让我对以前学过的知识有了更深刻的印象,同时也发现了自己知识的一些缺陷,因而我还要感谢学校,感谢学校安排实训这个

34、课程,感谢学校为了让每个同学在实训中能够学有所成学有所得而做出的努力。所有言语都无法表达心中的感恩,唯有给你们送出最诚挚的祝福和我最努力的表现。成为你们的骄傲,将是我给你们最好的报答!参考文献1 童诗白主编.模拟电子技术基础(第三版).高教出版社,20042 阎石主编.数字电子技术基础(第四版/第五版).北京:高等教育出版社,2006.53 金唯香,谢玉梅主编.电子测试技术.湖南大学出版社,20084 杨晓慧,许红梅主编.电子EDA实践教程.国防工业出版社,20055 张毅刚主编.单片机原理及应用.北京:高等教育出版社,2003附 录PCB图如图13所示:图13 PCB图仿真图如图14所示:图

35、14 仿真图单片机程序如下:#include#define uint unsigned int#define uchar unsigned char#define lint long intsfr T2MOD = 0xc9;/52单片机定时计数器2特殊寄存器/*函数定义*/uchar shuzu=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; sbit st=P13;sbit EOC=P12;sbit OE=P11;sbit add0=P16;sbit add1=P15;sbit add2=P14;sbit key1=P20;sbit ke

36、y2=P21;sbit key3=P22;sbit DIG5=P27;sbit DIG4=P26;sbit DIG3=P25;sbit DIG2=P24;sbit DIG1=P23;void xianshi();void delay(uint z );void get_data();void key_scan();lint quzhi,zzhi,zhi;uint channel=0,mode=0,b=0,k=0;/*函数定义*/*延时函数*/void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/*延时函数*/*主程序*/void

37、main()T2MOD=0X02;T2CON=0X00;RCAP2H=0xff; /0XFF 0XFF RCAP2L=0xf1; /0XFA=500khz, 0xf1=200khzTR2=1;while(1)get_data();xianshi();key_scan();if(mode=1)b+;if(b=50)b=0;channel+;if(channel=8)channel=0; /*主程序*/*ADC0809配置*/void get_data()switch(channel) case 0:add0=0;add1=0;add2=0;break;case 1:add0=1;add1=0;a

38、dd2=0;break;case 2:add0=0;add1=1;add2=0;break;case 3:add0=1;add1=1;add2=0;break;case 4:add0=0;add1=0;add2=1;break;case 5:add0=1;add1=0;add2=1;break;case 6:add0=0;add1=1;add2=1;break;case 7:add0=1;add1=1;add2=1;break; OE=0;st=0;st=1;/上降沿初始化st=0;/下降沿触发,开始工作delay(1);while(EOC=0);/查询EOC引脚状态,EOC引脚由0变1,表示

39、A/D转换过程结束OE=1;/允许读数,将OE引脚设置为1状态quzhi=P3;/读取P1口的数值if(mode=3)zhi=quzhi*182*5;elsezhi=quzhi*182;/精确度19.6mv 相乘得输出数值delay(5);OE=0;if(mode=3)zzhi=zhi/10%10000;elsezzhi=zhi%10000;/*ADC0809配置*/*按键扫描*/void key_scan()/通道和模式选择if(key1=0)delay(5);if(key1=0)channel+;if(channel=8)channel=0; while(!key1); if(key2=0) delay(5); if(key2=0) if(mode=0)mode=1;elsemode=0; while(!key2); if(key3=0) delay(5); if(key3=0) k+ ;if(k=1)mode=3;if(k=2)k=0;mode=0; while(!key3); /*按键扫描*/*显示函数*/void xi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号