1.通过数组实现led流水灯
#include int m; unsigned char code leds[8] = {0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe}; void delay(unsigned int i) { unsigned int j; unsigned char k; for(j=i; j>0; j--) for(k=125; k>0 ;k--); } int main() { while(1) { for(m = 0; m < 8; m++) { P1 = leds[m]; delay(500); } } return 0; } 使用 if语句实现led灯的控制,i类似于标志位控制进行循环转移 i = 0; while(1) { P1 = leds[i++]; delay(5000); if(i == 8) i = 0; } 2.通过独立按键实现LED灯的闪烁流动 运用独立按键需I/O端口,预先置高,表示作为输入端 #include sbit k1 = P3^4; unsigned int m; unsigned char code leds[8] = {0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe}; void delay(unsigned int i) { unsigned int j; unsigned char k; for(j=i; j>0; j--) for(k=125; k>0; k--); } int main() { k1 = 1; while(1) { for(m = 0; m < 8; ) { P1 = leds[m]; delay(500); if(k1 == 0) { delay(80); if(k1 == 0) m++; } } } return 0; } 3.外部中断1实现按键闪烁 1).实现部分在中断函数里 #include sbit p3_4 = P3^4; unsigned int m; unsigned char code leds[8] = {0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe}; void delay(unsigned int i) { unsigned int j; unsigned char k; for(j=i; j>0; j--) for(k=125; k>0; k--); } int main() { EA = 1; EX1 = 1; IT1 = 1; p3_4 = 0; P1 = leds[0]; while(1); return 0; } void led_key() interrupt 2 { if(m <= 7) { P1 = leds[m++]; delay(500); //m++; } else } 2)实现部分在主函数中 bit flag; //标志位 while(1) { for(m = 0; m < 8; ) { P1 = leds[m]; delay(500); if(flag == 1) { delay(80); //去抖 -----中断 if(flag == 1) m++; } } } void led() interrupt 0 { flag = 1; } P1 = leds[0];
上一篇:【51单片机】1602自定义字符原理及示例(”汉“、爱心及摄氏度示例)
下一篇:单片机led灯闪烁实验总结_玩转51单片机(1):点亮led灯
推荐阅读最新更新时间:2024-11-11 18:17
设计资源 培训 开发板 精华推荐
- 使用 DAC 的软件可配置 16 位双通道单极/双极电压输出
- 具有低电池电量指示的 LTC4420IDD 早期电源故障警告的典型应用电路
- 1.47寸LCD驱动板-172-320
- AM1D-0515DH30-RZ ±15V 1 瓦 DC-DC 转换器的典型应用
- TD8655-大电流降压模块
- BeScopeBundle,用于 BeMicro CV 开发套件的数字示波器
- #第五届立创电子设计大赛#【美岩电子制作】智能电力检测仪
- 使用 VIPer22A PWM 控制器的恒流 (700mA) LED 驱动器
- 基于stm32g431的foc
- 使用 Analog Devices 的 LTC3209EUF-2 的参考设计