基于STM32的溫濕度光照強(qiáng)度仿真設(shè)計(jì)(Proteus仿真+程序設(shè)計(jì)+設(shè)計(jì)報(bào)告+講解視頻)
仿真圖Proteus 8.9
程序編譯器:keil 5
編程語言:C語言
設(shè)計(jì)編號(hào):C0109
1.主要功能
本次嵌入式課程設(shè)計(jì)綜合實(shí)驗(yàn)的內(nèi)容為基于STM32單片機(jī)的溫濕度光照強(qiáng)度采集報(bào)警系統(tǒng)。完成LCD1602液晶顯示、DHT11溫濕度測(cè)量、光敏電阻、指示燈、蜂鳴器控制等多項(xiàng)任務(wù)。
1、以STM32為最小系統(tǒng)電路進(jìn)行連接,用LCD1602液晶顯示屏顯示溫度、濕度、溫度閾值,濕度閾值和光照閾值。
2、用DHT11溫濕度傳感器進(jìn)行溫濕度的測(cè)量,光敏電阻進(jìn)行光照強(qiáng)度測(cè)量。
3、可以通過按鍵可以設(shè)置溫濕度閾值和光照閾值。設(shè)置按鍵進(jìn)入設(shè)置模式/退出設(shè)置模式,按鍵加減調(diào)整閾值。
4、當(dāng)溫濕度或者光強(qiáng)超過設(shè)置的閾值時(shí)有聲光報(bào)警,對(duì)應(yīng)報(bào)警指示燈點(diǎn)亮,蜂鳴器報(bào)警。
5、默認(rèn)溫度低閾值20℃,高閾值30℃,濕度低閾值50%,濕度高閾值80%,光照強(qiáng)度300Lux。
STM32單片機(jī) DHT11 LCD1602 按鍵 光敏電阻
資料下載鏈接:
通過網(wǎng)盤分享的文件:KEY_C0109
鏈接: https://pan.baidu.com/s/19UJFDgOolfIqJ0lfRLZH1A
提取碼: qe8n
2.仿真設(shè)計(jì)
打開仿真工程,雙擊proteus中的單片機(jī),選擇hex文件路徑,然后開始仿真。
開始仿真后LCD1602液晶第一行顯示溫度T,濕度H和光照強(qiáng)度L,第二行顯示溫度正常范圍,濕度正常范圍和光照強(qiáng)度閾值。
調(diào)整DHT11溫濕度模塊濕度為81%,高于閾值,蜂鳴器報(bào)警,濕度過高指示燈點(diǎn)亮。
3.程序設(shè)計(jì)
程序是用keil5 mdk版本打開的,如果打開有問題,核實(shí)下keil的版本。程序是HAL版本編寫的,有stm32cubemx配置文件。有注釋可以結(jié)合講解視頻理解。
int main(void)
{
/* USER CODE BEGIN 1 */
char data_str1[20];
// char data_str2[20];
char data_str2[]="L:000C H:000C ";
char str[20]; //溫度值轉(zhuǎn)換為字符串的存放數(shù)組
ADC_ChannelConfTypeDef sConfig = {0}; //建立sConfig結(jié)構(gòu)體
char adc_str[20]; //AD值轉(zhuǎn)換為字符串的存放數(shù)組
uint32_t adcv; //存放ADC轉(zhuǎn)換結(jié)果
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_TIM2_Init();
MX_ADC1_Init();
/* USER CODE BEGIN 2 */
// printf("DS18B20測(cè)溫實(shí)驗(yàn)nr");
HAL_UART_Transmit(&huart1, (uint8_t *)&"DHT11rn", 7, 10); //串口1發(fā)送字符串,數(shù)組長(zhǎng)度為10,
LCD_Init(); //LCD1602初始化
temp_L=20;temp_H=40; //默認(rèn)溫度閾值20-40
// DS18B20_Get_Temp();
HAL_TIM_Base_Start_IT(&htim2); //初始化定時(shí)器
LED1=LED2=LED3=LED4=LED_ON;
HAL_Delay(100);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_Delay(20);
sConfig.Channel = ADC_CHANNEL_1; //選擇通道1
HAL_ADCEx_Calibration_Start(&hadc1); //開啟adc前校準(zhǔn)一下ADC
HAL_ADC_ConfigChannel(&hadc1, &sConfig); //選擇ADC1的通道1
HAL_ADC_Start(&hadc1); //啟動(dòng)ADC1
HAL_ADC_PollForConversion(&hadc1, 30); //等待ADC1轉(zhuǎn)換結(jié)束,超時(shí)設(shè)定為10ms
adcv = HAL_ADC_GetValue(&hadc1); //讀取ADC1的轉(zhuǎn)換結(jié)果
// sprintf(adc_str,"adc_value=%drn",adcv);
// HAL_UART_Transmit(&huart1, (uint8_t *)adc_str, strlen(adc_str), 20);//串口1發(fā)送字符串,數(shù)組長(zhǎng)度為strlen(str),超時(shí)20ms
// memset(adc_str,0,strlen(adc_str));
light_temp=light_intensity(adcv);
// sprintf(adc_str,"lvalue=%drn",temp);
sprintf(adc_str,"%4.0fLxrn",light_temp);
HAL_UART_Transmit(&huart1, (uint8_t *)adc_str, strlen(adc_str), 20);//串口1發(fā)送字符串,數(shù)組長(zhǎng)度為strlen(str),超時(shí)20ms
memset(adc_str,0,strlen(adc_str));
// temp=(float)adcv*(3.3/4095);
if(DHT11_Get_TempHumi(&hum_dat, &temp_dat)){//讀取失敗
HAL_UART_Transmit(&huart1, (uint8_t *)&"DHT11 read failedrn", 20, 10); //串口1發(fā)送字符串,數(shù)組長(zhǎng)度為3,超時(shí)10ms
} else{//讀取正常
sprintf(str,"TUM=%dCrn",temp_dat);
HAL_UART_Transmit(&huart1, (uint8_t *)str, 20, 10);//串口1發(fā)送字符串,數(shù)組長(zhǎng)度為6,超時(shí)10ms
sprintf(str,"HUM=%d%%rn",hum_dat);
HAL_UART_Transmit(&huart1, (uint8_t *)str, 20, 10);//串口1發(fā)送字符串,數(shù)組長(zhǎng)度為6,超時(shí)10ms
}
//液晶顯示:T溫度 H濕度,
sprintf(data_str1,"T:%d H:%d L:%4.0f ",temp_dat,hum_dat,light_temp);//轉(zhuǎn)換溫度,濕度
LCD_ShowString(0,0,data_str1); //LCD1602顯示第一行
if(setnum==0)
{
sprintf(data_str2,"%d-%d %d-%d %d ",set_temp_dat_l,set_temp_dat,set_hum_dat,set_hum_dat_h,set_light_dat);///轉(zhuǎn)換設(shè)置溫度,設(shè)置濕度
LCD_ShowString(1,0,data_str2); //LCD1602顯示第二行
}
if(setnum == 1)
{
sprintf(data_str2,"%d^%d %d-%d %d ",set_temp_dat_l,set_temp_dat,set_hum_dat,set_hum_dat_h,set_light_dat);///轉(zhuǎn)換設(shè)置溫度,設(shè)置濕度
LCD_ShowString(1,0,data_str2); //LCD1602顯示第二行
}
if(setnum == 2)
{
sprintf(data_str2,"%d-%d^ %d-%d %d ",set_temp_dat_l,set_temp_dat,set_hum_dat,set_hum_dat_h,set_light_dat);///轉(zhuǎn)換設(shè)置溫度,設(shè)置濕度
LCD_ShowString(1,0,data_str2); //LCD1602顯示第二行
}
if(setnum == 3)
{
sprintf(data_str2,"%d-%d %d^%d %d ",set_temp_dat_l,set_temp_dat,set_hum_dat,set_hum_dat_h,set_light_dat);///轉(zhuǎn)換設(shè)置溫度,設(shè)置濕度
LCD_ShowString(1,0,data_str2); //LCD1602顯示第二行
}
if(setnum == 4)
{
sprintf(data_str2,"%d-%d %d-%d^ %d",set_temp_dat_l,set_temp_dat,set_hum_dat,set_hum_dat_h,set_light_dat);///轉(zhuǎn)換設(shè)置溫度,設(shè)置濕度
LCD_ShowString(1,0,data_str2); //LCD1602顯示第二行
}
if(setnum == 5)
{
sprintf(data_str2,"%d-%d %d-%d %d^",set_temp_dat_l,set_temp_dat,set_hum_dat,set_hum_dat_h,set_light_dat);///轉(zhuǎn)換設(shè)置溫度,設(shè)置濕度
LCD_ShowString(1,0,data_str2); //LCD1602顯示第二行
}
// LCD_ShowString(0,0,data_str1); //LCD1602顯示第一行
// LCD_ShowString(1,0,data_str2); //LCD1602顯示第二行
// memset(str,0,strlen(data_str1));
}
/* USER CODE END 3 */
}
程序流程圖
4.設(shè)計(jì)報(bào)告
12111字設(shè)計(jì)報(bào)告,內(nèi)容包括設(shè)計(jì)目標(biāo)、硬件設(shè)計(jì)、軟件設(shè)計(jì)、結(jié)論等。
在當(dāng)今這個(gè)信息技術(shù)日新月異的時(shí)代,物聯(lián)網(wǎng)(IoT)技術(shù)以前所未有的速度重塑著我們的生活和工作方式,其影響力滲透到了社會(huì)經(jīng)濟(jì)的各個(gè)角落。其中,溫濕度光照監(jiān)控系統(tǒng)作為物聯(lián)網(wǎng)技術(shù)應(yīng)用的重要組成部分,在現(xiàn)代農(nóng)業(yè)管理中起到了關(guān)鍵作用,它能幫助農(nóng)民精準(zhǔn)調(diào)控作物生長(zhǎng)環(huán)境,提高農(nóng)作物的產(chǎn)量和質(zhì)量;在智能家居領(lǐng)域,通過智能調(diào)控室內(nèi)溫濕度,為居民創(chuàng)造更加舒適健康的生活空間;而在倉儲(chǔ)物流行業(yè),準(zhǔn)確的溫濕度監(jiān)控則是保證貨物品質(zhì)、減少損耗的重要手段,尤其對(duì)于食品、藥品等對(duì)環(huán)境條件敏感的商品來說至關(guān)重要。
鑒于此,本項(xiàng)目致力于開發(fā)一套高效、可靠的溫濕度光照采集報(bào)警系統(tǒng),以STM32系列單片機(jī)為核心控制器,不僅因?yàn)槠涓咝阅堋?a class="article-link" target="_blank" href="/tag/%E4%BD%8E%E5%8A%9F%E8%80%97/">低功耗的特性,還因其豐富的外設(shè)資源和廣泛的社區(qū)支持,非常適合于構(gòu)建復(fù)雜的嵌入式系統(tǒng)。我們選擇采用Proteus仿真平臺(tái)進(jìn)行設(shè)計(jì)驗(yàn)證,該平臺(tái)以其高度逼真的系統(tǒng)模擬能力著稱,能夠在開發(fā)初期有效規(guī)避硬件搭建中的潛在問題,極大提升開發(fā)效率和設(shè)計(jì)的準(zhǔn)確性。
5.下載鏈接
0、常見使用問題及解決方法–必讀?。。?!
1、程序代碼
2、Proteus仿真
3、功能要求
4、開題報(bào)告
5、設(shè)計(jì)報(bào)告
6、框圖
7、講解視頻
Altium Designer 安裝破解
KEIL+proteus 單片機(jī)仿真設(shè)計(jì)教程
KEIL安裝破解
Proteus元器件查找
Proteus安裝
Proteus簡(jiǎn)易使用教程
單片機(jī)學(xué)習(xí)資料
相關(guān)數(shù)據(jù)手冊(cè)
答辯技巧
設(shè)計(jì)報(bào)告常用描述
鼠標(biāo)雙擊打開查找嘉盛單片機(jī)51 STM32單片機(jī)課程畢業(yè)設(shè)計(jì).url
資料下載鏈接:
通過網(wǎng)盤分享的文件:KEY_C0109
鏈接: https://pan.baidu.com/s/19UJFDgOolfIqJ0lfRLZH1A
提取碼: qe8n