ds18b20温度采集实验,ds18b20如何采集温度
chanong
|3、DS18B20的时序分析
DS18B20是单总线,通过DQ引脚进行输入和输出,需要根据时序图连续工作才能实现某些功能。
(1)ds18b20复位时序及功能实现
通过复位信号,可以检测DS18B20是否正常工作,并通知DS18B20准备通信。
(1) 4412 将DQ 引脚拉低,复位周期开始。
(2) DQ 引脚保持低电平480us 至960us,然后释放总线。
(3)4412延迟16us到60us等待DS18B20响应。
(4) DS18B20 通过在60us 到240us 之间将DQ 引脚拉低来指示响应。
4412读取DQ引脚的电平,低电平表示初始化完成。
(5) DS18B20 响应信号结束后,总线释放,DQ 引脚被上拉电阻拉高,结束复位周期。
实现ds18b20的复位代码。
无效DS18_Reset()
{
GPK1.PUD=0; //GPK1_1禁用下拉
GPK1.CON=(GPK1.CON ~(0xF 4)) |0x1 4; //将GPK1_1 设置为输出引脚
GPK1.DAT=~(0x1 1); //将GPK1_1 设置为输出“0”并将DQ 引脚拉低
Late_us(700); //延迟600us
GPK1.DAT |=0x1 1; //GPK1_1释放总线
GPK1.CON=~(0xF 4); //将GPK1_1 设置为输入引脚
while(GPK1.DAT(0x1 1)); //等待DS18B20响应信号(DQ引脚低电平)
while(!(GPK1.DAT (0x1 1)));
//等待DS18B20的响应信号完成(DQ引脚高电平)
(2)ds18b20写入时序及功能实现
如果需要从DS18B20写入数据,必须严格遵守DS18B20的写入时序进行操作。
向DS18B20写逻辑0操作:
(1) 4412 将DQ 引脚拉低,写周期开始。
(2) DQ 引脚保持低电平约15us。
(3) DQ 引脚保持低电平20us 至45us。
(4) 释放总线。
向DS18B20 写入逻辑1 操作。
(1) 4412 将DQ 引脚拉低,写周期开始。
(2) DQ 引脚保持低电平超过1us 后,DQ 引脚变为高电平总共15us。
(3) DQ 引脚将保持高电平20us 至45us。
(4) 释放总线。
实现向DS18B20写入字节码。
void DS18_Write(无符号字符数据)
{
无符号字符i;
GPK1.CON=(GPK1.CON ~(0xF 4)) |0x1 4; //将GPK1_1 设置为输出引脚
for(i=0; i 8; i++)
{
GPK1.DAT |=0x1 1; //设置GPK1_1输出1
Late_us(1); //1us 延迟
GPK1.DAT=~(0x1 1); //设置GPK1_1输出0形成下降沿
Late_us(12); //延迟12us,大于1us但小于15us
if(data0x1) //如果数据低位为1
GPK1.DAT |=0x1 1; //设置GPK1_1输出1
Late_us(40); //延迟40us
data=data 2; //数据右移1位
}
(3)ds18b20写入时序及功能实现
如果需要从DS18B20读取数据,必须严格按照DS18B20的读取时序进行。
(1) 通过4412 将DQ 引脚拉低,开始读取周期。
(2) DQ引脚低电平保持1us以上,然后释放该引脚。
(3) 4412 在读取DQ 引脚上的数据时有几个us 的延迟(考虑物理级响应时间)。
注:根据图中MASTER SAMPLES指令,从低电平转换开始,离开物理电平转换时间,后续对DQ引脚的4412读操作必须在15us内完成。
(4) 15us 后读时隙结束时,DQ 引脚通过外部上拉电阻恢复为高电平。
4412 延迟45us 等待读周期完成。
读1字节数据代码到DS18B20的实现:
无符号字符DS18_Read()
{
unsigned char i, Temp=0; //将接受的变量Temp初始化为0
for(i=0; i 8; i++)
{
GPK1.CON=(GPK1.CON ~(0xF 4)) |0x1 4; //将GPK1_1 设置为输出引脚
GPK1.DAT |=0x1 1; //设置GPK1_1输出1
GPK1.DAT=~(0x1 1); //设置GPK1_1输出0并形成下降沿
GPK1.DAT |=0x1 1; //GPK1_1释放总线
GPK1.CON=~(0xF 4); //将GPK1_1 设置为输出引脚
Temp=1; //接受变量并右移1位
if(GPK1.DAT (0x1 1)) //如果DQ为1,则读取DQ引脚
Temp |=0x80; //接受变量Temp,高1
Late_us(30); //延迟30us
}
返回温度。
//返回接受变量
}
关于嵌入式物联网有很多东西需要学**,但要小心,学**错误的路线和内容可能会让你付出更高的薪水。
免费共享约150GB的数据包。学**内容、访谈、项目都比较新、广泛。据估计,在网上购买某些鱼至少要花费几十美元。
扫码进群并接收信息