前面一課通過流水燈實(shí)驗(yàn),學(xué)會了流水燈電路模型設(shè)計,掌握了循環(huán)移位和時間延遲算法的程序編寫。本次實(shí)驗(yàn)完成數(shù)碼管顯示電路模型設(shè)計和編程,在實(shí)驗(yàn)過程中,學(xué)習(xí)數(shù)碼管顯示電路設(shè)計、數(shù)碼管循環(huán)顯示數(shù)字的算法。
認(rèn)識數(shù)碼管
數(shù)碼管是半導(dǎo)體發(fā)光器件,用于顯示數(shù)字、字母、簡單圖形符號等內(nèi)容。數(shù)碼管基本單元是發(fā)光二極管,數(shù)碼管內(nèi)部由多個發(fā)光二極管管構(gòu)成,多個發(fā)光二極管在同一時間的不同狀態(tài),組合為不同的數(shù)字、字母或圖形符號。
數(shù)碼管型號多樣,有單位數(shù)碼管、雙位數(shù)碼管、四位數(shù)碼管、八位數(shù)碼管等等,單位數(shù)碼管僅能顯示一個數(shù)字、字母或圖形符號,多位數(shù)碼管可以顯示多個數(shù)字、字母或圖形符號。實(shí)際上,多位數(shù)碼管都可以由單位數(shù)碼管構(gòu)成,例如4個單位數(shù)碼管可以構(gòu)成四位數(shù)碼管。
不管將幾位數(shù)碼管連在一起,數(shù)碼管的顯示原理都是一樣的,都是靠點(diǎn)亮內(nèi)部的發(fā)光二極管來發(fā)光,下面我們來看看單位數(shù)碼管是如何顯示數(shù)字的。
單位數(shù)碼管一般由7個發(fā)光二極管組成,有共陰,共陽兩種,八個引腳,七個引腳接7個發(fā)光二極管,一個引腳是公共端,若共陰,該引腳接地,若共陽,該引腳接電源的正極。
單位數(shù)碼管內(nèi)部基礎(chǔ)電路如上圖所示,顯示一個數(shù)字需要7個小段,每個小段需要一個發(fā)光二極管,因此數(shù)碼管的引腳至少為8個,其中7個引腳分別接二極管的正極或負(fù)極,另外1個引腳為公共端,若數(shù)碼管為共陰極,該引腳接地,若數(shù)碼管為共陽極,該引腳接電源。
對于共陽極數(shù)碼管來說,7個發(fā)光二極管的正極連接在一起形成公共端,該公共端接電源,負(fù)極分別接單片機(jī)的I/O端口,當(dāng)我們給數(shù)碼管任一個陰極低電平時,對應(yīng)的這個發(fā)光二極管就點(diǎn)亮了。例如:若需要數(shù)碼管顯示數(shù)字0,g引腳送低電平,其它引腳送高電平,這樣數(shù)碼管就顯示數(shù)字0了;若需要數(shù)碼管顯示數(shù)字8,將所有引腳(公共端除外)送入低電平,數(shù)碼管就顯示數(shù)字8了。因此,若需要數(shù)碼管顯示數(shù)字,只需要給發(fā)光二極管引腳送入低電平或高電平就可以了。
數(shù)碼管電路設(shè)計
本次實(shí)驗(yàn)設(shè)計要求通過單片機(jī)P0口控制數(shù)碼管循環(huán)顯示數(shù)字0 ~ 9,實(shí)驗(yàn)需要用到單位數(shù)碼管器件。在“Pick Devices”對話框搜索關(guān)鍵詞“7SEG”,選擇“7SEG-MPX1-CA”型號的數(shù)碼管,該數(shù)碼管是7段共陽極數(shù)碼管,可以顯示數(shù)字0~9和小數(shù)點(diǎn),它有9個引腳,8個引腳用于連接P0口的8位端口,1個引腳為公共端,連接電源的正極。
數(shù)碼管內(nèi)部發(fā)光二極管點(diǎn)亮?xí)r,大約需要幾個毫安以上的電流,而且電流不可過大,電流過大可能會燒毀發(fā)光二極管,因此需要在P0端口和數(shù)碼管引腳之間接入限流電阻,限流電阻值不能太大,也不能大小。限流電阻的阻值計算過程如下:一個發(fā)光二極管的額定電壓一般是1.5~2.5V,電阻不大于50歐姆,電流約為0.04A,單片機(jī)引入的電源電壓為5V,限流電阻的阻值約為R=U/I=5/0.04=125歐姆。計算值僅是個近似值,可以選擇100~500歐姆以內(nèi)的阻值。
電路設(shè)計如下圖所示:
數(shù)碼管編程
讓數(shù)碼管循環(huán)顯示數(shù)字0 ~ 9,需要對數(shù)字0~9進(jìn)行編碼,對應(yīng)數(shù)字的編碼值用于控制P0各端口的電平輸出,從而控制數(shù)碼管內(nèi)部各發(fā)光二極管的狀態(tài),顯示出編碼對應(yīng)的數(shù)字。
“7SEG-MPX1-CA”型號的數(shù)碼管數(shù)字0~9的編碼為:
unsigned char led[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
0xC0為數(shù)字0的編碼,其二進(jìn)制數(shù)為11000000,該值送入單片機(jī)P0口,P0口的第7、6端口為高電平,5、4、3、2、1、0端口為低電平,與5、4、3、2、1、0端口連接的發(fā)光二極管被點(diǎn)亮,與7、6端口連接的發(fā)光二極管為熄滅狀態(tài),其中端口7位小數(shù)點(diǎn),端口6位g段,顯示數(shù)字0。
0xF9為數(shù)字1的編碼,其二進(jìn)制數(shù)為11111001,該值送入單片機(jī)P0口,P0口的7、6、5、4、3、0端口為高電平,與其連接的發(fā)光二極管為熄滅狀態(tài),P0口的2、1端口為低電平,與其連接的發(fā)光二極管被點(diǎn)亮,即b、c段點(diǎn)亮,顯示數(shù)字1。
同學(xué)們可以自行分析2~9數(shù)字的編碼。C程序代碼如下:
#include < reg51.h >
#include < stdio.h >
unsigned char led[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void delay(unsigned int millisecond)
{
unsigned int i,j;
for(i=millisecond;i >0;i--)
for(j=120;j >0;j--);
}
void main(void)
{
unsigned int i;
while(1)
{
for(i=0;i< 10;i++)
{
P0 = led[i];
delay(500);
}
}
}
led[]為數(shù)字0~9編碼數(shù)組,delay()為時間延遲函數(shù),在main()函數(shù)內(nèi)部,使用while循環(huán)讓程序持續(xù)執(zhí)行,在while循環(huán)內(nèi)部,使用for循環(huán)遍歷led[]數(shù)組,獲取每個數(shù)字的編碼,并將編碼賦值給P0。
實(shí)驗(yàn)小結(jié)
通過這次實(shí)驗(yàn),了解了數(shù)碼管顯示數(shù)字和字符的原理,學(xué)會了數(shù)碼管顯示電路設(shè)計,掌握了數(shù)碼管顯示控制編程技術(shù)。
-
單片機(jī)
+關(guān)注
關(guān)注
6062文章
44915瀏覽量
646678 -
電路設(shè)計
+關(guān)注
關(guān)注
6697文章
2518瀏覽量
210486 -
數(shù)碼管
+關(guān)注
關(guān)注
32文章
1889瀏覽量
92205 -
顯示電路
+關(guān)注
關(guān)注
6文章
97瀏覽量
33504 -
流水燈
+關(guān)注
關(guān)注
21文章
433瀏覽量
60297
發(fā)布評論請先 登錄
完成單片機(jī)與LED數(shù)碼管的接口電路設(shè)計以及程序設(shè)
學(xué)51單片機(jī)之數(shù)碼管部分
大尺寸數(shù)碼管的動態(tài)驅(qū)動和保護(hù)電路設(shè)計

51單片機(jī)數(shù)碼管顯示學(xué)號
數(shù)碼管的介紹和使用51單片機(jī)應(yīng)用數(shù)碼管的程序免費(fèi)下載

STC12C2052AD單片機(jī)控制的數(shù)碼管時鐘程序及電路圖
單片機(jī)學(xué)習(xí)----數(shù)碼管顯示原理及應(yīng)用代碼規(guī)劃

基于單片機(jī)的LED數(shù)碼管循環(huán)移位顯示

單片機(jī)--LED 數(shù)碼管實(shí)驗(yàn)

單片機(jī)零基礎(chǔ)入門(8-1)學(xué)會單片機(jī)數(shù)碼管,這篇文章就夠了,一文吃透數(shù)碼管---數(shù)碼管如何定義引腳?數(shù)碼

評論