完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 duoluoxiaosheng 于 2013-10-29 16:16 编辑
给为大大给看看,为什么我的数据总是读不出来啊 附程序
DS18B20-1.rar
(53 KB, 下载次数: 12
)
文件名 DS18B20-1.c #include #include #include "DS18B20-1.h" #define uchar unsigned char #define uint unsigned int unsigned long int D=0; uint temp1=0; uint temp2=0; uchar code DSY_CODE[]={0xC0,0xF9,0xA4,0xB0,0x99, 0x92,0x82,0xF8,0x80,0x90}; void LED_INT() { uint i; P0=0x80; P2=0x01; for(i=0;i<4;i++) { delay1ms(1000); P2<<=1; } } void DSY_DISPLAY(uint x) { uint Ten,One,Dot1,Dot2; P0=0xff; P2=0x00; Ten=x/1000; One=x%1000/100; Dot1=x%100/10; Dot2=x%10; P2=0x08; P0=DSY_CODE[Ten]; delay1ms(10); P2=0x04; P0=DSY_CODE[One]; delay1ms(10); P2=0x04; P0=0x7f; delay1ms(10); P2=0x02; P0=DSY_CODE[Dot1]; delay1ms(10); P2=0x01; P0=DSY_CODE[Dot2]; delay1ms(10); } void main() { LED_INT(); P0=0xff; P2=0x00; ow_reset();//等待DS18B20初始化完成 write_byte(0xcc); write_byte(0x44); delay1ms(800); while(1) { ow_reset(); write_byte(0xcc); write_byte(0xee); temp1=read_byte(); temp2=read_byte(); ow_reset(); D=((temp2<<8)|temp1)*0.625; DSY_DISPLAY(D); } } 文件名:DS18B20-1.h #ifndef _DS18B20_H_ #define _DS18B20_H_ #define uchar unsigned char #define uint unsigned int ***it DQ=P3^0; void delay(uchar x) { while(x--); } void delay1ms(uchar x) { uchar i; while(x--) { for(i=0; i<120;i++); } } //18B20初始化,0 成功,1 不成功。 uchar ow_reset(void) { uchar presence; DQ = 0; //pull DQ line low delay(290); // leave it low for 480μs DQ = 1; // allow line to return high delay(30); // wait for presence presence = DQ; // get presence signal delay(250); // wait for end of timeslot return(presence); // presence signal returned } //读一位数据 uchar read_bit(void) { uchar i; DQ = 0; // pull DQ low to start timeslot DQ = 1; // then return high for (i = 0; i < 30; i++); // delay 15μs from start of timeslot return(DQ); // return value of DQ line } //写一个位数据 void write_bit(char bitval) { DQ = 0; // pull DQ low to start timeslot if(bitval==1) DQ =1; // return DQ high if write 1 delay(5);// hold value for remainder of timeslot DQ = 1; } //读一个字节 uchar read_byte(void) { uchar i; uchar value = 0; for (i = 0; i < 8; i++) { if(read_bit()) value |= 0x01< // reads byte in, one byte at a time and then // shifts it left delay(6); // wait for rest of timeslot } return(value); } //写一个字节 void write_byte(char val) { uchar i; uchar temp; for (i = 0; i < 8; i++) // writes byte, one bit at a time { temp = val>>i; // shifts val right ‘ i ’ spaces temp &= 0x01; // copy that bit to temp write_bit(temp); // write bit in temp into } delay(5); } #endif |
|
相关推荐 |
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
744 浏览 0 评论
【每周推荐】采用11代Intel CPU,基于youyeetoo X1开发板搭建少儿AI智能STEAM积木平台
865 浏览 0 评论
2679 浏览 2 评论
【youyeetoo X1 windows 开发板体验】+ 影音处理和AI模型移植
2295 浏览 5 评论
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 移植zbar的方法
1716 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
5855 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-26 12:51 , Processed in 0.527697 second(s), Total 62, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号