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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于单片机的数字温度计系统的设计.docx

1、基于单片机的数字温度计系统的设计武汉理工大学华夏学院信息工程课程设计报告书课 程 名 称 单片微型计算机与接口技术课程设计总评成绩 学生姓名、学 号 马越 10212410133 学 生 专 业 班级 自动化1101 指 导 教 师 姓名 李文彦 课程设计起止日期 2012.12.29-2013.1.18 课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 题 目: 基于51单片机的数字温度计的设计 初始条件:1. 运用所学的单片机原理与接口技术知识和数字电路知识;2. 51单片机应用开发系统一套;3. PC机及相关应用软件;要求完成的主要任务:1. 完成数字温度计的设计和调试。 2

2、. 要求用DS18B20测量室温,用四位八段数码管显示,并能设置显示精度。3. 撰写课程设计说明书。4. 课程设计说明书要求:引言、设计要求、系统结构、原理设计、各个模块的设计与实现、软件设计、调试过程、收获、体会及总结、参考文献、电路图和源程序。说明书使用A4打印纸计算机打印或手写,用Protel等绘图软件绘制电子线路图纸。时间安排:第1天 下达课程设计任务书和日程安排,根据任务书查找资料;第23天 完成方案论证,单片机系统的设计;第46天 参考有关文献,完成程序的编写; 第710天 调试硬件系统和软件程序;第1113天 结果分析整理、撰写课程设计报告;第1415天 验收和答辩。 指导教师签

3、名: 年 月日一、课程设计项目名称基于51单片机的数字温度计的设计二、项目设计目的及技术要求2.1项目设计目的:1.理解掌握MCS-51系列单片机的功能和实际应用。2.掌握开发软件的使用,学会运用仿真软件画图,能够在数码管上显示温度值。3.掌握数字式温度计电路的设计、组装与调试方法。2.2设计技术要求:1.完成数字温度计的设计和调试。 2.要求用DS18B20测量室温,用四位八段数码管显示,并能设置显示精度。3.利用数字温度传感器DS18B20测量温度信号,计算后在LED数码管上显示相应的温度值。4.说明书使用A4打印纸计算机打印或手写,用Protel等绘图软件绘制电子线路图纸。三、项目设计方

4、案论证(可行性方案、最佳方案、软件程序、硬件电路原理图和PCB图 )3.1引言在日常生活及工农业生产中,经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持。其缺点有:1 硬件电路复杂;2 软件调试复杂;3 制作成本高。随着科技的不断发展,在三大信息信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术,在我国各领域已经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在

5、农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。目前的智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的,它是微电子技术、计算机技术和自动测试技术(ATE)的结晶,特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU)。社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展,本文将介绍智能集成温度传感器DS18B20的结构特征及控制方法,并对

6、以此传感器,AT89C52单片机为控制器构成的数字温度测量装置的工作原理及程序设计作了详细的介绍。3.2设计方案 方案一:设计一个测温电路,包括温度传感器,温度变送器,A/D转换电路。具体流程为温度传感器测量温度信号,经过温度变送器变换为电流信号,再通过A/D转换器转换为数字信号进入单片机进行处理,再在数码管上显示。采用热电偶温差电路测温,温度检测部分可以使用低温热偶,热电偶由两个焊接在一起的异金属导线所组成(热电偶的构成如图 3.1),热电偶产生的热电势由两种金属的接触电势和单一导体的温差电势组成。通过将参考结点保持在已知温度并测量该电压,便可推断出检测结点的温度。数据采集部分则使用带有A/

7、D 通道的单片机,在将随被测温度变化的电压或电流采集过来,进行A/D 转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。热电偶的优点是工作温度范围非常宽,且体积小,但是它们也存在着输出电压小、容易遭受来自导线环路的噪声影响以及漂移较高的缺点,并且这种设计需要用到A/D 转换电路,感温电路比较麻烦。图 3.1热电偶电路图方案二:考虑用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。温度测量上使用集成芯片DS18B20,实现温度测量

