毕业设计温度显示报警设计_第1页
毕业设计温度显示报警设计_第2页
毕业设计温度显示报警设计_第3页
毕业设计温度显示报警设计_第4页
毕业设计温度显示报警设计_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计说明书题目:温度显示报警器产品设计工艺设计方案设计√类型:学生姓名:学号:学院:电子信息工程专业:应用电子班级:学校指导教师:2016年5月3日 摘要该毕业设计的作品是利用DS18B20温度传感器、单片机STC89C51、按键输入电路、报警电路、显示电路制作一个温度显示器,并有报警功能。当实际测量温度高于设定的高温36度时报警,当实际测量温度或低于设定的低温15度时报警。当环境温度在高温与低温之间时,显示器显示实际测量的温度值。关键词:单片机STC89C51;DS18B20;报警模块 目录1.引言 42.DS18B20优缺点 43.系统电路分析 43.1

单片机最小系统 53.2

数码显示电路 53.3

DS18B20测量电路 63.4

报警电路 64.程序设计部分 74.1报警程序 74.2温度测量程序 74.3数字显示程序 104.4主程序模块 125、总结和体会 12参考文献 12附1;作品展示图 14附2:程序代码 151.引言长沙的天气说变就变,有时因添加衣服不及时就容易感冒。毕业设计选题时我就选做一个具有温度显示报警器,它对环境温度有一种监控作用以及显示出实际测量的温度值,将它放在环境下,在数码管上显示出环境的温度是多少,并且当温度超过36°或小于15°时它会发出报警,它有一个电源开关,一个调节温度设定值按键。它的工作原理是通过温度传感器DS18B20将环境中的温度直接转换成数字信号送到单片机中,通过单片机处理,然后将信息分别传送到显示模块,并根据实际情况决定是否进行报警。2.DS18B20优缺点使用数字温度芯片DS18B20温度传感器模块,DS18B20温度传感器模块有三个引脚与外电路相连接,一个接电源的正,一个接电源负,另一个接单片机I/O端口,采用一根数据传输信号,由数字温度DS18B20传感器模块与单片机STC89C51直接构成的温度测量装置,不需要复杂的外围电路。这样测温系统的结构就比较简单,体积也不大,方便被单片机处理以及控制。DS18B20外形如图2.1所示。图

2.1DS18B20温度外形图3.系统电路分析本毕业设统中采用单片机STC89C51为系统的控制中心,它由四部分电路组成,第一部部分为单片机最小系统模块,第二部分为报警模块,第三部分为温度测量模块,第四部分为数码管显示模块。单片机中的P0控制数码管段,P1.0~P1.3通过8550三极管的基极控制数码管的位,P2.4作为温度传感器输入端,P2.7为报警模块控制端。对于单片机上采用上电复位和按键控制复位。系统仿真图如图3.0所示。图

3.0系统仿真图3.1

单片机最小系统单片机工作的最小系统是由复位电路、振荡电路、P0口上拉电阻及31脚接电源,40引脚接电源,20引脚接地组成。单片机最小系统电路图如图3.1所示。图

3.1单片机最小系统电路图3.2

数码显示电路本毕业设计温度显示报警系统采用四位一体共阳数码管显示,数码管的段码接单片的P0端口,数码管的位码通过三极管8550与单片机的P1.0~P1.3端口相连。四个数码管的段是公共的,通过选择不同的位来控制不同位的数码管,显示采用定时器中断显示。数码管显示电路图如图3.2所示。图

3.2数码管显示电路图3.3

DS18B20测量电路DS18B20温度传感器模块有三个引脚与外电路相连接,一个接电源的正,一个接电源负,另一个接单片机I/O端口,采用一根数据传输信号,由数字温度DS18B20传感器模块与单片机STC89C51直接构成的温度测量装置,不需要复杂的外围电路。DS18B20测量电路如图3.3所示。图

3.3DS18B20测量电路图3.4

报警电路当实际测量温度高于设定的36度时,报警器工作;当实际测温度低于设定的15度时,报警器工作,报警电路通一个三极管8550与单片机的P2.7相连,由单片机P2.7引脚输出低电平控制三极管导通,扬声器工作,从而达到报警的目的。报警电路的原理图如图3.4所示。图

