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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4709|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

STM32單片機(jī)DHT11溫濕度環(huán)境監(jiān)控系統(tǒng)Proteus仿真代碼 帶電機(jī)風(fēng)扇

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
STM32溫濕度環(huán)境監(jiān)控系統(tǒng)DHT11 帶仿真proteus 8.12版本
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  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. //函數(shù)聲明
  25. void GPIO_Configuration(void);
  26. void key_process(void);
  27. //=============================================================================
  28. //文件名稱:Delay
  29. //功能概要:延時(shí)
  30. //參數(shù)說明:nCount:延時(shí)長短
  31. //函數(shù)返回:無
  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. //功能概要:主函數(shù)
  46. //參數(shù)說明:無
  47. //函數(shù)返回: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;  //十位轉(zhuǎn)為ASCII碼
  84.            str[1] = (DHT[0]%10)+0x30;  //個(gè)位轉(zhuǎn)為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;  //十位轉(zhuǎn)為ASCII碼
  88.            str[1] = (DHT[2]%10)+0x30;  //個(gè)位轉(zhuǎn)為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;  //十位轉(zhuǎn)為ASCII碼
  94.            str[1] = st%10+0x30;  //個(gè)位轉(zhuǎn)為ASCII
  95.                    LCD_Write_Char(3,0,str[0]);
  96.                    LCD_Write_Char(4,0,str[1]);

  97.                    str[0] = sh/10+0x30;  //十位轉(zhuǎn)為ASCII碼
  98.            str[1] = sh%10+0x30;  //個(gè)位轉(zhuǎn)為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. //參數(shù)說明:無
  116. //函數(shù)返回:無
  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. ② 開漏復(fù)用功能 GPIO_Mode_AF_OD
  207. ③ 推挽式輸出 GPIO_Mode_Out_PP
  208. ④ 推挽式復(fù)用功能 GPIO_Mode_AF_PP
  209. ————————————————

  210. */
復(fù)制代碼

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

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:850421 發(fā)表于 2023-3-10 16:58 | 只看該作者
寫的很好,待我測(cè)試一下
回復(fù)

使用道具 舉報(bào)

板凳
ID:1066092 發(fā)表于 2023-3-25 02:41 | 只看該作者
兄弟,你這個(gè)keil下使用的插件是哪個(gè)?vdmagdi在keil5里我一直都無法正常使用,它指向了系統(tǒng)臨時(shí)文件夾無法指向編譯目錄,裝載不了編譯后的文件無法一起聯(lián)調(diào)啊。
回復(fù)

使用道具 舉報(bào)

地板
ID:291668 發(fā)表于 2023-3-26 17:55 | 只看該作者
這個(gè)仿真功能不錯(cuò),應(yīng)該學(xué)習(xí)學(xué)習(xí)!
回復(fù)

使用道具 舉報(bào)

5#
ID:737490 發(fā)表于 2023-4-30 12:36 | 只看該作者
請(qǐng)問,仿真的時(shí)候DHT11測(cè)試一直不變都是溫濕度27,AD也測(cè)不出來是為什么啊。管腳控制風(fēng)扇、喇叭、燈也不聽使喚
回復(fù)

使用道具 舉報(bào)

6#
ID:914036 發(fā)表于 2023-5-7 13:37 | 只看該作者
樓主蜂鳴器那里的宏定義有點(diǎn)問題,應(yīng)該是PBout(7)
回復(fù)

使用道具 舉報(bào)

7#
ID:1015682 發(fā)表于 2023-5-9 13:28 | 只看該作者
小琪不想學(xué)習(xí) 發(fā)表于 2023-4-30 12:36
請(qǐng)問,仿真的時(shí)候DHT11測(cè)試一直不變都是溫濕度27,AD也測(cè)不出來是為什么啊。管腳控制風(fēng)扇、喇叭、燈也不聽 ...

是的
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: a天堂在线 | 久久久天天| 欧美精品一区在线 | 欧美精品一区二区三区在线 | 久在线| 神马久久av | 欧美亚洲国产日韩 | 亚洲高清视频一区 | 国产精品久久久久久久久久久免费看 | 精品亚洲一区二区三区四区五区高 | 999精品在线| 涩涩视频在线看 | 国产乱码精品一区二区三区忘忧草 | 99爱视频 | 精品自拍视频 | 五月综合久久 | 99九色| 亚洲视频免费在线 | 国产污视频在线 | 第一区在线观看免费国语入口 | 波多野结衣二区 | 亚洲狠狠爱 | 懂色中文一区二区在线播放 | 日韩福利在线 | 欧美xxxx做受欧美 | 欧美精品一区在线发布 | 在线黄av | 国产精品一区在线 | 91免费小视频 | 久久男人 | 日韩久草| 中文字幕日韩欧美一区二区三区 | 一级做a | 精品国产一区二区国模嫣然 | www.887色视频免费 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 国产精品日韩一区 | 日韩在线免费视频 | 久久国产精品-国产精品 | 午夜影院普通用户体验区 | 人人九九精 |