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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机课程设计报告基于AT89C51单片机的数显温度传感器设计Word文件下载.docx

1、电阻10k、3k、2k、1k、510、330各5各2位一体数码管共阳2AC/DC(5V/1A)电源单排插针 40双排插针 409X15cm万用板(3连孔)杜邦线15附件2:单片机原理及其应用课程设计设计报告格式成绩:重庆大学城市科技学院电气学院基于AT89C51单片机的数显温度传感器设计报告一、设计目的作用本设计是一款简单实用的小型数字温度计,所采用的主要元件有传感器DS18B20,单片机AT89C52,四位共阴极数码管一个,电容电阻若干。DS18B20支持“一线总线”接口,测量温度范围-55 +125。在-10 +85范围内,精度为0.518B20的精度较差,为 2 。现场温度直接以“一线总

2、线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。本次数字温度计的设计共分为五部分,主控制器,LED显示部分,传感器部分,复位部分,按键设置部分,时钟电路。主控制器即单片机部分,用于存储程序和控制电路;LED显示部分是指四位共阴极数码管,用来显示温度;传感器部分,即温度传感器,用来采集温度,进行温度转换;复位部分,即复位电路,按键部分用来设置上下限报警温度。测量的总过程是,传感器采集到外部环境的温度,并进行转换后传到单片机,经过单片机处理判断后将温度传递到数码管显示。二、设计要求(1)温度传感器DS18B20检测环境

3、温度。(2)用两个2位一体共阳数码管显示温度;(3)通过按键开关设定一个上限温度和一个下限温度,当检测的温度达到这个设定值时,用蜂鸣器实现报警,同时LED灯闪烁。三、设计的具体实现1、设计原理用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。(DS18B20数字温度传感器具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠,所以在该设计中采用DS18B20数字温度传感器测量温度。)实验名称是“基于AT89C51单片机

