m0_74371705 2022-11-08 17:32 采纳率: 100%
浏览 68
已结题

51单片机呼吸灯与数码管结合问题

51单片机呼吸灯与数码管结合问题:预想结果是呼吸灯完成一次闪烁,数码管正好加1,但事实上是数码管三位只有个位一直显示,百位和十位不显示且在呼吸灯闪烁一半时闪一下,请问应该怎么改啊?
代码:

#include <reg52.h>
#define uchar unsigned char
/*通过数码管显示计时时长,
PWM 控制 LED,该 LED 亮度变化周期为 1s。

sbit LED1=P1^0;
sbit DU = P2^6;
sbit WE = P2^7;
uchar msec,sec;
uchar  code table[]= {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,};

void delay(xms)
{
    unsigned char i;
    for (i=xms;i>0;i--);
}

void display(uchar i)
{
    uchar bai,shi,ge;
    bai = i/100;
    shi = i%100/10;
    ge = i%10l;
    
    P0=0xff;
    WE=1;
    P0=0xfe;
    WE=0;
    
    DU=1;
    P0=table[bai];
    DU=0;
    delay(10);
    P0=0xff;
    WE=1;
    P0=0xfd;
    WE=0;
    
    DU=1;
    P0=table[shi];
    DU=0;
    delay(10);
    
    P0=0xff;
    WE=1;
    P0=0xfb;
    WE=0;
    
    DU=1;
    P0=table[ge];
    DU=0;
    delay(10);
    
}

void time0init()
{
    EA=1;
    ET0=1;
    TR0=1;
    TMOD=0x01;
    TH0=0x4b;
    TL0=0xfd;

}

void main()
{
    unsigned char x,y;
    time0init();
    while(1)
    {
        display(sec);
        for (x=0;x<50;x++)
            {
                for (y=15;y>0;y--)
                {
                    LED1=0;
                    delay(x);
                    LED1=1;
                    delay(50-x);
                }
            }
            for (x=50;x>0;x--)
            {
                for (y=15;y>0;y--)
                {
                        LED1=0;
                    delay(x);
                    LED1=1;
                    delay(50-x);
                }
            }
            
    }
        
    
}
void timer0 ()interrupt 1
{
    msec++;
    if (msec == 20)
        {
            msec=0;
            sec++;
        }
}


```:
  • 写回答

2条回答 默认 最新

  • 谢玄. 2022-11-08 18:29
    关注

    那你应该是片选选错了
    在你发一下电路原理图之前 ,我的答案仅供参考

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月22日
  • 已采纳回答 11月14日
  • 创建了问题 11月8日

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料