stm32f103采集DS18B20温度驱动程序

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

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_Pin_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//功能描述:向DS18B20写入一个字节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);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;}}

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功