智能温度报警系统.docx
- 文档编号:9069251
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:15
- 大小:128.71KB
智能温度报警系统.docx
《智能温度报警系统.docx》由会员分享,可在线阅读,更多相关《智能温度报警系统.docx(15页珍藏版)》请在冰豆网上搜索。
智能温度报警系统
智能温度报警系统
摘要:
随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字温度计,本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。
关键词:
单片机,数字控制,温度计,DS18B20,AT89S51
ABSTRACT
Alongwiththeprogressanddevelopmentsoftheages,amachinetechniquehasalreadymakewidelyavailableweareliving,work,theresearch,eachrealm,hasalreadybecomeakindoftocomparethematuretechnique,thistextwillintroduceakindofnumericalthermometerthatcontrolsaccordingtoamachine,thisthermometerbelongstothemulti-functionthermometer,canestablishthetopandbottomtoreporttothepolicethetemperature,beingthetemperaturenotwithinthescopeofestablish,canreporttothepolice.
KeyWord:
numeralcontrol,thermometer,DS18B20,AT89S52
引言
随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。
本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89S51,测温传感器使用DS18B20,用3位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。
智能温度报警系统:
主要参数
序号
参数
数值
备注
1
工作电压
4V~6V
直流
2
功率
<8W
3
温度测量量程
0~99摄氏度
4
温度可设定值
0~99摄氏度
5
误差范围
精度误差小于0.5℃
主要元器件
序号
名称
作用
个数
1
AT89S52单片机
运算处理
1
2
DS1802传感器
温度测量
1
3
数码管LG5011BSR
温度显示
4
4
蜂鸣器
温度报警
1
5
变压器
变压
1
6
整流桥
交流变直流
1
7
三端稳压器7805
稳定电压值
1
8
AT24C02
掉电存储器
元件清单
元件名称
单位(只)
型号
参数
备注
温度传感器
1
DS18B20
-55~100度5V
单片机
1
AT89S52
变压器
1
220V变9V
9V/8W
整流二极管
4
IN4007
C1,C2
2
30P
C3,C6
2
22UF/25V
C4
1
220UF/25V
C5
1
2.2UF/25
R1~R6
7
100欧姆
1/8W
R7~R9
3
510欧姆
1/8W
R10
1
10K
1/8W
R11~R15
5
4.7K
1/8W
R16,R17,R18
3
510欧姆
1/8W
D0
1
发光二极管
白发红
D1
1
发光二极管
白发蓝
D2,D3,D5
3
发光二极管
红发红
稳压管
1
LM7805
Y1
1
晶震
11.0592HZ
S1~S3
3
按键
Q1~Q3
4
8550
NPN
U10~U15
6
LG5011BSR
7段数码管
电路板
2块
掉电保护
1
24c02
电源线
程序:
#include
#include
#include
codeunsignedcharseg7code[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90,0x40};//显示段码
sbitTMDAT=P3^1;//DS18B20的数据输入/输出脚DQ,根据情况设定
sbitjia=P2^1;
sbitjian=P2^0;
sbithong=P1^0;//红色警告灯
sbitsheng=P1^1;//蜂鸣器
sbitlan=P1^2;//兰色灯
bitwrite=0;//写24C08的标志;
j=30;
unsignedintsdata;//测量到的温度的整数部分
unsignedcharxiaoshu1;//小数第一位
unsignedcharxiaoshu2;//小数第二位
unsignedcharxiaoshu;//两位小数
bitfg=1;//温度正负标志
////////24C08读写驱动程序////////////////////
sbitscl=P3^4;//24c08SCL
sbitsda=P3^5;//24c08SDA
voiddelay1(unsignedcharx)
{unsignedinti;
for(i=0;i ;} voidflash() {;;} voidx24c08_init()//24c08初始化子程序 {scl=1;flash();sda=1;flash();} voidstart()//启动(I方C)总线 {sda=1;flash();scl=1;flash();sda=0;flash();scl=0;flash();} voidstop()//停止(I方C)总线 {sda=0;flash();scl=1;flash();sda=1;flash();} voidwritex(unsignedcharj)//写一个字节 {unsignedchari,temp; temp=j; for(i=0;i<8;i++) {temp=temp<<1;scl=0;flash();sda=CY;flash();scl=1;flash();} scl=0;flash();sda=1;flash(); } unsignedcharreadx()//读一个字节 { unsignedchari,j,k=0; scl=0;flash();sda=1; for(i=0;i<8;i++) { flash();scl=1;flash(); if(sda==1)j=1; elsej=0; k=(k<<1)|j; scl=0;} flash();return(k); } voidclock()//(I方C)线时钟 { unsignedchari=0; scl=1;flash(); while((sda==1)&&(i<255))i++; scl=0;flash(); } ////////从24c02的地址address中读取一个字节数据///// unsignedcharx24c08_read(unsignedcharaddress) { unsignedchari; start();writex(0xa0); clock();writex(address); clock();start(); writex(0xa1);clock(); i=readx();stop(); delay1(10); return(i); } //////向24c02的address地址中写入一字节数据info///// voidx24c08_write(unsignedcharaddress,unsignedcharinfo) { EA=0; start();writex(0xa0); clock();writex(address); clock();writex(info); clock();stop(); EA=1; delay1(50); } /*////////////24C08读写驱动程序完///////////////////// voidDelay2(unsignedinttc)//延时程序 { while(tc! =0) {unsignedinti; for(i=0;i<100;i++); tc--;} } */ //////////*显示延时程序*/////////////// voidDelay(unsignedinttc) {while(tc! =0) {unsignedinti; for(i=0;i<80;i++); tc--;} } ////////////延时部分/////////////// voidyanshi(unsignedintcount) { unsignedchari; while(count--) {for(i=0;i<115;i++);} } /////////////发送复位/////////////// voidfashong(void) { unsignedchari; TMDAT=0;for(i=0;i<103;i++); TMDAT=1;for(i=0;i<4;i++); } bittmrbit(void)//读一位// { unsignedinti; bitdat; TMDAT=0; i++; TMDAT=1; i++;i++;//微量延时// dat=TMDAT; for(i=0;i<8;i++); return(dat); } unsignedchartmrbyte(void)//读一个字节 { unsignedchari,j,dat; dat=0; for(i=1;i<=8;i++) {j=tmrbit();dat=(j<<7)|(dat>>1);} return(dat); } voidtmwbyte(unsignedchardat)//写一个字节 { unsignedcharj,i; bittestb; for(j=1;j<=8;j++) {testb=dat&0x01; dat=dat>>1; if(testb) {TMDAT=0;//写0 i++;i++; TMDAT=1; for(i=0;i<8;i++);} else {TMDAT=0;//写0 for(i=0;i<8;i++); TMDAT=1; i++;i++;} } } voidtmstart(void)//发送ds1820开始转换 { fashong();//复位 yanshi (1);//延时 tmwbyte(0xcc);//跳过序列号命令 tmwbyte(0x44);//发转换命令44H, } voidtmrtemp(void)//读取温度 { unsignedchara,b; fashong();//复位 yanshi (1);//延时 tmwbyte(0xcc);//跳过序列号命令 tmwbyte(0xbe);//发送读取命令 a=tmrbyte();//读取低位温度 b=tmrbyte();//读取高位温度 if(b>0x7f)//最高位为1时温度是负 {a=~a;b=~b+1;//补码转换,取反加一 fg=0;//读取温度为负时fg=0 } sdata=a/16+b*16;//整数部分 xiaoshu1=(a&0x0f)*10/16;//小数第一位 xiaoshu2=(a&0x0f)*100/16%10;//小数 xiaoshu=xiaoshu1*10+xiaoshu2;//小数 } voidDS18B20PRO(void) { tmstart(); //yanshi(5);//如果是不断地读取的话可以不延 tmrtemp();//读取温度,执行完毕温度将存于 } voidLed() { if(fg==1)//温度为正时显示的数据 { P2=P2&0xef; P0=seg7code[sdata/10];//输 Delay (2);P2=P2|0xf0;P2=P2&0xdf; P0=seg7code[sdata%10]|0x80;//输出个 Delay (2);P2=P2|0xf0;P2=P2&0xbf; P0=seg7code[xiaoshu1];//输出小数点 Delay (2);P2=P2|0xf0;P2=P2&0x7f; P0=seg7code[xiaoshu2];//输出小 Delay (1);P2=P2|0xf0; Delay (2);P2=P2|0xf0;P2=P2&0xf7; P0=seg7code[j/10];//输出十位 Delay (2);P2=P2|0x0f;P2=P2&0xfb; P0=seg7code[j%10]|0x80;//输出个位 Delay (1);P2=P2|0x0f; /* P2=P2&0x7f; P0=seg7code[sdata/10];//输出十位 Delay(8);P2=P2|0xf0;P2=P2&0xbf; P0=seg7code[sdata%10]|0x80;//输出个位 Delay(8);P2=P2|0xf0;P2=P2&0xf7; P0=seg7code[xiaoshu1];//输出小数点 Delay(8);P2=P2|0xf0;P2=P2&0xfb; P0=seg7code[xiaoshu2];//输出小 Delay(4);P2=P2|0xf0; Delay(8);P2=P2|0xf0;P2=P2&0xdf; P0=seg7code[j/10];//输出十位 Delay(8);P2=P2|0xf0;P2=P2&0xef; P0=seg7code[j%10]|0x80;//输出个位 Delay(4);P2=P2|0xf0; */ if(sdata<=j) { lan=0; hong=1; sheng=1; }; if(sdata>=j) { lan=1; hong=0; sheng=0; }; } if(fg==0)//温度为负时显示的数据 {P2=P2&0xef; P0=seg7code[11];//负号 Delay(8);P2=P2|0xf0;P2=P2&0xdf; P0=seg7code[sdata/10]|0x80;//输出十位 Delay(8);P2=P2|0xf0;P2=P2&0xbf; P0=seg7code[sdata%10];//输出个位 Delay(8);P2=P2|0xf0;P2=P2&0x7f; P0=seg7code[xiaoshu1];//输出小 Delay(4);P2=P2|0xf0; } } main() {fg=1; x24c08_init();//初始化24C08 j=x24c08_read (2);//读出保存的数据 while (1) { DS18B20PRO(); Led(); if(jia==0) {Delay(200);j++;} if(jian==0) {Delay(200);j--;} x24c08_write(2,j); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 温度 报警 系统