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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于单片机和DS18B20的多路温度控制系统.docx

1、基于单片机和DS18B20的多路温度控制系统院(系):光电信息科学技术学院姓名学号毕业届别专业电子信息工程毕业论文(设计)题目基于单片机的多路温度控制系统指导教师学历职称讲师 所学专业通信与信息系统具体要求(主要内容、基本要求、主要参考资料等):主要内容:学习单片机STC89C52和温度传感器DS18B20的相关知识,结合单片机的理论与应用知识,使用单片机控制两路传感器并联进行温度采集和报警控制。基本要求:培养学生解决实际问题的能力及初步的理论研究能力;查阅文献资料、调查收集信息的能力;独立思考,认真钻研,提出方案并论证方案的能力;设计、计算、绘图能力;实验数据分析与处理的能力;外文阅读、计算

2、机应用能力;撰写实验报告、设计说明书、技术总结和论文的能力;语言表达、思辨能力。参考资料:新概念51单片机C语言教程;单片机原理及接口技术;DALLAS公司的DS18B20的数据手册进度安排:2012-2013-1学期:1416周,确定指导教师,选题。2012-2013-2学期:14周查阅资料、学习相关软件,确定设计方案;58周系统硬件设计;911周系统软件设计及系统调试;1213周撰写、修改毕业论文;1415周系统验收、论文答辩。指导教师(签字): 年 月 日院(系)意见: 教学院长(主任)(签字): 年 月 日备注:摘要在计算机技术广泛应用的今天单片机也得到了广泛的使用,应用单片机的产品已

3、经出现在我们日常生活的每个角落。本次设计器材主要有STC89C52单片机、DS18B20温度传感器、LED共阴数码管。本次设计先是通过Keil软件进行编程生成Hex文件,然后下载到单片机中进而控制DS18B20温度采集并通过数码管显示。本文重点完成了单片机基本的I/O口的功能实现、DS18B20的功能实现与特点、温度传感器的软件读写程序、数码管位选段选实现程序、独立键盘控制两路温度的显示和温度报警的实现。关键词 STC89C52单片机;DS18B20;LED;独立键盘Abstract In the age of computer technique,the microcontroller ha

4、s also been widely used,and we can see the products of microcontroller everywhere in our daily life.The equipment used of The design,contain STC89C52 microcontroller,DS18B20 temperature sensor,common cathode LED.This design first run through Keil software,producing Hex file,and then downloaded to th

5、e MCU to control DS18B20 temperature collecting and through digital tube display.This paper mainly introduces the single chip microcomputer of the realization of the function of the basic I/O port,the functions and features of DS18B20,the temperature sensor of the software to read and write procedur

6、es,digital tube location and passage chose program,two way independent keyboard control display of temperature and temperature alarm. Key words STC89C52 microcontroller; DS18B20; LED; Separate keyboard目 录1 绪 论 12 系统的设计方案 22.1 设计任务 22.2 设计原理 23 器件的选择 33.1单片机STC89C52 33.2 DS18B20 34 模块设计 64.1 晶振电路和复位电

7、路 64.2 温度采集电路 64.3 键盘单元 64.4 显示电路 65 系统硬件实现 86 软件实现 116.1 DS18B20工作时序 116.2 程序实现 126.2.1 DS18B20的指令集: 126.2.2 编程 13结 论 16致 谢 17参 考 文 献 18附录 191 绪 论在此科技迅速发展的年代,在人们的生产和生活中已经广泛使用温度采集控制,人们采集温度通常使用温度计,而人们控制温度的方式一般是通过通风或者人工操作加热或降温,可是控制效果不好、时效性也不好,而且工作员工的工作硬度比较大。虽然现在相当一部分用户的温度传感器是用半导体二极管充当,但这样做有不好的交换性和太好的成

8、绩。因为对温度要求较高的行业比较多,并且引发事故的多数是由于环境温度变化不合理造成,并且还有很多操作人员安全收到威胁的情况,所以,将数字温度测量及控制设备安装在不安全环境的某些特定位置,在温度超过某范围就报警。本设计由于使用了智能温度传感器进行控制,这种传感器具有比较高的测量精度,简单的操作,并且还具有比较便宜的价格,本设计是一个基于单片机的数字温度采集及控制系统。随着社会的发展,愈来愈多的行业需要进行温度的采集及控制,致使本课题变得很重要。温度传感器DS18B20 所采集的温度先发送至单片机STC89C52,然后STC89C52对数据进行进一步的分析处理,进而使其能在LED数码管上表示出来,

