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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 388|回復: 0
打印 上一主題 下一主題
收起左側

基于STM32CUBEMX+DHT11+LCD1602溫濕度遠程監測系統Proteus仿真

[復制鏈接]
跳轉到指定樓層
樓主
        項目基于STM32CUBEMX配置環境,結合PROTEUS仿真軟件,實現了STM32F103C8T6實時讀取DHT11溫濕度數據,在串口終端顯示并且在LCD1602液晶屏上進行顯示。        對項目的操作步驟進行了詳細記錄,見附件《Proteus  stm32f103C8T6_dht11_lcd1602_hal 過程文檔》,完整的工程代碼見附件壓縮包。

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


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

  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]; // 用于存儲溫度的字符串形式
  10. char HumiStr[16]; // 用于存儲濕度的字符串形式

  11. uint8_t uart_buf[64]; // 擴大緩沖區預留余量
  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個字符長度,超時時間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傳感器響應
  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格式化(第二個參數64是緩沖區最大長度,避免溢出)
  72.                                 buf_len = snprintf((char*)uart_buf, sizeof(uart_buf), "Temperature:%d,Humidity:%d\r\n", TempData, HumiData);
  73.                                 //發送(僅發送實際格式化后的長度,而非整個緩沖區)
  74.                                 HAL_UART_Transmit(&huart1, uart_buf, buf_len, HAL_MAX_DELAY);
  75.                                
  76.                                 sprintf(TempStr, "Temperature %d", TempData); // 構造溫度字符串
  77.                                 sprintf(HumiStr, "Humidity %d", HumiData); // 構造濕度字符串
  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. }
復制代碼


Proteus stm32f103C8T6_dht11_lcd1602_hal.7z

384.34 KB, 下載次數: 0, 下載積分: 黑幣 -5

Proteus stm32f103C8T6_dht11_lcd1602_hal 過程文檔.pdf

3.44 MB, 下載次數: 0, 下載積分: 黑幣 -5

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表