毕业设计-姓名:高嘉专业:机电一体化班级:机电0751班设计课题:基于单片机数字电压表设计指导教师:雷正红电子信息工程系印制二○一一年九月毕业设计题目:基于单片机的数字电压表的设计毕业设计目的:通过此次设计使学生掌握用单片机设计各种电子系统的方法,熟悉各种实用模拟数字电路的设计方法,学会各种芯片的原理及其使用方法毕业设计任务:1.设计数字电压表的硬件电路图2.绘制程序流程及其程序3.进行功能调试毕业设计主要技术数据:1.准确测量0-5V直流电压2.通过数码观显示电压值3.最小分辨率0.02V毕业设计工作量要求:1、电路原理图绘制美观,印刷版图美观大方,布局合理。2、论文字数不少于8000字。3、参考文献5篇。毕业设计进度计划:第一周确定设计方案第二周绘制硬件原理图第三周单元电路设计第四.五周软件设计第六周功能调试第七周答辩毕业设计应完成的技术资料:1硬件原理图2程序清单参考文献:教研室主任意见:在测量仪器中,电压表是必须的,而且电压表的好坏直接影响到测量精度。具有一个精度高、转换速度快、性能稳定的电压表才能符合测量的要求。而且数字电压表是采用数字化测量技术,把连续的模拟电压量转换成不连续、离散的数字化形式并加以显示的仪器。为此本项目介绍了一种基于AT89S52单片机的数字电压表的设计,目的是在使用尽量少的元器件的情况下,用单片机AT89S52和ADC0809高精度A/D转换芯片设计一个4位数码管显示的数字电压表,并能够测量0-5V之间的直流电压值,其测量最小分辨率为0.02V。本设计主要分为两部分:硬件电路及软件程序。而硬件电路又大体可分为A/D转换电路、LED显示电路,各部分电路的设计及原理将会在硬件电路设计部分详细介绍;程序的设计使用C语言编程,详细的设计算法将会在程序设计部分详细介绍。目录1.关于单片机AT89S52与ADC0809芯片.............................................................................11.1关于AT89S52..........................................................................................................................11.2关于ADC0809..........................................................................................................................22硬件电路...................................................................................................................................32.1程序原理图............................................................................................................................32.2焊接顺序:............................................................................................................................42.3A/D转换电路..........................................................................................................................42.4LED显示电路........................................................................................................................53软件程序的设计.......................................................................................................................63.1主程序流程图........................................................................................................................63.2A/D转换模块:......................................................................................................................83.3数码管显示模块..................................................................................................................104实验结果..................................................................................................................................1111.关于单片机AT89S52与ADC0809芯片1.1关于AT89S52At89s52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。图1-1AT89S52线路引脚图21.2关于ADC0809A/D转换器是模拟量输入通道中的一个环节,单片机通过A/D转换器把输入模拟量变成数字量再处理。ADC0809是采样分辨率为8位的、以逐次逼近原理进行模—数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。图1-2ADC0809引脚图引脚功能如下:ADC0809芯片有28条引脚,采用双列直插式封装,如图13.23所示。下面说明各引脚功能。IN0~IN7:8路模拟量输入端。2-1~2-8:8位数字量输出端。ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路ALE:地址锁存允许信号,输入,高电平有效。START:A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。3EOC:A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。REF(+)、REF(-):基准电压。Vcc:电源,单一+5V。GND:地。2硬件电路2.1程序原理图图2-1关于AT89S52的数字电压表原理图原理图说明:原理图主要由AT89S52芯片,ADC0809芯片,LED数码管组成。AT89S52芯片的RST与复位电路相连,XTAL1与XTAL2连接着晶振电路。P0口与ADC0809直接相连接受来自ADC0809传输而来的数据,P2口作为4位动态数码显示管的位显示控制,P1口则是动态数码显示管的段显示控制并连接着74LS07作为驱动,P3则是提供给ADC0809芯片的CLK信号并控制其开始。相对的ADC0809芯片的IN0接了滑动电阻器以为实验产生不等的电压。ADDA~C接地,并确保基准电压。42.2焊接顺序:a)把“单片机系统”区域中的P1.0-P1.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。b)把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。c)把“单片机系统”区域中的P3.0与“模数转换模块”区域中的ST端子用导线相连接。d把“单片机系统”区域中的P3.1与“模数转换模块”区域中的OE端子用导线相连接。e)把“单片机系统”区域中的P3.2与“模数转换模块”区域中的EOC端子用导线相连接。f)把“单片机系统”区域中的P3.3与“模数转换模块”区域中的CLK端子用导线相连接。g)把“模数转换模块”区域中的A2A1A0端子用导线连接到“电源模块”区域中的GND端子上。h)把“模数转换模块”区域中的IN0端子用导线连接到“三路可调电压模块”区域中的VR1端子上。i)把“单片机系统”区域中的P0.0-P0.7用8芯排线连接到“模数转换模块”区域中的D0D1D2D3D4D5D6D7端2.3A/D转换电路A/D转换器是模拟量输入通道中的一个环节,单片机通过A/D转换器把输入模拟量变成数字量再处理。具体电路图如下:5图2-2实现A/D转换电路图ADC0809实现A/D转换的原理如下:其工作原理如下:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。2.4LED显示电路设计中采用的是4段LED数码管来显示电压值。LED具有耗电低、亮度高、视角大、线路简单、耐震及寿命长等优点,它由4个发光二极管组成,其中3个按‘8’字型排列,另一个发光二极管为圆点形状,位于右下角,常用于显示小数点。把4个发光二极管连在一起,公共端接高电平,叫共阳极接法,相反,公共端接低电平的叫共阴极接法,我们采用共阴极接法。当发光二极管导通时,相应的一段笔画或点就发亮,从而形成不同的发光字符。其8段分别命名为dpgfedcba。例如,要显示“0”,则dpgfedcba分别为:00111111B;若要显示多个数字,只要让若干个数码管的位码循环为高电平就可以了。6图2-3LED数码管显示电路图根据设计要求,显示电路需要至少4位LED数码管来显示电压值,我们再多加一位用来显示电压单位“V”,则有7位LED循环显示。利用单片机的I/O口驱动LED数码管的亮灭,设计中由P0口驱动LED的段码显示,即显示字符,由P2口选择LED位码,即选择点亮哪位LED来显示。3软件程序的设计3.1主程序流程图7图3-1主程序流程图程序初始化:#includeAT89S52.Hunsignedcharcodedispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xd