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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于单片机的数字电压表的设计.docx

1、基于单片机的数字电压表的设计河 南 农 业 大 学智能仪器设计实习设 计 说 明 书题 目: 基于单片机的数字电压表的设计 学 院: 理学院 专 业: 电子信息科学与技术 班 级: 08级(2)班 学 号: 0808101035 姓 名: 石利芳 指导教师: 潘建斌 成 绩: 时 间:2011年 12 月 6日至2011年12 月 14 日智 能 仪 器 设 计 实 习设 计 任 务 书题目 基于单片机的数字电压表的设计 专业、班级 08级电科(2)班 学号 0808101035 姓名 石利芳 主要内容:功能要求:完成数字电压表的制作(1) 能够测量一定量程范围的电压信号(2)将测得的电压值用

2、4位数码管进行显示,显示精度不得低于0.1V。基本要求:(1) 明确设计任务,复习与查阅有关资料。(2) 设计所用硬件芯片按给定使用。(3) 按要求对设计进行简要说明,总体设计方案,各部分的详细设计。(4) 写出体会和总结。完 成 期 限: 2011年12月20日指 导 教 师 签 名: 2011年 12月20日基于单片机的数字电压表的设计一、引言随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段, 对测量的精度和功能的要求也越来越高, 而电压的测量甚为突出, 因为电压的测量最为普遍。数字电压表是采用数字化测量技术设计的电压表。数字电压表与模拟电压表相比,具有读数直观、准确、显示

3、范围宽、分辨力高、输入阻抗大、集成度高、功耗小、抗干扰能力强, 可扩展能力强等特点, 因此在电压测量、电压校准中有着广泛的应用。本文采用ADC0808对输入模拟信号进行转换, 控制核心AT89S51单片机对转换的结果进行运算和处理, 最后驱动输出装置显示数字电压信号, 通过Proteus仿真软件实现接口电路设计, 并进行实时仿真。Proteus软件是一种电路分析和实物模拟仿真软件。它运行于Windows操作系统上, 可以进行仿真、分析( SPICE)各种模拟器件和集成电路, 是集单片机和SPICE分析于一身的仿真软件, 功能强大, 具有系统资源丰富、硬件投入少、形象直观等优点, 近年来受到广大

4、用户的青睐。二、系统概述(一)设计任务利用单片机AT89S51与ADC0808设计一个数字电压表, 将模拟信号05V之间的电压值转换成数字量信号, 以两位数码管显示, 并通过虚拟电压表观察ADC0808模拟量输入信号的电压值, LED数码管实时显示相应的数值量。(二)总体方案数字电压表电路组成框图如图1所示1: 驱 动数 码管 程序 模拟量 数字量 处理 图1 系统组成框图本设计中需要用到的电路有电源电路、模/数转换电路、单片机控制电路、显示电路等。设计中需要用到的芯片有AT89S51单片机、ADC0808、74LS74、LED数码管等2。三、数字电压表的Proteus软件仿真电路设计待测电压

5、输入信号在ADC0808芯片承受的最大工作电压范围内,经过模/数转换电路实现A/D转换, 通过单片机控制电路进行程序数据处理, 然后通过七段译码/驱动显示电路实现数码管显示输入电压。硬件电路原理图如图2所示:图2 Proteus软件仿真电路图(一) AT89S51单片机和数码管显示电路的接口设计利用单片机AT89C51与ADC0808设计一个数字电压表,将模拟信号0 5V之间的直流电压值转换成数字量信号0FF, 以两位数码管显示3。Proteus软件启动仿真, 当前输入电压为2. 5V,转换成数字值为7FH,用鼠标指针调节电位器RV1, 可改变输入模/数转换器ADC0808的电压, 并通过虚拟

6、电压表观察ADC0808模拟量输入信号的电压值LED数码管实时显示相应的数值量。在Proteus软件中设置AT89S51单片机的晶振频率为12MHz4。本电路EA接高电平, 没有扩展片外ROM。(二)A/D转换电路的接口设计A/D转换器采用集成电路ADC0808。ADC0808具有8路模拟量输入信号IN0 IN7( 1 5脚、26 28脚), 地址线C、B、A( 23 25脚)决定哪一路模拟输入信号进行A/D转换,本电路将地址线C、B、A均接地, 即选择0号通道输入模拟量电压信号5。22脚ALE为地址锁存允许控制信号, 当输入为高电平时,对地址信号进行锁存。6脚START为启动控制信号, 当输

