久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

單片機(jī)驅(qū)動(dòng)數(shù)碼管顯示設(shè)計(jì)

作者:mcu110   來源:51hei   點(diǎn)擊數(shù):  更新時(shí)間:2007年08月08日   【字體:

    數(shù)碼管是非常常見的東西,他能顯示數(shù)字,以及字母,應(yīng)用非常的廣泛,本文我來和大家談?wù)勅绾斡脝纹瑱C(jī)來驅(qū)動(dòng)數(shù)碼管

數(shù)碼管的結(jié)構(gòu)

   數(shù)碼管由7個(gè)發(fā)光二極管組成,行成一個(gè)日字形,它門可以共陰極,也可以共陽極.通過解碼電路得到的數(shù)碼接通相應(yīng)的發(fā)光二極而形成相應(yīng)的字,這就是它的工作原理.


基本的半導(dǎo)體數(shù)碼管是由7個(gè)條狀的發(fā)光二極管(LED)按圖1所示排列而成的,可實(shí)現(xiàn)數(shù)字"0~9"及少量字符的顯示。另外為了顯示小數(shù)點(diǎn),增加了1個(gè)點(diǎn)狀的發(fā)光二極管,因此數(shù)碼管就由8個(gè)LED組成,我們分別把這些發(fā)光二極管命名為 "a,b,c,d,e,f,g,dp",排列順序如下圖1。

 
圖1: 數(shù)碼管引腳圖及外形圖


數(shù)碼管的分類

數(shù)碼管按各發(fā)光二極管電極的連接方式分為共陽數(shù)碼管和共陰數(shù)碼管兩種。

共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管。共陰數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽極為高電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陽極為低電平時(shí),相應(yīng)字段就不亮。共陰數(shù)碼管內(nèi)部連接如圖3所示。

共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管。共陽數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。共陽數(shù)碼管內(nèi)部連接如圖2所示。
 

 
圖2:共陽數(shù)碼管內(nèi)部連接圖
 
圖3:共陰數(shù)碼管內(nèi)部連接圖


數(shù)碼管的顯示方式

數(shù)碼管要正常顯示,就要用驅(qū)動(dòng)電路來驅(qū)動(dòng)數(shù)碼管的各個(gè)段碼,從而顯示出我們要的數(shù)字,因此根據(jù)數(shù)碼管的驅(qū)動(dòng)方式的不同,可以分為靜態(tài)式和動(dòng)態(tài)式兩類。
①  動(dòng)態(tài)顯示驅(qū)動(dòng):數(shù)碼管動(dòng)態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是那個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會(huì)亮。通過分時(shí)輪流控制各個(gè)數(shù)碼管的的COM端,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。在輪流顯示過程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為1~2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感,動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。
②靜態(tài)顯示驅(qū)動(dòng):靜態(tài)驅(qū)動(dòng)也稱直流驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)是指每個(gè)數(shù)碼管的每一個(gè)段碼都由一個(gè)單片機(jī)的I/O端口進(jìn)行驅(qū)動(dòng),或者使用如BCD碼二-十進(jìn)制譯碼器譯碼進(jìn)行驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)的優(yōu)點(diǎn)是編程簡單,顯示亮度高,缺點(diǎn)是占用I/O端口多,如驅(qū)動(dòng)5個(gè)數(shù)碼管靜態(tài)顯示則需要5×8=40根I/O端口來驅(qū)動(dòng),要知道一個(gè)89S51單片機(jī)可用的I/O端口才32個(gè)呢:),實(shí)際應(yīng)用時(shí)必須增加譯碼驅(qū)動(dòng)器進(jìn)行驅(qū)動(dòng),增加了硬件電路的復(fù)雜性。


前面我們學(xué)習(xí)了數(shù)碼管的基礎(chǔ)知識,現(xiàn)在馬上來看看S51增強(qiáng)型實(shí)驗(yàn)板的數(shù)碼管吧(圖4),S51實(shí)驗(yàn)板上有5位高亮度共陽數(shù)碼管DG1~DG5,可以用來做計(jì)數(shù)器(最大計(jì)數(shù)值99999)、溫度顯示、電子鐘等顯示實(shí)驗(yàn),掌握數(shù)碼管的靜態(tài)顯示驅(qū)動(dòng)和動(dòng)態(tài)顯示驅(qū)動(dòng)。

圖4

S51增強(qiáng)型實(shí)驗(yàn)板的數(shù)碼管驅(qū)動(dòng)原理圖如下圖5所示。

圖5

