国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

電子工程網

標題: 數碼管 [打印本頁]

作者: 洛祭    時間: 2011-12-21 22:24
標題: 數碼管
/**********************************************************************************
*  標題:                  試驗數碼管上顯示數字( 單片機直接實現位選 共陰極)        *
*                         *
*  連接方法:P0與J12 用8PIN排線連接  P1與JP16 用排線連接          *
***********************************************************************************
*                                                     *
* 請學員認真消化本例程,用573鎖存器控制和單片機腳直接位選控制(非譯碼器控制)數碼管 *
***********************************************************************************/

#include
#include
void delay(unsigned int i);      //函數聲名
char DelayCNT;//定義變量

//此表為 LED 的字模, 共陰數碼管 0-9  -
unsigned char code   Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};  //段碼控制
//此表為8個數碼管位選控制, 共陰數碼管 1-8個  -
unsigned char code   dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F};    //位選控制   查表的方法控制
/************主函數**********************/
main()
{  
   unsigned int i,LedNumVal=1 ;    //變量定義
   unsigned int LedOut[10];     //變量定義
   
   DelayCNT=0;
  while(1)
  {  
     if(++DelayCNT>=20)   //控制數字變化速度
  {
   DelayCNT=0;    //20個掃描周期清零一次
     ++LedNumVal;   //每隔20個掃描周期加一次
  }
  LedOut[0]=Disp_Tab[LedNumVal%10000/1000];
     LedOut[1]=Disp_Tab[LedNumVal%1000/100]|0x80;
     LedOut[2]=Disp_Tab[LedNumVal%100/10];
     LedOut[3]=Disp_Tab[LedNumVal%10];
  
  LedOut[4]=Disp_Tab[LedNumVal%10000/1000];    //千位
     LedOut[5]=Disp_Tab[LedNumVal%1000/100]|0x80;  //百位帶小數點
     LedOut[6]=Disp_Tab[LedNumVal%100/10];     //十位
     LedOut[7]=Disp_Tab[LedNumVal%10];             //個位  
   

  for( i=0; i<9; i++)
  {  
   P0 = LedOut;
   P1 = dispbit;   //使用查表法進行位選
      
/*   switch(i)      //使用switch 語句控制位選   
      {     
   case 0:P1 = 0x7F;  break;         
         case 1:P1 = 0xbF;  break;              
         case 2:P1 = 0xdF;  break;
         case 3:P1 = 0xeF;  break;
   case 4:P1 = 0xf7;  break;
   case 5:P1 = 0xfb;  break;
   case 6:P1 = 0xfd;  break;
   case 7:P1 = 0xfe;  break;
   
      }    */
   
  delay(150);   //掃描間隔時間   太長會數碼管會有閃爍感
   }
  
  }   
}

void delay(unsigned int i)
{
    char j;
    for(i; i > 0; i--)
        for(j = 200; j > 0; j--);
}





歡迎光臨 電子工程網 (http://m.4huy16.com/) Powered by Discuz! X3.4