久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4627|回復: 6
收起左側

STM32單片機DHT11溫濕度環境監控系統Proteus仿真代碼 帶電機風扇

  [復制鏈接]
ID:1059945 發表于 2023-1-1 23:41 | 顯示全部樓層 |閱讀模式
STM32溫濕度環境監控系統DHT11 帶仿真proteus 8.12版本
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif

溫濕度控溫溫度低加熱

溫濕度控溫溫度低加熱


單片機源程序如下:
  1. //頭文件
  2. #include <stm32f10x.h>
  3. #include "GPIOLIKE51.h"
  4. #include "1602.h"
  5. #include <dht11.h>
  6. #include "ADC.h"
  7. #include "delay.h"
  8. #include "stdio.h"
  9. #include "usart.h"        

  10. #define uchar unsigned char
  11. #define uint unsigned int
  12.         
  13. #define key1 PBin(6)
  14. #define key2 PBin(1)
  15. #define key3 PBin(2)
  16. #define key4 PBin(3)
  17. #define beep PBin(7)
  18. #define led PBout(4)
  19. #define led1 PBout(5)

  20. uchar DHT[5];        
  21. uchar str[12];
  22. uchar st=30;
  23. uchar sh=40;                                       
  24. //函數聲明
  25. void GPIO_Configuration(void);
  26. void key_process(void);
  27. //=============================================================================
  28. //文件名稱:Delay
  29. //功能概要:延時
  30. //參數說明:nCount:延時長短
  31. //函數返回:無
  32. //=============================================================================

  33. void Delay(uint32_t nCount)
  34. {
  35.   for(; nCount != 0; nCount--);
  36. }


  37. float valus;
  38. uint16_t AD_Val;
  39. uint8_t vals;        
  40. uint16_t AD;
  41. uint16_t temp;
  42. u16 gz;
  43. //=============================================================================
  44. //文件名稱:main
  45. //功能概要:主函數
  46. //參數說明:無
  47. //函數返回:int
  48. //=============================================================================
  49. int main(void)
  50. {
  51.         
  52.         char str[100];
  53.         GPIO_Configuration();
  54.         Adc_Init();
  55.         LCD_Init();    //液晶初始化
  56. //        uart_init(9600);

  57.         LCD_Write_String(0,0,"ST:    SH:");
  58.         LCD_Write_String(0,1,"T:   H:  ");
  59.         LCD_Write_String(10,1,"Lx:  %");        

  60.   while(1)
  61. {

  62.                 temp++;        
  63.                 if(temp%10)
  64.                 {
  65.                         
  66.                 AD_Val = ADC_GetConversionValue(ADC1);        
  67.                 AD=4095-AD_Val;
  68.                 AD=(AD*99/4095);               
  69.                 sprintf(str,"%d",AD);
  70.                 temp=0;
  71.                 }        
  72.                 LCD_Write_String(12,1,str);
  73.                         if(AD>80)
  74.         {
  75.                 beep=1;
  76.         }
  77.         else{beep=0;}        
  78.                 key_process();
  79.                 DHT_Start();
  80.                 DHT_ByteRead(DHT);


  81.                 DHT[0]=DHT[0]/2;
  82.                 DHT[2]=DHT[2]/2;        

  83.                    str[0] = (DHT[0]/10)%10+0x30;  //十位轉為ASCII碼
  84.            str[1] = (DHT[0]%10)+0x30;  //個位轉為ASCII
  85.                    LCD_Write_Char(2,1,str[0]);
  86.                    LCD_Write_Char(3,1,str[1]);

  87.                    str[0] = (DHT[2]/10)%10+0x30;  //十位轉為ASCII碼
  88.            str[1] = (DHT[2]%10)+0x30;  //個位轉為ASCII
  89.                    LCD_Write_Char(7,1,str[0]);
  90.                    LCD_Write_Char(8,1,str[1]);
  91.                         
  92.                         
  93.                         str[0] = st/10+0x30;  //十位轉為ASCII碼
  94.            str[1] = st%10+0x30;  //個位轉為ASCII
  95.                    LCD_Write_Char(3,0,str[0]);
  96.                    LCD_Write_Char(4,0,str[1]);

  97.                    str[0] = sh/10+0x30;  //十位轉為ASCII碼
  98.            str[1] = sh%10+0x30;  //個位轉為ASCII
  99.                    LCD_Write_Char(10,0,str[0]);
  100.                    LCD_Write_Char(11,0,str[1]);
  101.                
  102.         
  103.                         if(DHT[0]>=st) led=0;
  104.                         else led=1;
  105.                         
  106.                         if(DHT[2]<=sh) led1=0;
  107.                         else led1=1;
  108.                

  109.                    }
  110. }                        
  111.                         


  112. //=============================================================================
  113. //文件名稱:GPIO_Configuration
  114. //功能概要:GPIO初始化
  115. //參數說明:無
  116. //函數返回:無
  117. //=============================================================================
  118. void GPIO_Configuration(void)
  119. {
  120.   GPIO_InitTypeDef GPIO_InitStructure;
  121.   
  122.   RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB , ENABLE);                                                  
  123. //=============================================================================
  124. //LED -> PC13
  125. //=============================================================================                        
  126.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
  127.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  128.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  129.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  130.         
  131.         
  132.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
  133.   GPIO_Init(GPIOB, &GPIO_InitStructure);
  134.         
  135. //        GPIO_Write(GPIOA, 0xffff);
  136.         
  137.           GPIO_Write(GPIOB, 0xffff);
  138.                 GPIO_ResetBits(GPIOB,GPIO_Pin_7);
  139. }
  140. void key_process(void)
  141. {
  142.         
  143. if(key1==0)             //??1
  144.    {
  145.     delay_ms(10);


  146.         if(key1==0)
  147.          {
  148.                
  149.           while(!key1);
  150.           st++;
  151.                  if(st>=35) st=35;

  152.          
  153.           }
  154.    }         
  155.         
  156.         
  157. if(key2==0)             //??1
  158.    {
  159.     delay_ms(10);


  160.         if(key2==0)
  161.          {
  162.                
  163.           while(!key2);
  164.         st--;
  165.                  if(st<=25) st=25;

  166.          
  167.           }
  168.    }

  169.          
  170.          if(key3==0)             //??1
  171.    {
  172.     delay_ms(10);


  173.         if(key3==0)
  174.          {
  175.                
  176.           while(!key3);
  177.         sh++;
  178.                  if(sh>=45) sh=45;

  179.          
  180.           }
  181.    }         
  182.         
  183.         
  184. if(key4==0)             //??1
  185.    {
  186.     delay_ms(10);


  187.         if(key4==0)
  188.          {
  189.                
  190.           while(!key4);
  191.         sh--;
  192.                  if(sh<=35) sh=35;

  193.          
  194.           }
  195.    }
  196. }        


  197. /*
  198. GPIO的八種模式

  199. 4種輸入模式:
  200. ① 輸入浮空 GPIO_Mode_IN_FLOATING
  201. ② 輸入上拉 GPIO_Mode_IPU
  202. ③ 輸入下拉 GPIO_Mode_IPD
  203. ④ 模擬輸入 GPIO_Mode_AIN

  204. ◆ 4種輸出模式:
  205. ① 開漏輸出 GPIO_Mode_Out_OD
  206. ② 開漏復用功能 GPIO_Mode_AF_OD
  207. ③ 推挽式輸出 GPIO_Mode_Out_PP
  208. ④ 推挽式復用功能 GPIO_Mode_AF_PP
  209. ————————————————

  210. */