從原理圖可以看出,S51增強(qiáng)型實(shí)驗(yàn)板中數(shù)碼管的段碼a,b,c,d,e,f,g,dp分別與單片機(jī)的P0.0~P0.7相連,控制數(shù)碼管中顯示的字形;數(shù)碼管的位選通由5個(gè)PNP三極管控制,分別接到單片機(jī)的P2.0、P2.1、P2.2、P2.3、P2.4端口上,程序中通過控制P2.0~P2.4端口的輸出電平就可以控制數(shù)碼管的顯示與關(guān)閉。如P2.0輸出低電平時(shí),三極管T1導(dǎo)通,+5V電源加到第一個(gè)數(shù)碼管的COM端,那么第一個(gè)數(shù)碼管DG1就會(huì)顯示出相應(yīng)的數(shù)字,顯示的數(shù)字由單片機(jī)P0.0~P0.7輸出段碼決定,當(dāng)P2.0輸出高電平時(shí),三極管T1截止,數(shù)碼管DG1就不顯示,從而實(shí)現(xiàn)數(shù)碼管位選通控制。同理,當(dāng)P2.1輸出低電平時(shí),則數(shù)碼管DG2顯示。。。


單片機(jī)驅(qū)動(dòng)數(shù)碼管的靜態(tài)顯示編程


上面我們學(xué)習(xí)了一大堆的理論知識,對數(shù)碼管已經(jīng)有了較全面的認(rèn)識,是否躍躍欲試了呀!馬上動(dòng)手編一個(gè)簡單的程序驗(yàn)證一下理論吧,現(xiàn)在我們編程讓實(shí)驗(yàn)板上的第一個(gè)數(shù)碼管DG1顯示數(shù)字“6”,最終的實(shí)驗(yàn)效果見上面圖4所示。

啟動(dòng)Keil C51單片機(jī)集成開發(fā)環(huán)境,新建一個(gè)工程,工程命名為smg1.uv2,(不懂如何建立新工程的初學(xué)者請看網(wǎng)頁 手把手教你建立Keil工程),打開一個(gè)文本編輯窗,在文本編輯窗中輸入如下代碼:

;********** 下面是數(shù)碼管顯示"6"的程序 **********

MAIN:CLR P0.0;P0.0輸出低電平,點(diǎn)亮數(shù)碼管段碼"a"
 SETBP0.1;P0.1輸出高電平,熄滅數(shù)碼管段碼"b"
 CLR P0.2;P0.2輸出低電平,點(diǎn)亮數(shù)碼管段碼"c"
 CLR P0.3;P0.3輸出低電平,點(diǎn)亮數(shù)碼管段碼"d"
 CLR P0.4;P0.4輸出低電平,點(diǎn)亮數(shù)碼管段碼"e"
 CLR P0.5;P0.5輸出低電平,點(diǎn)亮數(shù)碼管段碼"f"
 CLR P0.6;P0.6輸出低電平,點(diǎn)亮數(shù)碼管段碼"g"
 SETBP0.7;P0.7輸出高電平,熄滅數(shù)碼管小數(shù)點(diǎn)段碼"dp"

 CLR P2.0;P2.0輸出低電平,選通數(shù)碼管DG1
 SETBP2.1;P2.1輸出高電平,不選通數(shù)碼管DG2
 SETBP2.2;P2.2輸出高電平,不選通數(shù)碼管DG3
 SETBP2.3  ;P2.3輸出高電平,不選通數(shù)碼管DG4
 SETBP2.4;P2.4輸出高電平,不選通數(shù)碼管DG5

 AJMPMAIN;跳轉(zhuǎn)到開始重新進(jìn)行
 END ;程序結(jié)束

注:程序中分號“;”后面的中文為每一行程序的注釋,是方便我們閱讀程序的,可以不輸入。

上面的源程序輸入完畢后,保存為"smg1.asm",然后添加到工程smg1.uv2中,最后源程序經(jīng)過編譯得到目標(biāo)文件"smg1.hex"(見下面的圖6所示),不熟悉Keil工程建立、設(shè)置及源程序編譯等詳細(xì)操作的初學(xué)者請參考網(wǎng)頁 >>> 手把手教你建立Keil工程。>>>

現(xiàn)在讓我們把目標(biāo)文件"smg1.hex"燒寫到單片機(jī)中去,看看實(shí)際的效果吧,將ISP編程器硬件連接好(見下圖7)。

圖7:ISP

