基于单片机的多路数字电压表设计_第1页
基于单片机的多路数字电压表设计_第2页
基于单片机的多路数字电压表设计_第3页
基于单片机的多路数字电压表设计_第4页
基于单片机的多路数字电压表设计_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、107220907044103学号学校代码公开密级分类号本科毕业论文基于单片机的多路数字电压表设计题 目(中、英文)Design of multi-channel digital voltage meter based on MCU王双章作者姓名电气工程及其自动化专业名称工 学学科门类郝海燕 二一三年五月成绩评定提交论文日期指导教师 1 / 29摘 要近十几年来,单片机技术的发展极为迅速,广泛应用于生产、生活的各个领域。从测量领域来看,一部分电子测量仪表在高速化、精确化方面有了明显的进步。电子测量仪表精确度的高低,直接影响着企业的经济效益。在我国现有经济水平下,使用单片机开发的电子测量仪表,测

2、量精确而且性价比极高,不仅适用于电压、电流、电阻等的测量,还广泛适用于温度、湿度等测量场合。本课题设计的多路数字电压表具有性能稳定、携带方便、显示清晰直观、读数准确,大大地减少了因人为因素所造成的测量误差事件,大大的提高了测量的精确度。关键词:数字电压表;AT89C51;ADC0808AbstractIn recent years,the technology of SCM has got a jolly rapid development and been widely used in every field of our life and production.Judging from t

3、he measure realm,some electronical measuring instruments have remarkable improvments in its speed and accuracy.the accuracy of electronical measuring instruments directly affect enterprises' economic effectiveness.In the current economic level of our country,electronical measuring instruments de

4、veloped by SCM have high accuracy as well as high cost performance,not only can be used to measure Voltage、Current and Resistance,but also be widely used in measuring temperature、humidity or some other Measurement situations.This topic design of multi-channel digital voltage meter has the advantages

5、 of stable performance, easy to carry, shows the clear and intuitive, accurate readings, greatly reducing the measurement error events caused by human factors, greatly improves the precision of measurement. Key words: Digital Voltage;AT89C51;ADC0808目 录1 引言12 多路数字电压表的总体设计12.1 设计内容12.2 设计方案23 硬件设计3.1

6、单片机控制模块33.2 振荡电路模块53.3 A/D转换模块53.4 显示模块93.5 按键模块104 软件设计114.1 C语言与汇编语言114.2 主流程图设计114.3 A/D转换子程序125 软件调试135.1 仿真电路图145.2 显示结果及误差分析145.21 显示结果145.22 误差分析166. 结论17元件清单17参考文献18谢 辞18程序附录19 1 引言 单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(如算术运算,逻辑运算、数据传送、中断处理)的微处理器(CPU)。随着单片机技术的飞速发展,各种单片机蜂拥而至,单片机技术已成为一个国家现代化科技水平的重要标志

7、。单片机可单独地完成现代工业控制所要求的智能化控制功能,这是单片机最大的特征。单片机控制系统能够取代以前利用复杂电子线路或数字电路构成的控制系统,可以软件控制来实现,并能够实现智能化。现在单片机控制范畴无所不在,例如通信产品、家用电器、智能仪器仪表、过程控制和专用控制装置等等,单片机的应用领域越来越广泛。本次课程设计的课题是“基于单片机的多路数字电压表的设计”。主要考核我们对单片机技术,编程能力等方面的情况。观察独立分析、设计单片机的能力,以及实际编程技能。 传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便。通过

8、单片机,采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表,使测得的结果更为精准。 2 多路数字电压表的总体设计2.1 设计内容 设计和调试一种基于单片机的多路数字电压表。要求具有如下功能: (1) 输入电压为4路; (2) 电压测量范围为0-5V; (3) 测量的最小分标率为0.0196V,测量误差为±0.02V; (4) 能通过显示器显示当前通道和通道电压值,有效位数为小数点后两位;2.2 设计方案本课题设计的数字电压表的实现是基于单片机原理。首先,在Proteus软件环境中进行硬件电路图的设计,然后在Keil软件环境中进行系统的软件编程,并进行程序源

9、文件的编译和调试,最后生成.hex文件。此.hex文件是硬件电路运行实现的源代码来源。把.hex文件加载到AT80C51单片机芯片,然后在Proteus软件环境中运行硬件电路,数字多用表就可以正常显示了。本课题设计的数字多用表主要由: 时钟模块、A/D转换模块、数据处理模块、按键模块显示模块,这四大模块组成。总体结构如图1所示,先用A/D转换器对各路电压值进行采样,得到相应的数字量,再按数字量与模拟量成正比关系运算得到对应的模拟电压值,然后通过单片机进行数据处理,最后通过显示器显示出被测电压值,另外可以通过按键选择通道。显示电路 AT89C51 单片机 时钟电路 输入电路转换电路 复位电路 按

