找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2096|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

請教單片機按鍵順序點燈的思路

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:500671 發(fā)表于 2019-10-11 18:18 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
請教各位大神,我是新手,     單片機32個IO口中設(shè)置3個按鍵,如先觸發(fā)第一個按鍵后29個IO口正向順序亮燈,間 隔為1秒,等待觸發(fā)第二個按鍵后燈正向順序關(guān)燈, 如先觸發(fā)第二個按鍵時逆向亮燈,再等待觸發(fā)第一個按鍵后逆向關(guān)燈。第三個按鍵為全開和順序開的選擇,請問程序的思路是如何呢?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:332444 發(fā)表于 2019-10-11 22:12 | 只看該作者
這個簡單主循環(huán)中搞定,計數(shù)29個中分別按8,16,24,29進行判斷,再設(shè)3個狀態(tài)變量即可。
回復(fù)

使用道具 舉報

板凳
ID:332444 發(fā)表于 2019-10-11 22:20 | 只看該作者

以上16個LED例子可供思路參考。

回復(fù)

使用道具 舉報

地板
ID:332444 發(fā)表于 2019-10-11 22:21 | 只看該作者

#include "reg51.h"
#include<intrins.h>       
void LedXunHuan()
{
    unsigned char i = 0, t = 0, Cnt = 0;
    while(1)
    {
        if(!i) P1 = 0xff;
        else if(i==9)P1 = 254;
        else if(i>8) P1 = _crol_(P1,1); else P1<<=1;//逐個遞亮,_crol_(P1,1);單個亮,點亮16個的把其中一個P1改為P2即可.
        Cnt=89;
        while(Cnt) if(!++t) --Cnt;
        if(++i>16)i=0;//if(i++>=8)i=0;if(++i>=9)i=0;等價3式
    }
}
void main()
{
    LedXunHuan();
}
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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