蓝桥杯c51实现这个功能。
实现LED小灯(L1~L8)组成的流水灯效果,并利用按键控制方向,
a)按S4,流水灯走左往右,
b)按S5,流水灯走右往左,
c)按S6,流水灯从中间往两边
d)按S7,流水灯熄灭
#单片机
蓝桥杯c51单片机问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
15条回答 默认 最新
关注获得0.45元问题酬金 引用 皆我百晓生 小程序回复内容作答:
下面是一个使用C语言在蓝桥杯C51单片机上实现该功能的示例代码:
#include <reg51.h> #define uint unsigned int #define uchar unsigned char sbit LED1 = P2^0; sbit LED2 = P2^1; sbit LED3 = P2^2; sbit LED4 = P2^3; sbit LED5 = P2^4; sbit LED6 = P2^5; sbit LED7 = P2^6; sbit LED8 = P2^7; sbit S4 = P3^2; sbit S5 = P3^3; sbit S6 = P3^4; sbit S7 = P3^5; void delay(uint ms) //延时函数 { uint i, j; for(i=ms;i>0;i--) for(j=110;j>0;j--); } void main() { while(1) { if(S4==0) //按下S4,流水灯从左往右 { LED1 = 0; delay(100); LED1 = 1; LED2 = 0; delay(100); LED2 = 1; //... //依次控制其他灯的显示状态,以此类推 } else if(S5==0) //按下S5,流水灯从右往左 { LED8 = 0; delay(100); LED8 = 1; LED7 = 0; delay(100); LED7 = 1; //... //依次控制其他灯的显示状态,以此类推 } else if(S6==0) //按下S6,流水灯从中间往两边 { LED4 = 0; delay(100); LED4 = 1; LED5 = 0; delay(100); LED5 = 1; LED3 = 0; delay(100); LED3 = 1; LED6 = 0; delay(100); LED6 = 1; //... //依次控制其他灯的显示状态,以此类推 } else if(S7==0) //按下S7,流水灯熄灭 { LED1 = 1; LED2 = 1; LED3 = 1; LED4 = 1; LED5 = 1; LED6 = 1; LED7 = 1; LED8 = 1; } } }在以上代码中,我们使用了P2口的8个引脚来控制8个LED灯的显示状态。而使用P3口的4个引脚来检测按键输入。
当按下不同的按键时,根据按键的状态不同,控制LED灯的显示状态达到不同的效果。其中函数
delay()用来实现延时效果,从而让LED灯的变化能够被人眼感知到。请注意,此示例代码仅为参考,实际运行时可能需要根据硬件连接和开发环境做一些调整。另外,此示例代码只实现了按键功能,并没有添加其他逻辑,如当按键按下后需要保持持续亮灭的效果等。如有需要,请根据实际需求修改代码。
解决 无用评论 打赏 举报