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

文章目录

  • 1.要实现的效果
  • 2.硬件清单
  • 3.硬件连接
  • 4.代码展示
  • 5.效果展示
  • 6.推荐的参考文章

1.要实现的效果

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

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

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

2.硬件清单

硬件 数量 备注
单片机 1 80C51
开关 3 单刀单掷开关
电阻 8 100Ω
电源 1 5V
8 黄色LED

3.硬件连接

这里的开关弄多了,其实只需要一个就可以。
C51学习笔记——C语言实现灯闪烁和流水灯_第1张图片

4.代码展示

#include
#include

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.效果展示

C51学习笔记——C语言实现灯闪烁和流水灯_第2张图片C51学习笔记——C语言实现灯闪烁和流水灯_第3张图片

6.推荐的参考文章

51单片机流水灯方法大全

你可能感兴趣的:(C51学习笔记,c语言,51单片机)