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

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

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

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