標(biāo)題: 為什么防真的時(shí)候數(shù)碼管不動(dòng) [打印本頁(yè)]

作者: 天才2333333    時(shí)間: 2018-5-23 12:21
標(biāo)題: 為什么防真的時(shí)候數(shù)碼管不動(dòng)
#include<STC15F2K60S2.h>
#define uchar unsigned char
#define uint unsigned int
uchar code wela[8]={0xfe,0xfd,0xfc,0xfb,0xef,0xdf,0xcf,0xbf};
uchar code dula[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xfb,0x80,0x90,0xbf};
void init();//初始化定時(shí)器
void delay(uint z);
void miao();
void fen();
void shi();
void fuhao();
void display();//顯示函數(shù)
void keyscan();
sbit key1=P3^4; //控制秒分時(shí)的閃爍
sbit key2=P3^1; //控制時(shí)鐘的啟動(dòng)暫停
sbit key3=P3^6; //設(shè)置時(shí)鐘的值
sbit key4=P3^7; //計(jì)時(shí)和倒計(jì)時(shí)
uchar hour,second,minute,t0,i,t1,key1_num;
uchar s_flag;//閃爍標(biāo)志位
uchar count_flag; //計(jì)時(shí)倒計(jì)時(shí)標(biāo)志位
void main()
{
  init();
  while(1)
   {
    keyscan();
        switch(key1_num)
   {
     case 0:
           {
            display();
            break;
           }
     case 1:
           {
           AUXR|=0x00;
            if(s_flag==1)
             {
              P2=wela[5];
                  P0=0xff;
                  delay(1);
                  P2=wela[4];
                  P0=0xff;
                  delay(1);
             }
            if(s_flag==0)
            {
             miao();
            }
                 fuhao();
             fen();
             shi();       
             break;
           }
     case 2:
           {
            AUXR|=0x00;
            if(s_flag==1)
             {
              P2=wela[3];
                  P0=0xff;
                  delay(1);
                  P2=wela[2];
                  P0=0xff;
                  delay(1);
             }
             if(s_flag==0)
             {
              fen();
             }
                  fuhao();
              miao();
              shi();       
                 break;
           }
    case 3:
           {
            AUXR|=0x00;
            if(s_flag==1)
             {
              P2=wela[1];
                     P0=0xff;
                  delay(1);
                  P2=wela[0];
                  P0=0xff;
                  delay(1);               
             }
            if(s_flag==0)
             {
              shi();
             }
                 fuhao();
             miao();
             fen();         
             break;
           }
         }
   }
}
void miao()
{
  P2=wela[7];
  P0=dula[second%10];
  delay(1);
  P2=wela[6];
  P0=dula[second/10];
  delay(1);
}

void fen()
{
   P2=wela[4];
   P0=dula[minute%10];
   delay(1);
   P2=wela[3];
   P0=dula[minute/10];
   delay(1);
}

void shi()
  {
   P2=wela[1];
   P0=dula[hour%10];
   delay(1);
   P2=wela[0];
   P0=dula[hour/10];
   delay(1);
  }
void fuhao()
  {
   P2=wela[5];
   P0=dula[10];
   delay(1);
   P2=wela[2];
   P0=dula[10];
   delay(1);
  }

void delay(uint z)
{
  uint x,y;
    for(x=z;x>0;x--)
          for(y=110;y>0;y--);
}
void Timer2() interrupt 12
{
if(count_flag==0)
{
t0++;
if(t0==10)
{
  t0=0;
  second++;
  if(second==60)
   {
    second=0;
    minute++;
    if(minute==60)
     {
      minute=0;
          hour++;
          if(hour==24)
          hour=0;
     }
   }
}
}
if(count_flag==1)
{
t0++;
if(t0==10)
{
  t0=0;
  second--;
  if(second==255)
   {
    second=59;
    minute--;
    if(minute==255)
     {
      minute=59;
          hour--;
          if(hour==255)
          hour=23;
     }
   }
}
}
}
void T0_time() interrupt 1
{
TH0=0x3c;
TL0=0xb0;
t1++;
  if(t1==5)
   {
    t1=0;
    s_flag=!s_flag;
   }
}

void init()
{
  TMOD=0x01;
  AUXR&=0xfb;
  T2H=0x3c;
  T2L=0xb0;
  TH0=0x3c;
  TL0=0xb0;
  EA=1;
  IE2|=0x04;
  AUXR|=0x10;
  ET0=1;
  TR0=1;
}

void keyscan()
{
  if(key1==0)
   {
    delay(10);
         if(key1==0)
         {
     key1_num++;
         if(key1_num==4)
         key1_num=0;
         }
         while(!key1)
         display();
   }
   if(key2==0)
    {
          delay(10);
          if(key2==0)
           {
            AUXR|=0x00;
           }
           while(!key2)
           display();
        }
   if(key3==0)
    {
         delay(10);
         if(key3==0)
          {
            if(key1_num==1)
                 {
                  second++;
                   if(second==60)
                   second=0;
                 }
                if(key1_num==2)
                 {
                   minute++;
                    if(minute==60)
                        minute=0;
                 }
                if(key1_num==3)
                 {
                  hour++;
                   if(hour==24)
                    {
                         hour=0;
                        }
                 }
                 while(!key3)
                 display();
          }
        }
        if(key4==0)
         {
           delay(10);
           if(key4==0)
            {
                  count_flag++;
                  if(count_flag==2)
                  count_flag=0;
                }
                while(!key4)
                display();
         }

}
void display()
{
miao();
fen();
shi();  
fuhao();


作者: 研制就是好    時(shí)間: 2018-5-23 15:26
這么長(zhǎng)的程序你這程序沒(méi)問(wèn)題?
作者: wulin    時(shí)間: 2018-5-23 16:28
仿真軟件里沒(méi)有STC15系列,改用51單片機(jī)寫程序。
作者: 糖醋麻辣Tang    時(shí)間: 2018-5-23 19:29
檢查調(diào)用數(shù)碼管的函數(shù)接口是否有問(wèn)題,檢查代碼是否正確




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1