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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

电压表设计.docx

1、电压表设计福建农林大学毕业论文成人教育学院年级专业 电气工程及其自动化 学 号 081222627 学生姓名 郑 树 元 论文题目 基于52单片机的多路数字电压表设计指导教师 时间: 2010 年 7 月 20 日基于52单片机的多路数字电压表设计摘要: 本次设计了一个多路数字电压表,该电压表测量范围的05V之间。它主要利用A/D转换器。对多路电压值进行采样,得到相应的数字量,然后按照数字量与模拟量的比例关系得到对应的模拟电压值,通过显示设备显示出来。系统过程就是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示。由于采用高性能的单片机芯片为核心,同时利用LED数码管为显

2、示设备,这样就使显示清晰直观、读书准确,大大地减少了因人为因素所造成的测量误差事件,大大的提高了测量的精确度。关键词: 单片机 数字电压表 ADC0809第一章 前言 第二章 基于单片机的多路数字电压表的基本理论 2第三章 方案设计 3第四章 硬件电路的工作原理44.1单片机电路模块44.2A/D转换器电路模块54.3数码管显示电路模块 64.4按键处理电路模块6第五章 软件编程75.1 主程序 75.2 A/D 转换主程序75.3 显示子程序 8第六章 系统调试和结果富分析 10第七章 结束语 11参考文献 12附录 13 第一章 引 言 单片机是一种集成电路芯片,采用超大规模技术把具有数据

3、处理能力(如算术运算、逻辑运算、数据传送、中断处理)的微处理器(CPU)。随着单片机技术的飞速发展,各种单片机蜂拥而至,单片机技术已成为一个国家现代化科技水平的重要标志。 单片机可单独地完成现代工业控制所要求的智能化控制功能,这是单片机最大的特征。单片机控制系统能够取代以前利用复杂电子线路或数字电路构成的控制系统,可以软件控制来实现,并能够实现智能化。现在单片机控制范畴无所不在,例如通信产品、家用电器、智能仪器仪表、过程控制和专用控制装置等等,单片机的应用领域越来越广泛。本次课程设计的课题是“基于单片机的多路数字电压表的设计”。主要考核我们对单片机技术,编程能力等方面的情况。观察独立分析、设计

4、单片机的能力,以及实际编程技能。传统的指针式电压表功能第一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便。通过单片机,采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表,使测得的结果更为精准。本课题主要解决A/D转换、数据处理及显示控制等三个模块。控制系统采用AT89C52单片机,A/D转换采用ADC0809。第一章 基于单片机的多路数字电压表的基本理论基于单片机的多路数字电压表的主要原理是利用A/D转换器实现其功能,其过程为如下:先用A/D转换器对各路电压值进行采样,得到相应的数字亮,再按数字量与模拟量成比

5、例关系运算得到相应的模拟电压值,然后把模拟值通过数码管显示出来。设计时假设待测的输入电压为8路,电压值的范围为05V,要求能在4位LED数码上轮流显示或单路显示。测量的最小分辨率为0.019V。根据系统的功能要求,控制系统采用AT89C52,A/D转换器。当输入电压为5V时,输出的数据值为255(0FFH),因此最大分辨率为0.0196V(5/255)。ADC0809具有8路模拟量输入端口,通过三位地址输入端能从8路中选择一路进行转换。如每隔一段时间一次轮流改变3位地址输入端的地址,就能依次对8路输入电压进行测量。LED数码管显示采用软件译码动态显示。通过按键选择可8路循环显示,也可以单路循环

6、。单路显示可通过按键选择所要显示的通道数。第二章 方案设计基于单片机的多路数字电压表电路的基本组成如图1所示。根据设计要求,采用的方案如下。硬件部分实现数据的采集、编译,A/D转换以及显示的功能,包括单片机电路模块、A/D转换器模块、数码管显示电路模块、按键处理电路模块;软件部分实现控制芯片,使各部件能够正常的运行,同时实现仿真的功能,主要设计思想是利用Proteus软件进行仿真,通过仿真得到实验的结果。第三章 硬件电路的工作原理3.1 单片机电路模块本次课设单片机采用高性能98C52系列芯片,如图2所示,其具体管脚说明如下:P0口:P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电

7、流。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL们电流。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。P3口也可作为AT89C51的一些特殊功能口,如下表所示:P3.0 /RXD(串行输入口);P3.1 /TXD(串行输出口);P3.2/ INT0(外部中断0);P3.3 /INT1(外部中断1);P3.4/ T0(计时器0外部输入);P3.5/ T1(计时器1外部输入);P3.6 /WR(外部数据存储器写选通);P3.7

