ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:428.47KB ,
资源ID:3709205      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-3709205.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机数字电压表设计详解Word文档格式.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于单片机数字电压表设计详解Word文档格式.docx

1、1.3 设计方案主要设计如图1.1:图1.1 设计方案1.3.1主控芯片选用单片机AT89C51和A/D转换芯片ADC0808实现电压的转换和控制,用四位数码管显示出最后的转换电压结果。1.3.2显示部分选用一个四联的共阴极数码管。1.4电路设计原理模拟电压经过档位切换到不同的分压电路筛减后,经隔离干扰送到A/D转换器进行A/D转换。然后送到单片机中进行数据处理。处理后的数据送到LED中显示。同时通过串行通讯与上位通信。硬件电路及软件程序。而硬件电路又大体可分为A/D转换电路、LED显示电路,程序的设计使用C语言编程,利用Keil和PROTEUS 软件对其编译和仿真。一般I/O接口芯片的驱动能

2、力是很有限的,在LED显示器接口电路中,输出口所能提供的驱动电流一般是不够的尤其是设计中需要用到多位LED,此时就需要增加LED驱动电路。在本设计中采用RESPACK上拉电阻来增加驱动能力。图1.2 原理电路本实验采用AT89C51单片机芯片配合ADC0808模/数转换芯片构成一个简易的数字电压表,原理电路如图1.2所示。该电路通过ADC0808芯片采样输入口IN0输入的05 V的模拟量电压,经过模/数转换后,产生相应的数字量经过其输出通道D0D7传送给AT89C51芯片的P1口。AT89C51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码,并通过其P0口传送给数码管。同时它

3、还通过其四位I/O口P2.0、P2.1、P2.2、P2.3产生位选信号,控制数码管的亮灭。P3.0控制ADC0808的启动端(START)和地址锁存端(ALE);P3.1控制ADC0808的输出允许端(OE);P3.2控制ADC0808的转换结束信号(EOC)。2 程序设计2.1 程序设计总方案 根据模块的划分原则,将该程序划分初始化模块,A/D转换子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,如图2.1所示。图2.1 数字式直流电压表主程序框图2.2 系统子程序设计2.2.1 初始化程序所谓初始化,是对将要用到的MCS_51系列单片机内部部件或扩展芯片进行初始工作状态设定,初

4、始化子程序的主要工作是设置定时器的工作模式,初值预置,开中断和打开定时器等9。2.2.2 A/D转换子程序A/D转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图2.2所示。开始图2.2 A/D转换流程图2.2.3 显示子程序显示子程序采用动态扫描实现四位数码管的数值显示,在采用动态扫描显示方式时,要使得LED显示的比较均匀,又有足够的亮度,需要设置适当的扫描频率,当扫描频率在70HZ左右时,能够产生比较好的显示效果,一般可以采用间隔10ms对LED进行动态扫描一次,每一位LED的显示时间为1ms。在本设计中,为了简化硬件设计,主要采用软件定时

5、的方式,即用定时器0溢出中断功能实现11s定时,通过软件延时程序来实现5ms的延时。3 硬件电路设计3.1数字芯片A/D转换技术电路原理图如图3.1所示,三个地址位ADDA,ADDB,ADDC均接地,因而所需测量的外部电压可由ADC0808的IN0端口输入。图3.1 A/D转换原理图在A/D转换开始之前,逐次逼近寄存器的SAR的内容为0,在A/D转换过程中,SAR存放“试探”数字量,在转换完毕后,它的内容即为A/D转换的结果数字量。3.1.1 ADC0808模数转换芯片简介ADC0808模数转换芯片如图3.2 图3.2 ADC0808模数转换芯片ADC0808是采样分辨率为8位的、以逐次逼近原