8、并输出数字信号,由单片机接收。该系统利用AT89C52芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度。方案选择:根据上述两种方案的设计思路可以看出方案一和方案二都是可行方案。方案一的测温装置可测温度范围宽、体积小,但是线性误差较大,方案二的测温装置电路简单、精确度较高、实现方便、软件设计也比较简单。综上所述,方案二更加容易实现和操作,而且电路相对简单,软件设计也比较简单,所以最佳方案应选择方案二。设计电路主要总体框图如图3.2所示。图3.2 电路设计总体框图3.3硬件模块设计本设计由DS18B20温度传感器芯片测量当前的温度并将转换后的结果送入单片机。然后通过

9、AT89C52单片机驱动八段共阴极LED数码管显示测量温度值。如附录一中本设计硬件电路图所示,本电路主要有DS18B20温度传感器芯片,共阴极数码管,AT89C52单片机及相应外围电路组成。其中DS18B20采用“一线制”与单片机相连。附录一的图中由单片机P0口串接锁存器74HC573驱动共阴极数码管,由单片机的P2.0、P2.1和P2.2口接74LS138译码器驱动其字位。由一个按键串接单片机的P3.0口来设置显示精度,由DS18B20温度传感器的DQ端和单片机的P1.3口连接来读入温度。3.3.1温度检测电路DS18B20 最大的特点是单总线数据传输方式,DS18B20 的数据I/O 均由

10、同一条线来完成。DS18B20 的电源供电方式有2 种: 外部供电方式和寄生电源方式。工作于寄生电源方式时, VDD 和GND 均接地, 他在需要远程温度探测和空间受限的场合特别有用, 原理是当1 W ire 总线的信号线DQ 为高电平时, 窃取信号能量给DS18B20 供电, 同时一部分能量给内部电容充电, 当DQ为低电平时释放能量为DS18B20 供电。但寄生电源方式需要强上拉电路, 软件控制变得复杂(特别是在完成温度转换和拷贝数据到E2PROM 时) , 同时芯片的性能也有所降低。外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳

11、定可靠的多点温度监控系统。因此本设计采用外部供电方式。如下图所示:DS18B20的管脚排列、各种封装形式如图3.3所示,DQ 为数据输入/输出引脚。DS18B20仿真图如图3.4所示。 图3.3 外部封装形式图3.4 DS18B20仿真图3.3.2数码管显示模块数码管连接电路如图3.5所示,P0口输出码型,P2口输出位选。锁存器74HC573起驱动作用,提供驱动电流供数码管发光。译码器74HC138将位选地址转换成位选信号,例如当前是第5个数码管显示,那么P2口输出位选地址05H,译码器输入CBA=110,输出位选信号Y7-Y0=11101111,其中Y5=0,第5个数码管选通并显示,其它数码

12、管不显示。实验时将J6的左边两个引脚针(1和2)用跳冒连接,锁存器11脚接VCC,关闭锁存功能。数码管显示方式为动态扫描方式,当P0口送第一个数0的码型到锁存器时,P2送位选地址01H,即Y0=0,只有第一个数码管亮,显示0,其他数码管不显示。当P0口送第二个数1的码型到锁存器时,P2送位选地址02H,即Y1=0,只有第二个数码管亮,显示1,其他数码管不显示。即每次只有一个数码管点亮,8个数码管是轮流被点亮的,轮流点亮的间隔时间很短(一般用延时程序延时几个毫秒),由于视觉的暂留现象,看到的却好象全都点亮着,这就是动态扫描。图3.5 数码管连接电路数码管显示数字的码型由数码管的数据脚adp决定,

13、图3.6为数码管的笔段分布图,由于是共阴极的,所以当adp为高电平时相应的笔段会亮,电路中P1.0P1.7分别接数码管的a.b.c.d.e.f.g.dp,得到09这10个数字的码型如表1所示。图3.6数码管的笔段分布图表1 数字的码型表引脚P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0数字码型笔段dpgfedcba0011111103FH00000110106H0101101125BH0100111134FH01100110466H0110110156DH0111110167DH00000111707H0111111187FH0110111196FH10000000小数点80