10、键电路 图1 基于单片机的多路数字电压表电路的原总体结构图根据设计要求,采用的方案如下:硬件部分实现数据的采集、编译,A/D转换以及显示的功能,包括单片机电 路模块、A/D转换器模块、显示模块、按键电路模块;软件部分实现控制芯片,使各部件能够正常的运行,同时实现仿真的功能,主要设计思想是利用软件进行仿真,通过仿真得到实验的结果。多路数字式电压表应用系统主要利用A/D转换器,先用A/D转换器对各路电压值进行采样,得到相应的数字量,再按数字量与模拟量成正比关系运算得到对应的模拟电压值,然后把模拟值通过显示器显示出来。通过按键选择循环显示,也可单路显示,单路显示可通过按键选择显示通道数。 3 硬件设

11、计3.1 单片机控制模块单片机是集成在一个芯片上的计算机,又称单片微控制。单片机是计算机、自动控制和大规模集成电路技术相结合的产物,融计算机结构和控制功能于一体。它尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:具有数据处理能力的CPU、只读存储器ROM、随机存储器RAM、多种输入输出电路(I/O口)、定时器/计时器等功能。随着技术的发展,单片机片内集成的功能越来越强大,并朝着SOC(System on Chip)方向发展。本次论文设计单片机采用高性能的AT89C51系列芯片,AT89C51是8位单片机中一个最基本,最典型的芯片型号。它主要由以下几部分组成:中

12、央处理器;内部数据存储器; 内部程序存储器;并行I/O口;定时/计数器;中断控制电路;振荡器和时钟电路。这些部件通过内部总线连接起来,构成了一个完整的微型计算机。如图2所示: 图2 AT89C51单片机引脚P0口:P0口地址为80H,位地址为80H87H。各位口线是有完全相同但又相互独立的逻辑电路。P0口的逻辑电路主要由D触发器构成的锁存器,FET(场效应管)构成的输出驱动电路,用于引脚数据输入缓冲的缓冲器,一个多路转接开关(MUX)构成。8位口线的锁存器位构成一个口的锁存器,所谓的口地址就是锁存器的地址。锁存器的功能是使数据在口中保留一段时间。MUX的一个输入来自锁存器,另一个输入为“数据/

13、地址” 。输入转接由控制信号控制,设置多路转接开关的原因是P0口既可以作为通用I/O口进行数据输入/输出,又可以作为单片机系统的地址/数据线使用。设置多路转接开关可以方便的实现转换。 P1口:P1是一个带有内部上拉电阻的8位双向I/O口。P1口地址为90H,位地址为90H97H。P1口只能作为通用数据I/O口使用所以在电路结构上与P0口有些不同。第一,因为它只能传送数据,所以不再需要多路转接开关(MUX);第二,驱动电路中有上拉电阻。其上拉电阻并不是真正的电阻,而是一个能起到上拉电阻作用的有两个场效应管构成的电路。P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2口地址为A0H,位地址

14、为A0HA7H。P2口既可作为系统高位地址线使用,也可作为通用I/O口使用,所以P2口的电路逻辑与P0口类似,也有一个多路转接开关。但多路转接开关的一个输入端不再是地址/数据,而是单一的地址,因为在构造系统总线时,P2口只能作为高位地址而不能作为数据线使用。当P2口作为高位地址线使用时,多了开关倒向地址端;而当通用I/O口使用时,多路开关倒向锁存器的Q端。P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口的地址为B0H,位地址为BOHB7H。虽然P3口可以作为通用I/O口使用,但在实际应用中我们更多的使用的是他的第二功能信号。RST:当输入的复位信号延续2个机器周期以上高电平时即为

15、有效,用于完成单片机的复位操作。ALE(地址锁存控制信号):在系统扩展时,ALE用于控制把P0口输出的低8位地址送入锁存器锁存起来,以实现低位地址和数据的分时传送。此外由于ALE是以1/6晶振频率的固定频率输出的正脉冲,因此,可作为外部时钟或外部定时脉冲使用。/PSEN(外部程序存储器读选通信号):程序存储允许输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两个PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的PSEN信号不出现。/EA(访问程序存储器控制信号):当EA信号为低电平时,对ROM的读操作是针对外部程序存储器

