打印
[51单片机]

帮忙解决一下动态扫描使数码管三位数同时显示问题

[复制链接]
1402|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
雾物|  楼主 | 2018-4-12 17:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 雾物 于 2018-4-12 18:01 编辑

现在问题是前两位只闪一下就没了最后一位一直亮着


#include<reg52.h>
int flag,a;
sbit dula=P2^6;
sbit wela=P2^7;
char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07
,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void dispay(int a);
void delayms(int xms)
{
        int i,j;
        for(i=xms;i>0;i--)
         for(j=110;j>0;j--);
}
  void inti()
  {
        TMOD=0x20;
    TH1=0xfd;
        TL1=0xfd;
        TR1=1;
        REN=1;
        SM0=0;
        SM1=1;
        EA=1;
        ES=1;
  }

  void main()
  {
    inti();
          while(1)
        {
                 if(flag==1)
                 {
                          dispay(a);
                         flag=0;
                         ES=1;
                 }
        }
  }
  void dispay(int a)
  {
          int b,s,g;
        b=a/100;
        s=a%100/10;
        g=a%10;
        dula=1;
        P0=table;
        dula=0;
        P0=0xff;
        wela=1;
        P0=0xfe;
        wela=0;
        delayms(1);
         dula=1;
        P0=table;
        dula=0;
        P0=0xff;
        wela=1;
        P0=0xfd;
        wela=0;
        delayms(1);
         dula=1;
        P0=table[g];
        dula=0;
        P0=0xff;
        wela=1;
        P0=0xfb;
        wela=0;
        delayms(1);

  }
  void ser() interrupt 4
  {
           RI=0;
           a=SBUF;
           flag=1;
  }

相关帖子

沙发
ningling_21| | 2018-4-13 16:20 | 只看该作者
串口收到数据才扫描数码管?

串口能收到数据不?

使用特权

评论回复
板凳
lxa0| | 2018-4-17 18:59 | 只看该作者
显示要做成子程序去调用
不能放在串口中断里边

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

粉丝