#include#define uchar unsigned char sbit DQ=P2^0; //数据传输线接单片机的相应的引脚 unsigned char tempL=0; //临时变量低位(无符号字符变量) unsigned char tempH=0; //临时变量高位 unsigned int tempa; //温度值(整型变量) uchar display_data[4]={0}; void DS18_delay(int useconds)//延时函数 { int s; for (s=0; s 480ms) DQ=1; //拉高数据线 DS18_delay(3); //等待(15~60ms) 等待存在脉冲 x=DQ; //获得存在信号(用于判断是否有器件) DS18_delay(25); // 等待时间隙结束 return(x); //返回存在信号,0 = 器件存在, 1 = 无器件 } ReadOneChar(void)//读一个字节 { unsigned char i=0; unsigned char dat=0; for (i=8;i>0;i--) { DQ=1; DS18_delay(1); DQ=0; dat>>=1;//复合赋值运算,等效dat=dat>>1(dat=dat右移一位后的值) DQ=1; if(DQ) dat|=0x80; DS18_delay(4); } return(dat); } WriteOneChar(unsigned char dat)//有参函数,功能是"写",而写的内容就是括号内的参数 { unsigned char i=0; for(i=8;i>0;i--) { DQ=0; DQ=dat&0x01; DS18_delay(5); DQ=1; dat>>=1;//复合赋值运算,等效dat=dat>>1(dat=dat右移一位后的值) } DS18_delay(4); } unsigned int ReadTemperature(void)//返回读取的温度. { Init_DS18B20(); //初始化,调用初始化函数 WriteOneChar(0xcc); //跳过读序列号的操作,调用写函数,写0xcc指令码(跳过读序列号) WriteOneChar(0x44); //启动温度转换,调用写函数,写0x44指令码(启动温度转换) DS18_delay(125); //转换需要一点时间,延时 Init_DS18B20(); //初始化,调用初始化函数 WriteOneChar(0xcc); //跳过读序列号的操作,调用写函数,写0xcc指令码(跳过读序列号? WriteOneChar(0xbe); //调用写函数,写0xbe指令码,读温度寄存器(头两个值分别为温度的低位和高位) tempL=ReadOneChar(); //读出温度的低位LSB tempH=ReadOneChar(); //读出温度的高位MSB tempa=((tempH*256)+tempL)*6.25; //温度转换,扩大100返回 //DS18_delay(10); //tempa=tempL+tempH; return(tempa);//运算结果返回到函数 } void display()//显示函数 { unsigned char i,j,k=0x80; unsigned char code dis[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x39}; for(i=0;i<4;i++) { P2=0x0f; if(i==1) P0=dis[display_data[i]]+0x80; else P0=dis[display_data[i]]; P2=k; k=k>>1; for(j=250;j>0;j--); } P2=0x0f; } void main() { unsigned int temp; uchar i; while(1) { temp=ReadTemperature(); display_data[0]=temp/1000; display_data[1]=(temp/100)%10; display_data[2]=(temp/10)%10; display_data[3]=temp%10; for(i=0;i<250;i++) display(); } }
上一篇:单片机控制舵机的C51程序
下一篇:用单片机制作简单计算器的源程序
推荐阅读最新更新时间:2024-03-16 13:10
- 热门资源推荐
- 热门放大器推荐
设计资源 培训 开发板 精华推荐
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?
- 村田推出高精度汽车用6轴惯性传感器
- 福特获得预充电报警专利 有助于节约成本和应对紧急情况