將產(chǎn)品配套光盤中的“ISP編程器驅(qū)動(dòng)軟件”文件夾復(fù)制到你電腦硬盤的D盤根目錄下,并將其目錄下的所有文件的只讀屬性去掉,具體操作如下:全選文件夾中的文件,鼠標(biāo)右鍵單擊出現(xiàn)文件屬性對話框,單擊“只讀”屬性前面復(fù)選框中的勾,使其只讀屬性去掉即可。然后雙擊文件夾中的“ISP編程器驅(qū)動(dòng)軟件.exe”啟動(dòng)編程軟件,點(diǎn)擊"文件",在打開文件的對話框中找到工程文件夾中的目標(biāo)文件"smg1.hex"打開即可,然后點(diǎn)擊“AUTORUN”將程序燒寫到單片機(jī)內(nèi)部(如下圖8)。

圖8:將程序燒寫到單片機(jī)內(nèi)部

燒寫完成了,把單片機(jī)從編程器中取出,然后插到S51增強(qiáng)型實(shí)驗(yàn)板上,插上USB電源,看看顯示效果是不是和上面圖4顯示一樣,是否有一點(diǎn)點(diǎn)的成就感呀!初學(xué)者也許會(huì)問:數(shù)碼管顯示一個(gè)數(shù)字“6”就要15行程序,太復(fù)雜了?的確有點(diǎn)復(fù)雜了,在上面程序中為了顯示數(shù)字“6”,數(shù)碼管的段碼"b"、段碼"dp"輸出的是高電平,其它引腳輸出的是低電平,實(shí)際上從單片機(jī)的P0.0~P0.7輸出的是二進(jìn)制碼“10000010”,轉(zhuǎn)換成十六進(jìn)制為82H。因此,我們只要把所有要顯示的數(shù)字和字符的段碼根據(jù)硬件連接編制一個(gè)字形表,顯示時(shí)直接把相應(yīng)的字形碼送到P0口就可以了。

共陽LED數(shù)碼管字形(段碼)表
顯示數(shù)字
(字符)
P0.7
"dp"
P0.6
"g"
P0.5
"f"
P0.4
"e"
P0.3
"d"
P0.2
"c"
P0.1
"b"
P0.0
"a"
二進(jìn)制代碼
十六進(jìn)制代碼
0
1
1
0
0
0
0
0
0
11000000
C0H
1
1
1
1
1
1
0
0
1
11111001
F9H
2
1
0
1
0
0
1
0
0
10100100
A4H
3
1
0
1
1
0
0
0
0
10110000
B0H
4
1
0
0
1
1
0
0
1
10011001
99H
5
1
0
0
1
0
1
1
0
10010110
92H
6
1
0
0
0
0
0
1
0
10000010
82H
7
1
1
1
1
1
0
0
0
11111000
F8H
8
1
0
0
0
0
0
0
0
10000000
80H
9
1
0
0
1
0
0
0
0
10010000
90H
A
1
0
0
0
1
0
0
0
10001000
88H
B
1
0
0
0
0
0
1
1
10000011
83H
C
1
1
0
0
0
1
1
0
11000110
C6H
D
1
0
1
0
0
0
0
1
10100001
A1H
E
1
0
0
0
0
1
1
0
10000110
86H
F
1
0
0
0
1
1
1
0
10001110
8EH
H
1
0
0
0
1
0
0
1
10001001
89H
O
1
1
0
0
0
0
0
0
11000000
A3H
P
1
0
0
0
0
1
0
0
10000100
8CH
N
1
1
0
0
1
0
0
0
11001000
C8H

從上面表格中可以看到,顯示“6”的十六進(jìn)制段碼值為"82H",因此我們把剛才的程序修改一下,修改后的完整程序如下:

MAIN:MOV P0,#82H ;將數(shù)字"6"的段碼輸出到P0口
 MOV P2,#0FEH;從P2口輸出數(shù)碼管選通代碼,即輸出二進(jìn)制“11111110”
 AJMPMAIN;跳轉(zhuǎn)到開始重新進(jìn)行
 END ;程序結(jié)束