16、的;当EA信号为高电平时,对ROM的操作是从内部程序存储器开始,并可延续至外部程序存储器。XTAL1和XTAL2(外接晶体引线端):当使用芯片内部时钟时,XTAL1和XTAL2用于外接石英晶体谐振器和微调电容;当使用外部时钟时,用于接入外部时钟脉冲信号。3.2 振荡电路模块AT89C51芯片中的高增益反相放大器。其输入端为引脚XTAL1,输出端为引脚XTAL2。通过两个引脚在芯片外并接石英晶体振荡器和两只电容器,C1和C2一般取30pF左右.石英晶体为一感性元件,与电容构成振荡回路,为片内放大器提供正反馈和振荡所需的相移条件,从而构成一个稳定的自激振荡器。本文中C1和C2各取1nF,晶体的振荡

17、频率取12MHz,电路图如下图所示: 3.3 A/D转换模块 本设计采用的A/D转换器为8位的ADC0808转换器。ADC0808是8位逐次逼近式,可实现8路模拟信号的分时采用,片内有8路模拟选通开关,以及相应的选通地址锁存与译码电路。地址锁存与译码电路完成对A、B、C3个地址位进行所存和译码,其译码输出用于通道选择。8位A/D转换器是逐渐逼近式,有控制与时序电路、逐次逼近寄存器、树状开关以及256R电阻阶梯网络等组成。输出锁存器用于存放和输出转换得到的数字量。其主要性能如下:(1)分辨率为8位(2)精度小于1/2LSB(3)单一+5V供电,模拟输入电压范围为05V(4)具有锁存控制的8路输入

18、模拟开关(5)可锁存三态输出,输出与TTL电平兼容(6)功耗为15mW(7)不必进行零点和满度调整(8)转换速度取决于芯片外接的时钟频率(9)时钟频率范围101280kHZ,典型值为640kHZ,约为1002) 内部结构和外部引脚ADC0808的内部结构和外部引脚分别如图3和图4所示。图2 ADC0808内部结构框图图3 ADC0808外部引脚图1)IN0IN78:8位模拟量输入引脚,通过3根地址译码线ADDA、ADDB、ADDC来选通IN0IN7中的一路。2)D7D0:8位模拟量输入引脚,为三态可控输出,可直接和CPU数据线连接。8位排列顺序是D7为最高位,D0为最低位。(3)ADDA、AD

19、DB、ADDC:模拟通道选择地址信号,ADDA为低位,ADDC为高位。地址信号与选中通道对应关系如图5所示。地 址选中通道ADDCADDBADDA000011110011001101010101IN0IN1IN2IN3IN4IN5IN6IN7 图5 地址信号与选中通道的关系(4)VR(+)、VR(-):正、负参考电压输入端,用于提供片内DAC电阻网络的基准电压。在单极性输入时,VR(+)=5V,VR(-)=0V;双极性输入时,VR(+)、VR(-)分别接正、负极性的参考电压。 (5)ALE:地址锁存允许信号输入端,当输入为高电平时,对地址信号进行锁存。在使用时,该信号通常常和START信号连在

20、一起,以便同时锁存通道地址和启动A/D转换。 (6)START:A/D转换启动信号输入端,正脉冲有效。加于该端的脉冲的上升沿使逐次逼近寄存器清零,下降沿开始A/D转换。如正在进行转换时又接到新的启动脉冲,则原来的转换进程被中止,重新从头开始转换。(7)EOC:A/D转换结束信号输出引脚,高电平有效。该信号在A/D转换过程中为低电平,其余时间为高电平。该信号可作为被CPU查询的状态信号,也可作为对CPU的中断请求信号。如果需要对某个模拟量进行不断采样、转换的情况下,EOC也可作为启动信号反馈接到START端,但是要在刚加电时需由外电路第一次启动。(8)OE:输出允许控制端,高电平有效,用以打开三

21、态数据输出锁存器。在中断工作方式下,该信号通常是CPU发出的中断请求响应信号。(9):CLOCK:时钟信号输入端。3)工作时序与使用说明ADC0808的工作时序如图6所示。当通道选择地址有效时,ALE信号一出现,地址便被锁存,这时转换启动信号紧随ALE之后(或与ALE同时)出现。START的上升沿将逐次逼近寄存器SAR复位,在该上升沿之后的2s加8个时钟周期内(不定),EOC信号将变低电平,以指示转换操作正在进行中,直到转换结束后EOC才变成高电平。微处理器收到变为高电平的EOC信号后,便马上送出OE信号,打开三态门,读取转换结果。图6 ADC0808工作时序 模拟输入通道的选择可以相对于转换

