软件设计
/*********************************************************************
目 的: 建立DS18B20操作库
目标系统: 基于STM8单片机
应用软件: Cosmic CxSTM8
*********************************************************************/
void _delay_us(u8 us)
{
while(--us);
}
//-----复位-----
void resetOnewire(void)
{
OUT_DQ();
CLR_DQ();
_delay_us(750);
SET_DQ();
_delay_us(100);
IN_DQ();
//while(GET_DQ());
while(!(GET_DQ()));
SET_DQ();
}
//-----读数据-----
u8 rOnewire(void)
{
u8 data=0,i=0;
for(i=0;i<8;i++)
{
data=data>>1;
OUT_DQ();
CLR_DQ();
IN_DQ();
if(GET_DQ()) data|=0x80;
else while(!(GET_DQ()));
_delay_us(60);
}
return(data);
}
//-----写数据-----
void wOnewire(u8 data)
{
u8 i=0;
OUT_DQ();
for(i=0;i<8;i++)
{
CLR_DQ();
if(data&0x01)
{
SET_DQ();
}
else
{
CLR_DQ();
}
data=data>>1;
_delay_us(60); //65
SET_DQ();
}
}
//-----DS18B20转换温度-----
void convertDs18b20(void)
{
resetOnewire();
wOnewire(0xcc);
wOnewire(0x44);
}
//------------DS18BB0读温度----------
u8 readTemp(void)
{
u8 temp1,temp2;
convertDs18b20();
resetOnewire();
wOnewire(0xcc);
wOnewire(0xbe);
temp1=rOnewire();
temp2=rOnewire();
temp2=temp2<<4;
temp1=temp1>>4;
temp2|=temp1;
return (temp2&0x7F);
}
上一篇:STM8 LCD602显示子程序
下一篇:STM8 AT24CXX使用I2C接口读写
推荐阅读最新更新时间:2024-11-10 17:36
设计资源 培训 开发板 精华推荐
- 使用 ON Semiconductor 的 FSDH0165 的参考设计
- LT5568 的典型应用 - 700MHz 至 1050MHz 高线性度直接正交调制器
- AD8312-EVAL,AD8312评估板,50MHz至3.5GHz,45dB RF检波器
- S5U13721P00C000,基于S1D13705F00A嵌入式存储器LCD控制器的开发套件
- WRL-15031,基于 ESP8266 的 SparkFun WiFi IR Blaster
- 用于线性相位控制调光器的 10W、8-LED 调光 LED 驱动器
- LTC2992HMS-1 双路宽范围功率监视器的典型应用
- 40A 200W的电子负载
- SSM2380 SSM2380 2X2 W、无滤波器、立体声、D 类音频放大器的典型原理图增益选择模式
- ZXRE4041 Sot23微功耗1.225V电压基准典型应用