3.4报警电路图4.程序设计部分4.1报警程序voidalarm(){ inti; if(tempshi>shi_high||tempshi<shi_law){ for(i=0;i<100;i++) { speak=0; delay(500); speak=1; delay(500); }}}4.2温度测量程序温度测量程序模块包括开始获取温度并转换函数、读取寄存器中的温度数据函数。其中开始获取温度并转换函数又包括DS18B20初始化函数、延时2毫秒、向18b20写一个字节的函数;读取寄存器中的温度数据函数包括启动温度转换、DS18B20初始化函数、延时2毫秒、向18b20写一个字节的函数、读一个字节函数。voidtempchange()//开始获取温度并转换函数{ dsreset(); delay18b20(2); tempwritebyte(0xcc); //0XCC是跳过ROM指令 tempwritebyte(0x44); //0X44是温度转换启动指令}uintget_temp() //读取寄存器中的温度数据{ uchara,b;//定义局部变量 tempchange();//启动温度转换 dsreset(); delay18b20(2); tempwritebyte(0xcc); //0XCC是跳过ROM指令 tempwritebyte(0xbe); //0X44是温度转换启动指令 a=tempread(); b=tempread(); if(b>0x7f)//最高位为1时温度是负{a=~a+1;b=~b;//补码转换,取反加一fg=0;//读取温度为负时fg=0}temp=b; temp<<=8; temp=temp|a; returntemp;}voidtempwritebyte(uchardat)//向18b20写一个字节的函数{ uinti;//定义局部变量 ucharj;//定义局部变量 bittestb;//定义局部变量 for(j=1;j<=8;j++) { testb=dat&0x01; dat=dat>>1; if(testb) { ds=0; i++;i++; ds=1; i=8;while(i>0)i--; } else { ds=0; i=8;while(i>0)i--; ds=1; i++;i++; } }}voiddsreset() //DS18B20初始化函数{uinti;//定义局部变量ds=0;i=103;while(i>0)i--;ds=1;i=4;while(i>0)i--;}voiddelay18b20(uintz)//带形参的延时模块{uintx,y;//定义局部变量for(x=z;x>0;x--) for(y=110;y>0;y--);}bittempreadbit() //读一位数据函数{uinti;//定义局部变量bitdat=0;//定义局部变量 ds=0;i++; ds=1;i++;i++; dat=ds; i=8;while(i>0)i--; return(dat);}uchartempread() //读一个字节函数{ uchari,j,dat;//定义局部变量 dat=0; for(i=1;i<=8;i++) { j=tempreadbit(); dat=(j<<7)|(dat>>1); } return(dat);}4.3数字显示程序voiddisplay18b20(uinttemp){ ucharm1,m2,m3;//定义局部变量 f_temp=temp*0.0625; temp=f_temp*10+0.5; m1=temp/100; m2=temp%100/10; m3=temp%10; if(fg==0)//温度为正时显示负号{ P2=~0xfe; P0=~suma[fg]; delay18b20(50); P2=0xff; P2=~0xfd; P0=~table[m1]; delay18b20(5); P0=0xff; P2=~0xfb; P0=~table[m2]-0x80; delay18b20(2); P0=0xff; P2=~0xf7; P0=~table[m3]; delay18b20(2); P0=0xff; } if(fg==1) //负{ P2=~0xfe; P0=suma[fg]; delay18b20(10); P2=0xff; P2=~0xfd; P0=~table[m1]; delay18b20(5); P0=0xff; P2=~0xfb; P0=~table[m2]-0x80; delay18b20(2); P0=0xff; P2=~0xf7; P0=~table[m3]; delay18b20(2); P0=0xff; }}4.4主程序模块主函数部分很简单,这种方法编写的程序结构简单,易读易懂。主函数只读用了带参的显示函数模块,就能实现温度的读取和显示。#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharsbitds=P3^7;floatf_temp;uinttemp;ucharfg=1;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};ucharcodesuma[]={0x40,0xff};//主函数模块voidmain(){while(1){ display18b20(get_temp()); alarm();}}5、总结和体会通过本次的毕业作品设计,学会了DS18B20的使用,学会做事要细心,要多请教同学和老师。在这次的毕业设计中也发现了一些自己的不足,我平时没有怎么用功,通有过这次设计真正学会了怎样去独立学习。参考文献谭博学等.集成电路原理及应用[M].北京:电子工业出版社,2003黄智伟等.基于NImultisim的电子电路计算机仿真设计与分析[M].北京:电子工业出版社,2007黄智伟.印制电路板(PCB)设计技术与实践[M].北京:电子工业出版社,2009高吉祥等.电子技术基础实验与课程设计[M].北京:电子工业出版社,2002吴运昌.模拟集成电路原理与应用[M].广州:华南理工大学出版社,2001谭博学等.集成电路原理及应用[M].北京:电子工业出版社,2003魏立军.CMOS4000系列60种常用集成电路的应用[M].北京:人民邮电出版社,1993 致谢 大学三年结束了,在这三年学会了很多,在学习方面学会了很多的知识,培养了自己的动手能力。并且学会了怎么去学习,在以后的职场上有了一定的理论知识,并且找到了自己大概的方向。通过这次的毕业设计也找到了自己的一些不足,会在以后工作中积极的改进,在这里谢谢老师们在这三年里的辛苦教导,在以后的时间里我一定会将在学校学到的东西学以致用。附1;作品展示图附2:程序代码#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharsbitds=P3^7;floatf_temp;uinttemp;ucharfg=1;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};ucharcodesuma[]={0x40,0xff};voiddelay18b20(uintz){uintx,y;for(x=z;x>0;x--) for(y=110;y>0;y--);}voiddsreset() //DS18B20初始化函数{uinti;ds=0;i=103;while(i>0)i--;ds=1;i=4;while(i>0)i--;}bittempreadbit() //读一位数据函数{uinti;bitdat=0; ds=0;i++; ds=1;i++;i++; dat=ds; i=8;while(i>0)i--; return(dat);}uchartempread() //读一个字节函数{ uchari,j,dat; dat=0; for(i=1;i<=8;i++) { j=tempreadbit(); dat=(j<<7)|(dat>>1); } return(dat);}voidtempwritebyte(uchardat)//向18b20写一个字节的函数{ uinti; ucharj; bittestb; for(j=1;j<=8;j++) { testb=dat&0x01; dat=dat>>1; if(testb) { ds=0; i++;i++; ds=1; i=8;while(i>0)i--; } else { ds=0; i=8;while(i>0)i--; ds=1; i++;i++; } }}voidtempchange()//开始获取温度并转换函数{ dsreset(); delay18b20(2); tempwritebyte(0xcc); //0XCC是跳过ROM指令 tempwritebyte(0x44); //0X44是温度转换启动指令}uintget_temp() //读取寄存器中的温度数据{ uchara,b; tempchange();//启动温度转换 dsreset(); delay18b20(2); tempwritebyte(0xcc); //0XCC是跳过ROM指令 tempwritebyte(0xbe); //0X44是温度转换启动指令 a=tempread(); b=tempread(); if(b>0x7f)

温馨提示

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

评论

0/150

提交评论