求一个用led显示倒计时的程序

2019-07-17 20:08发布

定时开始,用led显示倒计时时间,时间结束亮灯或者发出声音
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
wzzjnb2006
1楼-- · 2019-07-17 22:56
很多板子的端口都不一样,没有具体的板子不好写。
温暖如夏花的眼眸i
2楼-- · 2019-07-18 03:03
随便写个能运行的就行
温暖如夏花的眼眸i
3楼-- · 2019-07-18 04:31
 精彩回答 2  元偷偷看……
太子的空间
4楼-- · 2019-07-18 10:23
#include<reg51.h>
sbit P10=P1^0;//蜂鸣器
sbit P33=P3^3;        //+10
sbit P32=P3^2;        //-10
sbit P31=P3^1;        //开始暂停
sbit P36=P3^6;        //-1
sbit P37=P3^7;        //+1

//unsigned char c[10]={0xfc,0X60,0Xda,0Xf2,0X66,0Xb6,0xbe,0Xe0,0Xfe,0xf6};                //开发板段选        p2
//unsigned char b[8]={0X7f,0xbf,0xdf,0Xef,0xf7,0xfb,0Xfd,0Xfe};                             //开发板位选          p0
unsigned char c[10]={0x5f,0X41,0X9d,0Xd5,0Xc3,0Xd6,0xde,0X45,0Xdf,0xd7};                //实物段选        p0          
unsigned char b[8]={0X7f,0xef,0xdf,0Xbf,   0x7f,0xdf,0Xbe,0Xef};                    //实物位选  p2
unsigned char sign,begin,signbegin,    signminuteup,signminutedown,signminuteup10,signminutedown10;
signed char minute,second;
void sjxs();
void fmq();
void delay100us();                   //按键防震的延时
void delay400ms(void);

void main()
{
     P33=1;
     P32=1;
     P31=1;
     P36=1;
         P37=1;
         while(1)
         {                         
                  
                                if(sign==100)
                                {sign=0;second--;}
                       
                                if(second==-1)
                                {minute--;second=59;}
                                 
                                 sjxs();                  //显示程序   显示部分放这里,保证数据及时显示
                               
                                if(minute==0&&second==0&&begin==1)
                                {begin=0;EA=0;ET0 = 0;TR0 = 0;   fmq();    /*蜂鸣器*/}

                                if(minute>99)
                                {minute=minute%10;}

                                if(minute<0)
                                {minute=0;}
                       
                       
                        /*---------------------------------------------------------------------------*/                               
                                                        if(P37==0)                         //按键minute++
                                                        {  delay100us();
                                                           if(P37==0)
                                                           {
                                                                    signminuteup=1;
                                                           }                               
                                                        }
                                                        if(signminuteup==1&&P37==1)
                                                        {signminuteup=0;minute++;}
                        /*---------------------------------------------------------------------------*/                               
                                                                if(P36==0)                  //按键minute--
                                                                {  delay100us();
                                                                   if(P36==0)
                                                                   {                                                                  
                                                                        signminutedown=1;
                                                                   }                               
                                                                }                                                                                 
                                                                if(signminutedown==1&&P36==1)
                                                                {signminutedown=0;minute--;}
                        /*---------------------------------------------------------------------------*/                               
                                                                if(P33==0)                  //按键minute + 10
                                                                {  delay100us();
                                                                   if(P33==0)
                                                                   {                                                                  
                                                                        signminuteup10=1;
                                                                   }                               
                                                                }                                                                                 
                                                                if(signminuteup10==1&&P33==1)
                                                                {signminuteup10=0;minute=minute+10;}
                /*---------------------------------------------------------------------------*/                               
                                                                if(P32==0)                  //按键minute - 10
                                                                {  delay100us();
                                                                   if(P32==0)
                                                                   {                                                                  
                                                                        signminutedown10=1;
                                                                   }                               
                                                                }                                                                                 
                                                                if(signminutedown10==1&&P32==1)
                                                                {signminutedown10=0;minute=minute-10;}
                          /*---------------------------------------------------------------------------*/                               
                                                                if(P31==0)                  //按键begin
                                                                {  delay100us();
                                                                   if(P31==0)
                                                                   {                                                                  
                                                                        signbegin=1;
                                                                   }                               
                                                                }                                                                                 
                                                                if(signbegin==1&&P31==1)
                                                                { TH0 = 0xD8;                  //定时器装入值    10ms
                                                              TL0 = 0xF0;                  //定时器装入值        10ms
                                                                  ET0 = ~ET0;
                                                                  TR0 = ~TR0;
                                                                  EA=~EA;
                                                                  signbegin=0;
                                                                  begin=1;
                                                                }
                        /*---------------------------------------------------------------------------*/
                                           
          
          }




}

void Timer0Interrupt(void) interrupt 1
        {
           TH0 = 0x0DC;        //重装数值
             TL0 = 0x05;        //重装数值
                   TMOD = 0x01;        
                ET0 = 1;
                TR0 = 1;  
            sign++;              //add your code here!
        }




void sjxs()
{        unsigned char  u,e;
        unsigned int sjfj[4];              //分解储存         
        sjfj[0]=second/1  %10;                  //数据分解          个
        sjfj[1]=second/10 %10;                  //数据分解          十
        sjfj[2]=minute/1  %10;                  //数据分解          百
        sjfj[3]=minute/10 %10;                  //数据分解          千

       
           for(e=0;e<10;e++)
           {   
                    
                         P2=b[0];                                           //个位
                         P0=c[sjfj[0]];
                            for(u=0;u<30;u++)        ;                    P0=0x00;P2=0x00;        //消除光影子
          
                   if(second>9)
                 {          P2=b[1];                                           //十位
                         P0=c[sjfj[1]];
                         for(u=0;u<30;u++)        ;        }           P0=0x00;P2=0x00;        //消除光影子
       
                if(minute>0)         
                {         P2=b[2];                                           //百         
                         P0=c[sjfj[2]]|0x20;
                         for(u=0;u<30;u++)        ;}                   P0=0x00;P2=0x00;         //消除光影子

                         if(minute>9)
                 {          P2=b[3];                                           //千
                         P0=c[sjfj[3]];
                         for(u=0;u<30;u++)        ;        }           P0=0x00;P2=0x00;        //消除光影子
               
                                                                                                
           }
         
}


        void delay100us()   //误差 0us                  for按键防震,防静电
                        {
                            unsigned char a,e;
                            for(e=1;e>0;e--)
                                for(a=47;a>0;a--);
                        }

   void delay400ms(void)   //误差 0us
{
    unsigned char a1,b1,c1;
    for(c1=29;c1>0;c1--)
        for(b1=70;b1>0;b1--)
            for(a1=97;a1>0;a1--);

}






void fmq()
{unsigned long s,z,w;
    for(w=0;w<3;w++)       
        {
                for(z=0;z<3000;z++)
                {       
                        for(s=0;s<3;s++)
                        {P10=~P10;}
                 }
           delay400ms();
   }
}

一周热门 更多>