




免费预览已结束,剩余6页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.1硬件部分图片软件部分编程#include #include #define uchar unsigned char sbit led1=P10; sbit led2=P11; sbit led3=P12; sbit led4=P13; sbit speker=P16; sbit ds = P17; int tempValue; int count,temp ; uchar cnt,cnt1,cnt2,cnt3; /0-F数码管的编码(共阳极)Unsigned char code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; /= void delay(unsigned int i) /延时函数 unsigned int j; while(i-) for(j = 0; j 0) i-; ds = 1; /产生一个上升沿, 进入等待应答状态 i = 4; while(i0) i-; void dsWait() unsigned int i; while(ds); while(ds); /检测到应答脉冲 i = 4; while(i 0) i-; /=向DS18B20读取一位数据 bit readBit() unsigned int i; bit b; ds = 0; i+; /延时约8us, 符合协议要求至少保持1us ds = 1; i+; i+; /延时约16us, 符合协议要求的至少延时15us以上 b = ds; i = 8; while(i0) i-; /延时约64us, 符合读时隙不低于60us要求 return b; /=读取一字节数据, 通过调用readBit()来实现 unsigned char readByte() unsigned int i; unsigned char j, dat; dat = 0; for(i=0; i8; i+) j = readBit(); /最先读出的是最低位数据 dat = (j 1); return dat; /=向DS18B20写入一字节数据 void writeByte(unsigned char dat) unsigned int i; unsigned char j; bit b; for(j = 0; j = 1; if(b) ds = 0; i+; i+; /拉低约16us, 符号要求1560us内 ds = 1; i = 8; while(i0) i-; /延时约64us, 符合写时隙不低于60us要求 else /写0, 将DQ拉低60us120us ds = 0; i = 8; while(i0) i-; /拉低约64us, 符号要求 ds = 1; i+; i+; /整个写0时隙过程已经超过60us, 这里就不用像写1那样, 64us了 /=向DS18B20发送温度转换命令 void sendChangeCmd() dsInit(); /初始化DS18B20, 无论什么命令, 首先都要发起初始化 dsWait(); /等待DS18B20应答 delay(1); /延时1ms, 因为DS18B20会拉低DQ 60240us作为应答信号 writeByte(0xcc); /写入跳过序列号命令字 Skip Rom writeByte(0x44); /写入温度转换命令字 Convert T /=向DS18B20发送读取数据命令 void sendReadCmd() dsInit(); dsWait(); delay(1); writeByte(0xcc); /写入跳过序列号命令字 Skip Rom writeByte(0xbe); /写入读取数据令字 Read Scratchpad /=获取当前温度值 int getTmpValue() unsigned int tmpvalue; int value; /存放温度数值 float t; unsigned char low, high; sendReadCmd();/连续读取两个字节数据 low = readByte(); high = readByte();/将高低两个字节合成一个整形变量 tmpvalue = high; tmpvalue 0 ? 0.5 : -0.5); /大于0加0.5, 小于0减0.5 return value; /= 显示函数 void display() temp=tempValue ; if(temp995)temp=999; count+; switch(count) case 1: P0=0xff; P2=0x02;P0=tabletemp/100; break; case 2: P0=0xff; P2=0x04;P0=tabletemp%100/10&0x7f; break; case 3: P0=0xff; P2=0x08;P0=table temp% 10;count=0; break;default: break; /= void main() while(1) sendChangeCmd();/启动温度转换 tempValue=getTmpValue(); display(); to_init(); /=void time_0() interrupt 1 TH0=(65536-2000)/256; TL0=(65536-2000)%256; temp=tempValue ; if(temp270)cnt+; if(cnt=50) led1=!led1;cnt=0; speker=!speker; else led1=1; if(temp300)cnt2+; if(cnt2=10)led3=!led3;cnt2=0; speker=!speker; else led3=1; if(temp320)cnt3+; if(cnt3=50)led4=!led4;cnt3=0; speker=!speker; else led4=1; 硬件部分图片软件部分编程#include #include #include #define uchar unsigned char /要用到取绝对值函数abs()/通过DS18B20测试当前环境温度, 并通过数码管显示当前温度值, 目前显示范围: -55 +125度 sbit ds = P10;sbit P11= P11; / 制冷sbit P12= P12; / 加快制冷sbit P13= P13; /加热 sbit P14= P14; / 加快加热 sbit P37 = P37;int tempValue; int count,temp,count1 ; uchar cnt1,cnt2,cnt3,cnt4,cnt5,cnt7; /0-F数码管的编码(共阳极)unsigned char code table17=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf; /延时函数, 对于11.0592MHz时钟, 例i=10,则大概延时10ms. void delay(unsigned int i) unsigned int j; while(i-) for(j = 0; j 125; j+); /=void to_init() TMOD=0X01; TH0=(65536-2000)/256;TL0=(65536-2000)%256;EA=1;TR0=1;ET0=1; /= /显示 void display() temp= tempValue;if(temp0) i-; ds = 1; /产生一个上升沿, 进入等待应答状态 i = 4; while(i0) i-; void dsWait() unsigned int i; while(ds); while(ds); /检测到应答脉冲 i = 4; while(i 0) i-; /向DS18B20读取一位数据/读一位, 让DS18B20一小周期低电平, 然后两小周期高电平,/之后DS18B20则会输出持续一段时间的一位数据 bit readBit() unsigned int i; bit b; ds = 0; i+; /延时约8us, 符合协议要求至少保持1us ds = 1; i+; i+; /延时约16us, 符合协议要求的至少延时15us以上 b = ds; i = 8; while(i0) i-; /延时约64us, 符合读时隙不低于60us要求 return b; 读取一字节数据, 通过调用readBit()来实现 unsigned char readByte() unsigned int i; unsigned char j, dat; dat = 0; for(i=0; i8; i+) j = readBit(); /最先读出的是最低位数据 dat = (j 1); return dat; /向DS18B20写入一字节数据 void writeByte(unsigned char dat) unsigned int i; unsigned char j; bit b; for(j = 0; j = 1; /写1, 将DQ拉低15us后, 在15us60us内将DQ拉高, 即完成写1 if(b) ds = 0; i+; i+; /拉低约16us, 符号要求1560us内 ds = 1; i = 8; while(i0) i-; /延时约64us, 符合写时隙不低于60us要求 else /写0, 将DQ拉低60us120us ds = 0; i = 8; while(i0) i-; /拉低约64us, 符号要求 ds = 1; i+; i+; /整个写0时隙过程已经超过60us, 这里就不用像写1那样, 再延时64us了 /向DS18B20发送温度转换命令 void sendChangeCmd() dsInit(); /初始化DS18B20, 无论什么命令, 首先都要发起初始化 dsWait(); /等待DS18B20应答 delay(1); /延时1ms, 因为DS18B20会拉低DQ 60240us作为应答信号 writeByte(0xcc); /写入跳过序列号命令字 Skip Rom writeByte(0x44); /写入温度转换命令字 Convert T /向DS18B20发送读取数据命令 void sendReadCmd() dsInit(); dsWait(); delay(1); writeByte(0xcc); /写入跳过序列号命令字 Skip Rom writeByte(0xbe); /写入读取数据令字 Read Scratchpad /获取当前温度值 int getTmpValue() unsigned int tmpvalue; int value; /存放温度数值 float t; unsigned char low, high; sendReadCmd(); /连续读取两个字节数据 low = readByte(); high = readByte(); /将高低两个字节合成一个整形变量 /计算机中对于负数是利用补码来表示的 /若是负值, 读取出来的数值是用补码表示的, 可直接赋值给int型的value tmpvalue = high; tmpvalue 0 ? 0.5 : -0.5); /大于0加0.5, 小于0减0.5 return value; /= void main() P11=0;P12=0;P13=0;P14=0;P37=0; while(1) /启动温度转换 sendChangeCmd(); tempValue = getTmpValue(); display();to_init();delay(1); /=void time_0() interrupt 1 TH0=(65536-2000)/256;TL0=(65536-2000)%256;/= /喷水部分 if( tempValue300) cnt1+; if(cnt1=100) cnt1=0; P11=!P11; else P11=0; /= if( tempValue320) cnt2+; if(cnt1=50) cnt2=0; P12=!P12; else
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年网络安全行业网络安全技术应用前景探讨报告
- 2025年电子科技产业5G技术应用前景研究报告
- 2025年生态环境保护产业发展现状及前景分析报告
- 2025年环保科技行业清洁能源技术前景研究报告
- 2025年家居建材行业绿色建材市场前景预测报告
- 2025年虚拟现实娱乐行业创新应用与市场前景研究报告
- 国家事业单位招聘2025中国地质博物馆招聘应届毕业生拟聘用人员笔试历年参考题库附带答案详解
- 四川省2025年四川安岳县引进急需紧缺专业人才(68人)笔试历年参考题库附带答案详解
- 吉安市2025江西吉安市吉州区社会保险中心招聘就业见习人员3人笔试历年参考题库附带答案详解
- 保定市2025河北定州事业单位选聘工作人员143名笔试历年参考题库附带答案详解
- 2025垂直领域具身智能机器人产业化落地现状及潜力应用场景分析报告
- 大班徒步秋游活动方案
- 成人高考计算机毕业论文
- 呼吸内科发热宣教
- 山洪防御知识培训课件
- 小学生防霸凌课件教学
- 2025年农业灌溉水肥一体化技术应用现状与发展报告
- 项目应收款管理制度
- 瓦斯异常预警管理制度
- 贵州贵州贵安发展集团有限公司招聘考试真题2024
- 跨境人民币合同协议
评论
0/150
提交评论