看看修改后的程序?qū)⒆兊酶雍啙崳庇^了,程序代碼從原來的15行減少到僅4行,一樣實(shí)現(xiàn)了相同的功能。這也就是我們要學(xué)習(xí)的編程技巧哦!在編程中盡量用最少的代碼實(shí)現(xiàn)相同的功能。程序第1行的功能是將要顯示的數(shù)字“6”的十六進(jìn)制段碼"82H"送到P0口,程序第2行的功能就是將數(shù)碼管的選通代碼#0FEH(即二進(jìn)制"11111110")送到P2口,從而控制第一位數(shù)碼管顯示,其它數(shù)碼管熄滅。把修改過的程序編譯后的目標(biāo)文件寫到單片機(jī)上看到顯示效果是一樣的。程序中用一行代碼 MOVP0,#82H 就輸出了字形,因此我們要顯示其它字形時(shí)只要從上面的數(shù)碼管段碼表中查出對應(yīng)的十六進(jìn)制字形碼,用同樣的方法把段碼輸出到P0口就可以了。比如我們要顯示一個(gè)數(shù)字“8”, 只需將程序中的 MOVP0,#82H 語句改成 MOVP0,#80H 即可,至此,我們終于可以隨心所欲地控制數(shù)碼管要顯示的字形了,是不是很簡單呀 :) 。

 另外,如果想讓第二位數(shù)碼管DG2顯示,其它熄滅怎么辦呢?其實(shí)很簡單,只要把對應(yīng)數(shù)碼管的選通端口輸出低電平就可以使該位數(shù)碼管顯示了,如指令 CLRP2.1 就可以讓第二個(gè)數(shù)碼管顯示。。。程序中如果使P2.0~P2.4都輸出低電平,那么實(shí)驗(yàn)板上的5個(gè)數(shù)碼管都會(huì)被選通,顯示出相同的字形,即顯示“66666”。下面就是5位數(shù)碼管顯示出“66666”的程序,初學(xué)者可以實(shí)驗(yàn)一下,以加深對數(shù)碼管顯示位選通(使能)控制的理解。

MAIN:MOV P0,#82H ;將數(shù)字"6"的段碼輸出到P0口
 MOV P2,#0E0H;從P2口輸出數(shù)碼管選通代碼,使5位數(shù)碼管均選通,即輸出二進(jìn)制“11100000”
 AJMPMAIN;跳轉(zhuǎn)到開始重新進(jìn)行
 END ;程序結(jié)束


單片機(jī)驅(qū)動(dòng)數(shù)碼管的動(dòng)態(tài)顯示編程


上面我們已經(jīng)學(xué)習(xí)了數(shù)碼管靜態(tài)顯示,接下來我們就學(xué)習(xí)數(shù)碼管動(dòng)態(tài)顯示編程,編程讓實(shí)驗(yàn)板上的數(shù)碼管顯示“89C51”。從原理圖中(圖5)我們可以看到,5個(gè)數(shù)碼管的8個(gè)顯示筆劃"a,b,c,d,e,f,g,dp"的同名端是2連在一起的,那么當(dāng)程序從P0口輸出字形碼時(shí),在同一個(gè)時(shí)間所有數(shù)碼管都會(huì)接收到相同的字形碼。你一定會(huì)問,這樣不是5個(gè)數(shù)碼管都顯示相同的數(shù)字了嗎?如何顯示出5個(gè)不同的字符“89C51”呢?因此,就要使用動(dòng)態(tài)掃描了,在程序中,首先顯示一個(gè)數(shù),然后關(guān)掉;然后顯示第二個(gè)數(shù),又關(guān)掉,顯示第三個(gè)數(shù),又關(guān)掉。。。直到所有要顯示的5個(gè)數(shù)完成,再從頭開始掃描。輪流點(diǎn)亮掃描過程中,每位顯示器的點(diǎn)亮?xí)r間是極為短暫的(約1ms),由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位顯示器并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感。

數(shù)碼管顯示“89C51”的具體編程思路如下:第一位數(shù)碼管顯示“8” → 延時(shí)1ms → 關(guān)閉所有數(shù)碼管顯示 → 第二位數(shù)碼管顯示“9” → 延時(shí)1ms → 關(guān)閉所有數(shù)碼管顯示 → 第三位數(shù)碼管顯示“C” → 延時(shí)1ms → 關(guān)閉所有數(shù)碼管顯示 → 第四位數(shù)碼管顯示“5” → 延時(shí)1ms → 關(guān)閉所有數(shù)碼管顯示 → 第五位數(shù)碼管顯示“1” → 延時(shí)1ms → 關(guān)閉所有數(shù)碼管顯示 → 返回到第一步重新進(jìn)行新一輪掃描過程。下面就是根據(jù)該思路編出來的源程序,初學(xué)者可以把該程序粘貼到Keil工程中,編譯得到目標(biāo)文件,然后燒寫到單片機(jī)驗(yàn)證一下。