9、并通过温度控制相连的报警或其他系统。通过学习该课程使我们全面的了解单片机和温度传感器、掌握此传感器与单片机各模块电路的连接线路和程序的编写的过程,从而锻炼我们在使用单片机进行各种设计方面的实践活动和动手能力。2 系统的设计方案2.1 设计任务本次设计主要是通过按键选择两路DS18B20进行温度采集,并传到主机进行处理,然后主机把处理好的温度值发送到数码管上显示并控制温度报警。而在本次设计中,两路温度传感器采用与主机的单总线进行并联方式,这样就需要对两路温度传感器分开进行处理。这里就用到了温度传感器的匹配ROM编码命令进行对两路温度传感器的识别,此时用独立键盘进行控制选择哪一路温度传感器进行温度

10、采集。2.2 设计原理根据系统的设计要求, DS18B20作用此次设计使用的数字温度传感器和单片机则使用STC89C52。当主机STC89C52给从机DS18B20发送采集温度命令后,从机DS18B20响应主机并进行模数转换,发往主机STC89C52自己所测得的二进制温度数据;单片机对从机DS18B20发送来的温度数据按照自己存储的程序进行处理,使之变成十进制温度数值,并通过单总线发送到数码管(LED)显示,蜂鸣器根据温度数值来进行报警;由键盘控制电路选择对哪路DS18B20发送读取温度命令,进而数码管显示。系统设计框图如图2.1 图 2.1 设计原理图3 器件的选择3.1单片机STC89C5

11、2 STC89C521作为本次设计使用的单片机(引脚图如图3.1),一是因为本人手中有现成的STC89C52单片机的开发板,可以方便调试和使用,二是STC89C52单片机和市面流行的单片机一样,容易上手,并且特性比较好。此设计使用到单片机的P0口作为数据线控制四位共阴数码管的段选而来传输数据,使用单片机的P2的2.3.4口连接74LS138译码器的输入引脚来控制四位数码管的位选,使用P37口连接两个DS18B20的数据线引脚,使用P20连接一个独立按键来控制传感器的选择。 图3.1 单片机引脚本3.2 DS18B20 DS18B202温度传感器(如图3.2)是美国Dallas公司的一线器件,它

12、内部结构主要由四部分(如图3.3)组成: 64 位光刻ROM、温度传感器、非挥发的温度存储器 、配置寄存器;即使用单一的数据线与主机进行数据交换。DS18B20由于其各方面都优点使它得到公众的认可,而得到广泛的使用。本次设计使用两个DS18B20都与单片机STC89C52的一个I/O口相连,利用他们两个ROM序列号的不同来控制它们分别进行温度的采集和控制。图 图3.2 DS18B20引脚 图 3.3 DS18B20内部结构光刻ROM(如图3.4)在出厂前64位编码号就被光刻设置好了,并且每个DS18B20的ROM序列号都是世上唯一存在的。单片机可以通过单一的总线与多个DS18B20相连并互不影

13、响低采集温度正是基于每个DS18B20 ROM的数据都不同的原理。 图 3.4 DS18B20ROM编码DS18B20中的温度传感器(如图3.5),以16位的二进制值来保存采集的数据,S为符号标志位。 图 3.5 DS18B20温度传感器配置寄存器(图3.6)主要是用于通过R1和R0来设置DS18B20的分辨率(DS18B20出厂默认设置为12),他们的对应关系如图3.7。 图 3.6配置寄存器 图 3.7 DS18B20分辨率设置图 3.8 高速暂存存储器 高速暂存存储器RAM(如图3.8)由9个字节组成,主要用于存储温度数据、设置高低温阀值和校验。 4 模块设计4.1 晶振电路和复位电路晶

14、振电路和复位电路如图4.1和4.2。晶振电路中本次设计使用的是STC89C52的片内时钟振荡方式,器件数值大小如图4.1所示。单片机的晶振采用11.0592MHZ,此频率对应的振荡周期即为单片机的振荡周期,外加两个的电容选取大小为30pF的,振荡器的作用主要是产生时钟振荡,这个电路即可产生自激振荡。对于复位电路,STC89C52采用的是更加直接和简单的复位(如图4.2)。RST是复位输入引脚,在按下按键后,系统自动复位,非常容易,而上拉电阻起到限流作用,保护电路。图4.1 晶振电路 图4.2 复位电路4.2 温度采集电路温度采集电路即使DS18B20和单片机连接,如图4.3。本次设计中使用DS

15、18B20与的P37口相连的方式,由于STC89C52单片机的P37口没有内置上拉电阻,所以使用它时需要接上拉电阻。本次设计中采用两路DS18B20 的数据线都与P37相连的并联的单总线方式。 图4.3DS18B20连接电路 4.3 键盘单元本次设计使用了一个独立按键,按键开关状态通常是需要去抖后确定的,本次设计中采用的方法是,在检测到有键按下时,不是去先执行原程序,而是先执行一个时间很小的延时程序,然后再次检测该键是否还是按下状态的软件去抖,如该键还是按下状态则输入此键按下的信息,从而达到去抖动功效。4.4 显示电路本次设计并没有采用现在比较流行的LCD液晶显示器,而是采用了价格比较便宜并容

