<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x
    查看: 5168|回復: 6
    打印 上一主題 下一主題

    [提問] AT89C51電子時鐘按鍵問題

    [復制鏈接]
    跳轉到指定樓層
    樓主
    發表于 2012-12-6 17:14:36 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
    關鍵詞: 電子時鐘 , AT89C51
    實現電子時鐘的功能,并可以通過按鍵調時間
    #include
    unsigned char i=20,led0=0,led1=0,led2=0,led3=0,led4=0,led5=0,sec=0,min=0,min1=0,min2=0,hour1=0,hour2,hour=0;unsigned char display[10]={0x3f,0x6,0x5b,0x4f,0x66,0x6d,0x7d,0x7,0x7f,0x6f};                                               
    void delay(unsigned char x)         //延時函數程序
    {      
         unsigned char k;   
        while(x--)               
        for(k=0;k<125;k++)
         {}
    }
    void button()
    {  
             switch(P0)        //BUTTON            
         {        
            case 0xfe:P2=0xfc;    P1=led2;  delay(1);          //led2 min1                 
              min1++;                 
             if(min1==10)                  
             {                        
                      min1=0;         
              }         
                  led2=display[min1];     break;
                       case 0xfd: P2=0xfb;    P1=led3;  delay(1);         //led3 min2                 
               min2++;                    
       if(min2==10)                    
           {                          
              min2=0;                           
               }                  
          led3=display[min2];     break;      
                      case 0xfb: P2=0xf9;    P1=led4;  delay(1);           //led4 hour1                       
          hour1++;                    
       if(hour1==2)                    
           {                        
             hour1=0;                     
              }               
             led4=display[hour1];  break;              
                    case 0xf7:         P2=0xf8;    P1=led5;  delay(1);         //led5 hour2           
                      hour2++;                  
         if(hour2==10)                       
        {                        
             hour2=0;                  
                       }                 
           led5=display[hour2];                break;      
      } }               
    void main( )   //主函數
    {        
    TMOD=0x01;  
                            TH0=0x3c;      
           TL0=0xb0;         
        EA=1;               
                  ET0=1;     
                                   TR0=1;      
                          while(1) //74LS138選址   
                {         
               button();                        
               P2=0xff;    P1=led0;  delay(1);                 
                 P2=0xfe;    P1=led1;  delay(1);
                   P2=0xfc;    P1=led2;  delay(1);            
                 P2=0xfb;    P1=led3;  delay(1);
                   P2=0xf9;    P1=led4;  delay(1);        
                 P2=0xf8;    P1=led5;  delay(1);              
                   }      
      }        

    void  T0_int(void)  interrupt 1  //中斷程序{      
    TH0=0x3c;                        
       TL0=0xb0;         
    i--;                                 
      if(i<=0)              
      {                       
    sec++;                  
          if(sec==60)                 
                   {                  
                    sec=0;         
                            min++;         
                          }                  
         led0=display[sec%10];         
                   led1=display[sec/10];      
                     if(min==60)              
                 {                        
        min=0;                       
          hour++;                    
           }                     
      led2=display[min%10];         
                  led3=display[min/10];         
                   if(hour==24)                    
           {                          
       hour=0;                     
          }                    
        led4=display[hour%10];        
                    led5=display[hour/10];      
                 i=20;                           
         }}
    沙發
     樓主| 發表于 2012-12-6 17:18:22 | 只看該作者
    可以正常的運行,但就是按鍵不了,求解答
    板凳
    發表于 2012-12-10 21:52:10 | 只看該作者
    大部分時間在執行延時程序。
    地板
     樓主| 發表于 2012-12-11 10:28:05 | 只看該作者
    terrysun 發表于 2012-12-10 21:52
    大部分時間在執行延時程序。

    恩恩額,現在搞定了,謝啦!
    地下室
    發表于 2012-12-25 16:34:54 | 只看該作者
    又學了一點。謝謝了。
    6
    發表于 2012-12-27 08:47:31 | 只看該作者
    學習了,謝謝
    7
     樓主| 發表于 2012-12-27 09:09:41 | 只看該作者
    wuweimang 發表于 2012-12-27 08:47
    學習了,謝謝

    好好努力噢噢噢噢噢噢
    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規則

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