C51学习笔记——C语言实现灯闪烁和流水灯
文章目录
- 1.要实现的效果
- 2.硬件清单
- 3.硬件连接
- 4.代码展示
- 5.效果展示
- 6.推荐的参考文章
1.要实现的效果
利用Keil和Proteus实现以下的功能:
- 开关打开时,循环:0145闪烁3次+自上而下流水灯1次;
- 开关关闭时,循环:2367闪烁3次+自下而上流水灯1次。
说明一下,我使用的软件版本是Keil uVision2和Proteus7。
为了实现以上的功能,我将LED接在了P0口上,将开关接在了P1.0上。
2.硬件清单
| 硬件 | 数量 | 备注 |
|---|---|---|
| 单片机 | 1 | 80C51 |
| 开关 | 3 | 单刀单掷开关 |
| 电阻 | 8 | 100Ω |
| 电源 | 1 | 5V |
| 灯 | 8 | 黄色LED |
3.硬件连接
这里的开关弄多了,其实只需要一个就可以。

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


6.推荐的参考文章
51单片机流水灯方法大全
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
