欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 基于STM32CUBEMX+DHT11+LCD1602溫濕度遠(yuǎn)程監(jiān)測(cè)系統(tǒng)Proteus仿真 [打印本頁]

作者: sun_light_sun    時(shí)間: 2025-11-27 00:10
標(biāo)題: 基于STM32CUBEMX+DHT11+LCD1602溫濕度遠(yuǎn)程監(jiān)測(cè)系統(tǒng)Proteus仿真
        項(xiàng)目基于STM32CUBEMX配置環(huán)境,結(jié)合PROTEUS仿真軟件,實(shí)現(xiàn)了STM32F103C8T6實(shí)時(shí)讀取DHT11溫濕度數(shù)據(jù),在串口終端顯示并且在LCD1602液晶屏上進(jìn)行顯示。        對(duì)項(xiàng)目的操作步驟進(jìn)行了詳細(xì)記錄,見附件《Proteus  stm32f103C8T6_dht11_lcd1602_hal 過程文檔》,完整的工程代碼見附件壓縮包。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. /* USER CODE BEGIN PV */
  2. uint8_t DHT11Flag = 1;        // DHT11Flag==0表示DHT11存在
  3. uint8_t TempData;//溫度數(shù)據(jù)
  4. uint8_t HumiData;//濕度數(shù)據(jù)

  5. // 定義全局字符串變量
  6. const char g_send_str[] = "Demo Data Acquisition!\r\n";
  7. const char g_exist_str[] = "DHT11 exist!\r\n";
  8. const char g_no_exist_str[] = "DHT11 not exist!\r\n";

  9. char TempStr[16]; // 用于存儲(chǔ)溫度的字符串形式
  10. char HumiStr[16]; // 用于存儲(chǔ)濕度的字符串形式

  11. uint8_t uart_buf[64]; // 擴(kuò)大緩沖區(qū)預(yù)留余量
  12. uint16_t buf_len;
  13. /* USER CODE END PV */

  14. /* Private function prototypes -----------------------------------------------*/
  15. void SystemClock_Config(void);
  16. /* USER CODE BEGIN PFP */

  17. /* USER CODE END PFP */

  18. /* Private user code ---------------------------------------------------------*/
  19. /* USER CODE BEGIN 0 */

  20. /* USER CODE END 0 */

  21. /**
  22.   * @brief  The application entry point.
  23.   * @retval int
  24.   */
  25. int main(void)
  26. {

  27.   /* USER CODE BEGIN 1 */

  28.   /* USER CODE END 1 */

  29.   /* MCU Configuration--------------------------------------------------------*/

  30.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  31.   HAL_Init();

  32.   /* USER CODE BEGIN Init */

  33.   /* USER CODE END Init */

  34.   /* Configure the system clock */
  35.   SystemClock_Config();

  36.   /* USER CODE BEGIN SysInit */

  37.   /* USER CODE END SysInit */

  38.   /* Initialize all configured peripherals */
  39.   MX_GPIO_Init();
  40.   MX_USART1_UART_Init();
  41.   MX_TIM1_Init();
  42.   /* USER CODE BEGIN 2 */
  43.         HAL_UART_Transmit(&huart1,(uint8_t *)&"Demo Data Acquisition!\r\n",25,10);
  44.                              //串口1輸出打印字符串,25個(gè)字符長度,超時(shí)時(shí)間10ms
  45.                                                                                          
  46.         LCD_Init();
  47.         LCD_Puts(0,0,"DHT11 Data Acquisition!");
  48.         HAL_Delay(500);
  49.         LCD_Clear();

  50.         if(DHT11Flag==1) //先獲得DHT11傳感器響應(yīng)
  51.         {
  52.                 DHT11_Rst();
  53.                 DHT11Flag = DHT11_Check();
  54.                 if(DHT11Flag ==0)
  55.                         HAL_UART_Transmit(&huart1, (uint8_t *)g_exist_str, strlen(g_exist_str), 10);
  56.                 else
  57.                         HAL_UART_Transmit(&huart1, (uint8_t *)g_no_exist_str, strlen(g_no_exist_str), 10);
  58.         }
  59.         HAL_Delay(500);

  60. /* USER CODE END 2 */                                                                                 
  61.   /* USER CODE END 2 */

  62.   /* Infinite loop */
  63.   /* USER CODE BEGIN WHILE */
  64.   while (1)
  65.   {
  66.                
  67.                 if(DHT11Flag ==0)
  68.                 {
  69.                         if(DHT11_Read_Data(&TempData,&HumiData)==0)//正常讀取DHT11
  70.                         {
  71.                                 //用len=nsprintf格式化(第二個(gè)參數(shù)64是緩沖區(qū)最大長度,避免溢出)
  72.                                 buf_len = snprintf((char*)uart_buf, sizeof(uart_buf), "Temperature:%d,Humidity:%d\r\n", TempData, HumiData);
  73.                                 //發(fā)送(僅發(fā)送實(shí)際格式化后的長度,而非整個(gè)緩沖區(qū))
  74.                                 HAL_UART_Transmit(&huart1, uart_buf, buf_len, HAL_MAX_DELAY);
  75.                                
  76.                                 sprintf(TempStr, "Temperature %d", TempData); // 構(gòu)造溫度字符串
  77.                                 sprintf(HumiStr, "Humidity %d", HumiData); // 構(gòu)造濕度字符串
  78.                                 LCD_Puts(0,0,TempStr);
  79.                                 LCD_Puts(0,1,HumiStr);
  80.                         }
  81.                 }
  82.                 HAL_Delay(1000);
  83.     /* USER CODE END WHILE */

  84.     /* USER CODE BEGIN 3 */
  85.   }
  86.   /* USER CODE END 3 */
  87. }
復(fù)制代碼


Proteus stm32f103C8T6_dht11_lcd1602_hal.7z

384.34 KB, 下載次數(shù): 0, 下載積分: 黑幣 -5

Proteus stm32f103C8T6_dht11_lcd1602_hal 過程文檔.pdf

3.44 MB, 下載次數(shù): 0, 下載積分: 黑幣 -5






歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1