单片机流水灯C语言程序

最近自学51单片机编程,看大神http://home.eeworld.com.cn/home.php?mod=space&uid=139222&do=blog&classid=988&view=me 的文章,看了前几个,迫不及待的上手,写了一个流水灯的小程序,开始也看了一些算法,看不懂,所以自己研究,写了个算法,算法不好,但好在好理解。
我的第一个单片机程序,让八个灯循环闪烁。
电路图

    #include<reg51.h>
#define TIME 5
void delay(int time){               //延时代码
    int i,j;
    for(i=1000; i>0; i--)
    for(j=time; j>0; j--);
}

int diff(int count){                //算2的i次方
    int i,rs = 1;
    for (i = 0; i < count; i++) {
        rs *= 2;
    }
    return rs;
}

void flicker(int time){             //闪烁算法
    int i,j = -1;
    for(i = 254; i>0; i = (i - diff(j))){
        P1 = i;
        delay(time);
        P1 = 0xff;
        delay(time);
        j++;
    }
}

void main(void)                     //主程序,无限循环
{
    while(1){
        flicker(TIME);
    }
}

延时算法解释
灯亮的顺序二进制表示
254-2^i即为要亮的灯。

  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
51单片机是一款非常常见的单片机,也是学习嵌入式系统的必备工具之一。流水灯是一个简单的程序案例,是快速入门的好选择。在这个案例中,我们将探讨如何使用C语言编写51单片机流水灯程序流水灯程序的基本原理很简单:多个 LED 灯按照一定的时间顺序依次点亮。程序需要用到GPIO输出口进行逐个点亮或熄灭的操作。为了实现流水灯的效果,我们需要使用一个计数器和一个循环结构。当计数器满足一定条件时,程序将指示 LED 灯逐个点亮并熄灭,从而实现流水灯的效果。 开始编写程序的第一步是定义需要使用的 GPIO 端口和计数器。在本例中,我们将使用P0口来控制 LED 灯的点亮和熄灭,然后使用一个数码管显示当前的计数器值。接下来,我们将编写一个基本的循环结构来控制 LED 灯的点亮和熄灭。 在具体编写流水灯程序前,我们需要将51单片机的开发环境搭建好。这包括安装相应的编程软件和芯片调试器,还需要将程序下载到单片机中进行调试。在编写完成之后,我们需要使用软件调试程序并使用芯片调试器将程序烧录到单片机中。 总之,通过本例的流水灯程序案例,我们可以初步认识到51单片机编程特点以及如何使用C语言编写简单的程序。如果能够理解并熟练掌握这一案例,相信会对我们学习嵌入式系统的基础知识和技能有很好的启迪作用。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值