7、入为高电平时, A/D转换开始。本电路将ALE脚与START脚接到一起, 共同由单片机的P2. 0脚和WR脚通过或非门控制。7脚EOC为A/D转换结束信号,当A/D转换结束时, 7脚输出一个正脉冲, 此信号可作为A/D转换是否结束的检测信号或向CPU申请中断的信号, 本电路通过一个非门连接到单片机的P3. 2脚。9脚OE为A/D转换数据输出允许控制信号, 当OE脚为高电平时, 允许读取A/D转换的数字量。该OE脚由单片机的P2. 0脚和RD脚通过或非门控制。l0脚CLOCK为ADC0808的实时时钟输入端, 利用单片机30引脚ALE的六分频晶振频率得到时钟信号。数字量输出端8个接到单片机的P0

8、口。四、数字电压表的软件程序设计系统上电状态, 初始化ADC0808的启动地址, 数码管显示关闭, 开始启动A/D转换。等待启动结束后, 将ADC0808的0号通道模拟量输入信号转换输出的数字量结果通过数码管动态显示的方式显示到三位数码管上。根据设计要求结合硬件电路,在输入模拟信号时采用电阻分压6, 最终的采样输入电压只有实际输入电压的十分之一, 所以在编写程序中要编写一段数据调整程序, 其中还应注意硬件显示电路采用了动态扫描显示, 在动态扫描显示方式中, 动态扫描的频率有一定的要求, 频率太低,数码管LED将会出现闪烁现象, 通常数码管点亮时间间隔一般均取5ms左右为宜7,这就要求在编写程序

9、时, 使其点亮并保持一定的时间。总结以上分析, 程序流程图如图3、图4所示:图3 主程序流程图图4 LED数码显示程序流程本电路的程序设计主要包括A/D转换部分、LED显示、初始化和定时器中断部分。部分程序代码见附录。五、结束语本文的数字电压表可以测量0 5V的电压值,AT89S51为8位单片机8, 当ADC0808的输入电压为5V时,输出数字量值为+ 4. 99V。如果要获得更高的精度, 需采用I2位、I3位等高于8位的A/D转换器。数字电压表的显示部分可以增加BCD码调整程序来通过三位数码管显示其数据。本设计的显示偏差, 可以通过校正0832的基准参考电压来解决,或用软件编程来校正其测量值

10、。本系统在设计过程中通过Proteus仿真软件的调试,具有电路简单、成本低、精度高、速度快和性能稳定等特点。六、心得体会因为家里有事情,在做实验的第一周,我便请假回家了。由于客观原因没能把实验完整的做好,我深感遗憾。于是回学校之后,我认认真真看了实验指导和相关资料,做实验时更是一丝不苟,遇到不懂不会的及时向老师和同学们请教。做实验时,更深刻的体会到了“书到用时方恨少”这句话,虽然学过单片机,但有好多东西不是忘了就是不会了,主要还是当时学的知识不够扎实的原因吧。这次的实验“基于单片机的数字电压表的设计”,不仅让我加深了对单片机知识和硬件设计的理解,还重温了C语言程序的编写以及软件设计的过程。接触

11、了Proteus软件,了解了它的用法并用他进行了数字电压表的仿真。尽管实验中遇到过困难,但还是如期的完成了设计,我还是很欣慰的。相信这次的实验对我以后会很有帮助的,让我提高了动手实践的能力,明白了团队协作的重要性,也让我懂得了做任何事都需要认真严谨的态度,一心一意的做好眼前的事。可能实验设计上还有不足之处,但总体来说,还是挺成功的,希望以后再接再厉,可以设计出更优秀的作品。【参考文献】1_ 刘振忠. 数字电压表发展概况和原理: 电压-频率(V-F)变换式积分型数字电压表 J.电讯工程, 1998( 2):39-42.2_ 王幸之.单片机应用系统抗干扰技术M. 北京: 北京航空航天大学出版社,