8、/RD(外部数据存储器读选通);P3口同时为闪烁编程和编程校验接收一些控制信号。RST;复位输入。当振荡器复位器件时,要保持RST脚两个及其的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程器件,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作为对外部输出的脉冲或用于定时目的。PSEN:外部程序存储器的选通信号。EA/VPP:当EA为高电平时,单片机读取内部存贮器,有扩展外部存贮器时,先读内部再读外部存贮器,当EA保持低电平时,单片机读取外部存贮器。XTAL1:反向振

9、荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。3.2 A/D转换器电路模块ADC0809具有8路模拟量输入通道IN0-IN7,通过3位地址输入端C、B、A(引脚23-25)进行选择,如图3所示。引脚22为地址锁存控制端ALE,当输入为高电平时,C、B、A引脚输入的地址锁存于ADC0809内部是锁存器中,经内部译码电路译码选中相应的模拟通道。引脚6为启动转换控制端START,当输入一个2us 宽的高电平脉冲时,就启动ADC0809开始对输入通道的模拟量进行转换。引脚7为A/D转换器,当开始转换时,EOC信号为低电平,经过一段时间,转换结束,转换结束信号EOC输出高电

10、平,转换结果存放于ADC0809内部的输出数据寄存器中。引脚9脚位A/D转换数据输出允许控制端OE,当OE为高电平时,存放于输出数据锁存器中的数据通过ADC0809的数据线D0D7输出。引脚10为ADC0809的时钟信号输入端CLOCK。在连接时,ADC0809的数据线D0D7与AT89V52的P0口相连接,ADC0809的地址引脚、地址段ALE、启动信号START、数据输出允许控制端OE分别与AT89C52的P2口相连接,转换结束信号EOC与AT89C52的P3.7相连接。时钟信号输入端CLOCK信号,由单片机的地址锁存信号ALE得到。3.3 数码管显示电路模块LED数码管采用动态扫描方式连

11、接,通过AT89C52的P1口和P3.0P3.3口控制。P1口为LED数码管的字段码输出端,P3.0P3.3口为LED数码管的选输出端,通过三极管驱动并反相。如图4所示。3.4 按键处理电路模块S1和S2是两个按键开关,如图5所示,分别与单片机的P3.5和P3.6相连接。S1用于单路显示或多路循环显示转换控制,S2用于单路显示时的同代选择。第四章 软件编程多路数字电压表的系统软件程序有主程序、A/D转换子程序和显示子程序组成。4.1 主程序主程序包含初始化部分、调用A/D转换子程序和调用显示程序,如图6所示。初始化部分包含存放通道数据缓冲区初始化和显示缓冲区初始化。另外,对于单路显示和循环显示

12、,系统设置了一个标志位00H控制。初始化时00H位设置为0,默认为循环显示,当它为1时改变单路显示。00H位通过单路/循环按键控制。 源程序参考附录。42 A/D转换子程序A/D转换子程序用于对ADC0809的8路输入模拟电压进行A/D转换,并将转换数值存入8 个相应的存储单元中,如图7所示。A/D转换子程序每隔一定的时间调用一次,退出隔一段时间对输入电压采样一次。4.3 显示子程序LED数码管采用软件译码动态扫描方式。显示子程序中包含多路循环显示和单路显示程序。多路循环显示把8个存储单元的数值依次取出送到4位数码管上显示,每一路显示1秒。单路显示程序只对当前选中的一路数据进行显示。每路数据显

13、示需经过转换变成十进制BCD码,放于4个数码管的显示缓冲区中。单路显示或多路循环显示通过标志位00H控制。在显示控制程序中加入了对单路或多路循环按键和通道选择按键的判断。 程序如下: Keytest() If(KEY1=0) Flag=!flag; While(key1=0);If(flag=1) If(key2=0) Number+; If(number=8) number=0; While(key2=0);第五章 系统调试和结果分析采用KEIL uVision2编译器进行源程序编译及仿真调试,同时进行硬件电路板的设计制作,完成好程序后进行软硬件联调,最后进行端口电压的对比测试,要求测试对比

14、中标准电压值采用数字万用表测得。测试对比表如表1所列。表中标准电压值采用数字万用表测得。 表1 基于单片机的多路数字电压表与数字电压表对比测试表标准电压值(V)简易电压表测得的值(V)绝对误差(V)0.000.000.000.150.17+0.020.850.86+0.011.001.02+0.021.251.26+0.011.751.76+0.011.892.00+0.022.322.33+0.012.652.65+0.01基于单片机的多路数字数字电压表与“标准”数字电压表测得的绝对误差应在0.02V以内,满足设计要求,达到了设计的目的。第六章 结论及进一步设想通过实验仿真,比较标准电压值与

