u8 DS18B20_ROM[8]; //存放DS18B20的64为ROM编码 int main(void) { u16 temp; USARTx_Init(USART1,72,115200);//串口1的初始化 DS18B20_Init(); //DS18B20初始化 /*1. 读取DS18B20的64位ROM编码*/ //发送复位脉冲、检测存在脉冲 while(DS18B20_CheckDevice()) { printf("DS18B20设备不存在!n"); Dela...
voidDS18B20_Start(void){ DS18B20_Rst(); DS18B20_Check(); DS18B20_Write_Byte(0xcc);//跳过ROMDS18B20_Write_Byte(0x44);//温度转换指令}uint16_tDS18B20_Get_Temperature(void){uint8_ttemp;uint8_tTL,TH;uint16_ttemperature; DS18B20_Start();//开始温度转换DS18B20_Rst();//复位DS18B20DS18B20_Check(...
1bit Ds18b20_Init(void)2{3bit flag;4DQ =0;5Delay500us();6DQ =1;7Delay68us();8flag =DQ;9Delay500us();10returnflag;11} 1voidDs18b20_Check(void)2{3Lcd12864_Init();4while(Ds18b20_Init())Lcd12864_Show_String(2,2,"NO SENSOR!");//初始化5Lcd12864_Show_String(2,2,"Initial OK")...
void DS18B20_Start(void) { DS18B20_Check(); //查询是否有设备应答 DS18B20_Write_Byte(0xcc); //对总线上所有设备进行寻址 DS18B20_Write_Byte(0x44); //启动温度转换 } /*** *函数名称:DS18B20_GetTemperture *函数说明:从ds18b20得到温度值 *函数形参:无 *函数返回:温度数据 *作 者:LC *备 注:无...
void u8 temp;u8 TL, TH;short tem;DS18B20_Start(); // 开始DS18B20的温度转换DS18B20_Rst(); // 重置DS18B20DS18B20_Check(); // 检查DS18B20是否就绪DS18B20_Write_Byte(); // 向DS18B20写入命令字节,启动温度转换过程 接下来,根据DS18B20的转换时序,我们需要等待适当的延迟,以确保转换完成。之后,我们...
*/u8DS18B20_CheckDevice(void)//包含了复位脉冲、检测存在脉冲{DS18B20_OUTPUT_MODE();//初始化为输出模式DS18B20_OUT=0;//产生复位脉冲DelayUs(750);//产生750us的低电平DS18B20_OUT=1;//释放总线DelayUs(15);//等待DS18B20回应if(DS18B20_CleckAck())//检测存在脉冲{return1;}return0;}/* ...
GPIO_Pin_SET:GPIO_Pin_RESET))void DS18B20_Reset(void);uint8_t DS18B20_Check(void);char DS18B20_GPIO_Init(void);void DS18B20_Start(void);float DS18B20_GetTemperture(void);#endif04移植验证 在自己工程中的main主函数中,编写如下。/* * Change Logs: * Date Author Notes * 2024-06-20 ...
void DS18B20_Start(void){ DS18B20_Rst(); DS18B20_Check(); DS18B20_Write_Byte(0xcc); //跳过ROM DS18B20_Write_Byte(0x44); //温度转换指令 } uint16_t DS18B20_Get_Temperature(void){ uint8_t temp; uint8_t TL,TH; uint16_t temperature; DS18B20_Start(); //开始温度转换 DS18B20_Rst(); ...
(1);///< 拉高15us}//等待DS18B20的回应//返回1:未检测到DS18B20的存在//返回0:存在uint8_tDS18B20_Check(void){uint8_t retry=0;DS18B20_IO_IN();///< 配置端口输入while((Gpio_GetInputIO(GpioPortB,GpioPin8)==1)&&(retry<100))///< 最多200us{retry++;delay_us(1);///< 每次等待2us}...
staticu8ds18b20_CheckRst(void) { u8time=0; DS18B20_OUT_MODE();/*输出模式*/ DS18B20_OUT(0);/*总线拉低*/ udelay(600);/*至少480us低电平*/ DS18B20_OUT(1);/*释放总线,恢复为空闲电平*/ udelay(15); DS18B20_INPUT_MODE();/*输入模式*/ ...