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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3346|回復: 1
收起左側

stm32單片機溫室開發資料 源程序Proteus仿真 溫控補光功能

  [復制鏈接]
ID:917653 發表于 2021-5-9 16:59 | 顯示全部樓層 |閱讀模式
具有溫控補光功能的 stm32溫室開發系統資料分享給大家學習,如有問題,請多多指教
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png 文本.png 51hei.png 51hei.png 51hei.png

單片機源程序如下:
  1. #include "stm32f10x.h"
  2. #include "LQ12864.h"
  3. #include "adc.h"
  4. #include "dth11.h"
  5. #define PUSH_UP 1
  6. #define PUSH_DOWN 2
  7. #define PUSH_OK 3
  8. #define PUSH_NONE 4

  9. void main_delay(u32 ms)
  10. {
  11.         int i, j;
  12.         for(i = 0; i < ms; i++)
  13.         {
  14.                 for(j = 0; j < 1000; j++)
  15.                 {
  16.                         ;
  17.                 }
  18.         }
  19. }

  20. //按鍵初始化函數
  21. void KEY_Init(void) //IO初始化
  22. {
  23.          GPIO_InitTypeDef GPIO_InitStructure;
  24.         //初始化KEY0-->GPIOA.1  上拉輸入
  25.          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能PORTA,

  26.         GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2;//PE2~4
  27.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //設置成上拉輸入
  28.          GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOA1
  29. }

  30. int KEY_Read()
  31. {
  32.                 if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0) == 0)
  33.                 {
  34.                         return PUSH_UP;
  35.                 }
  36.                 else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1) == 0)
  37.                 {
  38.                         return PUSH_DOWN;
  39.                 }
  40.                 else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_2) == 0)
  41.                 {
  42.                         return PUSH_OK;
  43.                 }
  44.                 else
  45.                         return PUSH_NONE;
  46. }

  47. void FAN_Init()
  48. {
  49.         GPIO_InitTypeDef  GPIO_InitStruct;
  50.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  51.         GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
  52.         GPIO_InitStruct.GPIO_Pin=GPIO_Pin_1;
  53.         GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
  54.         GPIO_Init(GPIOA,&GPIO_InitStruct);        
  55.         
  56.         GPIO_SetBits(GPIOA,GPIO_Pin_1);        
  57. }

  58. void Beep_Init()
  59. {
  60.         GPIO_InitTypeDef  GPIO_InitStruct;
  61.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  62.         GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
  63.         GPIO_InitStruct.GPIO_Pin=GPIO_Pin_4;
  64.         GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
  65.         GPIO_Init(GPIOA,&GPIO_InitStruct);        
  66.         
  67.         GPIO_SetBits(GPIOA,GPIO_Pin_4);        
  68. }

  69. void LED_Init()
  70. {
  71.         GPIO_InitTypeDef  GPIO_InitStruct;
  72.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  73.         GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
  74.         GPIO_InitStruct.GPIO_Pin=GPIO_Pin_2 | GPIO_Pin_3;
  75.         GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
  76.         GPIO_Init(GPIOA,&GPIO_InitStruct);        
  77.         
  78.         GPIO_SetBits(GPIOA,GPIO_Pin_2);        
  79.         GPIO_SetBits(GPIOA,GPIO_Pin_3);        
  80. }


  81. int main(void)
  82. {         
  83.         int key;
  84.         int times;
  85.         int status[4] = { 0 };
  86.         uint16_t val;
  87.         u8 temp = 0, hum = 0;
  88.         int i = 2;
  89.         char buf[100] = { 0 };
  90.         delay_init()        ;
  91.         LCD_Init() ;         
  92.         Adc_Init();
  93.         DHT11_Init();
  94.         KEY_Init();
  95.         LED_Init();
  96.         FAN_Init();
  97.         Beep_Init();
  98.         while(1)
  99.         {
  100.                 DHT11_Read_Data(&temp, &hum);
  101.                 sprintf(buf, "temp: %d  hum:%d", temp, hum);
  102.                 LCD_P6x8Str(1, 0, buf);
  103.                 val = Get_Adc();  //得到對應通道的adc值
  104.                 sprintf(buf, "light:%d  ", val);
  105.                 LCD_P6x8Str(1, 1, buf);
  106.                 LCD_P6x8Str(1, 2, "LED1     ");        
  107.                 LCD_P6x8Str(1, 3, "LED2     ");        
  108.                 LCD_P6x8Str(1, 4, "BEEP     ");        
  109.                 LCD_P6x8Str(1, 5, "FAN      ");        
  110.                 LCD_P6x8Str(40, i, "*");        //
  111.                 sprintf(buf, "L1:%d L2:%d BE:%d FAN:%d", status[0], status[1], status[2], status[3]);
  112.                 LCD_P6x8Str(1, 6, buf);        
  113.                 for (times = 0; times < 5000; ++times)
  114.                 {
  115.                         key = KEY_Read();
  116.                         if (key != PUSH_NONE)
  117.                         {               
  118.                                 main_delay(200);
  119.                                 break;
  120.                         }
  121.                 }               
  122.                 if(key == PUSH_DOWN)
  123.                 {
  124.                         i++;
  125.                         if(i > 5)
  126.                                 i = 2;
  127.                 }
  128.                 else if(key == PUSH_UP)
  129.                 {
  130.                         i--;
  131.                         if(i < 2)
  132.                                 i = 5;
  133.                 }
  134.                 else if(key == PUSH_OK)
  135.                 {
  136.                         if(i == 2)
  137.                         {
  138.                                 status[0] = !status[0];
  139.                                 status[0] ? GPIO_ResetBits(GPIOA,GPIO_Pin_2) : GPIO_SetBits(GPIOA,GPIO_Pin_2);               
  140.                         }
  141.                         else if(i == 3)
  142.                         {
  143.                                 status[1] = !status[1];
  144.                                 status[1] ? GPIO_ResetBits(GPIOA,GPIO_Pin_3) : GPIO_SetBits(GPIOA,GPIO_Pin_3);                        
  145.                         }
  146.                         else if(i == 4)
  147.                         {
  148.                                 status[2] = !status[2];
  149.                                 status[2] ? GPIO_ResetBits(GPIOA,GPIO_Pin_4) : GPIO_SetBits(GPIOA,GPIO_Pin_4);                                                
  150.                         }
  151.                         else if(i == 5)
  152.                         {
  153.                                 status[3] = !status[3];
  154.                                 status[3] ? GPIO_ResetBits(GPIOA,GPIO_Pin_1) : GPIO_SetBits(GPIOA,GPIO_Pin_1);                                                                        
  155.                         }
  156.                 }
  157.         }
  158. }