12、2000.3_ 吴金戌, 沈庆阳, 郭庭吉. 单片机实践与应用M. 北京:清华大学出版社, 2002.4_ 张志良, 马彪. 单片机原理与控制技术M. 北京: 机械工业出版社, 2001.5_ 沈任元, 吴勇. 常用电子元器件简明手册M. 北京:机械工业出版社, 2004.6_ 沙占友.新型数字电压表原理与应用M. 北京: 机械工业出版社, 2006.7_ 谢自美.电子线路设计实验测试M.武汉:华中科技大学出版社, 2000.8_ 曲娜,程凤琴, 周鹏, 等. 基于51单片机的舵机控制信号的设计 J. 中国科技信息, 2010, 21( 63): 137-142附录:1. A/D转换函数#in

13、clude/ADC0808 接口定义#define DATA0832 P1_5#define CS0832 P1_3#define CLK0832 P1_4void Adstart(void) /开始条件CLK0832=0;CS0832=0;DATA0832=1;CLK0832=1; CLK0832=0; void Adsendsign(Uchar signifi) /发送信号Uchar temp;temp=signifi&0x03;DATA0832=(signifi1)&0x01;CLK0832=1;CLK0832=0;DATA0832=temp&0x01;CLK0832=1;CLK0832

14、=0; DATA0832=1; /使DATA0832保持高电平? Uchar Adoutdata(void) /数据输出Uchar mfdata,i,j;bit D;while(DATA0832);CLK0832=1;for(i=0;i8;i+) CLK0832=0; D=DATA0832; mfdata=mfdata|D; CLK0832=1; mfdata=mfdata1; for(j=0;j7;j+) CLK0832=0;CLK0832=1; CS0832=1;DATA0832=1;return(mfdata); Uchar Adconvert(sign) /开始转换 Uchar add

15、ata; Adstart(); Adsendsign(sign); addata=Adoutdata(); return(addata); 2. 延时子程序#includevoid Delayus(Uchar j) /延时时间为 j*10+8 us (根据生成的汇编代码计算) while(j) _nop_(); _nop_(); _nop_(); _nop_(); j-; void Delayms(Uint n) /延时时间大约n*1 ms while(n) Delayus(100); /延时为1008us n-; 3. 动态扫描显示程序#include #define A138 P2_3 /

16、A138 B138 C138 分别对应74HC138的译码输入端A B C#define B138 P2_2#define C138 P2_1code Uchar SZDM=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff,0x00; /共阳数码管数字0-9和全灭、全亮的对应值void Display(Uchar *p) Dsenddata(SZDM*p); C138=1;B138=0;A138=1; Delayms(3); C138=1;B138=1;A138=1; Dsenddata(SZDM*+p); C138=1;B138=0

17、;A138=0; Delayms(3); C138=1;B138=1;A138=1; Dsenddata(SZDM*+p); C138=0;B138=1;A138=1; Delayms(3); C138=1;B138=1;A138=1; Dsenddata(SZDM*+p); C138=0;B138=1;A138=0; Delayms(3); C138=1;B138=1;A138=1; Dsenddata(SZDM*+p); C138=0;B138=0;A138=1; Delayms(3); C138=1;B138=1;A138=1; Dsenddata(SZDM*+p); C138=0;B1

18、38=0;A138=0; Delayms(3); C138=1;B138=1;A138=1; 4. A/D转换模块演示程序#include data Uchar displaybuff6; /定义显示缓冲区data Uchar CH0=0X02; /通道0 转换数据void main() Uchar temp,temp1,temp2,temp3,temp4,temp5;Delayms(500); /延时使芯片复位完成while(1) temp1=Adconvert(CH0);temp2=Adconvert(CH0);temp3=Adconvert(CH0);temp4=Adconvert(CH

19、0);temp5=Adconvert(CH0);/需要合适的A、D转换延时temp=(temp1+temp2+temp3+temp4+temp5)/5;displaybuff2=temp/100;displaybuff1=(temp-displaybuff2*100)/10;displaybuff0=temp-(displaybuff2*100+displaybuff1*10);Display(displaybuff); /在数码管上显示转换的数据 5. 74HC164串行移位输出数码管的段数据#include #define SDA164 P2_5 /74HC164的接口定义 #define SCK164 P2_4void Dsenddata(Uchar dd) Uchar j;for (j=0;j1;

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

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