完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
小白一枚,protues仿真DS18b20温度显示,但一直显示零,查资料改了几次都失败,全部程序和仿真在附件中,请大神们帮忙看看是不是初始化之类的写错了。
//Ds18b20初始化, uchar Ds18b20Init() { uchar i; DSPORT=0; Delaylms(500); DSPORT=1; Delaylms(68); i=DSPORT; Delaylms(500); return i; } //写函数 void Ds18b20WriteByte(uchar dat) { uchar i,j; for(i=0;j<8;j++) { DSPORT=0; Delaylms(1); //延时1us DSPORT=dat&0x01; Delaylms(68);//延时68us DSPORT=1; dat>>=1; } } //读函数 uchar Ds18b20ReadByte() { uint i,j; uchar bi,byte; for(i=8;j>0;j--) { DSPORT=0; i++; DSPORT=1; i++; i++; bi=DSPORT; byte=(byte>>1)|(bi<<7); } return byte; } //温度转换指令 void Ds18b20Changetemp() { Ds18b20Init(); Delaylms(1); Ds18b20WriteByte(0xcc); Ds18b20WriteByte(0x44); } //温度读取指令 void Ds18b20ReadTempcom() { Ds18b20Init(); Delaylms(1); Ds18b20WriteByte(0xcc); Ds18b20WriteByte(0xbe);//读取RAM } //读取温度数据 int Ds18b20ReadTemp() { int temp=0; uchar tmh,tml; Ds18b20Changetemp(); Ds18b20ReadTempcom(); tml= Ds18b20ReadByte(); tmh= Ds18b20ReadByte(); temp=tmh; temp<<=8; temp|=tml; return temp; } |
|
相关推荐
2个回答
|
|
编译有错误提醒吗,没有的话就要排查硬件问题
|
|
|
|
值得学习,谢谢分享
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2069 浏览 0 评论
1201 浏览 0 评论
3769 浏览 2 评论
2855 浏览 0 评论
这是汽车360全景控制器上的主板,请问圆圈中的原件是什么,起什么作用?
2614 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 06:11 , Processed in 0.533179 second(s), Total 77, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号