温度显示+键盘控制+报警

温度显示+键盘控制+报警

ID:30836726

大小:74.01 KB

页数:6页

时间:2019-01-04

温度显示+键盘控制+报警_第1页
温度显示+键盘控制+报警_第2页
温度显示+键盘控制+报警_第3页
温度显示+键盘控制+报警_第4页
温度显示+键盘控制+报警_第5页
资源描述:

《温度显示+键盘控制+报警》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、#include#includeffinclude#include#defineGPIO_DIGPO//-定义使用的10-#defineuintunsignedint#defineucharunsignedcharsbitLSA=P2A2;sbitLSB=P2A3;//数码管显示//unsignedcharcodeDIG_CODE[17]={Ox3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x

2、7f,0x6f,0x77,0x7c,0x39,0x5巳0x79,0x71};〃0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码unsignedcharDisplayData[3];〃用来存放要显示的4位数的值voidDigDisplay(){unsignedchari;unsignedintj;for(i=0;i<4;i++){switch(i)〃位选,选择点亮的数码管,{case(O):LSA=O;LSB=O;break;//®示第0位case(l):LSA=1;LSB=O;b

3、reak;//显示笫1位case(2):LSA=O;LSB=1;break;//显示第2位case(3):LSA=1;LSB=1;break;//显示第3位}GPIO_DIG=DisplayData[i];//发送段码j=50;〃扫描间隔时间设定while(j--);GPIO_DIG=OxOO;//消隐}}voidLcdDisplay(inttemp)//led显示{floattp;tp=temp;//因为数据处理有小数点所以将温度赋给一个浮点空变量〃如杲温度是疋的那么,那么正数的原码就是补码它本身t

4、emp=tp*O.0625*100+0.5;〃留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点〃后面的数自动去掉,不管是否人于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就〃算加上0.5,还是在小数点后面。DisplayData[0]=DIG_CODE[temp/1000];DisplayData[l]=DIG_CODE[temp%1000/100]

5、0x80;DisplayData[2]=DIG_CODE[temp%100/10];DisplayDa

6、ta[3]=DIG_CODE[temp%10];DigDisplay();〃打描显示}//键盘显示//sbitP24=P2A4;//确定sbitP25=P2A5;//加1sbitP26=P2A6;//减1//DS18B20//sbitDSPORT=P3A7;voidDelaylms(uinty){uintx;for(;y>0;y-){for(x=110;x>0;x-);}}ucharDsl8b20lnit(){uchari;DSPORT=0;〃将总线拉低480us~960usi=70;while(i-

7、);//延时642usDSPORT=1;〃然后拉高总线,如果DS18B20做出反应会将在15us~60us后总线拉低i=0;while(DSPORT)〃等待DS18B20拉低总线{Delaylms(l);i++;if(i>5)//等待>5MSreturn0;//初始化失败}return1;//初始化成功}voidDsl8b20WriteByte(uchardat){uinti,j;for(j二0;jv&j++){DSPORT=0;〃每写入一位数据之前先把总线拉低lusi++;DSPORT=dat&0x

8、01;〃然后写入一个数据,从最低位开始i=6;while(i-);〃延时68us,持续时间最少60usDSPORT=1;〃然后释放总线,至少lus给总线恢复时间才能接着写入第二个数值dat»=1;}}ucharDsl8b20ReadByte(){ucharbyte,bi;uinti,j;for(j=8;j>0;H{DSPORT=0;//先将总线拉低lusi++;DSPORT=1;//然后释放总线i++;i++;//延时6us等待数据稳定bi=DSPORT;〃读取数据,从最低位开始读取/*将byte左移

9、一位,然后为上右移7位后的bi,注意移动Z后移掉那位补0。*/byte=(byte»1)

10、(bi«7);i=4;〃读取完之后等待48us再接看读取下一个数while(i-);}returnbyte;}voidDsl8b20ChangTemp(){Dsl8b20lnit();Delaylms(l);Dsl8b20WriteByte(0xcc);〃跳过ROM操作命令Dsl8b20WriteByte(0x44);〃温度转换命令//Delaylms(lOO);〃

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。