DS18B20智能温度检测综合设计报告【包含详细流程图和详细程序解析】_第1页
DS18B20智能温度检测综合设计报告【包含详细流程图和详细程序解析】_第2页
DS18B20智能温度检测综合设计报告【包含详细流程图和详细程序解析】_第3页
DS18B20智能温度检测综合设计报告【包含详细流程图和详细程序解析】_第4页
DS18B20智能温度检测综合设计报告【包含详细流程图和详细程序解析】_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、综合设计:基于DS18B20的智能温度检测系统电子系统综合设计题 目 基于DS18B20的智能温度检测系统 学 号 * 姓 名 转载请注明出处 所 属 系 机械工程学院 专 业 电子信息工程 班 级 10级电信本一班 指导教师 熊春如 基于DS18B20的智能温度检测系统的设计 摘 要在这次设计中,1.用STC89C52控制DS18B20,读取数据,并对DS18B20转换后的数据进行处理,最后在数码管上显示DS18B20测出的温度。2.使用4位数码管显示,最高位为符号位,如果温度值为正,不显示,如果温度为负,则显示负号。3.测量的温度上限到99度,下限超过50度。4.温度的测量值要精确到小数点

2、的后1位。4.能设置上限温度和下限温度值,当被测量温度在上限温度和下限温度值之间时下四位灯全亮代表绿色LED亮,当被测量温度在上限温度和下限温度值之外时上四位灯全亮代表红色LED亮,并蜂鸣器报警。6.设置的上限温度和下限温度值能够断电后保存(EEPROM)。7.实现上述功能人机界面简单。关键字:DS18B20; 数码管; 单片机; 目 录摘 要11整体设计方案3 1.1系统设计结构图32智能温度检测系统的硬件设计43 智能温度检测系统的软件设计5 3.1 各个程序流程图5 3.1.1主程序流程图6 3.1.2 定时器0流程图6 3.1.3定时器1流程图7 3.1.4设置上下限流程图8 3.1.

3、5 led显示和报警流程图8 3.1.6获取温度值流程图9 3.1.7按键扫描控制流程图11 3.1.8 按键界面显示流程图12 3.2智能温度检测系统的源程序代码13 4 系统硬件调试235 总结241整体设计方案1.1 系统设计结构图根据系统设计的要求和设计思路,确定该系统的系统设计结构图。如图2.2所示。硬件电路主要由MCU微处理控制器单元、温度检测模块、四个数码管显示模块,键盘控制模块,LED灯显示模块和蜂鸣器响应模块构成。四个数码管显示 MCU微处理控制器单元温度检测LED灯显示按键控制蜂鸣器响应 图1.1 系统结构图设计 2 智能温度检测系统的硬件设计硬件电路图如下: 3智能温度检

4、测系统的软件设计 3.1 系统的软件设计也是工具系统功能的设计。各个程序流程图如下: 开始设置定时器0和1设置上下限温度值Led扫描和报警判定 按键控制扫描 图3.1.1 主程序流程图 开始N 定时中断响应Y次数清零,蜂鸣器响应 结束 图3.1.2 定时器0中断函数流程图 开始 获取温度 定时中断次数 四次 一次N N N N 三次 两次Y Y Y Y显示小数,次数清零显示整数个位显示整数十位判断正负号显示符号位 结束 图3.1.3 定时器1中断数码管显示程序流程图 开始 写入上下限值 复制到EEPROM 结束 图3.1.4 设置上下限并且复制到EEPROM 开始 上下限之间上四位灯表示的红灯

5、亮,蜂鸣器响应下四位灯表示的绿灯亮,蜂鸣器不响应Y N 结束 图3.1.5 Led显示和报警 开始读取当前温度值 整数温度负数 Y整数部分取反码加一 N处理并合成整数温度得到整数温度取出小数部分温度值 结束 图3.1.6 获取温度值程序流程图 开始 N 有键按下Y 延时等待 N 确实按下YN N 确定键 按下 减键 按下 加键按下 调节键按下 N N 调节键次数清零对所调的数减一对所调的数加一两次 一次调下限值调上限值显示实时温度数码管显示调节界面 结束 开始 图3.1.7 按键扫描控制程序流程读出上下限值 是否负数 N Y 反码加一得到正数的上下限值调上或下限? 调下限 调上限显示下限温度值

6、个位显示下限温度值十位 判断 是否负数第一个数管显下限标志标志显示上限温度值个位显示上限温度值十位 判断 是否负数第一个数管显上限标志标志负数显示负号标志正数,第二个数码管消隐负数显示负号标志正数,第二个数码管消隐 结束 图3.1.8 按键界面显示程序流程图 3.2智能温度检测系统的源程序代码/* 用单片机实现 */* 控制DS18B20并且用四个数码管显示实时温度 */* 可设置上限温度和下限温度值并且可报警 */* 设置的上限温度和下限温度值能够断电后保存(EEPROM) */* 新余学院10届电信本一班 余巍峰 制作 */* 转载请注明出处 */#include#define uchar

7、 unsigned char#define uint unsigned int#define wei P2#define duan P0#define led P1sbit DQ=P37;sbit beep=P36;uchar tab2=0xbf,0xff,0xdf,0xfb;/数码管显示内容,分别显示负号标志,消隐,上限标志,下限标志uchar table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/段码显示uchar tab1=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x0

8、6,0x07,0x08,0x08,0x09,0x09;/小数表uchar readdat2;/取出温度存储的变量数组uchar hc9;char hc0=99;char hc1=-50;uchar flag=0; /负号标志uchar i=0;uchar count=0;uchar m=0; /调上下限的标志位char h; /上限值变量char l; /下限值变量void getwd();void Delay(uint j);void init();uchar readonebyte();void writeonebyte(uchar dat);void displayled();void

