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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

课程设计实验报告温度计的设计.docx

1、课程设计实验报告温度计的设计课程设计报告课题名称:基于DS18B20的温度计的设计* * 学 号:* 班 级:11级通信工程 时 间:2014年6月10日 摘要 本实验介绍了一种基于单片机控制的数字温度计,就是用单片机AT89C51实现温度测量和报警,采用DS18B20温度传感器来作为温度监测元件,测温范围是-30度120度,使用LCD显示模块,能通过按键调整报警的上下限温度。该电路设计结构简单,可靠性高,功能强大。关键词:单片机,温度计,AT89C51,DS18B20,LCD显示Abstract The design of the Digital Thermometer,using AT89

2、C51 MCD as the core to control the temperature measurement and alarm,uses DS18B20 temperature sensor for temperature monitoring device,which can measure temperatures from -30 to 120 degrees. This study uses LCD to show the current temperature. It can adjust the upper and lower temperature of the ala

3、rm by the three buttons. This circuit design has simple structure, high reliability and powerful functions. Key words: MCD, Thermometer, AT89C51, DS18B20, LCD1.设计目标41.1设计要求41.2设计背景42.设计方案2.1 设计思路 42.2 设计框图 42.3 所需器材 53.硬件设计 5 3.1主控制器AT89C51 5 3.2温度传感器DS18B20 5 3.3 各部分电路说明 7 3.3.1 晶振电路 7 3.3.2 复位电路 8

4、 3.3.3 蜂鸣器和指示灯电路 8 3.3.4 DS18B20温度采集电路及按键控制电路 8 3.3.5 LCD显示电路 84.电路测试及分析 9 4.1 实物图 9 4.2 实测结果9 4.2.1温度显示及报警 9 4.2.2掉电保存 105.总结 11附录一、proteus仿真电路图 11附录二、总程序 111.设计目标1.1 设计要求 1、使用DS18B20温度传感器设计温度测量电路,温度范围设置为-30度到150度。2、能进行温度显示3、温度报警设定,掉电后数据保存。4、温度超限报警功能。1.2 设计背景在一些传统温控系统电路中,广泛采用的是通过热电偶、热电阻或PN结测温电路经过相应

5、的信号调理电路,转换成AD转换器能接收的模拟量,再经过采样保持电路进行AD转换,最终送入单片机及其相应的外围电路,完成监控。但是由于传统的信号调理电路实现复杂、易受干扰、不易控制且精度不高。 本实验介绍单片机结合DS18B20进行温度控制系统设计,因此,本系统用一种新型的可编程温度传感(DS18B20),不需复杂的信号调理电路和AD转换电路能直接与单片机完成数据采集和处理,实现方便、精度高,可根据不同需要用于各种场合。2.设计方案2.1设计思路在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,

6、就可以满足设计要求。显示模块采用的是液晶显示屏。2.2温度计电路设计总体设计方框图如图1所示 2.3所需器材 AT89C51芯片一个,DS18B20温度传感器一个,LCD液晶屏一个,22pF电容2个,12M晶振1个,10uF电容1个,触碰式按键4个,220欧电阻3个,1K欧电阻一个,4.7K欧电阻一个,10K欧电阻一个,10K欧滑动变阻器一个,1K欧排阻一个,三极管一个,蜂鸣器一个,LED灯2个。3.硬件设计 3.1 主控制器AT89C5140个引脚,4k bytes flash片内程序存储器,128 bytes的随机存取数据存储器(ram),32个外部双向输入/输出(I/O)口,5个中断优先

7、级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。单片机AT89S51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。单片机AT89S51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电

8、路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。3.2 温度传感器DS18B20DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。 TO92封装的DS18B20的引脚排列见下图。 DS18B20的特点如下:1、适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数 据线供电。2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。3、 DS18B20支持多点

9、组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。4、DS18B20在使用中不需要任何外围元件,全部 传感元件及转换电路集成在形如一只三极管的集成电路内。5、温范围55+125,在-10+85时精度为0.5。6、可编程 的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。7、在9位分辨率时最多在 93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。8、测量结果直接输出数字温度信号,以一 线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。9、负压特性:电源极

