51单片机 求指导,刚学实在不懂

怎么让灯泡闪烁,怎么让流水灯从左到右 从右到左闪烁 两路同时 有没有懂的教一下

img

这样电路图连接不完整,就是正确的程序也无法点亮LED灯。
从左到右和从右到左很简单调用现成的运算符即可,当然不止一种办法。
看我博客有众多荔枝。

供参考:

#include <reg52.h>
#include <intrins.h>
#define  unint unsigned int
unint a, tmp0, tmp2;
void Timer0_init();
void main()
{
    P0  = 0xFF;  // P0口初始化,D1 - D8 联接 P0.0 - P0.7
    P2  = 0xFF;  // P2口初始化,D9 - D16联接 P2.0 - P2.7
    a   = 0;
    tmp0 = 0xFE;
    tmp2 = 0xFE;
    Timer0_init();
    while (1){
        if (a == 20){
            a = 0;
            P0 = tmp0;
            tmp0 = _crol_(tmp0, 1);//P0口循环左移

            P2 = tmp2;
            tmp2 = _cror_(tmp2, 1);//P2口循环右移
        }
    }
}

void Timer0_init()
{
    TMOD = 0x01;
    TH0  = (65536-45872)/256;
    TL0  = (65536-45872)%256;
    ET0  = 1;
    EA   = 1;
    TR0  = 0;
}

void timer0_int() interrupt 1 // 计时器中断
{
    TR0 = 1;    // 计时器暂停
    TH0 = (65536-45872)/256; //重置计时器
    TL0 = (65536-45872)%256;
    TR0 = 0     // 计时器启动
    a++;
}

【以下回答由 GPT 生成】

使用51单片机实现灯泡闪烁和流水灯效果的指导

问题附加信息优化:

由于目前未提供相关电路或代码示例,我们将提供一般性的指导来帮助你实现灯泡闪烁和流水灯效果。

灯泡闪烁效果

要实现灯泡闪烁的效果,可以使用定时器和IO口控制灯的状态。下面是一个简单的示例代码:

#include <reg51.h>

sbit LED = P1^0;  // 假设灯的控制引脚为P1.0

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

void main() {
    while(1) {
        LED = 1;  // 点亮灯泡
        delay();  // 延时一段时间
        LED = 0;  // 熄灭灯泡
        delay();  // 延时一段时间
    }
}

上述代码中,通过控制IO口引脚 LED 来控制灯的状态。在 main() 函数中使用一个无限循环,通过赋值 10 来控制灯的点亮和熄灭,并在两个状态之间添加延时。

注:以上的延时函数 delay() 仅供参考,实际应根据单片机的时钟频率进行调整。

流水灯效果

要实现流水灯效果,可以使用多个IO口控制多个灯的状态,并使用定时器作为时序控制。下面是一个简单的示例代码:

#include <reg51.h>

sbit LED1 = P1^0;  // 假设灯1的控制引脚为P1.0
sbit LED2 = P1^1;  // 假设灯2的控制引脚为P1.1

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

void main() {
    while(1) {
        LED1 = 1;  // 点亮灯1
        LED2 = 0;  // 熄灭灯2
        delay();  // 延时一段时间
        LED1 = 0;  // 熄灭灯1
        LED2 = 1;  // 点亮灯2
        delay();  // 延时一段时间
    }
}

上述代码中,通过控制多个IO口引脚来控制多个灯的状态。在 main() 函数中使用一个无限循环,通过赋值 10 来控制相邻的两个灯的点亮和熄灭,并在两个状态之间添加延时。

注:以上的延时函数 delay() 仅供参考,实际应根据单片机的时钟频率进行调整。

希望以上的指导对你有所帮助!如果你有任何问题,请随时提问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^