14、H3.4软件模块设计3.4.1程序介绍此程序是利用C语言编写,keil生成的HEX文件。程序分多个部分:主程序、DS18B20初始化程序、读取温度子程序、写温度子程序、显示子程序等。DS18B20初始化程序:初始化温度传感器DS18B20。读取温度子程序:控制温度传感器DS18B20获取DS18B20测量的温度值。写温度子程序:读出的温度写入DS18B20内带的寄存器中以便获取温度值。显示子程序:控制显示电路在8位数码管上显示出对应数值。程序功能:能够实时获取温度传感器DS18B20测量的温度值,以十进制的形式进行显示。3.4.2总程序流程图四、项目设计结果分析(分析试验过程中获得的数据、波形

15、、现象或问题的正确性和必然性,分析产生不正确结果的原因和处理方法)4.1结果分析数字式温度计的应用程序主要包括主程序,温度检测程序,温度转换程序, LED显示程序等。系统的主程序主要用来初始化一些系统参数,对DS18B20的配置数据进行一系列的设定。在测试方面,检查电路板及程序的运行情况,在检查无误后上电检查LED显示器。(1)在室温下,LED显示器示数为11.9摄氏度,如图4.1所示,用手盖住温度传感器后,LED显示器示数升高,比如升高到17.8摄氏度,如图4.2所示,时间越长,升的温度越高,松开手后,温度又慢慢降回室温。经分析可知,硬件调试结果也达到了要求。图4.1图4.2(2)上电后室温

16、最开始显示一位小数,长按S1键,直到数码管出现小数点,松手,这时温度示数由一位小数出现两位,如图4.3,再按S1,出现三位小数,再按S1,出现四位小数,如图4.4,再按S1又回到显示一位小数的状态,如此循环,在误差允许的范围内,由示数分析可知,达到了了设置显示精度的目的。图4.3图4.44.2分析与总结本次课设对我来说是一次难得的经历,在试验中遇到的主要问题如下:(1)装软件老是失败,不能正常运行,后来发现不能装在除C盘以外的地方。(2)编程,本次课设我是用的C语言编的,在参考别人成功先例的基础上根据自己设计的需要编制程序,其中历经不少曲折,遇到的最大问题是最开始编辑、链接、运行没有错误但不能

17、实现设计要求,经排错,后来发现是换了开发板,程序里的接口要改,要对应,最后用万用表检测,DS18B20的DQ端应与单片机的P1.3连,对应的程序要改。(3) 设置显示精度,在这个问题上花了很多时间,一开始编的程序只能显示一位小数,还可以显示C符号,但后来把程序改了,加了if的判断,设置全局变量,然后慢慢调试,最后能达到要求。(4) 仿真时数码管问题,用仿真软件仿真时,程序无问题,但不能显示,后来找到原因是数码管选择错了,应用共阴极而选择器件时点了共阳极。这次课程设计,我最深的感受是,编程一定要细心,针对每一个细节,稍有疏忽,程序就不能正常工作。试验中,觉得DS18B20温度传感器灵敏度不太高,

