找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2213|回復: 0
收起左側(cè)

單片機按鍵控制LED閃爍次數(shù)及快慢

[復制鏈接]
ID:448556 發(fā)表于 2021-10-19 09:30 | 顯示全部樓層 |閱讀模式
#include"reg51.h"
#define u8 unsigned char
#define u16 unsigned int
#define u32 unsigned long

sbit KEY1=P2^1;
sbit LED=P2^0;
bit LED_Flash_flag;

void flash(u8 number,u16 const_time_level) //LED閃爍函數(shù) 可以精確閃爍次數(shù)number  閃爍快慢
{
        static u8 flash_count=0;//閃爍次數(shù)=flash_count/2
        static u16 count=0;//閃爍計數(shù)
        number+=number;
        if(LED_Flash_flag)
                {
                flash_count=number;LED_Flash_flag=0;
                }
        if(flash_count)
        {        if(count>const_time_level)//閃爍計數(shù) 時間越長,閃的越慢
                {
                        //LED^=1;//異或運算 實現(xiàn)位取反 占用5字節(jié)
                        count=0;
                        flash_count--;
                        if(LED)LED=0;//語句判斷 占用9字節(jié)
                        else LED=1;
                        //LED=~LED;//位取反  占用2字節(jié)
                }
                count++;
        }
}
//void flash1() //LED閃爍函數(shù) 長閃
//{
//        static u16 count=0;//閃爍計數(shù)
//        

//if(count>const_time_level)//閃爍計數(shù) 時間越長,閃的越慢
//                {
//                        //LED^=1;//異或運算 實現(xiàn)位取反 占用5字節(jié)
//                        count=0;
//        
//                        if(LED)LED=0;//語句判斷 占用9字節(jié)
//                        else LED=1;
//                        //LED=~LED;//位取反  占用2字節(jié)
//                }
//                count++;
//        }

        
///*********LED閃爍函數(shù)**********************/        
//void flash2() //LED閃爍函數(shù) 長閃
//{
//        static u16 count=0;//閃爍計數(shù)
//        

//if(count%100==0)//閃爍計數(shù) 時間越長,閃的越慢
//                {
//                        //LED^=1;//異或運算 實現(xiàn)位取反 占用5字節(jié)
//                        count=0;
//                        
//                        if(LED)LED=0;//語句判斷 占用9字節(jié)
//                        else LED=1;
//                        //LED=~LED;//位取反  占用2字節(jié)
//                }
//                count++;
//        }
void delay(u16 i)
{
while(i--);

}
        
void main()
{
        LED=0;
  while(1)
  {
                if(KEY1==0)
                {
                delay(10000);
                        if(KEY1==0)
                        {
                        LED_Flash_flag=1;
                        }
                }
   flash(5,10000);        
         //flash2();
  }
}

51hei截圖_20211019092854.png

評分

參與人數(shù) 1黑幣 +20 收起 理由
tang12345678 + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表