C51学习笔记——C语言实现灯闪烁和流水灯

1.要实现的效果

利用Keil和Proteus实现以下的功能:

  • 开关打开时,循环:0145闪烁3次+自上而下流水灯1次;
  • 开关关闭时,循环:2367闪烁3次+自下而上流水灯1次。

说明一下,我使用的软件版本是Keil uVision2Proteus7
为了实现以上的功能,我将LED接在了P0口上,将开关接在了P1.0上

2.硬件清单

硬件数量备注
单片机180C51
开关3单刀单掷开关
电阻8100Ω
电源15V
8黄色LED

3.硬件连接

这里的开关弄多了,其实只需要一个就可以。
在这里插入图片描述

4.代码展示

#include<reg51.h>
#include<intrins.h>

short led1;
short flag_0145 = 0;
short flag_2367 = 0;
sbit switch1 = P1^0;

void delay(unsigned int i)	
{
    i*=100;
	while(--i);
}

void main()
{
    while(1)
    {
        //开始三次的闪灯
        if(switch1)         //开关1关闭 --> 0145灯闪烁三次 + 往下的流水灯
        {
            if(flag_0145 < 3)
            {
                P0 = 0xCC;
                delay(500);
                P0 = 0xFF;
                delay(500); 
                flag_0145++;               
                led1 = 0x7F;
            }
            flag_2367 = 0;
            if(flag_0145 == 3)     //闪灯结束,开始流水灯
            {

                led1 = _crol_(led1,1);
                P0 = led1;
                if(led1 == 0x7F)
                    flag_0145 = 0;
                delay(250);
      		}
		}
        else                 //开关1关闭 --> 2367灯闪烁三次 + 往上的流水灯
        {
            if(flag_2367 < 3)
            {
                P0 = ~0xCC;
                delay(500);
                P0 = 0xFF;
                delay(500);	 
                flag_2367++; 
                led1 = 0xFE;             
            }
            flag_0145 = 0;
            if(flag_2367 == 3) //闪灯结束,开始流水灯
            {
                led1 = _cror_(led1,1);
                P0 = led1;
                if(led1 == 0xFE)
                    flag_2367 = 0;
                delay(250);
    		}
		}
	}
}

5.效果展示

在这里插入图片描述请添加图片描述

6.推荐的参考文章

51单片机流水灯方法大全

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值