|
stm32的溫度測(cè)量
CMSIS 存放的是由ARM和ST官方提供的一些芯硬件底層定義
HARDWARE 存放開(kāi)發(fā)者自己定義的外設(shè) 比如LED
STLib 存放ST官方對(duì)32的支持庫(kù)
startup 是STM32的啟動(dòng)文件
USR 主函數(shù)入口 和一些用戶文件
SYSTEM 存放原子開(kāi)發(fā)的系統(tǒng)函數(shù)
OBJ LIST 存放生成的中間文件和最后生成的hex文件
PROJ 存放工程文件
0.png (47.49 KB, 下載次數(shù): 73)
下載附件
2017-4-24 21:40 上傳
完整源碼下載:
DHT11.7z
(243.25 KB, 下載次數(shù): 86)
2022-12-15 18:23 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
部分代碼預(yù)覽:
- /**********************************
- * 功能:讀取溫濕度傳感器數(shù)據(jù)
- * 版本:V1.0
- * 作者:zx
- * 日期:2016/5/29
- * 說(shuō)明:不要試著在傳感器正常工作時(shí)將其拔掉,否則會(huì)使程序卡死,如果這種情況發(fā)生了,請(qǐng)重啟設(shè)備!
- * 原因是程序可能會(huì)卡在while循環(huán)上,解決的最有效辦法是加入限時(shí)跳出機(jī)制,但此版本沒(méi)有!
- ***********************************/
- #include "DHT11.h"
- //依次是濕度整數(shù)、小數(shù)部分、溫度整數(shù)、小數(shù)部分、校驗(yàn)碼
- u8 HR,H_temp,Temp,T_temp,checkcode;
- void DHT11_Config(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
-
- GPIO_Init(GPIOC,&GPIO_InitStructure);
-
- GPIO_SetBits(GPIOC,GPIO_Pin_0);
- }
- void Data_IO_IN(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
-
- GPIO_Init(GPIOx,&GPIO_InitStructure);
- }
- void Data_IO_OUT(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
-
- GPIO_Init(GPIOx,&GPIO_InitStructure);
- }
- u8 DHT11_ReadByte(void)
- {
- u8 i,dat = 0;
- Data_IO_IN(GPIOC,GPIO_Pin_0);
- for(i=0;i<8;++i)
- {
- while(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_0));
- Delay_us(30);
- if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_0))
- {
- dat <<= 1;
- dat |= 0x01;
- }
- else
- {
- dat <<= 1;
- }
- while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_0));
- }
- return dat;
- }
- u8 DHT11_ReadData(void)
- {
- Data_IO_OUT(GPIOC,GPIO_Pin_0);
- LINE_LOW(GPIOC,GPIO_Pin_0);
- Delay_ms(25);
- LINE_HIGH(GPIOC,GPIO_Pin_0);
- Data_IO_IN(GPIOC,GPIO_Pin_0);
- while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_0));
- while(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_0));
- while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_0));
- HR = DHT11_ReadByte();
- H_temp = DHT11_ReadByte();
- Temp = DHT11_ReadByte();
- T_temp = DHT11_ReadByte();
- checkcode = DHT11_ReadByte();
- if(HR+H_temp+Temp+T_temp==checkcode)
- return SUCCESS;
- else
- return FAIL;
-
- }
復(fù)制代碼
- #include "user_app.h"
- extern u8 HR,H_temp,Temp,T_temp,checkcode;
- extern char LCD_Start_UI[]; //開(kāi)機(jī)UI
- extern char LCD_Menu_UI[]; //主界面菜單UI
- extern char LCD_Temp_UI[];
- extern char LCD_Hum_UI[];
- extern char LCD_CPU_UI[];
- extern char Pos[];
- extern char DHT11_Init_OK[];
- extern char DS18B20_Init_OK[];
- extern char DS18B20_Init_ERROR[];
- extern char LED_Init_OK[];
- extern char BEEP_Init_OK[];
- int main(void)
- {
- s16 i = 0;
- u8 sta = 0;
- //SysTick_Init();
- Delay_init();
- UART_Config(115200);
- LCD_Show(LCD_Start_UI);
- Delay_ms(1000);
- BIOS_Check();
- LCD_Show(LCD_Menu_UI);
- Delay_ms(300);
- for(;;)
- {
-
- i = DS18B20_Get_Temp();
- DHT11_ReadData();
- Warning_Beep(i);
- Temp_Convert(i);
- Hum_Convert(HR);
- DrawGraph(i);
- sta = !sta;
- LED_RUN(sta);
- //GPIOB->ODR ^= 1<<10;
- LCD_Show(LCD_Temp_UI);
- Delay_ms(100);
- LCD_Show(LCD_Hum_UI);
-
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
|
|