10、性接反时,芯片不会因发热而烧毁, 但不能正常工作。10、内部含有E2PROM,其报警上、下限温度值和设定的分辨率倍数在芯片掉电的情况下不丢失。DS18B20温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为字节的存储器,结构如图3所示。头个字节包含测得的温度信息,第和第字节和的拷贝,是易失的,每次上电复位时被刷新。第个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3所示。低位一直为,是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS1

11、8B20出厂时该位被设置为,用户要去改动,R1和0决定温度转换的精度位数,来设置分辨率。温度 LSB温度 MSBTH用户字节1TL用户字节2配置寄存器保留保留保留CRCDS18B20的初始化1.时序图 2.写时序图 3.读时序图3.3 各部分电路说明 3.3.1 晶振电路 每个单片机系统里都有晶振,全程是叫晶体震荡器。如右图电路所示,C1、C2为瓷片电容,其大小均为22PF;X1即为晶振,其大小为11.0592MHz,电路中的XTAL1与XTAL2分别与AT89S51的第19脚和第18脚相连。在单片机系统里晶振的作用非常大,他结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的

12、执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快。 3.3.2 复位电路 单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。如上图所示电路可实现上电复位与手动复位。图中的SW为微动按钮,C3为电解电容,其大小为10uF/16V,所用的电阻R为10K。手动按钮复位需要人为在复位输入端RST上加入高电平。当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。 3.3.3 蜂鸣器和指示灯电路 当温度在安全范围内时,D2灯保持点亮;当超出安全温度时,

13、D1灯点亮,同时,蜂鸣器报警。 3.3.4 DS18B20温度采集电路及按键控制电路电路中采用R2为4.7K的上拉电阻,作用是在电路驱动器关闭时给线路(节点)以一个固定的电平。三个按键是用来调整温度报警的上下限值。3.3.5 LCD显示电路 本实验中是采用的LCD液晶显示模块。4.电路测试及分析 4.1实物图 实物图如下所示,左边是正面图,右边是反面图。 4.2 实测结果 4.2.1 温度显示及报警左图中显示的温度下限是26度,当实际温度下降到温度下限以下时,D1等点亮,蜂鸣器报警;右图显示的是温度上限80度,实际温度高于下限温度,D2灯点亮,且蜂鸣器不响。 4.2.2 掉电保存 下面左图显示

14、的是掉电前温度上限设置为69度,右图是掉电后重启时,温度上限仍为69度,实现了掉电后保存温度上下限。5.总结 经过我们小组成员的共同努力,终于完成了这次关于温度计的设计实验。虽然还有一点点不足,但总算是完成了任务,总体来说是达到了目标。通过这次实验,让我加深了对单片机的认识,同时也了解了DS18B20温度传感器的一些工作原理,以及如何写入掉电保存。当然,在实验过程中也碰到很多困难,其中程序上的就是关于掉电保存的问题,DS18B20内部含有E2PROM,芯片本身可以实现掉电保存,但是必须事先用程序写进去,这一步花了我们好多时间查找资料,最终是完成了。还有就是电路焊接的时候遇到点小麻烦,有的地方焊

15、得不牢固,导致电路板测试时不稳定。这次实验让我收获颇多,学到了不少知识,也增加了我对单片机的兴趣。附录一、仿真电路图附录二、程序代码#include #include #include #define INT8U unsigned char#define INT16U unsigned intsbit SET = P37 ; /定义调整键sbit DEC = P36 ; /定义减少键sbit ADD = P35 ; /定义增加键sbit DQ = P34; INT16U warn_h1=0x20;INT16U warn_l1=0x14;INT8U Temp_Disp_Buff17;INT8U

16、set_st=0;void Xianshi();void KEY_Scan();void copyRAMtoEE();void huidiaotoRAM();extern INT8U Temp_Value;extern INT8U Init_DS18B20();extern void LCD_Initialise();extern void LCD_ShowString(INT8U r, INT8U c,INT8U *str);extern void delay_ms(INT16U);extern void DelayX(INT16U x);extern INT8U Read_Temperat

