天天看點

51單片機入門之四:靜态數位管,單片機如何驅動數位管

51單片機入門之四:靜态數位管,單片機如何驅動數位管

本文旨在介紹單片機入門的基礎知識,為初接觸或即将接觸單片的新手提供一個入門指導。本文章會陸續推出,隔幾天一個章節。所使用單片機為ATMEL公司的AT89C52,軟體為PROTEUS和KEIL;隻提供原理圖和KEIL環境下的注釋,希望對廣大即将接觸單片機的人有所幫助,如果有錯誤歡迎回帖指出與本人交流或加入QQ群143586739. 微信公衆号:micropoint8.

LED數位管是單片機外圍接口裝置中常用的顯示裝置,有七段管和米字管兩種,實驗室中常用的是七段管。其工作方式有兩種:共陰極和共陽極。所謂共陰極是把LED的com端都接地,而共陽極就是把com端都接高電平。其驅動顯示方式也有兩種:靜态顯示和動态顯示。

靜态顯示中每個數位管占用單片機的一個八位口I/O口,工作時點亮的段常亮。于該種方式而言,硬體電路簡單,程式設計簡單,但是浪費單片機的I/O口。下面簡單示範一下該種驅動方式。

P2口接一個數位管,數位管顯示的數字每秒鐘自動加一,加到9後清0,一直循環,本實驗中數位管采用共陰極接法。

實驗原理圖如下:

51單片機入門之四:靜态數位管,單片機如何驅動數位管

實驗程式如下:

#include<reg52.h>
#define uchar unsigned char;
#define uint unsigned int;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共陰極數位管資料表
uchar a,i,j,z;

void delay(z)   //延時子函數
{
   for(j=z;j>0;j--)
      for(i=110;i>0;i--);
}

void main()   //主函數
{
  while(1)
    {
for(a=0;a<10;a++)//從0到9,共10次循環   
     {
     P2=table[a];   //P2口從資料表中取資料
     delay(1000); //延時大約1s 
      }      
    }
}
           

試驗結果如下:

51單片機入門之四:靜态數位管,單片機如何驅動數位管

更多電子知識請關注微信公衆号:

51單片機入門之四:靜态數位管,單片機如何驅動數位管