復制代碼
51hei.png
所有資料51hei提供下載:
綜合.7z (310.36 KB, 下載次數: 148)

評分

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

查看全部評分

回復

使用道具 舉報

ID:1000026 發表于 2022-1-5 22:18 | 顯示全部樓層
能簡單描述一下,你這設計的功能嗎?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩中文字幕免费在线观看 | 日韩中文在线视频 | 国产一区二区久久久 | 天天天操操操 | 99re6在线视频 | 999久久久| 欧美乱码精品一区二区三区 | 国外成人在线视频 | 成人国产精品久久 | 夜夜久久 | 久久精品国产一区二区三区不卡 | 日韩不卡一区二区 | 久久影音先锋 | 亚洲成人精选 | 亚洲精品一区二区在线观看 | 狠狠亚洲 | 亚洲一区二区三 | 色婷婷精品 | 中文字幕四虎 | 国产精品久久久久久久一区探花 | 婷婷福利视频导航 | 国产精品久久久亚洲 | av一级毛片| 爱爱视频在线观看 | 九九九久久国产免费 | 国产色网站 | 成人免费精品视频 | 久久久在线视频 | 日韩高清国产一区在线 | 一区天堂| 欧美精品一区二区三 | 久久国产一区 | 91不卡在线 | 性色av网站 | 天天天久久久 | 成人激情视频免费观看 | 国产一区影院 | 在线观看国产wwwa级羞羞视频 | 久久丝袜视频 | 久久久久国产精品一区二区 | 国产精品123区 |