欢迎来到天天文库
浏览记录
ID:55296420
大小:291.88 KB
页数:13页
时间:2020-05-09
《基于单片机的温度控制系统.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于单片机的温度控制系统选题背景温度控制在农业生产中有着重要意义,它直接影响到农作物的产量。为保证农业生产的顺利进行,首要问题是加强温度的监测工作。但传统的方法是通过人工进行检测,这种人工测试方法费时费力、效率低,且测试的温度误差大,随机性大。因此我们需要一种造价低廉、使用方便且测量准确的温度测量仪。一,实现功能1,临界温度设定2,实时温度检测3,动态温度显示4,高温低温报警二,功能模块1,DS18B20实现温度检测2,数码管实现温度动态显示3,矩阵键盘实现温度设定4,蜂鸣器实现高温低温报警三,应用范围1,室温检测2,温室栽培3,火灾报警等电路
2、图主程序流程图:T0中断流程图:温度采样子程序流程图键扫描程序流程图:报警子程序流程图:程序:程序名称:DS18B20温度计、温度监控系统说明:三个按键,分别是1.监控温度设置键2.温度减少3.温度增加编写日期:2009年4月29号******************************************************************/#include#defineuintunsignedint#defineucharunsignedchar//宏定义sbitDQ=P3^6;//定义DS18B20总
3、线I/OsbitSET=P3^1;//定义调整键sbitDEC=P3^2;//定义减少键sbitADD=P3^3;//定义增加键sbitBEEP=P3^7;//定义蜂鸣器bitshanshuo_st;//闪烁间隔标志bitbeep_st;//蜂鸣器间隔标志sbitDIAN=P2^7;//小数点ucharx=0;//计数器signedcharm;//温度值全局变量ucharn;//温度值全局变量ucharset_st=0;//状态标志signedcharshangxian=38;//上限报警温度,默认值为38signedcharxiaxian=5
4、;//下限报警温度,默认值为38ucharcodeLEDData[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};/*****延时子程序*****/voidDelay_DS18B20(intnum){while(num--);}/*****初始化DS18B20*****/voidInit_DS18B20(void){unsignedcharx=0;DQ=1;//DQ复位Delay_DS18B20(8);//稍做延时DQ=0;//单片机将DQ拉低Delay_DS18B20(80
5、);//精确延时,大于480usDQ=1;//拉高总线Delay_DS18B20(14);x=DQ;//稍做延时后,如果x=0则初始化成功,x=1则初始化失败Delay_DS18B20(20);}/*****读一个字节*****/unsignedcharReadOneChar(void){unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i--){DQ=0;//给脉冲信号dat>>=1;DQ=1;//给脉冲信号if(DQ)dat
6、=0x80;Delay_DS18B20(4);}return(dat);}
7、/*****写一个字节*****/voidWriteOneChar(unsignedchardat){unsignedchari=0;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;Delay_DS18B20(5);DQ=1;dat>>=1;}}/*****读取温度*****/unsignedintReadTemperature(void){unsignedchara=0;unsignedcharb=0;unsignedintt=0;floattt=0;Init_DS18B20();WriteOneChar(0xCC);//
8、跳过读序号列号的操作WriteOneChar(0x44);//启动温度转换Init_DS18B20();WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0xBE);//读取温度寄存器a=ReadOneChar();//读低8位b=ReadOneChar();//读高8位t=b;t<<=8;t=t
9、a;tt=t*0.0625;t=tt*10+0.5;//放大10倍输出并四舍五入return(t);}/*****END*****//*****延时子程序*****/voidDelay(uintnum){whil
10、e(--num);}/*****初始化定时器0*****/voidInitTimer(void){TMOD=0x01;TH0=0x3c;TL0=0xb
此文档下载收益归作者所有