1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
温度传感器是比较简单的外设之一,学习51单片机都会学习ds18b20来学习51的ad转换。
ds18b20是通过iic总线来进行通行的,属于比较简单的模块之一,这里贴出ds18b20的驱动程序,调用时只要直接读取对应地址的数据即可。 #include"temp.h" void Delay1ms(uint y) { uint x; for( ; y>0; y--) { for(x=110; x>0; x--); } } uchar Ds18b20Start() { uchar i; DSPORT=0; i=70; while(i--); DSPORT=1; i=0; while(DSPORT) { Delay1ms(1); i++; if(i>5) {return 0;} } return 1; } void Ds18b20WriteByte(uchar dat) { uchar i,j; for(j=0;j<8;j++) { DSPORT=0; i++; DSPORT=dat&0x01; i=6; while(i--); DSPORT=1; dat>>=1; } } uchar Ds18b20ReadByte() { uchar bi,byte; uint i,j; for(j=8;j>0;j--) { DSPORT=0; i++; DSPORT=1; i++; i++; bi=DSPORT; byte=(byte>>1)|(bi<<7); i=4; while(i--); } return byte; } void Ds18b20ChangeTemp() { Ds18b20Start(); Delay1ms(1); Ds18b20WriteByte(0xcc); Ds18b20WriteByte(0x44); } void Ds18b20ReadTempCom() { Ds18b20Start(); Delay1ms(1); Ds18b20WriteByte(0xcc); Ds18b20WriteByte(0xbe); } int Ds18b20ReadTemp() { uchar tmh,tml; int temp=0; Ds18b20ChangeTemp(); Ds18b20ReadTempCom(); tml=Ds18b20ReadByte(); tmh=Ds18b20ReadByte(); temp=tmh; temp<<=8; temp|=tml; return temp; } |
|
|
|
只有小组成员才能发言,加入小组>>
2565 浏览 0 评论
763浏览 1评论
524浏览 0评论
276浏览 0评论
458浏览 0评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-30 19:45 , Processed in 1.376843 second(s), Total 81, Slave 61 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号