• 方案介紹
    • 1.主要功能
    • 2.仿真設(shè)計
    • 3.程序設(shè)計
    • 4.設(shè)計報告
    • 5.下載鏈接
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

基于STM32的溫濕度光照強度仿真設(shè)計(Proteus仿真+程序設(shè)計+設(shè)計報告+講解視頻)

4小時前
233
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

設(shè)計資料獲取聯(lián)系方式.doc

共1個文件

基于STM32的溫濕度光照強度仿真設(shè)計(Proteus仿真+程序設(shè)計+設(shè)計報告+講解視頻)

仿真圖Proteus 8.9

程序編譯器:keil 5

編程語言:C語言

設(shè)計編號:C0109

1.主要功能

本次嵌入式課程設(shè)計綜合實驗的內(nèi)容為基于STM32單片機的溫濕度光照強度采集報警系統(tǒng)。完成LCD1602液晶顯示、DHT11溫濕度測量、光敏電阻、指示燈、蜂鳴器控制等多項任務(wù)。

1、以STM32為最小系統(tǒng)電路進行連接,用LCD1602液晶顯示屏顯示溫度、濕度、溫度閾值,濕度閾值和光照閾值。

2、用DHT11溫濕度傳感器進行溫濕度的測量,光敏電阻進行光照強度測量。

3、可以通過按鍵可以設(shè)置溫濕度閾值和光照閾值。設(shè)置按鍵進入設(shè)置模式/退出設(shè)置模式,按鍵加減調(diào)整閾值。

4、當(dāng)溫濕度或者光強超過設(shè)置的閾值時有聲光報警,對應(yīng)報警指示燈點亮,蜂鳴器報警。

5、默認溫度低閾值20℃,高閾值30℃,濕度低閾值50%,濕度高閾值80%,光照強度300Lux。

STM32單片機 DHT11 LCD1602 按鍵 光敏電阻

資料下載鏈接:

通過網(wǎng)盤分享的文件:KEY_C0109

鏈接: https://pan.baidu.com/s/19UJFDgOolfIqJ0lfRLZH1A

提取碼: qe8n

2.仿真設(shè)計

打開仿真工程,雙擊proteus中的單片機,選擇hex文件路徑,然后開始仿真。

img

開始仿真后LCD1602液晶第一行顯示溫度T,濕度H和光照強度L,第二行顯示溫度正常范圍,濕度正常范圍和光照強度閾值。

img

調(diào)整DHT11溫濕度模塊濕度為81%,高于閾值,蜂鳴器報警,濕度過高指示燈點亮。

img

3.程序設(shè)計

程序是用keil5 mdk版本打開的,如果打開有問題,核實下keil的版本。程序是HAL版本編寫的,有stm32cubemx配置文件。有注釋可以結(jié)合講解視頻理解。

img

img

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測溫實驗nr");
	HAL_UART_Transmit(&huart1, (uint8_t *)&"DHT11rn", 7, 10);						//串口1發(fā)送字符串,數(shù)組長度為10,
	
	LCD_Init();																																//LCD1602初始化

	temp_L=20;temp_H=40;																											//默認溫度閾值20-40
//	DS18B20_Get_Temp();
	HAL_TIM_Base_Start_IT(&htim2);  //初始化定時器
	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);										//啟動ADC1
		HAL_ADC_PollForConversion(&hadc1, 30);		//等待ADC1轉(zhuǎn)換結(jié)束,超時設(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ù)組長度為strlen(str),超時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ù)組長度為strlen(str),超時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ù)組長度為3,超時10ms	
	    } else{//讀取正常
  	  		sprintf(str,"TUM=%dCrn",temp_dat);
			HAL_UART_Transmit(&huart1, (uint8_t *)str, 20, 10);//串口1發(fā)送字符串,數(shù)組長度為6,超時10ms	
			sprintf(str,"HUM=%d%%rn",hum_dat);
			HAL_UART_Transmit(&huart1, (uint8_t *)str, 20, 10);//串口1發(fā)送字符串,數(shù)組長度為6,超時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 */
}

程序流程圖

img

4.設(shè)計報告

12111字設(shè)計報告,內(nèi)容包括設(shè)計目標(biāo)、硬件設(shè)計、軟件設(shè)計、結(jié)論等。

img