22、开始操作独立地进行,不能在转换过程中进行,因此往往是把通道选择和启动转换结合起来使用。这样可以用一条写指令把选择模拟通道又启动转换。在与微机接口时,输入通道的选择可有两种方法:一种是通过地址总线选择,另一种是通过数据总线选择。如果用EOC信号去产生中断请求,要特别注意EOC的变低相对于启动信号有2s+8个时钟周期的延迟,要设法使它不要产生虚假的中断请求。因此,最好利用EOC上升沿产生中断请求,而不是靠高电平产生中断请求。3.4 显示模块 本设计采用1602字符型LCD液晶显示屏来显示电压值,具有体积小、功耗低、界面美观大方、使用方便等优点,它具有16个引脚,如图7所示: 图 7 LM016L外

23、部引脚图 VSS:为地电源。 VDD:接5V正电源。 VEE: 为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。 RS:寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 R/W:为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS 和R/W 共 同为低电平时可以写入指令或者显示地址,当RS 为低电平R/W 为高电平时可以读忙信号,当RS 为高电平R/W 为低电平时可以写入数据。 E :端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 D0D7:8 位双向数据线。3.5 按键

24、模块K1是一个按键开关,如图8所示,与单片机的P1.0相接,用于进行通道选择,当按下一次,通道加1,显示下一通道。 图8 按键处理电路图4 软件设计4.1 C语言与汇编语言 汇编语言和C语言各有特点。简单的说就是汇编语言的本质是机器码,是直接和单片机对话的唯一途径。优点是效率高,缺点是难以驾驭。C语言的逻辑性更强,优点是只要掌握了语言本身编程就变得简单,而且移植性好。缺点就是即使你写出了程序,完成了功能,但是你对单片机本身的了解还是很少。实际开发中大多会使用C语言,汇编语言在较为复杂的工程面前还是显得很繁琐,往往让人望而却步。但是汇编语言在学习单片机的过程中却是一条捷径,想要真正懂得单片机的内

25、部奥妙,就必须认真学习汇编语言。因此,我们在学习单片机的过程中应先通过汇编语言将单片机硬件资源掌握透彻,在对硬件了解清楚的基础之上再学习C语言,就能达到一个比较好的效果。4.2 主流程图设计 主程序流程图如图9所示。首先对定时/计数器和LCD进行初始化,在LCD上显示信息,然后进行循环,在循环中以此位:调用A/D转换子程序对4个通道转换一次,判断K1键是否按下,当按下则当前通道地址加1,当前通道值转换成电压值,显示当前通道值。 开始 定时/计数器初始化LCD初始化LCD显示提示信息调用A/D转换子程序判断通道键是否按下,按下加1当前通道数字量 转换成电压显示当前通道值 图 9 主程序流程图4.

26、3 A/D转换子程序 A/D转换子程序用于对ADC0808的4路输入模拟电压进行一次A/D转换,并将转换的数值存入4个相应的存储单元中,流程图如图10所示。A/D子转换程序每隔一定时间调用一次。开始启动一次转换否A/D转换结束EOC=1?) 取数据(OE=0)0808地址通道加1地址数小于8否返回 图 10 A/D转换子程序流程图5 软件调试软件调试的主要任务是排查错误,错误主要包括逻辑和功能错误,这些错误有些是显性的,而有些是隐形的,可以通过仿真开发系统发现逐步改正。本系统的调试主要以软件为主,其中,系统电路图的绘制和仿真我采用的是Proteus软件,而程序方面,采用的是c语言,用Kiel软

27、件将程序写入单片机。5.1 仿真电路图仿真电路图如图11 所示 图11 仿真电路图5.2 显示结果及误差分析5.21 显示结果 1. 当输入电压值为0V时,显示结果如图12所示,测量误差为0V。 图12 输入电压为0V时,LCD显示结果2.当输入电压值为1.64V时,显示结果如图13所示,测量误差为+0.1V。 图13 输入电压为1.64V时,LCD显示结果3.当输入电压值为3.84V时,显示结果如图14所示,测量误差为+0.1V。 图14 输入电压为3.84V时,LCD显示结果4.当输入电压值为5V时,显示结果如图15所示,测量误差为0V。 图15 输入电压为5V时,LCD显示结果5.22

28、误差分析 通过以上仿真测量结果可得到简易数字电压表与“标准”数字电压表对比测试表,如下表1所示: 标准电压值/V电压表测量值/V绝对误差/V 0.00 0.00 0.00 0.50 0.51 0.01 1.12 1.13 0.01 2.18 2.17 0.01 3.00 3.00 0.00 0.25 0.26 0.01 4.00 4.00 0.00 4.36 4.37 0.01 5.00 5.00 0.00 表1 数字电压表与“标准”数字电压表对比测试表 由于单片机AT89C51为8位处理器,当输入电压为5.00V时,ADC0808输出数据值为255(FFH),因此单片机最高的数值分辨率为0.

