• 方案介紹
  • 附件下載
  • 相關推薦
申請入駐 產(chǎn)業(yè)圖譜

51單片機流水燈設計適合初學入門新手練習注解詳細源程序與仿真

2021/06/29
532
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

51單片機流水燈設計適合初學入門新手練習注解詳細源程序與仿真.zip

共1個文件

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

單片機源程序:
#include<reg52.h>    //包含單片機寄存器的頭文件
#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;            //定義延時變量
uchar n;        //定義方向標志位 n=1,從上到下;n=0,從下到上      
/* 函數(shù)申明 -----------------------------------------------*/
void delay(uint z);    //延時函數(shù)   
void key();            //按鍵處理函數(shù) 
/*
********************************************************************************
** 函數(shù)名稱 : main(void)
** 函數(shù)功能 : 主函數(shù)
********************************************************************************
*/
void main()
{
    uchar  num;                  //定義變量
    delay(500);                              //延時
    t=300;                                  //初始速度 值大,速度慢,值小,速率快
    n=1;                                  //從上到下
    GND=0;                                  //置按鍵接地端低電平
    while(1)                              //主循環(huán)
    {                              

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

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

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

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

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

  • 51單片機流水燈設計適合初學入門新手練習注解詳細源程序與仿真.zip
    下載

相關推薦