1. 闪亮LED小灯程序:

#include <reg51.h> // 引入头文件

void delay(unsigned int xms) // 自定义延时函数 { unsigned int i, j; for(i=xms;i>0;i--) for(j=112;j>0;j--); }

void main() // 主函数 { while(1) // 循环执行 { P1 = 0x01; // P1口第1位为高电平,点亮LED小灯 delay(1000); // 延时1秒 P1 = 0x00; // P1口所有位为低电平,熄灭LED小灯 delay(1000); // 延时1秒 } }

  1. 从左至右闪烁程序:

#include <reg51.h> // 引入头文件

void delay(unsigned int xms) // 自定义延时函数 { unsigned int i, j; for(i=xms;i>0;i--) for(j=112;j>0;j--); }

void main() // 主函数 { unsigned char i; while(1) // 循环执行 { for(i=0;i<8;i++) // 从左至右依次点亮LED小灯 { P1 = 0x01 << i; // P1口第i+1位为高电平,点亮LED小灯 delay(500); // 延时0.5秒 P1 = 0x00; // P1口所有位为低电平,熄灭LED小灯 delay(500); // 延时0.5秒 } } }

  1. LED灯控制电路程序:

#include <reg51.h> // 引入头文件

void delay(unsigned int xms) // 自定义延时函数 { unsigned int i, j; for(i=xms;i>0;i--) for(j=112;j>0;j--); }

void main() // 主函数 { unsigned char led = 0x01; // 初始点亮第1位LED小灯 while(1) // 循环执行 { P1 = led; // 点亮指定位的LED小灯 if(P3 == 0x01) // 判断是否按下K1 { delay(20); // 延时去抖 if(P3 == 0x01) // 再次判断是否按下K1 { led <<= 1; // LED向左移一位 if(led == 0x00) // 到达最左侧,从最右侧开始 led = 0x80; } } else if(P3 == 0x02) // 判断是否按下K2 { delay(20); // 延时去抖 if(P3 == 0x02) // 再次判断是否按下K2 { led >>= 1; // LED向右移一位 if(led == 0x00) // 到达最右侧,从最左侧开始 led = 0x01; } } }

Keil-51软件进行程序的编写与调试。具体要求:用程序延时的方法让P1口的1个LED小灯每隔1S交替闪亮。编写程序使P1口的8个LED小灯从左至右依次闪烁。利用单片机、按键和LED小灯构成一个LED灯控制电路上电时点亮一位LED按下K1时LED向左移一位按下K2时LED向右移一位。

原文地址: https://www.cveoy.top/t/topic/fKN8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录