单片机/MCUwilliam hill官网
直播中

那痛,谁懂

11年用户 27经验值
擅长:可编程逻辑
私信 关注
[问答]

帮忙改一下程序,谢谢啦

帮忙改一下程序,这个程序是让前两个数码管显示,怎么改成前三个数码管显示,谢谢啦

    程序.zip (2013-10-28 16:51 上传)

    11.01 KB, 下载次数: 9

回帖(4)

那痛,谁懂

2013-10-28 16:52:54
这个是原理图
举报

13215873

2013-10-28 20:08:27
#include

***it dula=P2^6;
***it wela=P2^7;
***it beep=P2^3;
unsigned char j,k,a1,a0,a3,s=60;
unsigned int m;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
                        0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void delay(unsigned char i)
{
  for(j=i;j>0;j--)
    for(k=125;k>0;k--);
}
void display(unsigned char bai_c,unsigned char sh_c,unsigned char g_c)
{
   
   P0=table[bai_c];
   dula=1;
   dula=0;
   
   
   P0=0xfe;
   wela=1;
   wela=0;
   delay(5);
   
   P0=table[sh_c];
   dula=1;
   dula=0;
   
   P0=0xfd;
   wela=1;
   wela=0;
   delay(5);

   P0=table[g_c];
   dula=1;
   dula=0;
   
   P0=0xfb;
   wela=1;
   wela=0;
   delay(5);

}

void main()
{
        TMOD=0x01;
        TR0=1;
        TH0=(65536-46080)/256;// 由于晶振为11.0592,故所记次数应为46080,计时器每隔50000微秒发起一次中断。
        TL0=(65536-46080)%256;//46080的来历,为50000*11.0592/12
        ET0=1;
        EA=1;
        while(1)
        {
                if(m==20)
                {        m=0;
                        s--;
                }

                a0=s%10;
                a1=s%100/10;
                a2=s/100;
                display(a2,a1,a0);
                if(s==0)
                {
                        TR0=0;//时间到,定时器关闭
                        beep=0;//蜂鸣器响,报时。
                }       
        }
}

void time0() interrupt 1
{TH0=(65536-46080)/256;
        TL0=(65536-46080)%256;
        m++;
}
举报

那痛,谁懂

2013-10-29 09:36:26
谢谢啦,我试试
举报

那痛,谁懂

2013-10-29 11:02:15
现在只能显示十位和个位,怎么显示百威
举报

更多回帖

发帖
×
20
完善资料,
赚取积分