17、ure();extern void WriteOneByte(INT8U dat);/-/ 主函数/-sbit beep=P23;sbit led0=P10;sbit led1=P11;sbit led2=P12;sbit led3=P13; void warn(INT16U s,INT8U led) INT8U i;i=s; beep=1; P1=led; while(i-) delay_ms(1); void copyRAMtoEE() /把RAM中的TH,TL,CONFIGURE REGISTER数据复制到EEPROM中 Init_DS18B20(); WriteOneByte(0xcc

18、); WriteOneByte(0x48); /RAM中数据复制到EEPROM DelayX(100); /当数据完全复制到EEPROM中时总线会输出1void writetoRAM(INT8U CR) /CR-Configure registerInit_DS18B20();WriteOneByte(0xcc); /跳过写ROM WriteOneByte(0x4e); /向RAM中写数据 WriteOneByte(warn_h1); WriteOneByte(warn_l1); WriteOneByte(CR); Init_DS18B20();void huidiaotoRAM() Init

19、_DS18B20(); WriteOneByte(0xcc); /跳过写ROM WriteOneByte(0xb8);void KEY_Scan()writetoRAM(0x7f); if(DEC=0|ADD=0|SET=0) delay_ms(10); if(SET=0) while(SET=0); set_st+; if(set_st=3) set_st=0; else if (1) if(DEC=0)&(set_st=1) delay_ms(10); if(DEC=0)&(set_st=1) while(DEC=0)&(set_st=1); LCD_Initialise(); warn_

20、h1-; sprintf(Temp_Disp_Buff,TEM:%dxDFx43,warn_h1); LCD_ShowString(0,0,Temp_Disp_Buff) ; delay_ms(150); else if(DEC=0)&(set_st=2) delay_ms(10); if(DEC=0)&(set_st=2) while(DEC=0)&(set_st=2); LCD_Initialise(); warn_l1-; sprintf(Temp_Disp_Buff,TEM:%dxDFx43,warn_l1); LCD_ShowString(0,0,Temp_Disp_Buff) ;

21、delay_ms(150); else if(ADD=0)&(set_st=1) delay_ms(10); if(ADD=0)&(set_st=1) while(ADD=0)&(set_st=1); LCD_Initialise(); warn_h1+; sprintf(Temp_Disp_Buff,TEM:%dxDFx43,warn_h1); LCD_ShowString(0,0,Temp_Disp_Buff) ; delay_ms(150); else if(ADD=0)&(set_st=2) delay_ms(10); if(ADD=0)&(set_st=2) while(ADD=0)

22、&(set_st=2); LCD_Initialise(); warn_l1+; sprintf(Temp_Disp_Buff,TEM:%dxDFx43,warn_l1); LCD_ShowString(0,0,Temp_Disp_Buff) ; delay_ms(150); else void Xianshi (); void deal(float t) if(t=warn_h1)|(t=warn_l1) warn(40,0xFE); else if(twarn_l1) beep=0; P1=0xFD; void main() float temp = 0.0; /浮点温度变量 Read_T

23、emperature(); warn_h1= Temp_Value2; warn_l1=Temp_Value3 ; writetoRAM(0x7f) ; LCD_Initialise(); /液晶初始化 LCD_ShowString(0,0, DS18B20 Test ); /显示标题 LCD_ShowString(1,0, Waiting. ); /显示等待信息 sprintf(Temp_Disp_Buff,TEM:%dxDFx43,warn_l1); LCD_ShowString(0,0,Temp_Disp_Buff) ; delay_ms(1500); sprintf(Temp_Disp

24、_Buff,TEM:%dxDFx43,warn_h1); LCD_ShowString(0,0,Temp_Disp_Buff) ; delay_ms(150); copyRAMtoEE(); Read_Temperature(); /预读取温度 delay_ms(1500); /长延时 while(1) /循环读取温度并显示 KEY_Scan(); writetoRAM(0x7f) ; copyRAMtoEE(); Xianshi (); void Xianshi () float temp=0.0; float t = 0.0; if(Read_Temperature() temp=(int)(Temp_Value1-31) if(temp151) deal(temp); sprintf(Temp_Disp_Buff,TEMP:%5.1fxDFx43,te

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

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