; *********** 在數(shù)碼管上動(dòng)態(tài)顯示"89C51" *************
MAIN: MOV P0,#80H;第1位數(shù)碼管顯示“8”
CLR P2.0 ;允許第1位數(shù)碼管顯示
ACALL DELAY;顯示延時(shí)一段時(shí)間
MOV P0,#0FFH ;清除P0口字形碼
MOV P2,#0FFH ;停止所有數(shù)碼管顯示選通,關(guān)閉所有顯示

MOV P0,#90H;第2位數(shù)碼管顯示“9”
CLR P2.1 ;允許第2位數(shù)碼管顯示
ACALL DELAY;顯示延時(shí)一段時(shí)間
MOV P0,#0FFH ;清除P0口字形碼
MOV P2,#0FFH ;停止所有數(shù)碼管顯示選通,關(guān)閉所有顯示

MOV P0,#0C6H ;第3位數(shù)碼管顯示“C”
CLR P2.2 ;允許第3位數(shù)碼管顯示
ACALL DELAY;顯示延時(shí)一段時(shí)間
MOV P0,#0FFH ;清除P0口字形碼
MOV P2,#0FFH ;停止所有數(shù)碼管顯示選通,關(guān)閉所有顯示

MOV P0,#92H;第4位數(shù)碼管顯示“5”
CLR P2.3 ;允許第4位數(shù)碼管顯示
ACALL DELAY;顯示延時(shí)一段時(shí)間
MOV P0,#0FFH ;清除P0口字形碼
MOV P2,#0FFH ;停止所有數(shù)碼管顯示選通,關(guān)閉所有顯示

MOV P0,#0F9H ;第5位數(shù)碼管顯示“1”
CLR P2.4 ;允許第5位數(shù)碼管顯示
ACALL DELAY;顯示延時(shí)一段時(shí)間
MOV P0,#0FFH ;清除P0口字形碼
MOV P2,#0FFH ;停止所有數(shù)碼管顯示選通,關(guān)閉所有顯示

AJMPMAIN ;跳轉(zhuǎn)到開始重新進(jìn)行

;******** 延時(shí)子程序 ********
DELAY:MOV R1,#10
Y1: MOV R2,#100
DJNZR2,$
DJNZR1,Y1
RET

END
【總結(jié)】

至此,我們已經(jīng)較全面地學(xué)習(xí)了數(shù)碼管的工作原理和使用方法,相信你對數(shù)碼管的靜態(tài)顯示、動(dòng)態(tài)顯示有了新的認(rèn)識,掌握了數(shù)碼管的這兩種使用方法,你就可以根據(jù)你自己的意愿及要求來編寫各種各樣的數(shù)字顯示程序了,如電子溫度計(jì)、時(shí)鐘、秒表、頻率計(jì)、計(jì)數(shù)器的制作等等,可以充分發(fā)揮你的想象達(dá)到你所需要的各種顯示效果。我們附帶的配套軟件資料光盤配有相關(guān)的實(shí)驗(yàn)例程、實(shí)驗(yàn)視頻錄像、單片機(jī)多媒體教程、實(shí)用電子圖書資料、單片機(jī)開發(fā)軟件及編程器、仿真器的全部驅(qū)動(dòng)程序,供大家學(xué)習(xí)使用,以幫助初學(xué)者快速入門。

   

關(guān)閉窗口
主站蜘蛛池模板: av国产精品 | 天天舔天天 | 91精品国产综合久久久动漫日韩 | 国产精品国产三级国产aⅴ中文 | 精品av久久久久电影 | 亚洲 欧美 日韩在线 | cao视频 | 色888www视频在线观看 | 国产精品日本一区二区在线播放 | 国产免费观看久久黄av片涩av | 国产精品国产三级国产aⅴ无密码 | www312aⅴ欧美在线看 | 亚洲精品一二三区 | 免费簧片视频 | 精品1区 | 亚洲一区中文字幕在线观看 | 国产日韩91 | 在线视频成人 | 国产一级一级毛片 | 伊人狠狠干 | 久久精品网 | 婷婷二区 | 欧美日韩一区在线 | 日日摸夜夜添夜夜添精品视频 | 一区视频在线 | 日本污视频 | 亚洲在线免费 | 美女天堂在线 | 亚洲精品一 | 国产精品一区二区av | 日日做夜夜爽毛片麻豆 | 国产精品欧美精品 | 一级片网址 | 黄色在线免费观看视频 | 欧美福利久久 | 日韩精品999 | 亚洲九九色 | 成人在线视频一区 | 亚洲色图第一页 | 国产亚洲精品a | 一级黄色短片 |