4、的数显温度传感器设计”,涉及到MCS-51系列的单片机,我们首先有设计一个能使单片机工作的最小系统,然后温度传感器将实时温度值送给单片机,通过对单片机进行软件编程实现数据处理,然后送给LED共阴数码管显示,在对单片机编程时要考虑到要使得能通过按键开关设置上限报警温度及下限报警温度,通过蜂鸣器报警,在报警的同时LED灯同步闪烁。设计任务书中已给出了元件清单,但是我们需要在软件中对自己设计的电路进行仿真我们还需要画出单片机的最小系统电路。总体电路结构框图所示:2、系统设计(详细介绍各单元电路的选择、设计及工作原理分析,并介绍有关参数的计算及元器件参数的选择等,要求有原理图。(1)、硬件设计硬件电路

5、设计通过单片机仿真软件Proteus 8.0进行原理图的编辑,根据实验要求及所给出的元件设计出如下电路原理图,并进行了仿真时钟及复位模块实验所给的元件中直接已给出了AT89C51的最小系统板,但是我们在设计电路时还是你需要画出该部分电路,时钟复位为能使单片机工作的最简单的电路,又称最小系统。具体实验电路如下:时钟电路有12MHz的晶振及两个2030PF的瓷片电容(无极性)连接在单片机的XTAL1及XTAL2连个端口;复位电路由10K的电阻,10UF电解电容(有极性)以及按键开关组成,接在单片机的RST口。当系统出现故障错误,我想让系统恢复初始化状态可以通过对按动按键开关实现对电容的充放电从而实

6、现系统的复位。蜂鸣器报警及LED显示模块蜂鸣器用于当温度传感器的输入的温度数值大于认为设定的上限温度或者小于下限温度时,系统会给出相应的信号使得蜂鸣器发出声音同时让LED灯闪烁显示,从听觉和视觉上同时提出报警信号。电路图如下:蜂鸣器由一个PNP型的三极管驱动接在单片机的P1.0口,当P1.0口输出低电平是蜂鸣器发出声音;LED灯正极通过1K的电阻上拉接Vcc,负极接在单片机的P1.1口,当系统在P1.1口输出低电平时LED灯亮。共阳数码管显示显示模块实验给出的数码管为2位一体共阳的数码管,在实验显示中我们需要四个数码管去显示相应的温度,所以采用两个2位一体共阳数码管并联当做一个4位一体的共阳数

7、码管。电路原理图如下:数码管的使用设计到了段选及位选,我们把段选接在单片机的P0口 ,位选接在数码管的P2.4P2.7口,需要注意的是此数码管为共阳的,所以P0口输出的低电平完全可以驱动数码管的段选显示,但是位选输出高电平不足以驱动数码管显示导致数码管的亮度不够,此时我们需要在数码管的位选段接上相应的1K的上拉电阻,这样数码管的亮度就可以明显的得到提升。DS18BB20温度传感器模块DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。接在单片机

8、的P2.3口,DS18B20的DQ端需要接一个4.7K左右的上拉电阻。按键控制模块按键是用来设置报警的上下限温。K1是用来进入上下限调节模式的,当按一下K1进入上限调节模式,再按一下进入下限调节模式。在正常模式下,按一下K2进入查看上限温度模式,显示1s左右自动退出;按一下K3进入查看下限温度模式,显示1s左右自动退出;按一下K4消除按键音,再按一下启动按键音。在调节上下限温度模式下,K2是实现加1功能, K1是实现减1功能,K3是用来设定上下限温度正负的。(2)、软件设计通过单片机编程软件Keil 4进行编程,程序部分通过一个主函数和自定义的三个#includeds18b20.h #incl

9、udekeyscan.hdisplay.h 头文件,分别完成温度的采集转化、通过键盘设定上下限报警温度以及模式的切换、通过定时器0延时使数码管动态显示温度系统的主流程图:3、系统实现(详细介绍实物连接图及运行程序时的每种结果,要求有图为证,并对每张图片进行简单的说明)根据系统的设计框图,查找相关资料,在Proteus 8.0中画出原理图,在KEIL 4软件中编写好程序,然后将这两个软件结合,将写好的程序在Proteus 8.0中烧录进单片机,然后开启仿真开关,即可显示设计效果,通过修改硬件电路的同时结合程序,实现实验要求。然后开始焊接硬件电路,在多孔板上焊出相应的电路,用杜邦线将各个模块与单片

10、机最小系统板连接在一起得到最终电路,用烧录软件将程序烧录进单片机,最终以实际电路的形式展现出成果。系统的调试及性能分析:硬件调试,首先检查电感的焊接是否正确,然后可用万用表测试或通电检测。软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和现实数据刷新子程序等的编程及调试四、总结(对整个设计工作过程进行归纳和综合,对设计中所存在的问题和不足进行分析和总结,提出解决的方法、措施、建议和对这次设计实践的认识、收获和提高。通过本次课程设计使我收获很多,从一开始对单片机仿真软件的使用到后来渐渐的熟悉,深深感觉到了我们在设计电路的时候

11、为了验证我们方案的可行性,我们必须借助一些仿真软件,来模拟我们设计的电路,这样既可以节省本也使得我们焊接实物时有了很好的依据,要学会以这种方法为基础再来焊接电路。通过系统仿真软件Proteus和编译软件Keil,使我们进一步了解了单片机的设计制作过程,其中最为困难的是软件部分,即编程部分,我们上网找了好多资料,虽然经过自己的修改,但还是有很多功能不能实现,如温度上下限设置。由于Proteus并不是很熟练,在使用的过程中有很多原件的名称不知道,从而花费了大量的时间查阅资料。在应用仿真的过程中,还出现了仿真软件出现问题,不管怎样修改程序,结果在仿真软件上还是出现错误,后来发现是我们使用的软件是盗版

12、的所以他可能在仿真过程中出现错误,最终决定先将硬件焊接出来将程序写进去看看结果,再对软件进行相应的调整,最后焊接出来将程序写进单片机经过简单的调整实现了实验要求。最后一步的焊接硬件也遇到了不少麻烦。综上所述我们得出这样的结论,应该借助软件仿真证明我们方案的可行性,设计时实际电路和我们理论上的数值是有所差别的,我们也要学会将理论知识与实际结合起来,这样我们才能在实际中提高自我能力,我们才能真正理解并在实际中运用我们的知识。五、附录附录一:元件清单附录二:实物焊接图附录三:程序/* 程序名; 基于51单片机的温度计* 功能:实时测量温度,超过上下限报警,报警温度可手动调整。 K1是用来进入上下限调

13、节模式的,当按一下K1进入上限 调节模式,再按一下进入下限调节模式。在正常模式下, 按一下K2进入查看上限温度模式,显示1s左右自动退出; 按一下K3进入查看下限温度模式,显示1s左右自动退出; 按一下K4消除按键音,再按一下启动按键音。在调节上 下限温度模式下,K2是实现加1功能,K1是实现减1功能, K3是用来设定上下限温度正负的。*/#include intrins.h /将intrins.h头文件包含到主程序(调用其中的_nop_()空操作函数延时)#define uint unsigned int #define uchar unsigned char uchar max=0x00,

14、min=0x00; /max是上限报警温度,min是下限报警温度bit s=0; /s是调整上下限温度时温度闪烁的标志位,s=0不显示200ms,s=1显示1s左右bit s1=0; /s1标志位用于上下限查看时的显示void display1(uint z); /声明display1()函数(display.h头文件中的函数,ds18b20.h要用应先声明)#include /*/* 主函数 /*/void main() beer=1; /关闭蜂鸣器 led=1; /关闭LED灯 timer1_init(0); /初始化定时器1(未启动定时器1) get_temperature(1); /首

15、次启动DS18B20获取温度(DS18B20上电后自动将EEPROM中的上下限温度复制到TH和TL寄存器) while(1) keyscan(); get_temperature(0); display(temp,temp_d*0.625); alarm(); /* ds18b20keyscan函数通过键盘设定设定上下限报警温度*/#ifndef _keyscan_H_ /定义头文件#define _keyscan_H_sbit key1=P22;sbit key2=P21; sbit key3=P20;sbit key4=P33;uchari=0; /定义全局变量i用于不同功能模式的选择,0

16、正常模式,1上限调节模式,2下限调节模式uchar a=0; /定义全局变量a用于不同模式下数码管显示的选择bit k4=0; /K4按键双功能选择位,k4=0时K4按键选择消按键音的功能,k4=1时K4按键选择正负温度设定功能bit v=0; /K2、K3按键双功能选择位,v=0时选择上下限查看功能,v=1时选择上下限温度加减功能bit v1=0; /v1=1时定时1250ms时间到自动关闭报警上下限查看功能bit v2=0; /消按键音功能调整位,为0时开按键音,为1时关按键音/* 读键盘延时子函数 /void keyscan_delay(uint z) /延时1ms左右uinti,j;f

17、or(i=z;i0;i-) for(j=120;jj-);/* 温度调节函数 /inttemp_change(intcount,bit f) /上下限温度调整 if(key2=0) /判断K2是否按下 if(v2=0)beer=0; /v2=0开按键音,否则消按键音 keyscan_delay(10); /延时10ms if(key2=0) /再次判断K2是否按下(实现按按键时消抖) beer=1; /K2按下关按键音 if(f=0) /若温度为正 count+; /每按一下K2温度上调1 if(a=1)if(count125) count=125;/当温度值大于125时不上调 if(a=2)

18、if(count if(f!=0) /若温度为负 count+; /每按一下K2温度下调1 if(a=1)if(count55) count=55;/当温度值小于-55时不再下调 while(key2=0); /K2松开按键时消抖 if(key3=0) if(key3=0) /K3按按键时消抖 count-; /每按一下K3温度为正时下调1,为负时上调1 if(a=1)if(count0) count=0;/当温度值达到0时不再调 if(a=2)if(count2) /K1按下三次后退出调节模式 i=0; /进入正常模式 TR1=0; /关定时器1 k4=0; /在正常模式下选择K4的消按键音

19、功能 v=0; /在正常模式下选择K2、K3的查看上下限报警温度功能 store_t(); /存储调整后的上下限报警温度 switch(i) /显示选择 case 0:a=0;break; /a=0选择显示测得的温度 case 1:a=1; /a=1选择显示上限温度 case 2:a=2; /a=2选择显示下限温度 default: while(key1=0); /K1松按键时消抖 if(a=1&v=1) /a=1选择显示上限温度且v=1时选择上下限温度加功能 led=0;max=temp_change(max,f_max);/显示上限温度 else if(a=2&v=1) /a=2选择显示下

20、限温度且v=1时选择上下限温度减功能 led=1;min=temp_change(min,f_min); else; if(k4=1) /k4=1时K4按键选择正负温度设定功能 if(key4=0) if(v2=0)beer=0; keyscan_delay(5); if(key4=0) beer=1; if(a=1) if(max55) f_max=0;else f_max=f_max;/当温度大于55度时,只能设定为正温度 if(a=2) if(minelse f_min=f_min;/当温度大于55度时,只能设定为正温度 while(key4=0); keyscan_delay(10);

21、 if(v=0) /v=0时选择上下限查看功能 if(key2=0) if(key2=0) a=1; /选择上限显示 TR1=1; /开定时器1开始定时一分钟左右 s1=1; /上限显示不闪烁,显示一分钟左右自动退出 while(key2=0); if(key3=0) if(key3=0) a=2; /选择下限显示 /开定时器1开始定时1s /下限显示不闪烁,显示1s自动退出 while(key3=0); if(v1=1) /v1=1时定时1s时间到自动关闭报警上下限查看功能 a=0;v1=0;TR1=0; /a=0显示实测温度,v1清零,关定时器1 if(k4=0) /k4=0时K4按键选择消按键音的功能 if(v2=0)beer=0; keys

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

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