完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
18B20驱动代码步骤:
18B20驱动代码步骤: ***it DQ=P1^4;//数据输入输出脚 单总线接口 #include"intrins.h" 1、初始化 2、温度读取 3、读取18B20数据 4、写18B20数据 1、18B20初始化: /18B20初始化*/ void dsinit() { DQ=0; //总线拉低初始化 Delay500us(); DQ=1; //拉高 Delay500us(); } 时序图: 2、写18B20数据: void write(uchar dat) { uchar i; for(i=0;i<8;i++)//八位数据写入 { DQ=0; //总线拉低,开始写入数据 DQ=dat&0x01; // 0000 0000 &0000 0001= 0000 0001 Delay100us(); DQ=1; //总线拉高,结束数据写操作 dat>>=1;//数据右移动一位。 } } 3、读取18B20数据: /温度数据读取*/ uchar read() { uchar i; uchar dat; for (i=0;i<8;i++) { DQ=0; //总线拉低 dat=dat>>1; //数据移位 nop(); //大约延时15us DQ=1; //总线拉高 if(DQ==1)//如果写完了数据,开始移位 { dat |= 0x80;//1000 0000 } Delay100us(); } return dat; //返回值 } 4、温度读取: uchar temget() { uchar temp; uchar low,high; dsinit();//18b20初始化 write(0xcc); //跳过ROM指令 write(0x44); //开始温度变换 Delay500us(); Delay500us(); dsinit(); //18b20初始化 write(0xcc); //跳过ROM指令 write(0xbe);//读暂存存储器和 CRC 字节 ,读数据直到 9 字节 low=read(); //获取温度下限 high=read();//获取温度上限 temp=high<<4; // temp |=(low>>4); // return temp;//返回数据,刷新 } 其中,温度读取函数uchar temget()可以直接返回到主程序之中运行, 即为: uchar wendu; wendu=temget(); liu=wendu/100; qi=wendu%100/10; ba=wendu%10; 相关的延时: void Delay500us() //@11.0592MHz { unsigned char i, j; _nop_(); _nop_(); i = 6; j = 93; do { while (--j); } while (--i); } /18B20延时函数****/ void Delay100us() //@11.0592MHz { unsigned char i, j; nop(); nop(); i = 2; j = 15; do { while (–j); } while (–i); } 注意!!:使用官网给出的驱动的延时需要扩大8-10倍 写温度获取函数的步骤: 1、初始化 2、忽略ROM操作(ROM指令)【CCH】 3、DS18B20功能指令(读写) 忽略ROM指令:0xCC 发送温度转换指令:0x44 读取暂存器指令:0xbe |
|
|
|
只有小组成员才能发言,加入小组>>
3274 浏览 9 评论
2950 浏览 16 评论
3453 浏览 1 评论
8980 浏览 16 评论
4042 浏览 18 评论
1092浏览 3评论
564浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
560浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2297浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1854浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-17 19:24 , Processed in 0.987714 second(s), Total 49, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号