在當(dāng)今這個信息技術(shù)日新月異的時代,物聯(lián)網(wǎng)(IoT)技術(shù)以前所未有的速度重塑著我們的生活和工作方式,其影響力滲透到了社會經(jīng)濟的各個角落。其中,溫濕度光照監(jiān)控系統(tǒng)作為物聯(lián)網(wǎng)技術(shù)應(yīng)用的重要組成部分,在現(xiàn)代農(nóng)業(yè)管理中起到了關(guān)鍵作用,它能幫助農(nóng)民精準(zhǔn)調(diào)控作物生長環(huán)境,提高農(nóng)作物的產(chǎn)量和質(zhì)量;在智能家居領(lǐng)域,通過智能調(diào)控室內(nèi)溫濕度,為居民創(chuàng)造更加舒適健康的生活空間;而在倉儲物流行業(yè),準(zhǔn)確的溫濕度監(jiān)控則是保證貨物品質(zhì)、減少損耗的重要手段,尤其對于食品、藥品等對環(huán)境條件敏感的商品來說至關(guān)重要。

鑒于此,本項目致力于開發(fā)一套高效、可靠的溫濕度光照采集報警系統(tǒng),以STM32系列單片機為核心控制器,不僅因為其高性能、低功耗的特性,還因其豐富的外設(shè)資源和廣泛的社區(qū)支持,非常適合于構(gòu)建復(fù)雜的嵌入式系統(tǒng)。我們選擇采用Proteus仿真平臺進行設(shè)計驗證,該平臺以其高度逼真的系統(tǒng)模擬能力著稱,能夠在開發(fā)初期有效規(guī)避硬件搭建中的潛在問題,極大提升開發(fā)效率和設(shè)計的準(zhǔn)確性。

5.下載鏈接

img

0、常見使用問題及解決方法–必讀?。。?!

1、程序代碼

2、Proteus仿真

3、功能要求

4、開題報告

5、設(shè)計報告

6、框圖

7、講解視頻

Altium Designer 安裝破解

KEIL+proteus 單片機仿真設(shè)計教程

KEIL安裝破解

Proteus元器件查找

Proteus安裝

Proteus簡易使用教程

單片機學(xué)習(xí)資料

相關(guān)數(shù)據(jù)手冊

答辯技巧

設(shè)計報告常用描述

鼠標(biāo)雙擊打開查找嘉盛單片機51 STM32單片機課程畢業(yè)設(shè)計.url

資料下載鏈接:

通過網(wǎng)盤分享的文件:KEY_C0109

鏈接: https://pan.baidu.com/s/19UJFDgOolfIqJ0lfRLZH1A

提取碼: qe8n

  • 設(shè)計資料獲取聯(lián)系方式.doc
    下載
意法半導(dǎo)體

意法半導(dǎo)體

意法半導(dǎo)體(ST)集團于1987年6月成立,是由意大利的SGS微電子公司和法國Thomson半導(dǎo)體公司合并而成。1998年5月,SGS-THOMSON Microelectronics將公司名稱改為意法半導(dǎo)體有限公司。意法半導(dǎo)體是世界最大的半導(dǎo)體公司之一,公司銷售收入在半導(dǎo)體工業(yè)五大高速增長市場之間分布均衡(五大市場占2007年銷售收入的百分比):通信(35%),消費(17%),計算機(16%),汽車(16%),工業(yè)(16%)。 據(jù)最新的工業(yè)統(tǒng)計數(shù)據(jù),意法半導(dǎo)體是全球第五大半導(dǎo)體廠商,在很多市場居世界領(lǐng)先水平。例如,意法半導(dǎo)體是世界第一大專用模擬芯片和電源轉(zhuǎn)換芯片制造商,世界第一大工業(yè)半導(dǎo)體和機頂盒芯片供應(yīng)商,而且在分立器件、手機相機模塊和車用集成電路領(lǐng)域居世界前列.

意法半導(dǎo)體(ST)集團于1987年6月成立,是由意大利的SGS微電子公司和法國Thomson半導(dǎo)體公司合并而成。1998年5月,SGS-THOMSON Microelectronics將公司名稱改為意法半導(dǎo)體有限公司。意法半導(dǎo)體是世界最大的半導(dǎo)體公司之一,公司銷售收入在半導(dǎo)體工業(yè)五大高速增長市場之間分布均衡(五大市場占2007年銷售收入的百分比):通信(35%),消費(17%),計算機(16%),汽車(16%),工業(yè)(16%)。 據(jù)最新的工業(yè)統(tǒng)計數(shù)據(jù),意法半導(dǎo)體是全球第五大半導(dǎo)體廠商,在很多市場居世界領(lǐng)先水平。例如,意法半導(dǎo)體是世界第一大專用模擬芯片和電源轉(zhuǎn)換芯片制造商,世界第一大工業(yè)半導(dǎo)體和機頂盒芯片供應(yīng)商,而且在分立器件、手機相機模塊和車用集成電路領(lǐng)域居世界前列.收起

查看更多

相關(guān)推薦

方案定制

去合作
方案開發(fā)定制化,2000+方案商即時響應(yīng)!