找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3030|回復(fù): 1
上一主題 下一主題
收起左側(cè)

STM32單片機(jī)熱釋電燈具程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:412827 發(fā)表于 2019-5-21 21:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
/*板子引腳說明
X0  PC7
X1  PC6
X2  PB15
X3  PA1
X4  PA0
X5  PC4
X6  PB12
X7  PB14

Y0  PC9
Y1  PA8
Y2  PA11
Y3  PA12
Y4  PD2
Y5  PC12

AD0 PC1
AD1 PC2
*/

#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "pwm.h"
#define TIME_1MS 1000
#define TIME_3min 36000000
#define TRUE  1
#define FALSE 0
volatile  u32  timer_tick_count = 0; //定時器節(jié)拍
volatile u32  timer_tick_count1 = 0; //建立任務(wù)池
volatile u32  timer_tick_count2 = 0; //建立任務(wù)池
static u16 Key_Value=0;
static u16 Key_Value1=0;
static u8 light_FG= FALSE;
static u8 P_FG= FALSE;
u16 value=0;
u8 a=0;
u8 i ;
float vol=0;               
int  PWM_TAB[10]={0,                 //白天不工作
                                   200,             //晚上無人20%亮度
                              1000             //有人亮度100%
                             };
u8 pwm=0;
u8 key_SCAN;
#define X0    PCin(7)                                                           
//程序入口
int main()
{        
        Output_GPIO_Init();   //輸出GPIO 初始化。
    ADCx_Init();       //AD初始化
        TimerInit();//定時器初始化
        while(1)
        {
                /*Y0  PC9 Y1  PA8 Y2  PA11 Y3  PA12 Y4  PD2  Y5  PC12*/
            /*ADC轉(zhuǎn)換*/
                 value=Get_ADC_Value(ADC_Channel_11,30);     //光電傳感器,在沒有放書的情況下,不會觸發(fā),只要放到上面有書籍,就要觸發(fā)。
                   vol=(float)value*(3.3/4096);    //轉(zhuǎn)換完成之后的值
           i=(int)vol;    //數(shù)據(jù)類型需要強(qiáng)制轉(zhuǎn)換         
              if(i>=1) //天黑的情況
                  {
                      light_FG= TRUE;
                          a=1;   //占空比20%
                          if(P_FG==TRUE)
                          { light_FG= FALSE;
                                  a=2;
                          }
                                 
                          if(timer_tick_count1>2000)      //設(shè)置天黑有人的情況   紅外識別   可認(rèn)為是按鍵檢測
                          {timer_tick_count1=0;
                  if(X0==1)
                                  {
                                  Key_Value=1;
                                  }
                                    if(X0==0)
                                  {
                                  Key_Value=0;
                                  }
                                 
                             if(Key_Value== Key_Value1)
                                 {
                                          if( Key_Value==0)     //邊沿處理
                                          {Key_Value1= Key_Value;
                                           light_FG= FALSE;
                                           P_FG=TRUE;
                                                timer_tick_count2=0;
                               a=2;
                                          }
                                 }  
                          }
                  }
                   else
                 {
             GPIO_SetBits(GPIOC,GPIO_Pin_9);     //高電平無效   PC9對應(yīng)Y0
        //                 GPIO_ResetBits(GPIOC,GPIO_Pin_9);
                          light_FG= FALSE;
                  }  
                 if( light_FG==TRUE)  
           {                 
                           //PWM波輸出,調(diào)節(jié)燈光亮度
                                if( timer_tick_count>=TIME_1MS)     //頻率為1K    產(chǎn)生PWM波形                        
                                  {        timer_tick_count=0;                   //周期值清零                                   
                                  }                  
                                if( timer_tick_count<PWM_TAB[a])     //調(diào)節(jié)占空比
//                                   GPIO_SetBits(GPIOC,GPIO_Pin_9);     //高電平無效   PC9對應(yīng)Y0
                                 {         GPIO_ResetBits(GPIOC,GPIO_Pin_9);   //低電平有效   PC9對應(yīng)Y0
                                  }               
                                  else
                                  { GPIO_SetBits(GPIOC,GPIO_Pin_9);     //高電平無效   PC9對應(yīng)Y0
                                
                                   }
                   }                 
                  
         if( P_FG==TRUE)  
           {                 
                           //PWM波輸出,調(diào)節(jié)燈光亮度
                                if( timer_tick_count>=TIME_1MS)     //頻率為1K    產(chǎn)生PWM波形                        
                                  {        timer_tick_count=0;                   //周期值清零                                   
                                  }                  
                                if( timer_tick_count<PWM_TAB[a])     //調(diào)節(jié)占空比
//                                   GPIO_SetBits(GPIOC,GPIO_Pin_9);     //高電平無效   PC9對應(yīng)Y0
                                 {         GPIO_ResetBits(GPIOC,GPIO_Pin_9);   //低電平有效   PC9對應(yīng)Y0
                                  }               
                                  else
                                  { GPIO_SetBits(GPIOC,GPIO_Pin_9);     //高電平無效   PC9對應(yīng)Y0
                                
                                   }
                   }                 
                  
                   if(timer_tick_count2>=TIME_3min)
                   {
                   P_FG= FALSE;
                   }
        
        }
}

全部資料51hei下載地址:
熱釋電燈具.7z (178.58 KB, 下載次數(shù): 22)

評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:341741 發(fā)表于 2019-6-2 16:47 | 只看該作者
原理圖可以分享一下嗎
回復(fù)

使用道具 舉報

板凳
ID:525821 發(fā)表于 2019-6-4 04:27
要5個幣,沒舍得。

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表