單片機筆記――數碼管顯示

admin @ 2014-03-14 , reply:0

概述
用到單片機就不可避免要涉及人機交互,而最簡單的顯示就是使用數碼管了。它可以顯示0-9的數字和部分因為字母。我一般使用的是七段數碼管,它的腳位從頂橫順著數分別為,a,b,c,d,e,f中間一橫為g而小數……

用到單片機就不可避免要涉及人機交互,而最簡單的顯示就是使用數碼管了。它可以顯示0-9的數字和部分因為字母。

我一般使用的是七段數碼管,它的腳位從頂橫順著數分別為,a,b,c,d,e,f中間一橫為g而小數點為h,由這幾個就可以構成顯示不同符號的碼錶:abcdefgh

下面是數碼管顯示的小程序

//該程序是通過按鍵控制數碼管開始或停止在0-9加1顯示

void Delay(unsigned char count)   //該延時子程序是12Mhz下的X*1ms延時
{
 unsigned char j;

 while(count-- != 0)
 {
  for(j=0;j<72;j++);
 }


char Keyhit(void)
{
 P3=0xff;                               //P3口置高,在C51里這些默認定義的關鍵字都要大寫
 if((P3^0xff)!=0)                    //通過P3的值與上全1判斷有無按鍵
  Delay(10);                        //有按鍵則延時再判斷,去抖動
 if((P3^0xff)!=0)
  return(1);
 else
  return(0);
}   
 

void LedPrint(void)          

{
 unsigned char i;
 P2 =0x0f;
 while(i<10)
 {
  P0=LedCode[i];
  P2&=0xfe;
  Delay(800);
  if(Keyhit())
  {
   P2 =0x0f;
   break;
  }
  i++;
  if(i==10) i=0;
 }
}

void main(void)
{
 unsigned int num=0;
 while(1)
 {
  if(Keyhit())
  {
   num++;
   num=num%2;
   while(Keyhit());
  }
  if(num==1)
   LedPrint();
 }

}



[admin via 研發互助社區 ] 單片機筆記――數碼管顯示已經有2047次圍觀

http://cocdig.com/docs/show-post-377.html