《数字电压表的设计毕业设计.doc》由会员分享,可在线阅读,更多相关《数字电压表的设计毕业设计.doc(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 目 录1引言11.1设计背景11.2设计目的11.3设计要求及功能12总体设计32.1各模块方案选择32.2总体设计框图33系统硬件电路设计53.1单片机芯片AT89S5253.1.1主要特性53.1.2引脚说明63.1.3振荡器特性83.1.4芯片擦除83.2A/D转换模块设计83.2.1 ADC0809简介83.2.2引脚说明93.2.3 ADC0809A/D工作原理103.3显示电路设计113.4时钟电路设计123.5复位电路设计133.6通道选择电路设计134软件设计154.1主程序设计154.2各子程序设计164.2.1A/D转换子程序164.2.2显示子程序164.2.3按键子程
2、序175结束语19参考文献20附录A 总电路图21附录B PCB图22附录C 程序23致谢26摘 要本设计中的数字电压表主要利用AT89S52单片机进行电压的测量控制,采用ADC0809转换器对输入的电压值进行转换,通过单片机扫描按键来控ADC0809的通道选择,分时测量8路模拟电压值,并处理转换后的数字电压值,然后送给LED数码管动态显示,并同时显示通道值。实现了对05V的8路输入电压值的高精度测量和数字化显示。关键词:数字电压表;AT89S52;ADC0809;数码管AbstractThis design digital voltmeter for voltage measurement
3、and control uses AT89S52 microcontroller, using ADC0809 converter to convert the value of the input voltage, controlled by the microcontroller scan button ADC0809 channel selection, measures 8-channel analog voltage value of time-sharing, and processes the digital voltage value after the conversion,
4、 and then sents to the LED digital tube dynamic display, and at the same time to displays the channel value. Input voltage values of 05V, 8-channel high-precision measurement and digitization.Key words: digital voltmeter; AT89S52; ADC0809; digital tubeiv学院本科毕业设计1引言1.1设计背景数字电压表(Digital Voltmeter)简称DV
5、M,它是在50年代初,60年代末发起来的电压测量仪表。它采用的是数字化测量技术,把连续的模拟量,也就是连续的电压值转变为不连续的数字量,加以数字处理,然后再通过显示器件显示。这种电子测量的仪表之所以出现,一方面是由于电子计算机的发展,带动了脉冲数字电路技术的进步,为数字化仪表的出现提供了条件;另一方面,电子计算机的应用逐渐推广到系统的自动控制信实验研究的领域,提出了将各种被观察量或被控制量转换成数码的要求,即为了实时控制及数据处理的需要。所以,数字化测量仪表的产生和发展与电子计算机的发展是密切相关的;同时,革新电子测量中的繁琐和陈旧方式也催促了它的飞速发展;如今,它又成为向智能化仪表发展的必要
6、桥梁。如今,数字电压表已绝大部分取代了传统的模拟指针式电压表。因为传统的模拟指针式电压表功能单一,精度低,读数的时候也非常不方便,很容易出错。而采用单片机的数字电压表由于测量精度高,速度快,读数时也非常的方便,抗干扰能力强,可扩展性强等优点已被广泛的应用于电子及电工的测量,工业自动化化仪表,自动测试系统等智能化测量领域,显示出强大的生命力。1.2设计目的通过制作简易数字电压表,加深对所学专业知识的认识,提高分析、解决工程实际问题的能力,提高对单片机的应用能力,提高收集文献、资料的能力,从而达到综合运用所学的专业知识进行电子产品的设计、制作与调试的能力。1.3设计要求及功能 设计的基本内容是使基
7、于单片机所设计出的数字电压表可以测量0-5V的8路输入电压值,并在四位LED数码管上轮流显示或单路显示。测量最小分辨率为0.019V,测量误差约为+0.02V。系统除能确保实现要求的功能外,还可以方便地进行8路其他A/D转换量的测量功能。所要解决的主要问题是如何更有效地设计出符合设计要求的简易数字电压表,特别是要注意其测量电压的误差,难点是数码管需轮流显示或单路显示所测出的电压值,并且能使软硬件有效的结合起来。基本功能:1)电压测量范围0-5V。2)测量误差约为+0.02V。3)系统具备选择显示功能。4)能用数码管显示电压值。5)系统具备复位功能。2总体设计2.1各模块方案选择A/D转换模块:
8、方案一:采用ADC0809转换芯片,其中A/D转换器用于实现模拟量向数字量的转换,单电源供电。它是具有8路模拟量输入、8位数字量输出功能的A/D转换器,转换时间为100us,模拟输入电压范围为0V到+5V,不需要零点和满刻度校准,功耗低,约15mW。方案二:A/D转换器采用ICL7107型三位半显示的芯片,输入信号,流经取样电路取样后送到ICL7107型三位半A/D转换器,只需要很少的简单外围元件,就可组成数字电流表模块,直接驱动三位半LED显示器显示,最后输入电流在显示部分显示。但是ICL7107做的LED数字表最大的缺点就是数字乱跳不稳定。由于模拟转换电路的种类很多,通过对转换速度,精度和
9、价格方面考虑,所以选择方案一,用ADC0809为本次设计的转换芯片。接口模块:方案一:使用数字电路实现,采用译码芯片CD4543作为接口芯片,这种方案能实现功能,但稳定性不高,结构复杂。方案二:采用AT89S52单片机作为系统的控制单元,通过A/D转换将被测值转换为数字量送入单片机,再由单片机来送显。此方案各功能易于实现,成本低、功耗低,显示稳定。所以通过比较,选择方案二,用AT89S52单片机。2.2总体设计框图总体设计框图如图1所示,通过模数转换器ADC0809采集模拟数据并转换为数字信号,在51单片机的控制,将采集的数据显示在LED数码管上。开关用作是选择测量电压的路数,控制单路显示 1
10、。AT89S52 P0 P2 P1 P3 上电复位通道选择LED显示器ADC0809图1 总体设计框图3系统硬件电路设计3.1单片机芯片AT89S52单片机采用MCS-51系列单片机。由ATMEL公司生产的AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。在单芯片上,拥有灵巧的8 位CPU 和在线系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。AT89S52具有以下标准功能: 8k字节Flash,256字节RAM
11、,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。而且,它还具有一个看门狗(WDT)定时/计数器,如果程序没有正常工作,就会强制整个系统复位,还可以在程序陷入死循环的时候,让单片机复位而不用整个系统断电,从而保护你的硬件电路2。3.1.1主要特性AT89S52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,
12、2个16位可编程定时计数器,2个全双工串行通信口,片上Flash允许程序存储器在系统可编程,亦适于常规编程器。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本3。其功能如下所示:1)与MCS-51单片机产品兼容。2)8K字节在系统可编程Flash存储器。3)1000次擦写周期。4)全静态操作:0HZ33HZ。5)三级加密程序存储器。6)32个可编程I/O口线。7)三个16位定时器/计数器。8)八个中断源。9)全双工UART串行通道。10)低功耗空闲和掉电模式。3.1.2引脚说明图2 AT89S52引脚图VCC:供电电压。GND:接地。P0口
13、:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。当P1口的引脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口引脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口
14、缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其引脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的引脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口引脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低
15、电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89S52的一些特殊功能口,如表1所示。表1 AT89S52特殊功能口表端口引脚复用功能P30RXD(串行输入口)P31TXD(串行输出口)P32/INT0(外部中断0)P33/INT1(外部中断1)P34T0(记时器0外部输入)P35T1(记时器1外部输入)P36/WR(外部数据存储器写选通)P37/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字
16、节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次有效。但在访问外部数据存储器时,这两次有效的信号将不出现。/VPP:外部访问允许。为了使单片机能够有效的传送外
17、部数据存储器从0000H到FFFH单元的指令,必须同GND相连接。需要主要的是,如果加密位1被编程,复位时EA端会自动内部锁存。当执行内部编程指令时,应该接到VCC端。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3.1.3振荡器特性AT89S52单片机有一个用于构成内部振荡器的反相放大器,XTAL1和XTAL2分别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器。从外部时钟远驱动器件的话,XTAL2可以不接,而从XTAL1接入。由于外部时钟信号经过二分频触发后作为外部时钟电路输入的,所以对外部时钟信号的占空比没有其它要求,
18、最长低电平持续时间和最少高电平持续时间等还是要符合要求的4。3.1.4芯片擦除整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89S52设有稳态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,能保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止5。 3.2A/D转换模块设计3.2.1 ADC0809简介ADC0809是美国国家半导体
19、公司生产的8位ADC,它是采用逐次逼近的方法来完成A/D转换的。ADC0809由单一+5V电源供电,片内有带锁存功能的8路模拟多路开关,可对8路05V的输入模拟电压信号分时进行转换,完成一次转换约需100us;输出具有TTL三台锁存缓冲器,可以直接接到单片机数据总线上。通过适当的外接电路,ADC0809可对05V的双级性模拟信号进行转换6。其主要特性有以下几点:1)8路8位A/D转换器,即分辨率8位。 2)具有转换起停控制端。 3)转换时间为100s。4)单5V电源供电。5)模拟输入电压范围05V,不需零点和满刻度校准。6)工作温度范围为-4085摄氏度。7)低功耗,约15mW。3.2.2引脚
20、说明图3 ADC0809引脚图各引脚功能说明如下:VCC:电源电压,+5V。GND:地线输入端。D0D7:8位数字量输出引脚。A/D转换结果由这8根线传送给单片机。D7为最高有效位,D0为最低有效位。IN0IN7:8路模拟量输入引脚。VREF(+):参考电压正端。VREF(-):参考电压负端。START:启动信号输入端。START为正脉冲,其上升沿清除ADC0808的内部的各寄存器,其下降沿启动A/D开始转换。ALE:地址锁存启动信号。在ALE的上升沿,将A、B、C上的通道地址锁存到内部的地址锁存器。START和ALE两信号用于启动A/D转换。EOC:转换完成信号。当EOC上升为高电平时,表明
21、内部A/D转换已完成。OE:允许输出信号。当OE=1时,即为高电平,允许输出锁存器输出数据。CLK:时钟输入信号。0809的时钟频率范围在101200kHz,典型值为640kHz。A、B、C:3位地址输入线。经过译码后可选通IN0IN78个通道中的一个通道进行转换。A、B、C的输入与选通的通道的关系如表2所示。表2 A、B、C的输入与选通的通道的关系 被选通的通道C B A 被选通的通道C B AIN00 0 0IN41 0 0IN10 0 1IN51 0 1IN20 1 0IN61 1 0IN30 1 1IN71 1 13.2.3 ADC0809工作原理ADC0809的工作过程是:首先输入3
22、位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。ADC0809转换完成的数字信号通过P0.0传给单片机处理电路如图4所示。图4 ADC0809与AT89S52接口图3.3显示电路设计设计中采用的是8段LED数码管来显示电压值。LED具有耗电低、亮度高、视角大、线路简单、耐震及寿命
23、长等优点,它由8个发光二极管组成,其中7个按8字型排列,另一个发光二极管为圆点形状,位于右下角,常用于显示小数点。把8个发光二极管连在一起,公共端接高电平,叫共阳极接法,相反,公共端接低电平的叫共阴极接法,本文采用共阴极接法。当发光二极管导通时,相应的一段笔画或点就发亮,从而形成不同的发光字符。根据设计要求,显示电路需要4位LED数码管来显示电压值。利用单片机的I/O口驱动LED数码管的亮灭,设计中由P1口驱动LED的段码显示,即显示字符,由P3口选择LED位码7。图5 LED显示电路接口图3.4时钟电路设计单片机工作是在同一的时钟脉冲下一拍一拍的进行的,这个脉冲是单片机控制中的时序电路发出的
24、。单片机的时序就是CPU在执行指令时所需控制信号的时间顺序。为了保证各部件的同步工作,单片机内部电路应在唯一的时钟信号下严格地按时序进行工作。89S52内部有一个高增益反相放大器,用于构成振荡器,但要形成时钟脉冲,外部还需要附加电路。89S52的时钟产生方法有两种:一种是内部时钟方式,一种是外部时钟方式。本设计采用内部时钟方式,利用单片机内部的高增益反相放大器,外部电路简单,只需要一个晶振和2个电容即可,如图6所示8。图6 时钟电路3.5复位电路设计复位是单片机的初始化操作。单片机系统在上电启动运行时,都需要先复位,其作用是使CPU和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作,
25、单片机复位后(RST从高电平变为低电平),从0000H地址开始执行指令。单片机的RST引脚为主机提供一个外部复位信号输入端口。复位信号是高电平有效,高电平有效的持续时间应为2个机器周期以上。单片机的复位方式有上电复位和手工复位两种,图7是51系列单片机常用的上电复位和手动复位组合电路,只要VCC上升时间不超过1mS,他们都能很好的工作9。图7 复位电路3.6通道选择电路设计根据要求在数码管上轮流显示或单路选择显示测量电压,我选择的是单路选择显示方式。用一个按键来选择通道,用一个1位的LED来显示所选的通道数,如图8和图9所示。比如,现在显示的是1通道的测量电压值,而要显示3通道的测量电压值,则
26、按2次键,4位的LED数码管显示的是通道3的测量电压值,1位的LED数码管显示的是通道数3。图8 通道选择按键接口图图9 通道显示LED4软件设计4.1主程序设计初始化中主要对准备工作做好后便启动ADC0809对INT脚输入进的05V电压模拟信号进行数据采集并转换成对应的0255十进制数字量。在数据处理子程序中,运用表度变换知识,编写算法将0255十进制数字量转换成0.005.00V的数据,输出到显示子程序进行显示。整个主程序就是在A/D转换,数据处理及显示程序循环执行。整个程序流程框图如图10所示。 初始化查询按键选择通道启动A/D转换开始数字处理显示结束图10 主程序流程图4.2各子程序设
27、计4.2.1A/D转换子程序启动ADC0809对模拟量输入信号进行转换,通常判断EOC来确定转换是否完成,若EOC为0,则继续等待;若EOC为1,则把OE置位,将转换完成的数据输出并储存。程序流程图如图11所示。初始化启动A/D转换将装换得到的数据输出并存储开始结束否A/D转换结束?是图11 A/D转换程序流程图4.2.2显示子程序显示子程序采用动态扫描法实现数码管的数值显示。测量所得的A/D转换数据放在70H内存单元中,测量数据在显示时需转换成10进制BCD码放在78H7AH单元中。寄存器R1用作显示数据地址指针。程序流程图如图12所示10。初始化A/D通道显示测量电压值显示开始结束图12
28、显示程序流程图4.2.3按键子程序按键子程序为了检测是否有键按下而设计的,图13所示的流程图大致说明了其运行过程。当系统上电后,程序初始化。扫描过程是对键盘上的按键进行扫描,在此过程中,需在程序中加入防抖设计。开始按键?按键?结束延时消抖按键值处理否否是是图13 按键程序流程图5结束语通过这次对简易数字电压表的设计,让我了解了设计电路的程序,也让我了解了关于电压表的原理与设计理念等专业知识。所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。除了学会了许多专业知识外,在遇到困难时,积极地去请教我的指导老师,我通过看现有的教材、去图书馆查阅资料、去网上搜索相关信息这些方
29、式,不仅完成了我的毕业设计,而且大大增强了我的自学能力和独立能力。更重要的是提高了我认识问题、分析问题、解决问题的能力。参考文献1 高吉祥电子技术基础实验与课程设计M北京:电子工业出版社,2004:470-4792 唐颖单片机原理与应用及C51程序设计M北京:北京大学出版社,2008:178-2033 何立民单片机高级教程应用与设计M北京:北京航空航天大学出版社,2000:53-604 余永权,汪明慧,黄英单片机在控制系统中的应用M北京:电子工业出版社,2003:34-565 刘文涛单片机应用开发实例M北京:清华大学出版社,2005:16-316 王幸之AT89系列单片机原理与接口技术M北京:
30、北京航空大学出版社,2004:48-587 张凯LED介绍完全手册M北京:北京航空航天大学出版社,2000:22-568 潘永雄电子线路CAD实用教程M西安:西安电子科技大学出版社,2007:330-3379 康华光电子技术基础模拟部分M北京:高等教育出版社,1999:444-46010 王宝香数字电压表自动测试系统J宇航计测技术,1998:5-12附录A 总电路图附录B PCB图 附录C 程序#include #define uint unsigned int#define uchar unsigned charuchar code table=0x3f,0x06,0x5b,0x4f,0x6
31、6,0x6d,0x7d,0x07,0x6f; /字符段码表sbit START=P27; /ADC启动sbit EOC=P26; /转换完成信号sbit OE=P25; /输出允许控制sbit CLOCK=P24; /ADC时钟信号sbit L4=P37; /LED位选 sbit L3=P36;sbit L2=P35;sbit L1=P34;sbit L0=P32;/通道显示位选sbit anjian=P33;float i,AD_data;uint v;uchar key=0;void delay(uint t) /延时函数 while(t-); void AD_clk(uint m) /A
32、D时钟产生函数 while(m-) CLOCK=1;delay(20);CLOCK=0;delay(20); ANJIAN() /按键查询函数 if(anjian=0)delay(10000); /延时消抖if(anjian=0)if(key8)key+;else key=0;return(key); AD_START()/AD启动函数 OE=0;/输出高阻START=0;AD_clk(10); /ADC时钟信号START=1; /启动AD转换并锁定信号地址AD_clk(10);START=0;AD_clk(100); /等待AD转换完成 while(!EOC); OE=1; /使能输出P0=
33、0XFF; /读数前写1操作AD_data=P0; /读出AD转换的数据OE=0; return(AD_data); void display(uint k) /数码管显示函数 while(k-) /AD转换通道显示位 L0=0; /显示通道P1=tablekey;delay(500);L0=1; /关闭显示,消除重影L1=0; /选通第一个数码管P1=tablev/1000; /显示电压delay(500); /延时 L1=1; /关闭显示,消除重影L2=0;P1=tablev%1000/100;delay(500);L2=1;L3=0;P1=tablev%100/10;delay(500)
34、;L3=1;L4=0;P1=tablev%10;delay(500); L4=1; void main()/主函数 while(1) /循环检测 ANJIAN();/按键查询P2=(P2&0xf0)|key;/选择对应AD通道AD_START();/启动ADi=0.019608*AD_data;/转换成电压值i=i+0.0005;/四舍五入小数点后第4位i=i*1000;/扩大1000倍 v=(uint)i; /去掉小数点display(100); /动态扫描显示 致谢衷心感谢我的指导老师某某老师在论文的写作过程中对我的悉心指导,他治学严谨,学识渊博,知识面广,无论是学习还是生活方面都对我有很
35、大启迪与帮助。还要感谢什么什么系的各位老师四年来对我的悉心教导,学到了很多专业知识,更重要的是学会了怎样去适应社会把学到的知识和实际相结合。最后感谢学校为我们学校提供查找资料的场所和优质的服务。声 明本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。据我所知,除文中加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得什么什么学院或其他教育机构的学位证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均以在论文中作了说明并表示谢意。本学位论文成果是本人在什么什么学院读书期间在导师的指导下取得的,论文成果归什么什么学院所有,特此声明。28