加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

51單片機(jī)流水燈設(shè)計(jì)適合初學(xué)入門新手練習(xí)注解詳細(xì)源程序與仿真

2021/06/29
694
服務(wù)支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗(yàn)、收獲成長和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論
放大
方塊圖(2)
相關(guān)方案
  • 方案介紹
  • 相關(guān)文件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

       本程序適合單片機(jī)初學(xué)入門(新手)練習(xí)用,程序注解詳細(xì),非常容易看明白。資料免費(fèi),有需要者可以免費(fèi)獲取單片機(jī)Keil4軟件工程文件及仿真文件。

單片機(jī)源程序:
#include<reg52.h>    //包含單片機(jī)寄存器的頭文件
#define uchar unsigned char
#define uint unsigned int
sbit k1=P1^1;     //從上到下按鍵  
sbit k2=P1^2;     //從下到上按鍵
sbit k3=P1^3;     //加速按鍵
sbit k4=P1^4;     //減速按鍵
sbit GND=P1^0;                
uint t;            //定義延時(shí)變量
uchar n;        //定義方向標(biāo)志位 n=1,從上到下;n=0,從下到上      
/* 函數(shù)申明 -----------------------------------------------*/
void delay(uint z);    //延時(shí)函數(shù)   
void key();            //按鍵處理函數(shù) 
/*
********************************************************************************
** 函數(shù)名稱 : main(void)
** 函數(shù)功能 : 主函數(shù)
********************************************************************************
*/
void main()
{
    uchar  num;                  //定義變量
    delay(500);                              //延時(shí)
    t=300;                                  //初始速度 值大,速度慢,值小,速率快
    n=1;                                  //從上到下
    GND=0;                                  //置按鍵接地端低電平
    while(1)                              //主循環(huán)
    {                              

        if(n==1)                          //從上到下
        {
            num++;                        //循環(huán)變量加1
            if(num>=3)                    //判斷循環(huán)變量大于3時(shí) ,將循環(huán)變量置0
            num=0;                        //將循環(huán)變量置0
            if(num==0)                    //判斷循環(huán)變量等于0時(shí).點(diǎn)亮1,4,7
            P0=0x6D;                    //點(diǎn)亮1,4,7 即01101101 
            else
            if(num==1)                    //判斷循環(huán)變量等于1時(shí).點(diǎn)亮2,5,8
            P0=0xB6;                    //點(diǎn)亮2,5,8 即10110110 
            else
            if(num==2)                    //判斷循環(huán)變量等于1時(shí).點(diǎn)亮3,6
            P0=0xDB;                    //點(diǎn)亮3,6 即11011011
            delay(t);                   //延時(shí)
            key();                           //調(diào)用按鍵處理子程序
        }
        else                            //從下到上
        { 
            num++;                        //循環(huán)變量加1
            if(num>=3)                    //判斷循環(huán)變量大于3時(shí) ,將循環(huán)變量置0
            num=0;                        //將循環(huán)變量置0
            if(num==0)                    //判斷循環(huán)變量等于0時(shí).點(diǎn)亮3,6
            P0=0xDB;                    //點(diǎn)亮3,6 即11011011

            else
            if(num==1)                    //判斷循環(huán)變量等于1時(shí).點(diǎn)亮2,5,8
            P0=0xB6;                    //點(diǎn)亮2,5,8 即10110110 
            else
            if(num==2)                    //判斷循環(huán)變量等于1時(shí).點(diǎn)亮1,4,7
            P0=0x6D;                    //點(diǎn)亮1,4,7 即01101101     

            delay(t);                   //延時(shí)
            key();                           //調(diào)用按鍵處理子程序
        }
    }
}

/*
********************************************************************************
** 函數(shù)名稱 : delay(uint z)
** 函數(shù)功能 : 延時(shí)函數(shù)
********************************************************************************
*/
void delay(uint z)
{
    uchar j;                         //定義延時(shí)變量
    for(z;z>0;z--)                     //延時(shí)第一層循環(huán)
        for(j=200;j>0;j--);             //延時(shí)第二層循環(huán)
}

void key()            //按鍵處理函數(shù) 
{
    if(k1==0)                //按鍵按下
    {
        delay(20);            //延時(shí)消除按鍵抖動(dòng)
        while(k1==0);        //等待按鍵松開
        n=1;                //從上到下
    }
    if(k2==0)                //按鍵按下
    {
        delay(20);            //延時(shí)消除按鍵抖動(dòng)
        while(k1==0);        //等待按鍵松開
        n=0;                //從下到上
    }         
    if(k3==0)                //按鍵按下
    {
        t=t+10;                //延時(shí)速度加10
        if(t>600)            //限制延時(shí)速度最慢為1000
        t=600;                //限制延時(shí)系數(shù)1000
    }
    if(k4==0)                //按鍵按下
    {
        t=t-10;                //延時(shí)速度減10
        if(t<200)            //限制延時(shí)速度最快為10
        t=200;                //限制延時(shí)系數(shù)10
    }
}

  • 51單片機(jī)流水燈設(shè)計(jì)適合初學(xué)入門新手練習(xí)注解詳細(xì)源程序與仿真.zip

相關(guān)推薦

電子產(chǎn)業(yè)圖譜