加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

51单片机流水灯设计适合初学入门新手练习注解详细源程序与仿真

2021/06/29
738
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
方块图(2)
  • 方案介绍
  • 相关文件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

       本程序适合单片机初学入门(新手)练习用,程序注解详细,非常容易看明白。资料免费,有需要者可以免费获取单片机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,从下到上      
/* 函数申明 -----------------------------------------------*/
void delay(uint z);    //延时函数   
void key();            //按键处理函数 
/*
********************************************************************************
** 函数名称 : main(void)
** 函数功能 : 主函数
********************************************************************************
*/
void main()
{
    uchar  num;                  //定义变量
    delay(500);                              //延时
    t=300;                                  //初始速度 值大,速度慢,值小,速率快
    n=1;                                  //从上到下
    GND=0;                                  //置按键接地端低电平
    while(1)                              //主循环
    {                              

        if(n==1)                          //从上到下
        {
            num++;                        //循环变量加1
            if(num>=3)                    //判断循环变量大于3时 ,将循环变量置0
            num=0;                        //将循环变量置0
            if(num==0)                    //判断循环变量等于0时.点亮1,4,7
            P0=0x6D;                    //点亮1,4,7 即01101101 
            else
            if(num==1)                    //判断循环变量等于1时.点亮2,5,8
            P0=0xB6;                    //点亮2,5,8 即10110110 
            else
            if(num==2)                    //判断循环变量等于1时.点亮3,6
            P0=0xDB;                    //点亮3,6 即11011011
            delay(t);                   //延时
            key();                           //调用按键处理子程序
        }
        else                            //从下到上
        { 
            num++;                        //循环变量加1
            if(num>=3)                    //判断循环变量大于3时 ,将循环变量置0
            num=0;                        //将循环变量置0
            if(num==0)                    //判断循环变量等于0时.点亮3,6
            P0=0xDB;                    //点亮3,6 即11011011

            else
            if(num==1)                    //判断循环变量等于1时.点亮2,5,8
            P0=0xB6;                    //点亮2,5,8 即10110110 
            else
            if(num==2)                    //判断循环变量等于1时.点亮1,4,7
            P0=0x6D;                    //点亮1,4,7 即01101101     

            delay(t);                   //延时
            key();                           //调用按键处理子程序
        }
    }
}

/*
********************************************************************************
** 函数名称 : delay(uint z)
** 函数功能 : 延时函数
********************************************************************************
*/
void delay(uint z)
{
    uchar j;                         //定义延时变量
    for(z;z>0;z--)                     //延时第一层循环
        for(j=200;j>0;j--);             //延时第二层循环
}

void key()            //按键处理函数 
{
    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;                //限制延时系数1000
    }
    if(k4==0)                //按键按下
    {
        t=t-10;                //延时速度减10
        if(t<200)            //限制延时速度最快为10
        t=200;                //限制延时系数10
    }
}

  • 51单片机流水灯设计适合初学入门新手练习注解详细源程序与仿真.zip

相关推荐

电子产业图谱