Keil-51 编程与调试:LED 灯控制实例教程

本教程将使用 Keil-51 软件,通过编写程序来实现 LED 灯的控制,包括交替闪烁、依次闪烁以及按键控制移动。我们将提供详细的代码示例,帮助初学者学习单片机编程的基础知识。

1. P1 口 1 个 LED 小灯每隔 1S 交替闪亮

#include <reg52.h>

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

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

2. P1 口的 8 个 LED 小灯从左至右依次闪烁

#include <reg52.h>

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

void main()
{
    unsigned char i;

    while(1)
    {
        for(i=0; i<8; i++)
        {
            P1 = 0x01 << i; // P1 口第 i+1 个 LED 小灯亮
            delay(500); // 延时 0.5 秒
            P1 = 0x00; // P1 口所有 LED 小灯灭
            delay(500); // 延时 0.5 秒
        }
    }
}

3. LED 灯控制电路

#include <reg52.h>

sbit LED = P1^0; // P1 口第 1 个 LED 小灯
sbit K1 = P3^2; // P3 口第 2 个开关按键
sbit K2 = P3^3; // P3 口第 3 个开关按键

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

void main()
{
    LED = 1; // 点亮第 1 个 LED 小灯

    while(1)
    {
        if(K1 == 0) // 按下 K1,LED 向左移一位
        {
            delay(10); // 延时一下,消除抖动
            if(K1 == 0) // 确认按键按下
            {
                LED <<= 1; // LED 向左移一位
                if(LED == 0) // 如果 LED 移到了最左边,则回到最右边
                    LED = 0x01;
                while(K1 == 0); // 等待按键释放
            }
        }

        if(K2 == 0) // 按下 K2,LED 向右移一位
        {
            delay(10); // 延时一下,消除抖动
            if(K2 == 0) // 确认按键按下
            {
                LED >>= 1; // LED 向右移一位
                if(LED == 0) // 如果 LED 移到了最右边,则回到最左边
                    LED = 0x80;
                while(K2 == 0); // 等待按键释放
            }
        }
    }
}

说明:

  • 以上代码示例使用 C 语言编写,适用于 Keil-51 软件。
  • reg52.h 文件包含了 8051 单片机的寄存器定义,需要在程序开头包含。
  • delay() 函数用于实现延时,可以通过调整 time 值来控制延时时间。
  • P1 口用于控制 LED 小灯,P3 口用于连接按键。
  • sbit 用于定义单个位变量,例如 LED 变量表示 P1 口的第 0 位,控制一个 LED 小灯。
  • 可以使用 Keil-51 软件的仿真功能,在程序中设置断点,观察变量值,进行调试。
  • 建议初学者在实际电路中进行实验,以加深理解和提高编程能力。

希望本教程能够帮助您学习使用 Keil-51 软件编写单片机程序。


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

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