16、易操作的LED数码管显示器(如图4.4)。本部分电路是使用锁存器74LS573连接单片机和四段数码管,单片机通过P0口数据线将要显示的数值先送达锁存器74LS573,再由74LS573传输到数码管显示,从而控制数码管的段选,进而实现数码管上显示传输来的数据,而通过P2的三个 图 4.4共阴数码管3 I/O口经过138译码器控制数码管的位选线来控制显示数码管的位。而在控制数码股的位选上,采用了74LS138译码器(如图4.5),P2的2.3.4口连接译码器的三个输入引脚,前四个输出引脚连接4位数码管。 图4.5 74LS1385 系统硬件实现本次设计使用到的器件如表1表1 器件的使用表器件名称数

17、量STC89C52单片机1个12M晶振1个独立键盘2个共阴数码管4位万通板1个DS18B202个74LS138 1个74LS5731个蜂鸣器1个电阻若干导线若干电容若干 STC89C52的P37与两路DS18B20的数据连接时(如图5.1)以并联形式。本次设计使用P2口的2.3.4口来控制74LS138译码器来控制四位数码管,从而达到节约使用单片机I/O口资源,具体连接电路如图5.2,译码器的真值表如表2。图 图 5.1传感器并联 表2 74LS1384译码器的真值表输入输出STA/STB/STCA2A1A0/Y0/Y1/Y2/Y3/Y4/Y5/Y6/Y7HHHHHHHHHHHHHHHHHHL

18、HHHHHHHHHLLLLLLHHHHHHHHLLLLHHLHHHHHHHLLLHLHHLHHHHHHLLLHHHHHLHHHHHLLHLLHHHHLHHHHLLHLHHHHHHLHHHLLHHLHHHHHHLHHLLHHHHHHHHHHL 图 5.2译码器的连接系统总体连接实现的效果图如图5.3图 5.3 系统硬件连接效果6 软件实现6.1 DS18B20工作时序DS18B20按协议执行的工作流程:初始化时序ROM操作指令存储器操作指令数据传输。其工作时序包括: 初始化时序 ;写时序; 读时序 图 6.1 初始化时序初始化时序(如图6.1):主机先向数据线发出一个低脉冲,然后将其恢复,而主机

19、此后对总线进行检测,如有器件存在并应答那么总线会是低电平,否则总线是高电平。从机DS18B20上电后一直检测总线,如果在总线上有500s左右低电平,则DS18B20会对主机应答即将总线将拉低60240微秒,告诉主机自己已做好准备;否则它会一直进行检测。主机操作DS18B20是通过向其发送写与读命令控制的,而这些命令都是单独一位一位写和读的,即向DS18B20的写0、写1、读0和读1,一下就是这些时序。对DS18B20写时序(如图6.2):主机进行写周期时,先将总线拉低1微秒以表示写周期的开始,此时若想写0则继续拉低总线,若想写1则释放总线为高,写周期至少60微妙;而从机在写周期开始15微秒后就

20、检测总线,在总线被拉低1微秒后,从机采样到总线为高则为1,否则为0图 6.2 写周期时序主机为STC89C52,从机为DS18B20,写周期最长不超过120s,最少为60s。DS18B20读时序(如图6.3):从机在检测到主机拉低总线1微秒后读周期开始,从机将数据送到总线,送1则将总线释放为高,送0则继续拉低总线,读周期至少60微秒;主机在读周期开始后的15微秒内检测总线电平,高则读1,低则读0。主机为STC89C52,从机为DS18B20,完成一个读时序过程,同样也需要至少60us。图 6.3读周期时序6.2 程序实现6.2.1 DS18B20的指令集:主机必须按协议对 DS18B20进行各

21、种读写操作,根据DS18B20协议的规定,单片机需经过以下 4 个步骤对 DS18B20 进行温度采集: (1)每次对DS18B20进行读写操作之前,都必须对其进行复位初始化。(2)发送一条 ROM 指令(如图6.4)图 6.4ROM操作指令(3)发送存储器指令(如图6.5) 图6.5存储器指令(4)单片机STC89C52接受DS18B20传来的温度数据6.2.2 编程根据系统流程图6.6进行编程如附录程序,这样我们可以清楚了解本次设计的程序编写过程。 选择B传感器 选A片 是 否图6.6系统设计流程图 1.读ROM编码过程,在进行本次实验前需要预先读出两路DS18B20的ROM编码以区别两个

