基礎(chǔ)知識(shí):
單片機(jī)系統(tǒng)中常用的顯示器有:
發(fā)光二極管LED(Light Emitting Diode)顯示器、液晶LCD(Liquid Crystal Display)顯示器、TFT液晶顯示器等。LED顯示器有兩種顯示結(jié)構(gòu):段顯示 (7段、米字型等) 和點(diǎn)陣顯示 (5X8、8X8點(diǎn)陣等)
LED數(shù)碼管根據(jù)LED的不同接法可以分為2類:共陰和共陽(yáng)。
共陰極接法:將八個(gè)LED的負(fù)極全部接到0V,只有當(dāng)我們給出一個(gè)正極1的信號(hào)才會(huì)亮。
共陽(yáng)極接法:將八個(gè)LED的負(fù)極全部接到+5V,只有當(dāng)我們給出一個(gè)0的信號(hào)才會(huì)亮。
使用LED顯示器時(shí),要注意區(qū)分這兩種不同的接法。為了顯示數(shù)字或字符,必須對(duì)數(shù)字或字符進(jìn)行編碼。七段數(shù)碼管加上一個(gè)小數(shù)點(diǎn),共計(jì)8段。因此為L(zhǎng)ED顯示器提供的編碼正好是一個(gè)字節(jié)。
LED數(shù)碼管顯示原理
舉例說(shuō)明一下:
假如我們需要顯示一個(gè)2,那么對(duì)應(yīng)的就要點(diǎn)亮途中的a,b,d,e,g,其他的全部都要熄滅,這樣顯示出來(lái)的數(shù)碼管才是我們想要的結(jié)果。(假設(shè)八位LED剛好全部對(duì)應(yīng)接到一個(gè)P口,而且還是從dp算最高位、a為最低為的接法)
所以對(duì)于共陰極接法來(lái)說(shuō),那么就要輸出一個(gè)0101 1011的信號(hào),轉(zhuǎn)換成16進(jìn)制的話,就是0x5B
而對(duì)于共陽(yáng)極接法的話,那么就要輸出1010 0100,轉(zhuǎn)換成16進(jìn)制的話就是0xA4
LED數(shù)碼管靜態(tài)顯示的原理:
靜態(tài)顯示的特點(diǎn)是每個(gè)數(shù)碼管的段選必須接一個(gè)8位數(shù)據(jù)線來(lái)保持顯示的字形碼。當(dāng)送入一次字形碼后,顯示字形可一直保持,直到送入新字形碼為止。這種方法的優(yōu)點(diǎn)是占用CPU時(shí)間少,顯示便于監(jiān)測(cè)和控制。缺點(diǎn)是硬件電路比較復(fù)雜,成本較高
技能進(jìn)階:(數(shù)組)
單片機(jī)的數(shù)組結(jié)構(gòu)是一種用來(lái)存儲(chǔ)多個(gè)相同類型數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),它可以用一組連續(xù)的內(nèi)存空間來(lái)存儲(chǔ)數(shù)據(jù),也可以用指針來(lái)連接一組零散的內(nèi)存塊。數(shù)組結(jié)構(gòu)可以方便地通過下標(biāo)來(lái)訪問數(shù)組中的元素,也可以通過結(jié)構(gòu)體來(lái)封裝數(shù)組和相關(guān)的函數(shù),實(shí)現(xiàn)更高級(jí)的功能。
使用數(shù)組結(jié)構(gòu)的方法有以下幾點(diǎn):
定義數(shù)組時(shí),需要指定數(shù)組的類型、名稱和大小,例如 int array[10]; 定義了一個(gè)有10個(gè)整數(shù)元素的數(shù)組。
初始化數(shù)組時(shí),可以用花括號(hào)包含一組初始值,例如 int array[10] = {1,2,3,4,5,6,7,8,9,10}; 初始化了一個(gè)數(shù)組,每個(gè)元素的值等于其下標(biāo)加一。
訪問數(shù)組時(shí),可以用數(shù)組名和下標(biāo)來(lái)表示一個(gè)元素,例如 array[3] 表示數(shù)組中第四個(gè)元素,其值為4。注意下標(biāo)從0開始計(jì)數(shù)。
修改數(shù)組時(shí),可以用賦值語(yǔ)句來(lái)改變某個(gè)元素的值,例如 array[3] = 5; 將第四個(gè)元素的值改為5。
遍歷數(shù)組時(shí),可以用循環(huán)語(yǔ)句來(lái)依次訪問每個(gè)元素,例如 for(i=0;i<10;i++) printf("%d ",array[i]); 將打印出數(shù)組中所有元素的值。
使用結(jié)構(gòu)體時(shí),可以將數(shù)組和相關(guān)的函數(shù)定義為一個(gè)新的數(shù)據(jù)類型,例如 struct LED { unsigned char array[8]; void (*on)(int); void (*off)(int); }; 定義了一個(gè)LED結(jié)構(gòu)體,包含一個(gè)8位的數(shù)組和兩個(gè)函數(shù)指針。這樣可以方便地對(duì)外設(shè)進(jìn)行操作,例如 LED led; led.on(3); 將點(diǎn)亮第四個(gè)LED燈。
程序編寫:
#include
unsigned char code sunduan[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
//創(chuàng)建一個(gè)數(shù)組的結(jié)構(gòu),此時(shí)采用的是共陽(yáng)極接法,將0-F的顯示使用了數(shù)組的結(jié)構(gòu)創(chuàng)建出來(lái)
void main()
{
P2=sunduan[0]; //要顯示一個(gè)0,即在P2口上接入了一個(gè)LED數(shù)碼管之后,需要顯示的數(shù)值,直接從編輯號(hào)的數(shù)組中挑選出來(lái)即可。
}
仿真展示:
可以看到,當(dāng)我們啟動(dòng)仿真時(shí),這個(gè)時(shí)候,就會(huì)在P2組管腳上的輸出情況(P2.0 ~ P2.5全輸出0,P2.6 ~ P2.7輸出1)因?yàn)長(zhǎng)ED數(shù)碼管采用的是共陽(yáng)極接法,所以a~f全部點(diǎn)亮,g和dp都熄滅,這樣展示出來(lái)的效果就是一個(gè)0的數(shù)字。
程序除了上述的數(shù)組結(jié)構(gòu)之外,其實(shí)還可以直接通過點(diǎn)亮單片機(jī)的輸出管腳單獨(dú)控制。
-
led
+關(guān)注
關(guān)注
242文章
23628瀏覽量
669534 -
單片機(jī)
+關(guān)注
關(guān)注
6060文章
44835瀏覽量
645205 -
發(fā)光二極管
+關(guān)注
關(guān)注
13文章
1212瀏覽量
67137 -
液晶顯示器
+關(guān)注
關(guān)注
11文章
581瀏覽量
44074 -
數(shù)碼管
+關(guān)注
關(guān)注
32文章
1888瀏覽量
92112
發(fā)布評(píng)論請(qǐng)先 登錄
動(dòng)態(tài)數(shù)碼管顯示原理詳解

LED數(shù)碼管顯示控制實(shí)驗(yàn)

LED數(shù)碼管顯示實(shí)驗(yàn)

串行LED數(shù)碼管動(dòng)態(tài)掃描顯示電路(共陽(yáng),共陰)

并行LED數(shù)碼管動(dòng)態(tài)掃描顯示電路(共陽(yáng) 共陰)

串行LED數(shù)碼管靜態(tài)顯示電路(共陰 共陽(yáng))

LED數(shù)碼管顯示分類及其典型應(yīng)用電路

23課:LED數(shù)碼管靜態(tài)顯示接口與編程

LED數(shù)碼管靜態(tài)顯示接口與編程分析

LED數(shù)碼管顯示原理及應(yīng)用
led數(shù)碼管怎么接線_LED數(shù)碼管的測(cè)試
靜態(tài)數(shù)碼管和動(dòng)態(tài)數(shù)碼管

評(píng)論