帮忙改一下程序,谢谢啦

2019-07-15 21:56发布

帮忙改一下程序,这个程序是让前两个数码管显示,怎么改成前三个数码管显示,谢谢啦
程序.zip 下载积分: 积分 -1 分
11.01 KB, 下载次数: 5, 下载积分: 积分 -1 分
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
那痛,谁懂
1楼-- · 2019-07-15 23:54
 精彩回答 2  元偷偷看……
13215873
2楼-- · 2019-07-16 05:39
#include<reg51.h>

sbit dula=P2^6;
sbit wela=P2^7;
sbit 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++;
}
那痛,谁懂
3楼-- · 2019-07-16 06:22
谢谢啦,我试试
那痛,谁懂
4楼-- · 2019-07-16 10:25
现在只能显示十位和个位,怎么显示百威

一周热门 更多>