9、displaykey();void displayset();void delay1(uint z);void setlimite(char th,tl);/*/void main()TMOD=0x11;/开两个定时中断TH1=-(1000/256);TL1=-(1000%256);TR1=1; /用于扫描显示实时温度TR0=0; /用于蜂鸣器报警ET1=1;ET0=1; TH0=-(1000/256);TL0=-(1000%256);EA=1;wei=0xff; setlimite(h,l);/首先设置的上下限温度值while(1) displayled(); displaykey(); /

10、*/void wendu () interrupt 3/定时中断1服务函数uchar temp;getwd();i+;switch(i)case 1: /判断是否显示负号 if(flag=1) temp=tab20; else temp=tab21; wei=0xfe; duan=temp;break;case 2: /显示整数温度的十位 temp=hc2;/readdat1/10; wei=0xfd; duan=tabletemp;break;case 3: /显示整数温度的个位 temp=hc3;/readdat1%10; wei=0xfb; duan=tabletemp&0x7f;bre

11、ak;case 4: /显示小数位 temp=hc4;/readdat0; wei=0xf7; duan=tabletemp;break;if(i=4)i=0;TH1=-(1000/256);TL1=-(1000%256);/*/void beep1 () interrupt 1/定时中断0服务函数 count+;if(count=100)count=0;beep=beep;/蜂鸣器发出警报 TH0=-(1000/256); TL0=-(1000%256);/*/void Delay(uint j)/延时较短的函数while(j-);/*/void init()/初始化uchar x;DQ =

12、 1; /DQ复位Delay(8); /稍做延时DQ = 0; /单片机将DQ拉低Delay(80); /精确延时 大于 480usDQ = 1; /拉高总线Delay(14);x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败Delay(20);/*/uchar readonebyte()/读一个字节uchar i=0;uchar dat=0;for (i=8;i0;i-)DQ = 0; / 给脉冲信号dat=1;DQ = 1; / 给脉冲信号if(DQ)dat|=0x80;Delay(4);return(dat);/*/void writeonebyte(uchar da

13、t)/写一个字节uchar i=0;for (i=8; i0; i-)DQ = 0;DQ = dat&0x01;Delay(2);DQ = 1;dat=1;/*/void setlimite(char th,tl)/设置上下限温度值同时把温度值存入18b20的EEPROM函数 init();writeonebyte(0xcc);writeonebyte(0x4e);/写入上下限值writeonebyte(th);writeonebyte(tl); init();writeonebyte(0xcc);writeonebyte(0x48);/把写入的上下限值复制到EEPROMDelay(20);/

14、*/void getwd()/获取温度值函数 uint x,result;char re;init();writeonebyte(0xcc);writeonebyte(0x44); init();writeonebyte(0xcc);writeonebyte(0xbe);/读取当前的温度readdat0=readonebyte();readdat1=readonebyte();re=readdat1;if(re&0xf8)!=0)/若温度为负数,则取反码加一flag=1;readdat1=readdat1;readdat0=readdat0;result=readdat0+1; readdat

15、0=result;if(result255)readdat1+;readdat1=readdat14;x=x&0x0f;/取出读出温度2的高四位,即整数部分的低四位readdat1=readdat1|x; /合成整数部分温度hc1=readdat1/100;hc2=readdat1%100/10;/转化温度为可以显示hc3=readdat1%100%10;readdat0=readdat0&0x0f;/取出小数部分hc4=tab1readdat0;/*/void displayled()/led显示和报警函数uchar s0;s0=(readdat1hc1)&(readdat199) h=0;

16、 if(m=2) l+; if(l99) l=0; if(lh|l=h)/如果所调的上下限值相等,则复位 TR0=1; l=-50; h=99; elseTR0=0;beep=1; setlimite(h,l); while(key&0xf0!=0xf0); break; case 0xd0: /对当前所调的值减一if(m=1) h-; if(h-50) h=0; if(m=2) l-; if(lh|l=h)/如果所调的上下限值相等,则复位 TR0=1; l=-50; h=99; elseTR0=0;beep=1; setlimite(h,l); while(key&0xf0!=0xf0);

17、break; case 0xe0: m=0; /确定调好,返回显示时间 TR1=1; while(key&0xf0!=0xf0); break; if(TR1=0) displayset();/*/void displayset()/按键时数码管显示扫描函数 char k,p;uchar a,b,c,d;init();writeonebyte(0xcc);writeonebyte(0x44); init();writeonebyte(0xcc); writeonebyte(0xb8);/把EEPROM中的上下限值复制到暂存器中 init();writeonebyte(0xcc);writeon

18、ebyte(0xbe);/读取暂存器中的内容hc5=readonebyte();hc6=readonebyte();hc0=readonebyte();/所读取的上下限温度值hc1=readonebyte();/if(hc00)/p=hc0;p=p;p=p+1;elsep=hc0;a=p/10;b=p%10;if(hc10)/若为负数,反码加一k=hc1; k=k;k=k+1;elsek=hc1;c=k/10;d=k%10;if(m=1)/按一下显示的上限温度值 wei=0xfe; duan=tab22;/上限标志delay1(5); wei=0xfd;if(hc00)duan=tab20;/若为负值,显示负号elseduan=tab21;/消隐表示正delay1(5);wei=0xfb; duan=tablea;/显示上限温度值 delay1(5); wei=0xf7; duan=tableb

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论