一. 什么是數(shù)碼管
LED數(shù)碼管(LED Segment Displays)是由8個(gè)發(fā)光二極管構(gòu)成,并按照一定的圖形及排列封裝在一起的顯示器件。 其中7個(gè)LED構(gòu)成7筆字形,1個(gè)LED構(gòu)成小數(shù)點(diǎn)(也被稱為為八段數(shù)碼管)。
常用的數(shù)碼管位數(shù)有1,2,3,4,5,6,8,10位等等,顏色有紅,綠,藍(lán),黃等幾種。 了解LED的這些特性,對(duì)編程是很重要的,因?yàn)椴煌愋偷臄?shù)碼管,除了它們的硬件電路有差異外,編程方法也是不同的。
二. 數(shù)碼管基本構(gòu)造
LED數(shù)碼管有兩大類,一類是共陰極接法,另一類是共陽(yáng)極接法,共陰極就是8段的顯示字碼共用一個(gè)電源的負(fù)極,是高電平點(diǎn)亮,共陽(yáng)極就是7段的顯示字碼共用一個(gè)電源的正極,是低電平點(diǎn)亮。 只要控制其中各段LED的亮滅即可顯示相應(yīng)的數(shù)字、字母或符號(hào)。
共陰和共陽(yáng)極數(shù)碼管的內(nèi)部電路,它們的發(fā)光原理是一樣的,只是它們的電源極性不同而已,共陰為所有的LED負(fù)極接在一起,共陽(yáng)為為所有的LED正極接在一起。 如下圖為1位數(shù)碼管的共陰極和共陽(yáng)極原理圖:
三、數(shù)碼管顯示原理
要是數(shù)碼管顯示數(shù)字,有兩個(gè)條件:1.是要在VT端加合適的電源(一般每顆LED還需串上合適的電阻,起限流作用); 2.要使(a,b,c,d,e,f,g,dp)端接低電平或“0”電平。 這樣才能顯示的。
例如下圖的共陰極數(shù)碼管,須在VT端接上地端,(a,b,c,d,e,f,g,dp)端接到單片機(jī)的引腳上; 如果要使其中一個(gè)LED亮?xí)r,對(duì)應(yīng)的單片機(jī)引腳輸出高電平,即可點(diǎn)亮LED燈。
共陰極LED數(shù)碼管的內(nèi)部結(jié)構(gòu)原理圖
能夠點(diǎn)亮數(shù)碼管后,就可以通過(guò)單片機(jī)控制數(shù)碼管顯示數(shù)字或字母。 為了控制方便,我們將數(shù)碼管的a~dp引腳依次連接單片機(jī)的P10-P17引腳,如圖:
我們對(duì)數(shù)碼管所要顯示的每個(gè)數(shù)字和字母進(jìn)行編碼,然后在編程時(shí),將編碼放在一個(gè)數(shù)組上,需要顯示什么數(shù)字或者字母,從數(shù)組里面提取相應(yīng)的編碼就可顯示所要顯示的字符了。
如圖,要顯示數(shù)字“5”時(shí),編碼為0x6D。 如果數(shù)碼管為共陽(yáng)極,只需要對(duì)共陰極的編碼做一個(gè)取反操作即可。
四. 數(shù)碼管驅(qū)動(dòng)方式
根據(jù)LED數(shù)碼管的驅(qū)動(dòng)方式的不同,可以分為靜態(tài)式和動(dòng)態(tài)式兩類。
1.靜態(tài)驅(qū)動(dòng)方式
led靜態(tài)顯示時(shí),其公共端接地(共陰極)或接電源(共陽(yáng)極),各段選線分別與I/O口接線相連。 要顯示字符,直接在I/O線發(fā)送相應(yīng)的字段碼。
優(yōu)點(diǎn): 靜態(tài)顯示結(jié)構(gòu)簡(jiǎn)單,顯示方便,要顯示某個(gè)字符直接在IO線上發(fā)送相應(yīng)的字段碼
缺點(diǎn): 一根數(shù)碼管需要8根IO線,數(shù)碼管比較多時(shí)候,非常占用IO線。
2.動(dòng)態(tài)驅(qū)動(dòng)方式
動(dòng)態(tài)驅(qū)動(dòng)方式是將所有的數(shù)碼管的段選線并接在一起,用一個(gè)IO接口控制,公共端并不是直接接地(共陰極)或者電源(共陽(yáng)極),而是通過(guò)相應(yīng)的IO接口控制。
以共陽(yáng)極為例假設(shè)4個(gè)數(shù)碼管工作過(guò)程為,如圖:
四位數(shù)碼管動(dòng)態(tài)驅(qū)動(dòng)方式連接圖
- 每個(gè)數(shù)碼管的公共端與單片機(jī)的一個(gè)IO相連,第一步使最右邊一個(gè)數(shù)碼管的公共端為1(P21),其余數(shù)碼管公共端為0,同時(shí)在(a,b,c,d,e,f,g,dp)P0端上發(fā)送右邊第一個(gè)數(shù)碼管的字段碼,這時(shí)候只有右邊的第一個(gè)數(shù)碼管顯示,其余不顯示;
- 第二步使右邊第二個(gè)數(shù)碼管的公共端(P23)為1,其余的公共端為0,同時(shí)在(a,b,c,d,e,f,g,dp)P0端上發(fā)送右邊第二個(gè)數(shù)碼管的字段碼,這時(shí)候,只有右邊第二個(gè)數(shù)碼管顯示,其余不顯示;
- 以此類推,直到最后一個(gè),這樣子4個(gè)數(shù)碼管輪流顯示相應(yīng)的信息,一遍顯示完畢,隔一段時(shí)間,又這樣循環(huán)顯示。
從計(jì)算機(jī)角度,每個(gè)數(shù)碼管隔一段時(shí)間才顯示一次,但是由于人的視覺(jué)暫留效應(yīng),只要隔離時(shí)間足夠短,循環(huán)的周期足夠長(zhǎng),美妙達(dá)到24次以上,看起來(lái)數(shù)碼管就一直穩(wěn)定顯示了,這就是動(dòng)態(tài)顯示原理。
五. 八位數(shù)碼管動(dòng)態(tài)驅(qū)動(dòng)例程
以八位共陰極數(shù)碼管,動(dòng)態(tài)驅(qū)動(dòng)的方式為例:
#include<reg51.h>
//--定義使用的IO口--//
#define GPIO_DIG P0 //段選
#define GPIO_PLACE P1 //位選
//--定義全局變量--//
unsigned char code DIG_PLACE[8] = {
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位選控制 查表的方法控制
unsigned char code DIG_CODE[17] = {
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼
unsigned char DisplayData[8];
//用來(lái)存放要顯示的8位數(shù)的值
//--聲明全局函數(shù)--//
void DigDisplay(); //動(dòng)態(tài)顯示函數(shù)
/*******************************************************************************
* 函 數(shù) 名 : main
* 函數(shù)功能 : 主函數(shù)
* 輸 入 : 無(wú)
* 輸 出 : 無(wú)
*******************************************************************************/
void main(void)
{
unsigned char i;
for(i=0; i<8; i++)
{
DisplayData[i] = DIG_CODE[i];
}
while(1)
{
DigDisplay();
}
}
/*******************************************************************************
* 函 數(shù) 名 : DigDisplay
* 函數(shù)功能 : 使用數(shù)碼管顯示
* 輸 入 : 無(wú)
* 輸 出 : 無(wú)
*******************************************************************************/
void DigDisplay()
{
unsigned char i;
unsigned int j;
for(i=0; i<8; i++)
{
GPIO_PLACE = DIG_PLACE[i]; //發(fā)送位選
GPIO_DIG = DisplayData[i]; //發(fā)送段碼
j = 10; //掃描間隔時(shí)間設(shè)定
while(j--);
GPIO_DIG = 0x00;//消隱
}
-
電源
+關(guān)注
關(guān)注
184文章
17704瀏覽量
249959 -
led
+關(guān)注
關(guān)注
242文章
23252瀏覽量
660559 -
數(shù)碼管
+關(guān)注
關(guān)注
32文章
1882瀏覽量
91063 -
顯示器件
+關(guān)注
關(guān)注
1文章
59瀏覽量
11777 -
驅(qū)動(dòng)方式
+關(guān)注
關(guān)注
0文章
15瀏覽量
7387
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論