數碼管的全稱是LED數碼管,也就是說它的使用和“點亮LED燈”類似。我們同樣需要根據二極管的方向以及電路連線來判斷。根據電路連線的差異,數碼管又分為共陰和共陽。

b圖的左側,是共陰數碼管,這是因為輸出端口的另一側統一接地;相反的,右側的接法就是共陽了。
如果我們需要控制它輸出我們希望的數字(字母),首先我們需要判斷我們使用的數碼管是共陰還是共陽。其次,我們需要根據二極管的特性來確定數字(字符)對應的16進制表達式。比如,我希望用共陰的數碼管輸出字符C,那么我需要點亮a,f,e,d,它對應的16進制表達式就為:0011 1001(由dp往上讀數);最后就是賦值了,如果控制數碼管的8個io口是屬于P0的,那我們就直接
P0=0x39;
如果我們使用的開發板有8個數碼管,這就意味著我們需要通過3個io口來控制點亮哪一個數碼管(2^3=8)。具體怎樣控制,就需要你去了解你使用的開發板是哪幾個io口進行控制。
到這里,我們以及基本掌握了靜態數碼管的使用,相對應的就是動態數碼管了。所謂動態,從實現層面來說,就是我們通過for循環來不斷的控制各個數碼管輸出不同的數值,而每次循環中,穿插十分短暫的延時函數即可。這里,我附上一部分代碼幫助大家理解一下:
void display()
{
u16 j=0; //這里的u16 = unsigned int
for(j=0;j<8;j++)
{
switch(j)
{
case (0):aa=0;ab=0;ac=0;break;
case (1):aa=1;ab=0;ac=0;break;
case (2):aa=0;ab=1;ac=0;break;
case (3):aa=1;ab=1;ac=0;break;
case (4):aa=0;ab=0;ac=1;break;
case (5):aa=1;ab=0;ac=1;break;
case (6):aa=0;ab=1;ac=1;break;
case (7):aa=1;ab=1;ac=1;break;
}
P0=xianshi[j]; //控制某個數碼管輸出內容
delay(10); //短暫延時
P0=0X00;
}
}
看到這里,如果還有不理解的,千萬要留言告訴我哦,非常感謝!
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
led
+關注
關注
243文章
24594瀏覽量
690789 -
二極管
+關注
關注
149文章
10406瀏覽量
178397 -
單片機
+關注
關注
6076文章
45494瀏覽量
670252 -
數碼管
+關注
關注
32文章
1894瀏覽量
94129 -
靜態數碼管
+關注
關注
0文章
9瀏覽量
6038
發布評論請先 登錄
相關推薦
熱點推薦
單片機靜態數碼管。。新手
,0x71}void main(){LSA=0;LSB=0;LSC=0;P0=smg[0];while(1);}數碼管是共陰極的,有一個138譯碼器,只讓第一個數碼管亮所以P2.2 2.3 2.4為0,然而編譯就是出錯。。求指教!謝謝!
發表于 12-24 16:33
51單片機:靜態數碼管詳細教程 精選資料分享
51單片機:靜態數碼管詳細教程一.數碼管通電1.原理圖單個數碼管有8個小LED燈,通過點亮其中若干個可以顯示0-9和部分字母,下面是原理圖:
發表于 07-16 06:13
51單片機靜態數碼管和動態數碼管原理及實驗 精選資料推薦
一體中的哪一位數碼管點亮,而連接在一起的段線可以控制這個能點亮數碼管亮什么數字,通常我們把公共端叫做“位選線”,連接在一起的段線叫做“段選線”有了這兩個線后,通過單片機及外部驅動電路就可以控制任意
發表于 07-21 07:47
單片機靜態數碼管顯示
題目概述:單片機靜態數碼管顯示。編程:#include #define uchar unsigned char#define uint unsigned intuchar str[5]={0x76
發表于 01-07 06:54
51單片機靜態數碼管和動態數碼管原理及實驗
一體中的哪一位數碼管點亮,而連接在一起的段線可以控制這個能點亮數碼管亮什么數字,通常我們把公共端叫做“位選線”,連接在一起的段線叫做“段選線”有了這兩個線后,通過單片機及外部驅動電路就可以控制任意
發表于 11-11 14:36
?14次下載
51單片機:靜態數碼管詳細教程
51單片機:靜態數碼管詳細教程一.數碼管通電1.原理圖單個數碼管有8個小LED燈,通過點亮其中若干個可以顯示0-9和部分字母,下面是原理圖:
發表于 11-12 10:21
?14次下載
【藍橋杯】單片機,靜態數碼管顯示(3)
按鍵控制數碼管#include<stc15f2k60s2.h>void delayms(int ms); //延時函數void keyscan
發表于 12-29 19:17
?0次下載
【藍橋杯】單片機,靜態數碼管顯示(2)
單片機,讓所有數碼管同時顯示1-9#include<stc15f2k60s2.h>void delayms(int ms);void main(){P2=0XA0;P0
發表于 12-29 19:20
?0次下載
【藍橋杯】單片機,靜態數碼管顯示
數碼管0XC0——0000 0011——0;0XF9——1111 1001——1;OXA4——2; 0XB0——3; 0X99——4; 0X92——5;0X82——6; 0XF8——7
發表于 12-29 19:20
?0次下載
單片機靜態數碼管的使用
評論