片機驅動LED數碼管有很多方法,按顯示方式分,有靜態顯示和 動態(掃描)顯示,按譯碼方式可分硬件譯碼和軟件譯碼之分。
靜態顯示就是顯示驅動電路具有輸出鎖存功能,單片機將所要顯示的數據,顯示數據穩定,占用很少的CPU時間。動態顯示需要CPU時刻對顯示器件進行數據刷新,顯示數據有閃爍感,占用的CPU時間多。
這兩種顯示方式各有利弊;靜態顯示雖然數據穩定,占用很少的CPU時間,但每個顯示單元都需要單獨的顯示驅動電路,使用的硬件較多;
動態顯示雖然有閃爍感,占用的CPU時間多,但使用的硬件少,能節省線路板空間。
硬件譯碼就是顯示的段碼完全由硬件完成,CPU只要送出標準的BCD碼即可,硬件接線有一定標準。軟件譯碼是用軟件來完成硬件的功能,硬件簡單,接線靈活,顯示段碼完全由軟件來處理,是目前常用的顯示驅動方式。
比較常用的顯示驅動芯片有: 74LS164 , CD4094+ULN2003(2803) ,74HC595+ULN2003(2803) , TPIC6B595,AMT9095B, AMT9595等許多。
另外,市場上還有一些專用的LED掃描驅動顯示模塊如MAX7219等,功能很強,價格稍高一些。下面是一個用74LS164驅動顯示的例子和一個用4094掃描驅動顯示的例子:
上例圖中加了一個PNP型的三極管來控制數碼管的電源,是因為164沒有數據鎖存端,數據在傳送過程中,對輸出端來說是透明的,這樣,數據在傳送過程中,數碼管上有閃動現象,驅動的位數越多,閃動現象越明顯。為了消除這種現象,在數據傳送過程中,關閉三極管使數碼管沒電不顯示,數據傳送完后立刻使三極管導通,這樣就實現鎖存功能。這種辦法可驅動十幾個164顯示而沒有閃動現象。
這個例子是用4094做位選,用89C2051的P1口線做段驅動來掃描驅動9位數碼管的顯示。 由于4094只有8個輸出口線,其中第九位是用CPU口線直接進行位選的。9個LED的所有相同位置的段口線都接到一起,然后接到單片機的一個口線上,供八段,使用8條CPU口線。其軟件的工作過程是這樣的:要在LED上顯示1--9位數,首先將1的段碼送到P1口線上,然后向4094送位選數據01,使4094的Q1口線輸出高電平,選中第一位數碼管,使陽極得電,在第一位上就顯示出1,重復上述過程,一直到第九位,然后不斷重復這一過程,就實現了掃描顯示。