• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)按鍵控制花樣燈

    51單片機(jī)按鍵控制花樣燈

    作者: 時(shí)間:2012-09-10 來源:網(wǎng)絡(luò) 收藏

    /****************************************************
    * 本程序?qū)崿F(xiàn)用燈。 *
    * 當(dāng)K1按下時(shí),燈從0xfe向左跑一遍; *
    * 當(dāng)K2按下時(shí),LED燈從0x7f向右跑一遍到了0xfe右跑回到起始位置; *
    * 當(dāng)K3鍵按下時(shí),LED燈從0xfe開始作流水燈形式運(yùn)行一次,然后再流回來。 *
    * 當(dāng)K4鍵按下時(shí),LED燈先亮前四個(gè),接著再轉(zhuǎn)向亮后四個(gè)。 *
    * 當(dāng)K5鍵按下時(shí),結(jié)束任意正在進(jìn)行的程序,使LED燈全部熄滅。 *
    ******************************************************/
    *************************************************
    連接方法:P0接獨(dú)立JP5;P2接LED燈接口JP1 *
    ***********************************************************/
    #include reg52.h> //頭文件,函數(shù)聲明
    #include intrins.h>

    本文引用地址:http://www.czjhyjcfj.com/article/170903.htm

    //定義所在位
    sbit K1=P0^0;
    sbit K2=P0^1;
    sbit K3=P0^2;
    sbit K4=P0^3;
    sbit K5=P0^4;
    unsigned char led;
    unsigned char j;

    void delayms(unsigned char ms) // 1ms標(biāo)準(zhǔn)延時(shí)
    {
    while(ms--)
    {
    for(j=0;j110;j++); //還是無法設(shè)置比較標(biāo)準(zhǔn)的延時(shí),如1S等;所以應(yīng)該用定時(shí)器延時(shí)才最準(zhǔn)確
    }
    }


    void main()
    { //P2=led;
    unsigned int i;

    while(1)
    {

    /*********************************************
    * 當(dāng)K1按下時(shí),燈從0xfe向左跑一遍; *
    *********************************************/
    if(K1==0)
    delayms(10); //消除鍵盤抖動(dòng)
    if(K1==0)
    {
    led=0xfe;
    for(i=0;i7;i++) //i可以去8的倍數(shù),表示本電路執(zhí)行多少次
    {
    //led=0x7f; // P端口的初定義要在循環(huán)外面,不然會(huì)使效果錯(cuò)亂
    P2=led; //由于這里已經(jīng)初設(shè)一個(gè)燈,所以for里面要加上這一個(gè)
    delayms(100); //起初這里設(shè)置500MS,使按鍵每按一下燈彩走一個(gè),不能達(dá)到要求。
    led=_crol_(led,1);

    P2=led;
    delayms(100);

    }
    while(!K1); //這里強(qiáng)調(diào)松開就沒再次執(zhí)行程序
    P2=led; //說明執(zhí)行完上面的程序的最后狀態(tài)
    } //P2=led; // 如果把本行放在這里,雖然在開頭中沒有說明程序燒寫好之后就先顯示一個(gè)燈,但由于本行在if外面,所有最后還是會(huì)顯示


    /***********************************************************
    *當(dāng)K2按下時(shí),LED燈從0x7f向右跑一遍到了0xfe右跑回到起始位置 *
    ***********************************************************/

    if(K2==0)
    delayms(10);
    if(K2==0)
    {
    led=0x7f;
    for(i=0;i7;i++)
    {
    P2=led;
    delayms(100);
    led=_cror_(led,1);

    P2=led;
    delayms(100);


    }
    while(!K1);
    P2=led;
    delayms(100);
    for(i=0;i7;i++)
    {
    led=_crol_(led,1);

    P2=led;
    delayms(100); //跑回去怎么就那么快呀?
    } //此時(shí)led=0x7f

    }
    /*****************************************************
    *當(dāng)K3鍵按下時(shí),LED燈從0xfe開始作流水燈形式運(yùn)行一次,然后再流回來。 *
    *************************************************/
    if(K3==0)
    delayms(10); //消除抖動(dòng)
    if(K3==0)
    {
    led=0xfe;
    delayms(200);
    for(i=0;i7;i++)
    {
    P2=led;
    delayms(200);
    led=led1; // 備注led=_crol_(led,1)等于led1||led>>7;

    P2=led;
    delayms(200);

    if(led==0x00)
    break; //這里一定要有個(gè)break,跳出循環(huán),然后別忘了此時(shí)的狀態(tài)是00,而不是7f
    }
    while(!K1);

    led=0x7f;
    P2=led;
    delayms(200 );
    for(i=0;i7;i++)
    {
    led=led>>1;

    P2=led;
    delayms(200);
    }

    }

    /****************************************************
    *當(dāng)K4鍵按下時(shí),LED燈先亮前四個(gè),接著再轉(zhuǎn)向亮后四個(gè)。*
    ****************************************************/
    if(K4==0)
    delayms(10); //消除抖動(dòng)
    if(K4==0)
    {
    for(i=0;i4;i++) //執(zhí)行四次
    { led=0xf0;
    P2=led;
    delayms(500);
    led=0x0f;
    P2=led;
    delayms(500);
    }
    }

    /********************************************************
    *當(dāng)K5鍵按下時(shí),結(jié)束任意正在進(jìn)行的程序,使LED燈全部熄滅。*
    ********************************************************/
    if(K5==0)
    delayms(10);
    if(K5==0)
    P2=0xff;

    }
    }

    /**** */



    關(guān)鍵詞: 花樣 控制 按鍵 單片機(jī)

    評(píng)論


    相關(guān)推薦

    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 民丰县| 安阳市| 荔波县| 淮阳县| 成武县| 宁津县| 镇江市| 邵阳县| 平山县| 开鲁县| 绥棱县| 略阳县| 涟源市| 民县| 桦南县| 建水县| 新郑市| 石嘴山市| 泰州市| 永济市| 华坪县| 高碑店市| 昆山市| 舞钢市| 公安县| 安吉县| 秭归县| 阜阳市| 奉节县| 泸定县| 宜阳县| 西乌| 中牟县| 苏尼特右旗| 夏邑县| 华容县| 龙泉市| 靖远县| 珲春市| 西充县| 福泉市|