6、理进行模/数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。ADC0808是ADC0809的简化版本,功能基本相同。一般在硬件仿真时采用ADC0808进行A/D转换,实际使用时采用ADC0809进行A/D转换。3.1.2引脚功能(外部特性)ADC0808芯片有28条引脚,采用双列直插式封装,如右图所示。各引脚功能如下:15和2628(IN0IN7):8路模拟量输入端。8、14、15和1721:8位数字量输出端。22(ALE):地址锁存允许信号,输入,高电平有效。6(START): AD转换启动脉冲输入端,输入一个正脉冲(至

7、少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。7(EOC): AD转换结束信号,输出,当AD转换结束时,此端输出一个高电平(转换期间一直为低电平)。9(OE):数据输出允许信号,输入,高电平有效。当AD转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。10(CLK):时钟脉冲输入端。要求时钟频率不高于640KHZ。12(VREF(+)和16(VREF(-):参考电压输入端 11(Vcc):主电源输入端。13(GND):地。2325(ADDA、ADDB、ADDC):3位地址输入线,用于选通8路模拟输入中的一路。3.2 单片机的数据处理技术A/D转换完毕

8、后,单片机的P1.6口接收到一高电平,立马通过P3将OE置1,ADC0808的三态输出锁存器被打开,转换完的数字信号经过与D0D7相连的P0口进入AT89C51。AT89C51根据公式将数字信号转换为模拟量,然后利用程序获取模拟量的每一位,分别通过P2口输出到LED上。与此同时,AT89C51会通过P2.0P2.3口选择用哪一段LED显示所传出的数据。例如,当P2.0P2.3=1110,则LED接收到的数据会在第四段LED上显示。另外,AT89C51一旦获得了数据后便会将ST置0,即模数转换器停止转换,知道LED获得新的数据并显示出来,ST才会重新置1。由于AT89C51转换速率很快(微妙量级

9、),所以不会影响其接收新的数据。3.2.1 AT89C51单片机简介AT89C51单片机如图3.3图3.3 AT89C51单片机AT89C51是51系列单片机的一个型号,它是ATMEL公司生产的。AT89C52是一个低电压、高性能CMOS 8为单片机。将通用的微处理器和Flash存储器结合在一起,可反复擦写的Flash存储器可有效地降低开发成本。AT89C51有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。3.2.2主要功能特性:低功耗空闲和掉电模式,软件设置睡眠和唤醒功能。兼容MCS51指令系统,8K可反复擦写(1000次)Flash ROM。3个16位可编程定

10、时/计数器中断,时钟频率0-24MHz。32个双向I/O口,256B内部RAM。2个串行中断,可编程UART串行通道。2个外部中断源,共6个中断源。2个读写中断口线,3级加密位。3.3单片机控制的数码管显示技术3.3.1 LED基本结构LED是发光二极管显示器的缩写。LED由于结构简单、价格便宜、与单片机接口方便等优点而得到广泛应用。LED显示器是由若干个发光二极管组成显示字段的显示器件。在单片机中使用最多的是七段数码显示器。LED七段数码显示器由8个发光二极管组成显示字段,其中7个长条形的发光二极管排列成“日”字形,另一个圆点形的发光二极管在显示器的右下角作为显示小数点用,其通过不同的组合可

11、用来显示各种数字。LED引脚排列如下图3.4所示:图3.4 LED引脚排列3.3.2 LED显示器的选择在应用系统中,设计要求不同,使用的LED显示器的位数也不同,因此就生产了位数,尺寸,型号不同的LED显示器供选择,数码管有两种:一种共阴极、另一种为共阳极,本次课程设计用的是共阴极。在本设计中,选择4位一体的数码型LED显示器。本系统中前一位显示电压的整数位,即个位,后两位显示电压的小数位。如图3.5所示,是一个共阴极接法的4位LED数码显示管,其中a,b,c,d,e,f,g为4位LED各段的公共输出端,1、2、3、4分别是每一位的位数选端,dp是小数点引出端,4位一体LED数码显示管的内部

12、结构是由4个单独的LED组成,每个LED的段输出引脚在内部都并联后,引出到器件的外部。图3.5 共阴极4位一体数码显示管 3.3.3 LED译码方式译码方式是指由显示字符转换得到对应的字段码的方式,对于LED数码管显示器,通常的译码方式有硬件译码和软件译码方式两种。硬件译码是指利用专门的硬件电路来实现显示字符码的转换。软件译码就是编写软件译码程序,通过译码程序来得到要显示的字符的字段码,译码程序通常为查表程序。本设计采用的是共阴极LED,其对应的字符和字段码如下表3.6所示。表3.6 共阴极字段码表 显示字符共阴极字段码3FH106H25BH34FH466H56DH67DH707H87FH96

13、FH4 硬件连接4.1 模拟输入电路模拟输入电路如图4.1所示图4.1模拟输入电路通过可变电阻一端接电源+5V,一端接地GND,在并联一个标准电压表,通过改变电阻的阻值,从而改变所测电压值,实现电压的模拟信号输入。4.2 ADC0808芯片与单片机接口电路ADC0808芯片与单片机接口电路如图4.2图4.2ADC0808芯片与单片机接口电路ADC0808的输出接到P1口,OUT1对应的是最高位,START与ALE可以接在一起。在这里,START接P3.0,OE接P3.1,EOC接P3.2,ClOCK接P3.4。4.3 显示电路显示电路如图4.3图4.3显示电路通过P0口控制四位共阴极数码管段选

14、,通过P2口的低四位控制位选。值得注意的是P0需要接上拉电阻,否则P0会处于高阻态。4.4 总电路设计原理:将模拟量通过IN0输入,经过ADC0808芯片转换,得到数字量输出到单片机P0口,经过单片机处理后,送到四位共阴极数码管上显示。5 仿真5.1软件调试 软件调试的主要任务是排查错误,错误主要包括逻辑和功能错误,这些错误有些是显性的,而有些是隐形的,可以通过仿真开发系统发现逐步改正。Proteus软件可以对基于微控制器的设计连同所有的周围电子器件一起仿真,用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。Proteus支持的微处理芯片包括805

15、1系列、AVR系列、PIC系列、HC11系列及Z80等等。Proteus可以完成单片机系统原理图电路绘制、PCB设计,更为显著点的特点是可以与u Visions3 IDE工具软件结合进行编程仿真调试。本系统的调试主要以软件为主,其中,系统电路图的绘制和仿真我采用的是Proteus软件,而程序方面,采用的是汇编语言,用Keil软件将程序写入单片机。5.2显示结果及误差分析仿真结果如下:当输入电压在0-5V时,输入电压为2.60,显示结果为2.658,如图5.1所示,误差为+0.058。图5.1输入电压2.60显示结果当输入电压大于5V时,发光二极管会闪烁,LED灯则总显示5.097,如图5.2(

16、)()。(a)图5.2输入电压大于5V显示结果误差分析由于使用ADC0808本身存在5/255的误差,所以使得数码管显示的电压值和输入电压显示在标准电压表上的电压值存在误差。结 论经过一段时间的努力,毕业论文-基于51单片机的数字电压表的设计基本完成。但设计中的不足之处仍然存在。这次设计是我第一次设计电路,并用Proteus实现了仿真。在这过程中,我对电路设计,单片机的使用等都有了新的认识。通过这次设计学会了Proteus和Keil软件的使用方法,掌握了从系统的需要、方案的设计、功能模块的划分、原理图的设计和电路图的仿真的设计流程,积累了不少经验。基于单片机的数字电压表使用性强、结构简单、成本

17、低、外接元件少。测量电压准确,精度高。系统功能、指标达到了课题的预期要求、系统在硬件设计上充分考虑了可扩展性,经过一定的改造,可以增加功能。本文设计主要实现了数字电压表测量一路电压的功能,详细说明了从原理图的设计、电路图的仿真再到软件的调试。通过本次设计,我对单片机这门课有了进一步的了解。无论是在硬件连接仿真方面还是在软件编程方面。本次设计采用了AT89C51单片机芯片,与以往的单片机相比增加了许多新的功能,使其功能更为完善,应用领域也更为广泛。设计中还用到了模/数转换芯片ADC0808,以前在学单片机课程时只是对其理论知识有了初步的理解。通过这次设计,对它的工作原理有了更深的理解。在调试过程

18、中遇到很多问题,硬件上的理论知识学得不够扎实,对电路的仿真方面也不够熟练。总之这次电路的设计和仿真,基本上达到了设计的功能要求。在以后的实践中,我将继续努力学习电路设计方面的理论知识,并理论联系实际,争取在电路设计方面能有所提升。致谢经过两周时间的不懈努力,本次课程设计已经接近尾声,由于是初次尝试设计电路,知识及经验的匮乏,难免遇到很多困难,如果没有导师的督促指导以及同学们的支持,很难顺利的完成此次课程设计。从开始选题到论文的顺利完成,都离不开老师、同学、朋友给以的帮助,在这里请接受我的谢意!首先,在本次毕业设计过程中,从构思、资料收集到最后定稿的各个环节给予细心指引与教导,使我对课程的多方面

19、的知识有了深刻的认识,使我得以最终完成课程设计,在此表示衷心感谢。其次,感谢一起做课程设计的组员,还有帮助我的同学们,感谢你们给我的鼓励,感谢你们在我遇到困难时所给的帮助,正是有了你们的帮助和鼓励,此次课程设计才得以顺利的完成。最后,本次设计得以顺利完成,也要感谢导师组的老师,他们在本文写作阶段给出了许多宝贵意见。导师们的高深精湛的造诣与严谨求实的治学精神将永远激励着我。参考文献1于殿泓、王新年.单片机原理与程序设计实验教程.西安电子科技大学出版社,2007年5月2谢维成、杨加国.单片机原理与应用及C51程序设计实例.电子工业出版社,2006年3月3魏立峰.单片机原理及应用技术.北京大学出版社

20、,2005年4宋凤娟,孙军,李国忠.基于89C51单片机的数字电压表设计J .工业控制计算机,2007年5张靖武、周灵彬,单片机系统的Proteus设计与仿真M,北京:电子工业出版社,2007年附录1设计程序如下:#includereg51.h#define uchar unsigned char#define uint unsigned intsbit START=P30;sbit OE=P31;sbit EOC=P32;sbit P07=P07;sbit CLK=P34;sbit yy=P25;uchar data led4;uint data tvdata;uchar code tv=0

21、xfe,0xfd,0xfb,0xf7;uchar code a=0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f;void delay(void) /延时程序 uint i; for(i=0;i5000) yy=yy; led0=tvdata%10; led1=tvdata/10%10; led2=tvdata/100%10; led3=tvdata/1000;for(k=0;k4;k+) P2=tvk; i=ledk; P0=ai; if(k=3) P07 =1; delay(); void main(void) ET0=1; EA=1; TMOD=0x02; TH0=216; TL0=216; TR0=1; while(1)START=1; START=0; /启动转换 while(EOC=0); OE=1; tvdata=P1;tvdata*=20-0.01; OE=0;ledxianshi();void t0(void) interrupt 1 using 0CLK=CLK;附录2总电路图

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2