完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
请大神看看哪出了问题 显示不是显示温度 而且还会一会变8一会变0 ;
如图所示: 程序如下: #include #include #define uchar unsigned char #define uint unsigned int ***it DS=P2^2; ***it lcden=P3^4; ***it lcdrs=P3^5; ***it lcdrw=P3^6; ***it dula=P2^6; ***it wela=P2^7; uchar code table[]="temperature:"; void delayus(uint z) {while(--z);} void delayms(uint z) { uint x,y; for(x=z;x>0;x--) for(y=114;y>0;y--); } void Write_1602com(uchar com) { lcdrs=0; P0=com; delayms(5); lcden=1; delayms(5); lcden=0; } void Write_1602date(uchar date) { lcdrs=1; P0=date; delayms(5); lcden=1; delayms(5); lcden=0; } void init() { dula=0; wela=0; lcden=0; lcdrw=0; Write_1602com(0x38); Write_1602com(0x01); Write_1602com(0x0c); Write_1602com(0x06); } void Write_sfm(uchar add,uchar date) //1250 { uchar qian,bai,shi,ge; qian=date/1000; bai=date%1000/100; shi=date%1000%100/10; ge=date%1000%100%10; Write_1602com(0x80+0x40+add); Write_1602date(0x30+qian); Write_1602date(0x30+bai); Write_1602date(0x30+shi); Write_1602date(0x30+ge); } bit DS18B20_init() // DS18b20初始函数 { bit i; DS=1; _nop_(); DS=0; delayus(75); //75*6.5+12=500 DS=1; delayus(2);//2*6.5+12=25 i=DS; delayus(20);//20*6.5+12=132 DS=1; _nop_(); return i; } void Write_DS18B20byte(uchar date)//写 { uchar i; for(i=0;i<8;i++) { DS=0; _nop_(); DS=date&0x01; delayus(15);//6.5*15=110 DS=1; _nop_(); date>>=1; } } uchar Read_DS18B20byte() //读 { uchar i,j,date; for(i=0;i<8;i++) { DS=0; _nop_(); DS=1; delayus(1);//6.5+12=18.5 j=DS; delayus(10);//6.5*10+12=72 DS=1; _nop_(); date=(j<<7)|(date>>1); return date; } } DS18B20_init(); Write_DS18B20byte(0xcc); Write_DS18B20byte(0x44); DS18B20_init(); Write_DS18B20byte(0xcc); Write_DS18B20byte(0xbe); L= Read_DS18B20byte(); M= Read_DS18B20byte(); i=M; i<<=8; i|=L; i=i*0.0625*10+0.5; void main() { uint i,num,a; uchar L,M; init(); Write_1602com(0x80); for(num=0;num<12;num++) { Write_1602date(table[num]); delayms(5); } while(1) { DS18B20_init(); Write_DS18B20byte(0xcc); Write_DS18B20byte(0x44); DS18B20_init(); Write_DS18B20byte(0xcc); Write_DS18B20byte(0xbe); L= Read_DS18B20byte(); M= Read_DS18B20byte(); i=M; i<<=8; i|=L; i=i*0.0625*10+0.5; Write_sfm(5,a); } }
|
|
相关推荐
27个回答
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
好的好的 我不知道我哪出错了
|
|
|
|
|
|
我总感觉是这个显示出了错误 可是想想不会啊
|
|
|
|
|
|
这些代码是我从自己还没公开的固件库里抽出来的,你参考下。 首先是读字节的代码
基于写字节我们就可以对内部寄存器进行写操作了
以写入秒为例,因为这个寄存器中有存在功能位,不能直接写入,要对写入的数据进行一些处理(不过该功能位有点特殊,也可直接将BCD格式的数据写入)。因为C51不支持C99,所以bool是我自己在其他地方枚举的布尔类型。 还有一点需要说明的是出于个人习惯的考虑这个函数的输入参数是十进制的,它将会在内部自动转换为BCD格式并考虑功能位的当前状态后打包写入。
关于BCD与十进制的转换请参考:http://blog.csdn.net/simonjay2007/article/details/30455653 |
|
|
|
|
|
|
|
|
|
|
|
github.com/kayiji3039,在这个主页里有个zhishaniot_bsp的代码仓,里面很详细。 |
|
|
|
|
|
请问楼主可以把1602显示DS18B20的程序发给我看看吗?我仿真没有问题,但是连接实物,就不行,而且不接传感器都有数字。我的邮箱:2294881484@qq.com 真的非常感谢!
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【瑞萨RA6E2】瑞萨E2S软件安装过程,等待过程玩下97_e2 studio_ZGZZ
140 浏览 0 评论
483 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
815 浏览 0 评论
1346 浏览 2 评论
804 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16903 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 14:52 , Processed in 0.797143 second(s), Total 83, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
29921