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

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日

悬赏问题

  • ¥15 Stata链式中介效应代码修改
  • ¥15 latex投稿显示click download
  • ¥15 请问读取环境变量文件失败是什么原因?
  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错