Keil-51 单片机 LED 控制程序编写与调试教程

本教程将介绍使用 Keil-51 软件编写单片机程序控制 LED 的方法,并包含三种典型案例:

  1. 用程序延时的方法让 P1 口的 1 个 LED 小灯每隔 1S 交替闪亮。
  2. 编写程序使 P1 口的 8 个 LED 小灯从左至右依次闪烁。
  3. 利用单片机、按键和 LED 小灯,构成一个 LED 灯控制电路,上电时,点亮一位 LED,按下 K1 时,LED 向左移一位,按下 K2 时,LED 向右移一位。

1. 单个 LED 闪烁

代码如下:

#include <reg52.h>

void delay(unsigned int t) // 延时函数
{
    unsigned int i,j;
    for(i=0;i<t;i++)
        for(j=0;j<125;j++);
}

void main()
{
    while(1)
    {
        P1 = 0x01; // 点亮第一个 LED
        delay(1000); // 延时 1 秒
        P1 = 0x00; // 熄灭 LED
        delay(1000); // 延时 1 秒
    }
}

2. 多个 LED 依次闪烁

代码如下:

#include <reg52.h>

void delay(unsigned int t) // 延时函数
{
    unsigned int i,j;
    for(i=0;i<t;i++)
        for(j=0;j<125;j++);
}

void main()
{
    unsigned char i;
    while(1)
    {
        for(i=0;i<8;i++) // 依次点亮 8 个 LED
        {
            P1 = ~(0x01 << i); // 位运算得到要点亮的 LED
            delay(1000); // 延时 1 秒
        }
    }
}

3. 按键控制 LED 移动

代码如下:

#include <reg52.h>

void delay(unsigned int t) // 延时函数
{
    unsigned int i,j;
    for(i=0;i<t;i++)
        for(j=0;j<125;j++);
}

void main()
{
    unsigned char led = 0x01; // 初始点亮第一个 LED
    while(1)
    {
        P1 = led; // 显示当前灯的状态
        if(P3 == 0x01) // 如果按下 K1
        {
            led <<= 1; // 左移一位
            if(led == 0x00) // 如果最左边的 LED 灭了
                led = 0x80; // 点亮最右边的 LED
        }
        else if(P3 == 0x02) // 如果按下 K2
        {
            led >>= 1; // 右移一位
            if(led == 0x00) // 如果最右边的 LED 灭了
                led = 0x01; // 点亮最左边的 LED
        }
    }
}

注意:以上代码仅供参考,具体实现方式可能因硬件情况而异。

希望本教程能帮助您快速入门 Keil-51 单片机 LED 控制程序编写。

Keil-51 单片机 LED 控制程序编写与调试教程

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

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