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

QQ登錄

只需一步,快速開始

搜索
查看: 3125|回復(fù): 1
收起左側(cè)

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

[復(fù)制鏈接]
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; //定時(shí)器節(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,             //晚上無(wú)人20%亮度
                              1000             //有人亮度100%
                             };
u8 pwm=0;
u8 key_SCAN;
#define X0    PCin(7)                                                           
//程序入口
int main()
{        
        Output_GPIO_Init();   //輸出GPIO 初始化。
    ADCx_Init();       //AD初始化
        TimerInit();//定時(shí)器初始化
        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);     //光電傳感器,在沒有放書的情況下,不會(huì)觸發(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è)置天黑有人的情況   紅外識(shí)別   可認(rèn)為是按鍵檢測(cè)
                          {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);     //高電平無(wú)效   PC9對(duì)應(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);     //高電平無(wú)效   PC9對(duì)應(yīng)Y0
                                 {         GPIO_ResetBits(GPIOC,GPIO_Pin_9);   //低電平有效   PC9對(duì)應(yīng)Y0
                                  }               
                                  else
                                  { GPIO_SetBits(GPIOC,GPIO_Pin_9);     //高電平無(wú)效   PC9對(duì)應(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);     //高電平無(wú)效   PC9對(duì)應(yīng)Y0
                                 {         GPIO_ResetBits(GPIOC,GPIO_Pin_9);   //低電平有效   PC9對(duì)應(yīng)Y0
                                  }               
                                  else
                                  { GPIO_SetBits(GPIOC,GPIO_Pin_9);     //高電平無(wú)效   PC9對(duì)應(yīng)Y0
                                
                                   }
                   }                 
                  
                   if(timer_tick_count2>=TIME_3min)
                   {
                   P_FG= FALSE;
                   }
        
        }
}

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

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:341741 發(fā)表于 2019-6-2 16:47 | 顯示全部樓層
原理圖可以分享一下嗎
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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