您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > stm32f103采集DS18B20温度驱动程序
1、includestm32f10x.h#includedelay.h#defineDQ_READGPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5)//功能描述:DS18B20初始化voidDS18B20_Init(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//配置IO口GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//配置IO为浮空输入模式GPIO_Init(GPIOC,&GPIO_InitStructure);}//函数名称:DQ_Mode//功能描述:DS18B20IO控制脚voidDQ_Mode(u8mode){GPIO_InitTypeDefGPIO_InitStructure;if(mode==DOUT){GPIO_InitStructure.GPIO_Pin=GPIO_Pi。
2、n_5;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;//配置IO为开漏输出模式GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//配置IO口的输出速率是50MGPIO_Init(GPIOC,&GPIO_InitStructure);GPIO_WriteBit(GPIOC,GPIO_Pin_5,Bit_RESET);}else{GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOC,&GPIO_InitStructure);}}//功能描述:DS18B20初始化序列u8DS18B20_Reset(void){u8ack=1;DQ_Mode(DOUT);Delay(480);DQ_Mode(DIN);Delay(60);ack=DQ_READ;Delay(250);returnack;}//函数名称:DS18B20_Write//功能描述:向D。
3、S18B20写入一个字节voidDS18B20_Write(u8dat){u8i=0;for(i=0;i8;i++){DQ_Mode(DOUT);Delay(1);if(dat&0x01)DQ_Mode(DIN);elseDQ_Mode(DOUT);Delay(40);DQ_Mode(DIN);dat=1;Delay(1);}}//功能描述:读DS18B20的数据u8DS18B20_Read(void){u8i=0;u8dat=0;for(i=0;i8;i++){DQ_Mode(DOUT);Delay(1);DQ_Mode(DIN);dat=1;Delay(7);if(DQ_READ){dat|=0x80;}Delay(60);}returndat;}//功能描述:读DS18B20的温度u16Get_DS18B20_Tmp(void){u8a[2];u32temp;if(DS18B20_Reset())return0;DS18B20_Write(0xCC);DS18B20_Write(0x44);if(DS18B20_Reset())return0;DS18B20_Write(0xCC。
4、);DS18B20_Write(0xBE);a[0]=DS18B20_Read();a[1]=DS18B20_Read();temp=(a[1]8)|a[0];if(temp&0xF000){temp=(~temp+1)&0xffff;temp=temp*625/1000;temp=(~temp+1)&0xffff;}elsetemp=temp*625/1000;//温度值return(u16)temp;}intMAIN(viod){DS18B20_Init();while(1){Temperature4=Get_DS18B20_Tmp()/10;}}。
本文标题:stm32f103采集DS18B20温度驱动程序
链接地址:https://www.777doc.com/doc-4421994 .html