18、示数变化不大。另外,我前期花了一些时间专门学习这块芯片,了解DS18B20的工作原理的时序图。从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高。在这次的实践与学习中,尽管期间困难重重,但我还是从中学习了不少新的知识与技能和解决困难的方法,也终于体验到了经历困难到最终获得成功的那种无以言表的喜悦之情,总之,本次课设是我收获最多的一次,也希望自己在以后的各项研究活动中能坚持这种精神。五、参考文摘(相关文摘不少于5篇,记录每篇文献的作者姓名.文献名称.文献发行城市:文献出版社,出版年

19、;文献内容摘要, 每篇不少于100字)1李群芳,张士军,黄建. 单片微型计算机与接口技术(第3版).北京:电子工业出版社,2009.2楼然苗,李光飞. 单片机课程设计指导. 北京:北京航空航天大学出版社,2007.3牛昱光,李晓林. 单片机原理与接口技术(第二版).北京:电子工业出版社,2010.4韩志军.单片机系统设计与应用实例.北京:机械工业出版社,2009.5蔡明文,冯先成.单片机课程设计.武汉:华中科技大学出版社,2007. 6詹春华,杨沙. C语言程序设计教程.北京:科学出版社,2011.7朱定华,戴汝平.单片微机原理与应用.北京:清华大学出版社,2003.8潘永雄.新编单片机原理及

20、应用.西安:西安电子科技大学出版社,2003.附录一 总体设计电路图附录二 总体设计源程序#include#include#define uchar unsigned char#define uint unsigned int#define LED_DATA P0 /定义LED数据端口#define LED_CS P2 /定义LED位选端口sbit ERROR=P17; /当温度超过门限值时该端口输出高点平sbit P16=P16; sbit DS_DATA=P13; uchar table_cs9=0,0,0,0,0,0,0,0,11; /定义LED输出数组uchar intx_data=0

21、,inty_data;uchar key_change1,key_change2;uchar prs=5;uchar tmp2=0x00,0x00; /测量值uchar tmpH2=0xF0,0x00; /高门限制uchar tmpL2=0x00,0xFF; /低门限制sbit k1=P30;int jishu=0; /微秒级延迟void delay(int us) while(us-);/DS18B20初始化void init_DS18B20() DS_DATA=1; /总线复位 delay(8); DS_DATA=0; /拉低总线复位 delay(80); DS_DATA=1; /拉高总线

22、 delay(15); /等待50us后DS18B20复位/对ds18B20写一个字节控制字void WRITE_ONE_CHAR(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) DS_DATA=0; /单片机将一位总线拉低 DS_DATA=dat&0x01; /单片机输出一位数据 delay(5); /延迟,等待DS18B20读取 DS_DATA=1; /单片机释放总线输出一位完成 dat=1; /输出数据指向下一位 delay(5);/读取DS18B20一个字节数据unsigned char READ_ONE_CHAR(voi

23、d) unsigned char i=0; unsigned char dat = 0; for (i=8;i0;i-) DS_DATA=0; /单片机给予芯片低电平启动信号 dat=1; DS_DATA=1; if(DS_DATA) dat|=0x80; delay(5); return(dat);/DS18B20完成温度转换到读取数据void READ_TEMPERATURE(unsigned char *p) uchar a=0, b=0, num=0; uint zhengfu=0; init_DS18B20(); WRITE_ONE_CHAR(0xCC); /跳过读序号列号的操作 W

24、RITE_ONE_CHAR(0x44); /启动温度转换 delay(200); init_DS18B20(); /呼叫DS18B20 WRITE_ONE_CHAR(0xCC); /跳过读序号列号的操作 WRITE_ONE_CHAR(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度 *p=READ_ONE_CHAR(); /读取温度数据低8位 *(p+1)=READ_ONE_CHAR(); /读取温度数据高8位void LED_SHOW(unsigned int xnum) /0,1,2,3,4,5,6,7,8,9,-,小数点,空格, uchar table_LED13=0

25、x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x80,0x00; uchar i=0; table_csxnum=11; for(i=0;i0xf0) if(a!=0) a=(a-1); else b=b-1; a=0; b=b; table_cs0=10; zhengfu=1; num=a; num=num&0x0F; a=4; b=0xf0)tmpH1=tmpH1+1; tmpH0=tmpH0+0x10; else if(key_change2=2) /当P3.2被按下且P3.1被按下两次上升低门限制 if(tmpL0=0xf0)tmpL1=tmpL1+1; tmpL0=tmpL0+0x10; key_change1=0; if(key_change1=4) /当P3.3被按下

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

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