29、0196V(5/255)。这就决定了电压表的最高分辨率只能到0.0196V,从上表可看到,测试电压一般以0.01V的幅度变化。从上表可以看出,数字电压表测得的值基本上比标准电压值偏大0-0.01V,这可以通过校正ADC0808的基准电压来解决。因为该电压表设计时直接用5V的。6. 结论经过本次为期数月的毕业课题设计,使我真正有机会对大学期间所学的专业知识进行了系统的分析总结,从课题的分析设计到最后的硬件电路设计和软件编程设计的实现,都是在老师的指导下,逐渐完成的。本课题设计了一个数字多用表,这种数字多用表以单片机80C51作为数据处理主控芯片,并以模数转换芯片ADC0808、液晶显示模块作为外

30、围电路,构成了整个的硬件电路。待测的模拟量首先经过A/D转换模块,转换成为单片机能够识别和处理的数字信号;然后,单片机对此数字信号进行数据处理;最后,测量结果通过显示模块显示出来。可以用来测量电压、电流、电阻,而且还可以进行功能的扩展。由于能力和时间有限,系统还有一些地方不尽如人意。比如,本系统能直接测量的电压范围为比较小,要想测量大电压必须先进行分压处理。因为A/D转换器ADC0808有8个输入端口,所以,理论上讲本系统能够分时地对8路信号进行测量;如果接上湿度传感器本系统还能象测量温度那样来测量湿度,而这些工作还有待今后一一地去解决。 元件清单 序号产品名称规格型号数量备 注1单片机AT8

31、9C5112晶振12MHz13AD转换器ADC080814电容1nF35按钮26RJ电阻10 K17排阻510 X 718RJ电阻20019LM016L111滑动电阻器1k212总线1注:1、电源可用5V开关电源,也可用USB电源,也可用手机充电器电源等。 参考文献1.李广弟.单片机基础(第三版)【M】.北京航空航天大学出版社,20072.于永,戴佳,常江.51单片机C语言常用模块与综合系统设计实例精讲【M】.电子工业出版社3.侯玉宝.陈忠平,李成群等.基于Proteus的51系列单片机设计与仿真【M】.北京:电子工业出版社,20084.戴佳,戴卫恒.51单片机C语言应用程序设计【M】.北京:

32、电子工业出版社,20065.林志琦,郎建军等. 基于Proteus的单片机可视化硬件仿真【M】. 北京航空航天大学出版社,20066.耿永刚.单片机C51应用技术【M】.电子工业出版社,2011谢 辞本文从拟定题目到定稿,历时数月。在本论文完成之际,首先要向我的指导老师郝海燕老师致以诚挚的谢意。在论文的写作过程中,她给了我许许多多的帮助和关怀。在郝老师的悉心指导中,我不仅学到了扎实的专业知识,也在怎样处人处事等方面收益很多;同时她对工作的积极热情、认真负责、有条不紊、实事求是的态度,给我留下了深刻的印象,使我受益非浅。在此我谨向郝海燕老师表示衷心的感谢和深深的敬意。 同时,我要感谢物理与电子工

33、程学院给我们授课的各位老师,正是由于他们的传道、授业、解惑,让我学到了专业知识,并从他们身上学到了如何求知治学、如何为人处事。我也要感谢我的母校咸阳师范学院,是她提供了良好的学习环境和生活环境,让我的大学生活丰富多姿,为我的人生留下精彩的一笔。 另外,我要衷心感谢我的同学们对我的帮助和指点。没有他们的帮助,对于我来说要想在短短的几个月的时间里完成毕业论文几乎是不可能的事情。在毕业论文的写作过程中,与他们的探讨交流使我受益颇多。同时,他们也给了我很多无私的帮助和支持,在此深表谢意。 程序附录#include <reg51.h>#include <absacc.h>#inc

34、lude <intrins.h>#define uchar unsigned char#define uint unsigned intsbit RS=P17;sbit RW=P16;sbit EN=P15;sbit ST=P37;sbit OE=P36;sbit EOC=P13;sbit CLK=P14;sbit key1=P10;uchar data chnumber;uchar disbuffer4=0,'.',0,0;uchar data ad_data8=0,0,0,0,0,0,0,0;uint temp;void fbusy() P0=0xff; RS=0; RW=1; EN=1; EN=0; while(P0&0x80) EN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论