接著上一篇,上一篇我們講了點亮LED,通過編寫程序,讓LED亮起來,而且還能讓LED流動起來,設計出不同的花樣。那么本篇我們來講數碼管。
首先,我們先來看一下數碼管的顯示原理。 
數碼管的實質就是八個LED,與上一篇差不多。我們開發板上的數碼管是共陰極的,如上圖(b)所示。讓數碼管顯示數字,只要讓相應的LED亮起來就行。如:要讓它顯示“1”,只要讓bc段的LED亮起來就行了(見圖a)。 那么,我們來看數碼管是怎樣跟單片機連接的。如下圖所示。
 

★從圖中可以看出數碼管是先與DM7406連接,再與單片機連接。我們可以先不用管DM7406,那么數碼管的a、b、c、d、e、f、g、Dp引腳分別連接單片機的P00~P07腳,而數碼管的負極則接到電源負極,但在與電源負極連接時,先接一個三極管起到開關的作用。三極管有一個引腳連接到單片機的P34引腳,這樣我們就可以通過單片機控制三極管導通。 ★

這是效果圖。接下來來看一下代碼:
#include<reg51.h> sbit WE=P3^4; void main() { WE=0; P0=0x06; }
解釋一下代碼,WE=0是給出低電平讓三極管導通,P0=0x06,十六進制的0x06等于二進制的0000 0110,0000 0110從右往左對應的是P00到P07,即數碼管的a到Dp,我們給b、c高電平,b、c段自然就亮了。讓數碼管顯示其他數字也是同樣的道理,給P0口賦相應的值就可以了。顯示{0,1,2,3,4,5,6,7,8,9}對應的十六進制數是{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}。這就是數碼管的靜態顯示。接下來講一下數碼管的動態顯示。動態顯示是什么?四個數碼管是一個一個顯示的,不是同時顯示,只是變化的太快我們肉眼無法看到。為什么要動態顯示,讓它們同時顯示不行嗎?同時顯示可以,但是太浪費資源。一個數碼管有八個腳要與單片機相連,那么四個數碼管就要與單片機的32個引腳相連,這就很浪費了,所以我們要動態顯示。 要怎么樣實現數碼管動態顯示?我們看一段代碼: 

這是效果圖。 
可以看到,每開一個數碼管都要延時一會,但是不能太長。如果太長的話,就會看到數碼管一個一個的顯示。你們可以試試看。 這就是數碼管的動靜態顯示。
若本文有任何問題和錯誤請大家批評指正,信工科技部將每期給您帶來 更多精彩內容,敬請關注!
|