復制代碼

Keil代碼與Proteus8.13仿真下載:
仿真程序.7z (235.54 KB, 下載次數: 439)

評分

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

查看全部評分

回復

使用道具 舉報

ID:850421 發表于 2023-3-10 16:58 | 顯示全部樓層
寫的很好,待我測試一下
回復

使用道具 舉報

ID:1066092 發表于 2023-3-25 02:41 | 顯示全部樓層
兄弟,你這個keil下使用的插件是哪個?vdmagdi在keil5里我一直都無法正常使用,它指向了系統臨時文件夾無法指向編譯目錄,裝載不了編譯后的文件無法一起聯調啊。
回復

使用道具 舉報

ID:291668 發表于 2023-3-26 17:55 | 顯示全部樓層
這個仿真功能不錯,應該學習學習!
回復

使用道具 舉報

ID:737490 發表于 2023-4-30 12:36 | 顯示全部樓層
請問,仿真的時候DHT11測試一直不變都是溫濕度27,AD也測不出來是為什么啊。管腳控制風扇、喇叭、燈也不聽使喚
回復

使用道具 舉報

ID:914036 發表于 2023-5-7 13:37 | 顯示全部樓層
樓主蜂鳴器那里的宏定義有點問題,應該是PBout(7)
回復

使用道具 舉報

ID:1015682 發表于 2023-5-9 13:28 | 顯示全部樓層
小琪不想學習 發表于 2023-4-30 12:36
請問,仿真的時候DHT11測試一直不變都是溫濕度27,AD也測不出來是為什么啊。管腳控制風扇、喇叭、燈也不聽 ...

是的
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91视频中文 | 伊人超碰| 日韩免费视频一区二区 | 黄色在线观看国产 | 成人国产精品色哟哟 | 欧美成人视屏 | 91精品国产高清一区二区三区 | 亚洲日本乱码在线观看 | 国产精品一区三区 | 精品不卡 | 欧美一区中文字幕 | 久久亚洲精品国产精品紫薇 | 精品欧美一区二区三区久久久 | 欧美综合一区二区三区 | 亚洲欧美一区二区三区国产精品 | 久久成人精品视频 | 天天狠狠 | 成年免费大片黄在线观看岛国 | 国产亚洲成av人片在线观看桃 | 国产精品欧美一区二区三区不卡 | 亚洲精品中文在线 | 天堂av资源| 国外成人在线视频网站 | 日韩免费视频一区二区 | 成人av一区 | 国产在线精品一区二区三区 | 在线国产视频 | 日本福利视频 | 97国产在线视频 | 欧美日韩在线免费 | 黄色一级大片在线免费看产 | 国产在线精品一区二区 | 中文字幕在线免费 | 日韩av电影在线观看 | 天堂久久网 | 国产丝袜一区二区三区免费视频 | 三级av网址| 视频精品一区二区三区 | 人人色视频 | 国产中文字幕亚洲 | 台湾佬伊人 |