22、DS18B20,此时需要借助单片机的串口调试助手。先对系统初始化,然后使用程序借助串口调试助手分别读取两个ROM编码,然后将ROM编码固化到系统编程中。2.对单片机定时器初始化时对定时器设定初值TH1 = 0xD8; TL1 = 0xF0;以时定时器每10000个时钟周期中断一次,故定时每经过10000*1us=10ms时间中断一次。3.DS18B20的操作,对DS18B20初始化,进而确定其存在并且已经准备好,如附录void Init18b20 (void);对DS18B20进行读字节操作附录子程序的unsigned char ReadByte (void) 对DS18B20进行写字节操作即

23、附录程序void WriteByte (unsigned char idata wr) 对DS18B20读写字节操作前都需要先对其进行初始化,而当其执行完温度转换命令后将温度值以二进制存放在高速暂存存储器的低两个字节,然后向单片机发送数据,此时单片机需要先将这低两个字节的温度数据整合为一个数据如附录程序中的void GemTemp (void),然后再将温度值经过取小数和取整数部分后转换为十进制数值并经显示电路显示。4.由于本次设计使用到了两路DS18B20,程序控制它们读取温度时需要先对它们的ROM编码进行匹配,即先向总线发送匹配ROM的命令WriteByte (0x55)随即发送其中一个D

24、S18B20的ROM序列号,然后发送温度转换命令WriteByte (0x44);然后再发送匹配ROM的命令WriteByte (0x55)随即仍发送这个DS18B20的序列号,然后发送读温度命令WriteByte (0xBE)后,这样既能读取这个DS18B20测得到温度。这里对总线发送匹配命令接着发送其中一个的序列号后,只有与这个序列号匹配的 DS18B20才会响应主机的进行温度采集。程序写好之后再Keil软件中进行编译运行生成Hex文件,再经过单片机烧录工具下载到单片机中,系统就可以实现。结 论毕业设计选题时之所以选择多路温度采集控制系统,主要是旨在学习时下应用广泛的单片机,再者是因为对温

25、度采集系统感兴趣。设计起初,我先是对STC89C52单片机进行学习了解,后搜集并学习DS18B20的数据手册,接着学习了共阴数码管和独立键盘的使用方法。本次设计使用单片机控制温度传感器测试温度和数码管的显示以及蜂鸣器的报警,实现了以单总线方式相连两路温度传感器并能实时采集和显示两点的温度而且进行高温度的蜂鸣器报警。在此次实践中本人学习了相关器件的使用,锻炼了动手和独立解决问题的能力;并且在Keil软件编程中反复调试程序,也锻炼了本人的耐心,虚心接受并检查错误。致 谢在本次设计开始时,导师晋老师对本人讲解了本次设计的基本过程和注意事项,让我有了总体设计轮廓。并且还给我指导每个阶段的学习,给我了很

26、大帮助和支持。通过本次毕业设计,从论文选题到搜集资料,从写提纲到开始动手进行设计,从开始调试程序到最后程序能正常运行,期间经历了喜悦、烦躁、痛苦和开心。在这毕业设计结束之时,论文得以顺利完成,非常要感谢导师的指导,还有几位同学的帮助。参 考 文 献1李朝青.单片机原理及接口技术北京北京航天航空大学出版社20052Dallas.DS18B20数据手册3郭天祥.新概念51单片机C语言教程北京电子工业出版社20094余孟尝.数字电子技术基础简明教程北京高等教育出版社版社2006附录#include #include extern GetTemp(); /声明引用外部函数extern unsigned

27、 int idata Temperature; / 声明引用外部变量void delay(unsigned int i);/else I0sbit LS138A=P22; /管脚定义sbit LS138B=P23;sbit LS138C=P24; sbit D18B20=P37;#define NOP() _nop_() /* 定义空指令 */#define _Nop() _nop_() /*定义空指令*/sbit key=P20;sbit ming=P15;/此表为 LED 的字模, 共阴数码管 0-9 - Unsigned char code Disp_Tab = 0x3f,0x06,0x

28、5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40; unsigned long LedOut5,LedNumVal,temp,tem;void system_Ini() TMOD|= 0x11; TH1 = 0xD8; /10000个机器周期(10000*1s) TL1 = 0xF0; IE = 0x8A; TR1 = 1;bit flag;unsigned int idata Temperature;unsigned char idata temp_buff9; /存储读取的字节,read scratchpad为9字节,read rom ID为8字节uns

29、igned char idata id_buff28=0x28,0xE2,0x70,0xB4,0x03,0x00,0x00,0x4F;unsigned char idata id_buff18=0x28,0x29,0xBB,0xBF,0x03,0x00,0x00,0xEE; unsigned char idata *p,TIM;unsigned char idata crc_data;void TempDelay (unsigned char idata us)/ 延时处理 while(us-);void Init18b20 (void) /18B20初始化 D18B20=1; _nop_(); D18B20=0; TempDelay(80); /delay 530 uS/80

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

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