




免费预览已结束,剩余2页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/*DS18B20.H*/*宏定义*/#define uchar unsigned char#define uint unsigned int/*IO引脚定义*/sbit DS=P32; /定义DS18B20接口/*延时子函数 */void delayb(uint count) uint i; while(count) i=200; while(i0) i-; count-; /*DS18B20初始化*/void dsreset(void) uint i; DS=0; i=103; while(i0)i-; DS=1; i=4; while(i0)i-;/*读一位*/bit tmpreadbit(void) uint i; bit dat; DS=0; i+; /小延时一下 DS=1; i+;i+; dat=DS; i=8; while(i0)i-; return (dat);/*读一个字节*/uchar tmpread(void) uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tmpreadbit(); dat=(j1); /读出的数据最低位在最前面,这样刚好/一个字节在DAT里 return(dat); /将一个字节数据返回/*写一个字节*/void tmpwritebyte(uchar dat) uint i; uchar j; bit testb; for(j=1;j1; if(testb) / 写1部分 DS=0; i+;i+; DS=1; i=8; while(i0)i-; else DS=0; /写0部分 i=8; while(i0)i-; DS=1; i+;i+; /*发送温度转换命令*/void tmpchange(void) dsreset(); /初始化DS18B20 delayb(1); /延时 tmpwritebyte(0xcc); / 跳过序列号命令 tmpwritebyte(0x44); /发送温度转换命令/*获得温度*/int tmp() int temp; uchar a,b; dsreset(); delayb(1); tmpwritebyte(0xcc); tmpwritebyte(0xbe); /发送读取数据命令 a=tmpread(); /连续读两个字节数据 b=tmpread(); temp=b; temp=8; temp=temp|a; /两字节合成一个整型变量。 return temp; /返回温度值/*读取温度传感器的序列号*/void readrom()/本程序中没有用到此函数 uchar sn1,sn2; dsreset(); delayb(1); tmpwritebyte(0x33); sn1=tmpread(); sn2=tmpread();/*效果:温度低于下线值启动继电器报警,达到上线值开启继电器报警说明:板使用12M晶振*/头文件:#include reg51.h#include ds18b20.h/引入DS18B20头文件/变量定义:unsigned char ly_dis4;/定义显示缓冲区unsigned char DSU=29;/上线温度unsigned char DSD=25;/下线温度unsigned char DSA=29;unsigned char DSB=25;code unsigned char table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/表:共阳数码管 0-9 unsigned char oldkey=0xff;/保按键接口状态unsigned char l_posit=0;/显示位置/引脚定义:sbit JDQ=P14;/继电器控制sbit SMG_q = P10;/定义数码管阳级控制脚(千位)sbit SMG_b = P11;/定义数码管阳级控制脚(百位)sbit SMG_s = P12;/定义数码管阳级控制脚(十位)sbit SMG_g = P13;/定义数码管阳级控制脚(个位)sbit SPK = P15;/定义蜂鸣器sbit key1 = P37;/定义按键1sbit key2 = P36;/定义按键2sbit key3 = P35;/定义按键3sbit key4 = P34;/定义按键4sbit key5 = P33;/定义按键5sbit key6 = P32;/定义按键6sbit LED = P20;/定义一个LED灯显示/函数声明:void display(void);/显示函数,显示缓冲区内容void delay(void); void display(unsigned int da);/定义显示函数,参数为显示内容void delay(unsigned int timer); unsigned char ReadKey(void);/读键值返回void init();/初如化函数/主函数,C语言的入口函数:void main()unsigned int i=0;float tt;int ltemp; unsigned char bb=0;/作为显示变量P2=0XFE;/点亮一个LED灯while(1)if(i=0)tmpchange(); /温度转换if(i=100)tt=tmp()*0.0625; /得到真实十进制温度值,因为DS18B20/可以精确到0.0625度,所以读回数据的最低位代表的是0.0625度。if(tt=DSD)/低于下线温度启动继电器JDQ=0;if(tt=DSB) /温度恢复继电器和蜂鸣器停止 JDQ=1; if(tt=DSB) SPK=1;if(tt=DSU)/达到上线温度打开继电器JDQ=0; if(tt=DSU)/开启蜂鸣延时 SPK=0; ltemp=tt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 热固性复合材料车身覆盖件创新创业项目商业计划书
- 2025年度高端养老社区绿化与保洁服务专项合同
- 2025年高端食品加工厂租赁合同书(含品牌使用权)
- 2025年度新型生物制药临床试验项目合作协议范本
- 2025小学食堂智能化环保升级及节能设施采购合同
- 兰花艺术品展销创新创业项目商业计划书
- 2025年智能停车场车位使用权及维护保养服务合同
- 2025年QQ音乐正版授权及数字音乐服务合作协议
- 2025年新型城市综合体场地租用合同样本
- 2025年度地方电视台选秀节目选手参赛协议书
- 汽车保养基础知识优秀课件
- 青少年运动员 运动损伤的预防 课件
- 音乐《上学歌》课件
- 绿色校园创建资料
- 污水处理池 (有限空间)作业安全告知牌及警示标志
- 2022年十部经典的三级片电影
- 六三制新青岛版四年级科学上册第一单元《动物王国》全部课件(一共5课时)
- 消防安全培训及应急演练主题教育课件PPT模板宣传PPT动态PPT
- 顶推法钢箱梁安装施工方案
- 中国诗词协会入会申请表
- 新版人民音乐出版社三年级(上册)音乐教案简版
评论
0/150
提交评论