15、设计的数字电压表测得的电压值,发现它们的绝对误差均在0.02V以内,这与采用8为A/D转换器所能达到的理论误差精度相一致,在一般的应用场合完全可以满足要求。但是由于存在着单片机为8位处理器,当输入电压为5.00V时,ADC0809输出数据值为255(FFH),单片机最高的数字分辨率只能为0.0196V的原因,还存在着不能满足高精度测量的缺陷,可以用过采用更高位的A/D转换器来进一步改善,得到更加精确地数据。此外,从表1中可以看出,简易数字电压表测得的值基本上均比标准电压值偏大0.01-0.01V。这可以通过校正ADC0809的基准电压来解决。因为该电压表设计时直接用参考文献:1. 周 平单片机

16、应用技术电子科技大学出版社 2004.62. 郭天祥 51单片机C语言教程 电子商务工业出版社 2009.123. 李荣正 PIC单片机实验教程北京航空航天大出版社 2005.4. 王有绪 单片机接口技术及应用系统设计北京航空航天大出版社20005. 周润景 基于PROTEUS的电路及单片机系统设计与仿真 北京航空航天大出版社2000附录:多路数字电压表设计源程序:#define#define#define#define ad_con P2 /0809控制口#define addata P0 /0809数据入口#define disdata P1#define uchar unsigned c

17、har#define uint unsigned intuchar number=0x00;sbit ALE=P23; /0809地址所存信号sbit START=P24; /启动信号sbit OE=P25; /输出允许通道sbit KEY1=P35; /循环或单路选择按钮sbit KEY2=P36; /通道选择按钮sbit EOC=P37; /转换结束信号sbit DISX=disdata7; /小数点位sbit FLAG=PSW0; /循环或单路显示标志位uchar code dis_711=0x3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7E,0X6F

18、,0X00;/数码管的字段码uchar code scan_con4=0xF1,0XF2,0XF4,0XF8; /4个LED数码管的位选uchar data ad_data8=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00; /0809的8个通道转换数据缓冲区uchar data dis5=0x00,0x00,0x00,0x00,0x00; /显示缓冲区void delay(uint xms)void delay xms(uint xms)/延时子程序 uint i,j; for(i=0;ixms;i+) for(j=0;j120;j+);void main()

19、 P0=0Xff; P2=0X00; P1=0Xff; P3=0Xff; while(1) test(); /测量转换数据 scan(); /显示数据 /检测键盘子程序keytest() if(KEY1=0) /检测循环或单路选择按键是否按下 FLAG=!FLAG; /标志位取反,循环,单路显示却换 while(KEY1=0); if(FLAG=1) /单路循环时,检测通道选择按键是否按下 if(KEY2=0) number+; if(number=8) number=0; while(KEY2=0); /显示扫描子程序scan() uchar k,n; int h; if(FLAG=0) /

20、循环显示子程序 dis3=0x00; /通道值清零 for(n=0;n8;n+) /循环8次 dis2=ad_datan/51; /转换成BCD码 dis4=ad_datan%51; dis4=dis4*10; dis1=dis4/51; dis1=dis4%51; dis4=dis4*10; dis0=dis4/51; for(h=0;h500;h+) /每个通道显示时间控制为1秒 for(k=0;k4;k+) /4位LED循环显示 disdata=dis_7diak; if(k=2) DISX=0; P3=SCAN_CONK; delay1ms(1); P3=0xff; dis3+; /通

21、道值加1 keytest(); /检测按键 if(FLAG=1) /单路显示子程序 dis3=number; for(k=0;k4;k+) /4位LED扫描显示 disdata=dis_7diak; if(k=2) DISX=0; P3=SCAN_CONK; delay1ms(1); P3=0xff; keytest(); /检测按键/转换子函数test() uchar m; uchar s=0x00; /初始化通道位0 ad_con=s; /第一通道地址送0809控制口 for(m=0;m8;m+) ALE=1;_nop_();_nop_();ALE=0; /锁存通道地址 START=1;_nop_();_nop_();START=0; /启动转换 _nop_();_nop_();_nop_();_nop_(); while(EOC=0); /等待转换结束 OE=1;ad_datam=addata;OE=0; /读取当前通道转换数据 s+;ad_con=s; /改变通道地址 ad_con=0x00; /通道地址恢复初值

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1