人人狠狠综合久久亚洲-脱岳裙子从后面挺进去在线观看-午夜无码片在线观看影院-波多野结衣在线播放

【技術(shù)干貨】分享基于單片機的數(shù)碼管電路設(shè)計

來源:IC采購網(wǎng)| 發(fā)布日期:2023-10-31 15:25

前面一課通過流水燈實驗,學會了流水燈電路模型設(shè)計,掌握了循環(huán)移位和時間延遲算法的程序編寫。本次實驗完成數(shù)碼管顯示電路模型設(shè)計和編程,在實驗過程中,學習數(shù)碼管顯示電路設(shè)計、數(shù)碼管循環(huán)顯示數(shù)字的算法。

認識數(shù)碼管

數(shù)碼管是半導體發(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ù)碼管構(gòu)成,例如4個單位數(shù)碼管可以構(gòu)成四位數(shù)碼管。

不管將幾位數(shù)碼管連在一起,數(shù)碼管的顯示原理都是一樣的,都是靠點亮內(nèi)部的發(fā)光二極管來發(fā)光,下面我們來看看單位數(shù)碼管是如何顯示數(shù)字的。

單位數(shù)碼管一般由7個發(fā)光二極管組成,有共陰,共陽兩種,八個引腳,七個引腳接7個發(fā)光二極管,一個引腳是公共端,若共陰,該引腳接地,若共陽,該引腳接電源的正極。

單位數(shù)碼管內(nèi)部基礎(chǔ)電路如上圖所示,顯示一個數(shù)字需要7個小段,每個小段需要一個發(fā)光二極管,因此數(shù)碼管的引腳至少為8個,其中7個引腳分別接二極管的正極或負極,另外1個引腳為公共端,若數(shù)碼管為共陰極,該引腳接地,若數(shù)碼管為共陽極,該引腳接電源。

對于共陽極數(shù)碼管來說,7個發(fā)光二極管的正極連接在一起形成公共端,該公共端接電源,負極分別接單片機的I/O端口,當我們給數(shù)碼管任一個陰極低電平時,對應(yīng)的這個發(fā)光二極管就點亮了。例如:若需要數(shù)碼管顯示數(shù)字0,g引腳送低電平,其它引腳送高電平,這樣數(shù)碼管就顯示數(shù)字0了;若需要數(shù)碼管顯示數(shù)字8,將所有引腳(公共端除外)送入低電平,數(shù)碼管就顯示數(shù)字8了。因此,若需要數(shù)碼管顯示數(shù)字,只需要給發(fā)光二極管引腳送入低電平或高電平就可以了。

數(shù)碼管電路設(shè)計

本次實驗設(shè)計要求通過單片機P0口控制數(shù)碼管循環(huán)顯示數(shù)字0 ~ 9,實驗需要用到單位數(shù)碼管器件。在“Pick Devices”對話框搜索關(guān)鍵詞“7SEG”,選擇“7SEG-MPX1-CA”型號的數(shù)碼管,該數(shù)碼管是7段共陽極數(shù)碼管,可以顯示數(shù)字0~9和小數(shù)點,它有9個引腳,8個引腳用于連接P0口的8位端口,1個引腳為公共端,連接電源的正極。

數(shù)碼管內(nèi)部發(fā)光二極管點亮時,大約需要幾個毫安以上的電流,而且電流不可過大,電流過大可能會燒毀發(fā)光二極管,因此需要在P0端口和數(shù)碼管引腳之間接入限流電阻,限流電阻值不能太大,也不能大小。限流電阻的阻值計算過程如下:一個發(fā)光二極管的額定電壓一般是1.5~2.5V,電阻不大于50歐姆,電流約為0.04A,單片機引入的電源電壓為5V,限流電阻的阻值約為R=U/I=5/0.04=125歐姆。計算值僅是個近似值,可以選擇100~500歐姆以內(nèi)的阻值。

電路設(shè)計如下圖所示:

數(shù)碼管編程

讓數(shù)碼管循環(huán)顯示數(shù)字0 ~ 9,需要對數(shù)字0~9進行編碼,對應(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的編碼,其二進制數(shù)為11000000,該值送入單片機P0口,P0口的第7、6端口為高電平,5、4、3、2、1、0端口為低電平,與5、4、3、2、1、0端口連接的發(fā)光二極管被點亮,與7、6端口連接的發(fā)光二極管為熄滅狀態(tài),其中端口7位小數(shù)點,端口6位g段,顯示數(shù)字0。

0xF9為數(shù)字1的編碼,其二進制數(shù)為11111001,該值送入單片機P0口,P0口的7、6、5、4、3、0端口為高電平,與其連接的發(fā)光二極管為熄滅狀態(tài),P0口的2、1端口為低電平,與其連接的發(fā)光二極管被點亮,即b、c段點亮,顯示數(shù)字1。

同學們可以自行分析2~9數(shù)字的編碼。C程序代碼如下:

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。