ds18b20驱动程序(c语言)
//#include“reg51.h”
sbit dq =p1^4; //定义通信端口
//延时函数
/*
void delay(unsigned int i)
{
while(i--);
}
*/
//初始化函数
init_ds18b20(void)
{
unsigned char x=0;
dq = 1; //dq复位
delay(8); //稍做延时
dq = 0; //单片机将dq拉低
delay(80); //精确延时 大于 480us
dq = 1; //拉高总线
delay(14);
x=dq; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
delay(20);
}
//读一个字节
readonechar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i》0;i--)
{
dq = 0; // 给脉冲信号
dat》》=1;
dq = 1; // 给脉冲信号
if(dq)
dat|=0x80;
delay(4);
}
return(dat);
}
//写一个字节
writeonechar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i》0; i--)
{
dq = 0;
dq = dat&0x01;
delay(5);
dq = 1;
dat》》=1;
}
//delay(4);
}
//ds18b20程序读取温度
readtemperature(void)
{
unsigned char a=0;
unsigned char b=0;
unsigned int t=0;
float tt=0;
init_ds18b20();
writeonechar(0xcc); // 跳过读序号列号的操作
writeonechar(0x44); // 启动温度转换
init_ds18b20();
writeonechar(0xcc); //跳过读序号列号的操作
writeonechar(0xbe); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
a=readonechar();
b=readonechar();
t=b;
t《《=8;
t=t|a;
tt=t*0.0625;
//t= tt*10+0.5; //放大10倍输出并四舍五入---此行没用
return(t);
}
//ds18b20主程序
main()
{
unsigned char i=0;
while(1)
{
i=readtemperature();//读温度
}
}
ds18b20c语言程序完毕
XC9290/XC9291系列降压DC/DC转换器简介
供应链维稳叠加降本需求,负极材料一体化布局全面提速
深智云智能硬件方案打造传统厂商物联网时代最大钱景
Jaunt与Personify携手,共同为XR内容的创建和发行提供新的解决方案
商场展厅会议室LED显示屏需要具备哪些功能
DS18B20的C语言驱动程序
如何实现光谱共焦传感器的外部触发及扫描
小米平板3曝光 指纹+磁吸式键盘+8G运存+酷睿M3仅1999元
上海矽诺微电子推出CSP-9封装的D类音频功放MIX2010
先进芯片封装技术与可穿戴设备之巧妙融合浅析
深入解读Grace CPU芯片架构
炬芯科技ATS3085获2022年度集成电路优秀产品解决方案
三分钟教你如何选择LED车灯
解读ZigBee射频芯片CC2430应用电路设计
Windows 8和Windows RT区别在哪里?
英飞凌:GaN功率元件前景虽好,但采用为时尚早
华为nova5曝光 后置竖排三摄并采用屏幕指纹
一次不完美的Jboss渗透
现在的AIOT场景能否让芯片领域有所改变
夏普公布可折叠手机原型机 官方号称30万次对折无压力