初级会员

- 积分
- 160
- 金钱
- 160
- 注册时间
- 2019-7-4
- 在线时间
- 27 小时
|

楼主 |
发表于 2019-8-1 10:17:57
|
显示全部楼层
我用的是stm32F407VET6板子,我把主程序简化,其他传感器去掉只剩ds18b20和dht11,问题还是存在?请大佬帮忙看一下。
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "lcd.h"
- #include "dht11.h"
- #include "ds18b20.h"
- u8 Page_Flag=2;
- __align(4) u8 dtbuf[50]; //′òó¡»o′æÆ÷
- int main(void)
- {
-
- u8 tmp,humi; //dht11ζè¡¢êa¶è
- short temp; //ds18b20릏
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éèÖÃÏμí3ÖD¶ÏóÅÏè¼¶·Ö×é2
- delay_init(168); //3õê¼»ˉÑóê±oˉêy
- uart_init(38400); //3õê¼»ˉ′®¿ú2¨ìØÂêÎa500000
-
- InitDis(); //LCD3õê¼»ˉ
-
- DS18B20_Init();
-
-
- while(DHT11_Init())
- {
- lcd_DisStr(1,0,"DHT11 Error ");
- delay_ms(200);
- lcd_clear();
- delay_ms(200);
- }
-
- while(1)
- {
- temp = DS18B20_Get_Temp(); //¶áè¡ds18b20ζè
- DHT11_Read_Data(&tmp,&humi); //¶áè¡dht11μÄÎÂêa¶è
-
- //printf("temp: %3.1f C humi: %2d %%\r\n",temp,humi);
-
- if(Page_Flag == 2)
- {
-
- lcd_DisStr(1,0," Temp Humi is OK");
- lcd_DisStr(2,0," ");
- sprintf((char *)dtbuf,"temp: %3.1f C ",(double)temp/10); //
- lcd_DisStr(3,0,dtbuf);
- sprintf((char *)dtbuf,"humi: %2d %% ",humi);
- lcd_DisStr(4,0,dtbuf);
- }
- }
- }
复制代码- #ifndef __DS18B20_H
- #define __DS18B20_H
- #include "sys.h"
- //IO·½ÏòéèÖÃ
- #define DS18B20_IO_IN() {GPIOC->MODER&=~(3<<(3*2));GPIOC->MODER|=0<<3*2;} //PC3êäèëÄ£ê½
- #define DS18B20_IO_OUT() {GPIOC->MODER&=~(3<<(3*2));GPIOC->MODER|=1<<3*2;} //PC3êä3öÄ£ê½
- ////IO2ù×÷oˉêy
- #define DS18B20_DQ_OUT PCout(3) //êy¾Y¶Ë¿ú PC3
- #define DS18B20_DQ_IN PCin(3) //êy¾Y¶Ë¿ú PC3
- u8 DS18B20_Init(void); //3õê¼»ˉDS18B20
- short DS18B20_Get_Temp(void); //»ñè¡Î¶è
- void DS18B20_Start(void); //¿aê¼Î¶è×a»»
- void DS18B20_Write_Byte(u8 dat);//D′èëò»¸ö×Ö½ú
- u8 DS18B20_Read_Byte(void); //¶á3öò»¸ö×Ö½ú
- u8 DS18B20_Read_Bit(void); //¶á3öò»¸öλ
- u8 DS18B20_Check(void); //¼ì2aêÇ·ñ′æÔúDS18B20
- void DS18B20_Rst(void); //¸′λDS18B20
- #endif
复制代码 ds18b20.c
|
|