找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求一個單片機檢測按鍵控制LED運行程序的編寫思路

[復(fù)制鏈接]
ID:915738 發(fā)表于 2021-5-5 01:23 來自手機 | 顯示全部樓層 |閱讀模式
由于本論壇禁止直接求程序,禁止伸手黨,所以向大家請教一下大致的實現(xiàn)方法與思路,理清頭緒后我自己來寫程序去實現(xiàn),謝謝大家

各位大神,求一個“通過檢測按鍵次數(shù)進(jìn)入下一個子函數(shù)的程序!贝蟾啪褪菃纹瑱C接按鍵后,每按一下就能切換一個LED燈效的程序,能切換三種燈效就行了,燈效我能自己寫,想要的是一個除了燈效外的程序殼子。就是我只要自己添加上燈效代碼就能運行的那種。我用的是STC8G1K08A-36I-SOP8宏晶單片機, 應(yīng)該是P5.5管腳會定義為按鍵腳。跪謝大神
回復(fù)

使用道具 舉報

ID:554500 發(fā)表于 2021-5-5 08:02 | 顯示全部樓層
大概思路如下:

#include "STC8G.H"

sbit key=P5^5;  //低電平觸發(fā)按鍵

char cnt=0;  //按下按鍵次數(shù)

//按鍵掃描,只支持單次調(diào)節(jié),不能連續(xù),防止按鍵抖動
void key_scan()
{
        static char i=0,j=0;
       
        if(key==0)
        {
                if(i==0)
                {
                        if(key==0&&j++>10)  //防止按鍵抖動
                        {
                                i=1;
                                cnt++;
                                if(cnt==3)   //只有3種狀態(tài),所以這里要清零
                                        cnt=0;
                        }
                }
        }
        else
        {
                i=0;  //按鍵釋放后清零
                j=0;
        }
}

//LED燈狀態(tài)
void LED_state()
{
        switch(cnt)
        {
                case 0 :  break;  //狀態(tài)0
                case 1 :  break;  //狀態(tài)1
                case 2 :  break;  //狀態(tài)2
        }
}



void main()
{

while(1)
{
         key_scan();
         LED_state();
}
}

評分

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

查看全部評分

回復(fù)

使用道具 舉報

ID:592807 發(fā)表于 2021-5-5 08:27 | 顯示全部樓層
void Del_key(void)
{
static key_flag = 0;
key_flag+=1;
if(key_flag > 3){key_flag = 1;}
switch(key_flag)
{
case 1:break;
case 2:breal;
case 3:break;
default:break;
}

}

評分

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

查看全部評分

回復(fù)

使用道具 舉報

ID:390416 發(fā)表于 2021-5-5 09:06 | 顯示全部樓層
搞個變量 按鍵按一下 變量增加1  然后 SWITCH 語句 執(zhí)行不同的程序段  如果你有需要 加我一下 發(fā)給你參考

評分

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

查看全部評分

回復(fù)

使用道具 舉報

ID:569384 發(fā)表于 2021-5-5 09:27 | 顯示全部樓層
樓主應(yīng)該是懂一點的,我個人認(rèn)為應(yīng)該這種最基礎(chǔ)的東西應(yīng)該自己先嘗試寫一下,不行了再把代碼發(fā)出來提問。

評分

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

查看全部評分

回復(fù)

使用道具 舉報

ID:915738 發(fā)表于 2021-5-5 09:46 來自手機 | 顯示全部樓層
18701931930 發(fā)表于 2021-5-5 08:02
大概思路如下:

#include "STC8G.H"

跪謝大佬的回復(fù),我LDE燈效的代碼要放在哪才能運行。我是玩高達(dá)模型的,沒接觸過單片機,現(xiàn)在只會簡單的做出燈效,很多基礎(chǔ)知識都不懂,大佬別嫌煩。再次跪謝大佬
回復(fù)

使用道具 舉報

ID:554500 發(fā)表于 2021-5-6 10:00 | 顯示全部樓層
小冰箱 發(fā)表于 2021-5-5 09:46
跪謝大佬的回復(fù),我LDE燈效的代碼要放在哪才能運行。我是玩高達(dá)模型的,沒接觸過單片機,現(xiàn)在只會簡單的 ...


//LED燈狀態(tài)
void LED_state()
{
        switch(cnt)
        {
                case 0 :  break;  //狀態(tài)0
                case 1 :  break;  //狀態(tài)1
                case 2 :  break;  //狀態(tài)2
        }
}

這個函數(shù)里面
這個程序不完整的,只是單純的給你個思路。
注意:除 P3.0 和 P3.1 外,其余所有 I/O 口上電后的狀態(tài)均為高阻輸入狀態(tài),用戶在使
用 I/O 口時必須先設(shè)置 I/O 口模式
回復(fù)

使用道具 舉報

ID:723547 發(fā)表于 2021-5-6 11:18 | 顯示全部樓層
小冰箱 發(fā)表于 2021-5-5 09:46
跪謝大佬的回復(fù),我LDE燈效的代碼要放在哪才能運行。我是玩高達(dá)模型的,沒接觸過單片機,現(xiàn)在只會簡單的 ...

樓主沒接觸過單片機,而且目前的需求純粹的電路也能實現(xiàn),建議樓主選用純電路,一個多檔開關(guān),輕松搞定
回復(fù)

使用道具 舉報

ID:889094 發(fā)表于 2021-5-6 23:27 | 顯示全部樓層
如果想用單片機,樓主起碼應(yīng)該用幾個小時把單片機的基本程序流程看一下,然后再來說程序的事,前面各位給的思路已經(jīng)很清楚了,想拿來用總得有一點基礎(chǔ)才好,補一下吧,不然怎么教會你?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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