版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第10章
數(shù)字信號(hào)輸入/輸出接口電路10.1
開關(guān)信號(hào)的輸入/輸出方式
10.2
I/O資源及擴(kuò)展
10.3
STM8S與總線接口設(shè)備的連接10.4
簡(jiǎn)單顯示驅(qū)動(dòng)電路10.5
LED數(shù)碼管及其顯示驅(qū)動(dòng)電路10.6
LCD模塊顯示驅(qū)動(dòng)電路10.7
鍵盤電路10.8
光電耦合器件接口電路
10.9
單片機(jī)與繼電器接口電路10.10
電平轉(zhuǎn)換電路廣東工業(yè)大學(xué)物理與光電工程學(xué)院?廣東工業(yè)大學(xué)物理與光電工程學(xué)院?10.1開關(guān)信號(hào)輸入/輸出方式
開關(guān)信號(hào)包括脈沖信號(hào)、電平信號(hào)。在單片機(jī)控制系統(tǒng)中,常采用如下幾種方式現(xiàn)實(shí)開關(guān)信號(hào)的輸入和輸出。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?1.直接解碼輸入/輸出方式
在這種方式中,直接利用CPUI/O引腳輸入/輸出開關(guān)信號(hào),如圖10-1(a)所示。2.編碼輸入/輸出方式
在這種方式中,將若干條用途相同(均為輸入或輸出)的I/O引腳組合在一起,按二進(jìn)制編碼后輸入或輸出。例如,對(duì)于n條輸出引腳,經(jīng)過譯碼后,可以控制2n個(gè)設(shè)備;對(duì)于2n個(gè)不同時(shí)有效的輸入量,經(jīng)過編碼器與CPU連接時(shí),也只需要n個(gè)引腳,如圖(b)所示。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?3.矩陣輸入/輸出方式
將CPUI/O引腳分成兩組,用N條引腳構(gòu)成行線,M條引腳構(gòu)成列線,行、列的交叉點(diǎn)就構(gòu)成了所需的N×M個(gè)檢測(cè)點(diǎn)。顯然,所需的I/O引腳數(shù)目為N+M,而檢測(cè)點(diǎn)總數(shù)達(dá)到了N×M個(gè),如圖(C)所示??梢?,I/O引腳的利用率較高,硬件開銷少,因此得到了廣泛應(yīng)用。
在矩陣編碼方式中,如果行線、列線均定義為輸出狀態(tài),就可以輸出N×M個(gè)開關(guān)量;當(dāng)行、列線中有一組為輸出線,另一組為輸入線時(shí)就構(gòu)成了N×M個(gè)輸入檢測(cè)點(diǎn),如矩陣鍵盤電路。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?10.2I/O資源及擴(kuò)展
通過單片機(jī)實(shí)現(xiàn)數(shù)字信號(hào)的輸入處理和輸出控制時(shí),必須了解以下問題:
(1)準(zhǔn)確理解CPU中各引腳的功能,確定可利用的I/O資源,并做出相對(duì)合理的使用規(guī)劃。
(2)作輸出控制信號(hào)時(shí),必須了解CPU復(fù)位期間和復(fù)位后該引腳的狀態(tài)。MCS-51系列CPU在復(fù)位期間和復(fù)位后各I/O端口的狀態(tài)可參閱第2章有關(guān)內(nèi)容。
(3)了解I/O端口輸出級(jí)電路結(jié)構(gòu)和I/O端口的負(fù)載能力。只有了解了CPUI/O端口輸出級(jí)電路結(jié)構(gòu)和負(fù)載能力,才可能設(shè)計(jì)出原理正確、工作可靠的I/O接口電路。
(4)了解I/O端口輸出電平范圍。
(5)了解I/O端口耐壓。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
對(duì)于輸出口,當(dāng)輸出高電平時(shí),能給負(fù)載提供的最大驅(qū)動(dòng)電流就是該輸出口高電平驅(qū)動(dòng)能力,當(dāng)輸出電流大于最大驅(qū)動(dòng)電流時(shí),上拉MOS管內(nèi)阻上的壓降將增加,VOH會(huì)下降。當(dāng)VOH小于某一數(shù)值后,后級(jí)電路會(huì)誤認(rèn)為輸入為低電平,產(chǎn)生邏輯錯(cuò)誤。因此,要注意輸出高電平時(shí)的負(fù)載能力。而當(dāng)輸出低電平時(shí),輸出級(jí)飽和,負(fù)載電流倒灌。同樣,倒灌的電流也不能太大,否則會(huì)使輸出級(jí)因過流而損壞,即使沒有損壞,也會(huì)因灌電流太大,造成輸出低電平VOL上升。當(dāng)VOL大于某一數(shù)值后,后級(jí)電路同樣會(huì)誤以為輸入為高電平,產(chǎn)生錯(cuò)誤。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?10.2.1STM8S系統(tǒng)擴(kuò)展I/O引腳資源策略
STM8S芯片總線不開放,在STM8S中擴(kuò)展I/O引腳的原則是:(1)外部所有輸入信號(hào)直接與MCU的I/O引腳相連,以便MCU直接處理。(2)高速輸出信號(hào)直接從MCU芯片I/O引腳輸出。(3)當(dāng)I/O引腳資源緊張時(shí),低速脈沖信號(hào)、電平信號(hào)可通過串入并出移位寄存器芯片,如一片或兩片74HC595串行輸出。(4)更換封裝。(5)必要時(shí)可考慮用另一個(gè)MCU芯片擴(kuò)展I/O引腳。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?通過串入并出芯片擴(kuò)展輸出引腳圖10-2通過串入并出芯片擴(kuò)展輸出引腳廣東工業(yè)大學(xué)物理與光電工程學(xué)院?廣東工業(yè)大學(xué)物理與光電工程學(xué)院?10.2.2利用串入并出及并入串出芯片擴(kuò)展I/O口
在速度要求不高情況下,可利用74LS164、74HC594、74HC595等“串入并出”芯片擴(kuò)展輸出口;利用74LS165、74HC597等“并入串出”芯片擴(kuò)展輸入口,也是一種簡(jiǎn)單、實(shí)用的I/O口擴(kuò)展方式。例10-1假設(shè)U1擴(kuò)展輸出引腳輸出的信息存放在EDATA1單元中,U2擴(kuò)展輸出引腳輸出的信息存放在EDATA1+1單元中,則將數(shù)據(jù)串行輸出到74HC595的輸出端的程序段如下:;在RAM1段定義EDATA1、EDATA2EDATA1DS.B1
;U1輸出信息EDATA2DS.B1;U2輸出信息;---I/O引腳初始化---BSETPC_DDR,#4;1,PC4引腳定義為輸出(SDI)BSETPC_CR1,#4;1,選擇推挽方式BSETPC_CR2,#4
;1,選擇高速輸出
#DefineSdiPC_ODR,#4
;1,PC4引腳定義為串行數(shù)據(jù)輸入端(SDi)BSETPC_DDR,#3;1,PC3引腳定義為輸出(SCLK)BSETPC_CR1,#3;1,選擇推挽方式BSETPC_CR2,#3
;1,選擇高速輸出#DefineSCLKPC_ODR,#3
;1,PC3引腳定義為串行移位脈沖SCLKBRESSCLK;靜態(tài)時(shí)SCLK引腳輸出低水平
廣東工業(yè)大學(xué)物理與光電工程學(xué)院?BSETPC_DDR,#2;1,PC2引腳定義為輸出(PCLK)BSETPC_CR1,#2;1,選擇推挽方式BRESPC_CR2,#2
;0,選擇低速輸出#DefinePCLKPC_ODR,#2
;將PC2引腳定義為并行送數(shù)脈沖PCLKBRESPCLK;靜態(tài)時(shí)PCLK引腳輸出低水平;-------串行數(shù)據(jù)輸出程序段----------
LDWX,#1 ;先輸出U2芯片的引腳信息Serial_LOOP1: LDA,(EDATA1,X) ;取輸出數(shù)據(jù) MOVR03,#8 ;左移8次Serial_LOOP2: BRESSCLK ;串行移位脈沖SCLK置為低電平 RLCA ;帶進(jìn)位C循環(huán)左移,即先輸出b7位 BCCMSdi ;C送Sdi引腳(即數(shù)據(jù)送SDI引腳) NOP ;插入NOP適當(dāng)延遲 BSETSCLK
;置為高電平,形成上升沿 DECR03 JRNER03,Serial_LOOP2 DECWX JRPLSerial_LOOP1;當(dāng)X>=0時(shí),循環(huán) BRESSCLK ;串行移位脈沖SCLK恢復(fù)為低電平狀態(tài) BSETPCLK;并行輸出鎖存脈沖PCLK置為高電平,形成上升沿 NOP ;延遲 BRESPCLK ;并行輸出鎖存脈沖PCLK恢復(fù)為低電平狀態(tài)廣東工業(yè)大學(xué)物理與光電工程學(xué)院?10.2.3利用MCU擴(kuò)展I/O不僅擴(kuò)展了I/O引腳,也擴(kuò)展了其它硬件資源;部分工作可由擴(kuò)展MCU完成,減輕了主MCU的負(fù)擔(dān)。MCU
I/O端口電平狀態(tài)可以編程設(shè)定,從面少去承擔(dān)邏輯轉(zhuǎn)換的與非門電路芯片??墒褂肬ART、SPI接口同步串行通信方式工并行通信方式實(shí)現(xiàn)兩個(gè)MCU之間的信息交換。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?10.2.3利用MCU擴(kuò)展I/O廣東工業(yè)大學(xué)物理與光電工程學(xué)院?10.3
STM8S與總線接口設(shè)備的連接STM8S系列MCU總線不開放,當(dāng)需要與總線接口設(shè)備,如總線接口液晶模塊(LCM)相連時(shí),可用MCU的某一個(gè)I/O引腳模擬總線接口設(shè)備的讀選通信號(hào)(/RD)以及定控制信號(hào)(/WR)??蓪⑵渲泄δ軉我坏腎/O口作為數(shù)據(jù)總線接口。如64引腳或80引腳封裝的PG口。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?圖10-4ST8S
MCU與總線設(shè)備連接示意圖廣東工業(yè)大學(xué)物理與光電工程學(xué)院?;實(shí)現(xiàn)圖10-4所示連接的數(shù)據(jù)口初始化指令系列:MOVPG_CR1,#0FFH;輸出為推挽,輸入為帶上拉電阻CLRPG_CR2
;輸出時(shí),PG口處于低速方式BRESPC_ODR,#2;輸出片選信號(hào)/CE;NOPMOVPG_DDR,#0FFH;PG定義為輸出MOVPG_CR2,#0FFH
;根據(jù)速度,選擇PG口輸出信號(hào)邊沿時(shí)間LDPG_ODR,A
;數(shù)據(jù)輸出BRESPC_ODR,#4;使寫控制信號(hào)/WR為低電平,形成/WR選通脈沖的前沿(下降沿);NOPBSETPC_ODR,#4
;使寫控制信號(hào)/WR為高電平,形成/WR選通脈沖的后沿(上降沿)BSETPC_ODR,#2
;如果是非連續(xù)寫操作,則取消片選信號(hào)/CE;---讀操作指令系列BRESPC_ODR,#2;輸出片選信號(hào)/CE;NOPCLRPG_DDR
;PG口定義為輸入CLRPG_CR2
;為0,輸入時(shí)可不理會(huì)CR2的內(nèi)容BRESPC_ODR,#3
;使選通信號(hào)/RD為低電平,形成/RD選通脈沖的前沿(下降沿);NOPLDA,PG_IDR;從總線讀數(shù)據(jù)BSETPC_ODR,#3
;使選通信號(hào)/RD為高電平,形成/RD選通脈沖的后沿(上降沿)BSETPC_ODR,#2
;如果是非連續(xù)讀操作,則取消片選信號(hào)/RD
廣東工業(yè)大學(xué)物理與光電工程學(xué)院?10.3簡(jiǎn)單顯示驅(qū)動(dòng)電路
6.3.1發(fā)光二極管
發(fā)光二極管在本質(zhì)上與普通二極管差別不大,也是一個(gè)PN結(jié),同樣具有正向?qū)?,反向截止的特性。發(fā)光二極管的伏安特性曲線與普通二極管相似,如圖6-12所示(為了便于比較,圖中用虛線表示普通二極管的伏安特性曲線)。圖10-5LED二極管伏安特性曲線廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
(1)
外加正向電壓小于0.9V~1.1V時(shí),LED不導(dǎo)通;當(dāng)外加電壓大于正向閥值電壓時(shí),LED導(dǎo)通,同時(shí)發(fā)光。顯然,LED二極管的正向?qū)妷罕绕胀ǘO管大,具體數(shù)值與LED材料有關(guān),如表10-7所示。(2)
LED導(dǎo)通后,伏安特性曲線更陡,即LED導(dǎo)通后,內(nèi)阻更?。ㄒ虼艘渤S米鹘祲涸?,如將+5V電源降為3V電源)。
(3)LED二極管反向擊穿電壓比普通二極管低,一般在5V~10V之間。
廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
LED二極管的亮度與LED材料、結(jié)構(gòu)以及工作電流有關(guān)。一般來說,工作電流越大,LED二極管的亮度也越大,但亮度與工作電流的關(guān)系因材料而異。例如GaP發(fā)光二極管,當(dāng)工作電流增加到一定數(shù)值后,電流增加,LED亮度不再增大,即出現(xiàn)亮度飽和現(xiàn)象。而GaAsP發(fā)光二極管的亮度隨電流的增大而增大,在器件因功耗增加而損壞前觀察不到亮度飽和現(xiàn)象。
LED發(fā)光二極管工作電流一般控制在2~20mA之間,最大不超過50mA,否則會(huì)損壞。而小尺寸高亮度LED工作電流控制在2~10mA范圍內(nèi),就可獲得良好的發(fā)光效果。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
直徑在5mm以下的小尺寸高亮度LED工作電流不大,一般可直接由MCU芯片I/O引腳驅(qū)動(dòng),如圖10-6(a)所示。對(duì)于推挽輸出引腳,采用圖10-6(b)所示的高電平有效驅(qū)動(dòng)方式似乎沒有什么不妥,但是應(yīng)該避免使用高電平有效驅(qū)動(dòng)方式,原因是空穴遷移率遠(yuǎn)低于電子遷移率,導(dǎo)致尺寸、摻雜濃度相同的P溝MOS管溝道電阻大于N溝MOS管,除非是上下兩管導(dǎo)通電阻相同(體現(xiàn)在相同驅(qū)動(dòng)電流的情況下,兩管壓降相同)。10.4.2驅(qū)動(dòng)電路廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
例如,對(duì)STM8S芯片標(biāo)準(zhǔn)驅(qū)動(dòng)能力引腳來說,當(dāng)負(fù)載電流均為4mA時(shí)(芯片溫度為85℃),從技術(shù)手冊(cè)查到在拉電流負(fù)載狀態(tài)下,P溝管壓降(VDD-VOH)為0.5V,而在灌電流負(fù)載狀態(tài)下,N溝管壓降(VOL)約為0.3V,管耗差0.8mW。盡管許多MCU芯片單個(gè)I/O引腳拉電流及灌電流能力均達(dá)10~20mA,驅(qū)動(dòng)小尺寸LED發(fā)光二極管似乎不是問題,但受MCU芯片散熱條件限制,同一個(gè)I/O口以及所有I/O引腳電流總和有嚴(yán)格的限制(參見2.3.7節(jié))。因此,當(dāng)灌電流或拉電流大于2mA時(shí),建議在負(fù)載與MCU芯片之間增設(shè)驅(qū)動(dòng)器(門電路或三極管等),如圖10-6(c)~(e)所示。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?圖10-6MCU與LED的連接方式廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
圖10-6(a)采用直接驅(qū)動(dòng)方式,I/O引腳定義為OD輸出方式,限流電阻由LED工作電流IF確定,即
其中,VF為L(zhǎng)ED二極管工作電壓,其大小與材料有關(guān)(對(duì)于紅光LED,估算限流電阻時(shí)VF一般取2.0V);VOL為MCUI/O引腳輸出低電平時(shí)電壓,其大小與灌電流有關(guān)(此處為IF),可從數(shù)據(jù)手冊(cè)中查到。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
圖10-6(b)也采用直接驅(qū)動(dòng)方式,I/O引腳定義為推挽輸出方式。輸出高電平時(shí),LED發(fā)光,其限流電阻的計(jì)算與圖10-6(a)的類似。圖10-6(c)采用PNP三極管驅(qū)動(dòng),當(dāng)Pxy引腳輸出低電平時(shí),三極管飽和導(dǎo)通,限流電阻R1與LED內(nèi)阻(幾歐姆~幾十歐姆)構(gòu)成了集電極等效電阻RC。限流電阻R1的大小由LED二極管工作電流IF決定,即廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
其中,IC為集電極電流;VDD為電源電壓;VCES為三極管飽和壓降,一般取值在0.1~0.2V之間,具體數(shù)值與三極管種類、負(fù)載電流IF有關(guān)。當(dāng)VDD為5V,VF取2.0V,VCES取0.2V,IF取4mA時(shí),限流電阻R1大致為680Ω。當(dāng)Pxy引腳輸出高電平時(shí),三極管截止,LED不亮。值得注意的是,為使LED工作時(shí),驅(qū)動(dòng)管處于飽和狀態(tài),發(fā)光二極管LED不宜串在發(fā)射極。圖10-6(d)~(e)采用集電極開路輸出(OC門)的集成驅(qū)動(dòng)器,如7407(同相驅(qū)動(dòng))、7406(反相驅(qū)動(dòng))、74HC05(工作電流在3mA以內(nèi)),限流電阻的計(jì)算方法與圖10-6(a)相同。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?10.4.3LED發(fā)光二極管顯示狀態(tài)及同步
一般來說,單個(gè)LED有“亮”、“滅”兩種狀態(tài),但在單片機(jī)應(yīng)用系統(tǒng)中,由于I/O引腳數(shù)量、成本等因素的限制,有時(shí)需要一只LED發(fā)光二極管顯示出更多的狀態(tài)。例如,電源監(jiān)控設(shè)備中的電源指示燈可能會(huì)用“滅”、“常亮”、“快閃”、“慢閃”四種狀態(tài)分別表示“無交流”、“交流正?!?、“過壓”、“欠壓”四種狀態(tài)。例如,帶有后備電池設(shè)備的電源指示燈也可用“滅”、“常亮”、“快閃”、“慢閃”分別表示“無交流/電池電壓正?!薄ⅰ敖涣髡?電池電壓正?!?、“交流正常/電池低壓”、“無交流/電池低壓”四種狀態(tài)。在這種情況下,要用兩位二進(jìn)制數(shù)記錄每一只LED發(fā)光二極管的狀態(tài),如00表示滅、01表示慢閃、10表示快閃、11表示常亮。這樣一個(gè)字節(jié)的內(nèi)部RAM單元可記錄4個(gè)LED指示燈的狀態(tài)。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
當(dāng)系統(tǒng)中存在兩個(gè)或兩個(gè)以上LED發(fā)光二極管以閃爍方式表示不同的狀態(tài)時(shí),就遇到LED顯示同步問題,否則可能出現(xiàn)甲燈亮?xí)r,乙燈滅—呈現(xiàn)類似霓虹燈的走動(dòng)顯示效應(yīng)。解決方法:快閃、慢閃時(shí)間呈倍數(shù)關(guān)系,如快閃切換時(shí)間為0.15~0.25s,慢閃切換時(shí)間可設(shè)為0.45~0.75s(2~3倍),然后在定時(shí)中斷服務(wù)程序中設(shè)置快、慢閃切換標(biāo)志,并根據(jù)LED狀態(tài)信息關(guān)閉或打開LED指示燈。例10-2假設(shè)某系統(tǒng)存在4個(gè)具有快慢閃狀態(tài)的LED指示燈(LED1、LED2、LED3、LED4),且分別與PC1~PC4引腳相連,如圖10-7所示。試寫出相應(yīng)的顯示驅(qū)動(dòng)程序。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?圖10-7小尺寸LED與MCU相連特例廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
分析:用LED_stu單元記錄4個(gè)LED發(fā)光二極管的狀態(tài),其中,LED_stu[1:0]位記錄LED1狀態(tài);LED_stu[3:2]位記錄LED2的狀態(tài);LED_stu[5:4]位記錄LED3的狀態(tài);LED_stu[7:6]位記錄LED4的狀態(tài)。如果主定時(shí)器每10?ms中斷一次,則在主定時(shí)器中斷服務(wù)程序中與LED發(fā)光二極管顯示有關(guān)的程序段如下:
LED_stu DS.B 1 ;在ram0段中定義LED狀態(tài)變量LED_stu
LED_SF DS.B 1 ;為方便判別,LED慢閃亮滅時(shí)間取0.48s,快閃亮滅時(shí)間取0.16s#defineLED_Faster_SBLED_SF,#0 ;
LED_SF的b0位為快閃標(biāo)志
#defineLED_low_SB LED_SF,#1 ;LED_SF的b1位為慢閃標(biāo)志
廣東工業(yè)大學(xué)物理與光電工程學(xué)院?LEDTIME DS.B 1 ;?LED切換時(shí)間計(jì)時(shí)器LEDTIME;****I/O引腳初始化****
BSETPC_DDR,#1 ;?PC1輸出
BRESPC_CR1,#1 ;選擇OD輸出方式
#defineLED1_ConPC_ODR,#1;
;?LED1指示燈定義為L(zhǎng)ED1_ConBSETLED1_Con ;開始時(shí)引腳輸出高電平(LED1指示燈滅) ;?PC2~PC4引腳初始化指令系列(略)
廣東工業(yè)大學(xué)物理與光電工程學(xué)院?#defineLED2_ConPC_ODR,#2 ;?LED2指示燈定義為L(zhǎng)ED2_ConBSETLED2_Con ;開始時(shí)引腳輸出高電平(LED2指示燈滅)#defineLED3_ConPC_ODR,#3 ;?LED3指示燈定義為L(zhǎng)ED3_ConBSETLED3_Con ;開始時(shí)引腳輸出高電平(LED3指示燈滅)#defineLED4_ConPC_ODR,#4 ;?LED4指示燈定義為L(zhǎng)ED4_ConBSETLED4_Con ;開始時(shí)引腳輸出高電平(LED4指示燈滅);****在主定時(shí)器中與LED顯示有關(guān)的指令系列****廣東工業(yè)大學(xué)物理與光電工程學(xué)院? ;略去與LED顯示無關(guān)指令系列INCLEDTIME ;切換時(shí)間計(jì)時(shí)器加1LDA,LEDTIMECPA,#48 ;?48?×?10ms,即0.48?sJRCLED_Disp_NEXT1CLRLEDTIME
;切換時(shí)間計(jì)時(shí)器到48(48是16的3倍,且容易判別)時(shí)清0BCPLLED_low_SB ;慢閃切換標(biāo)志取反
JRTLED_Disp_NEXT2
;?48被16整除,即慢閃、快閃切換時(shí)間到同時(shí)有效LED_Disp_NEXT1:;判別當(dāng)前時(shí)間計(jì)數(shù)器是否為16的倍數(shù)
ANDA,#0FH ;僅保留低4位b3~b0JREQLED_Disp_NEXT2 ;低4位b3~b0說明當(dāng)前時(shí)間被16整除
JPLED_Disp_EXIT ;不是16的倍數(shù),說明切換時(shí)間未到LED_Disp_NEXT2:BCPLLED_faster_SB ;快閃切換標(biāo)志取反;-------------------LED1顯示設(shè)置-----------------------
廣東工業(yè)大學(xué)物理與光電工程學(xué)院?LDA,LED_stuANDA,#03H ;保留LED1狀態(tài)位(b1、b0)JRNELED_Disp_LED11;為00態(tài),LED指示燈滅BSETLED1_Con ;輸出高電平,使LED1滅
JRTLED_Disp_LED14LED_Disp_LED11:
CPA,#01HJRNELED_Disp_LED12;為01態(tài),LED指示慢閃
BTJTLED_low_SB,LED_Disp_LED121LED_Disp_LED121: ;慢閃標(biāo)志送CBCCMLED1_Con ;?C送LED1_Con引腳,控制LED1亮、滅
JRTLED_Disp_LED14LED_Disp_LED12:CPA,#02HJRNELED_Disp_LED13;為10態(tài),LED指示快閃
廣東工業(yè)大學(xué)物理與光電工程學(xué)院?BTJTLED_faster_SB,LED_Disp_LED131LED_Disp_LED131: ;快閃標(biāo)志送CBCCMLED1_Con ;?C送LED1_Con引腳,控制LED1亮、滅
JRTLED_Disp_LED14LED_Disp_LED13:;肯定屬于11態(tài),LED應(yīng)常亮
BRESLED1_Con ;LED1_Con輸出低電平,使LED1常亮LED_Disp_LED14:;-------------------LED2顯示設(shè)置-----------------------LDA,LED_stuANDA,#0CH;保留LED2狀態(tài)位(b3、b2)
廣東工業(yè)大學(xué)物理與光電工程學(xué)院?JRNELED_Disp_LED21;為00態(tài),LED指示燈滅
BSETLED2_Con ;?LED2_Con輸出高電平,使LED2滅
JRTLED_Disp_LED24LED_Disp_LED21:CPA,#04HJRNELED_Disp_LED22;為01態(tài),LED指示慢閃
BTJTLED_low_SB,LED_Disp_LED221廣東工業(yè)大學(xué)物理與光電工程學(xué)院?LED_Disp_LED221: ;慢閃標(biāo)志送CBCCMLED2_Con ;?C送LED2_Con引腳,控制LED2亮、滅
JRTLED_Disp_LED24LED_Disp_LED22:CPA,#08HJRNELED_Disp_LED23;為10態(tài),LED指示快閃
BTJTLED_faster_SB,LED_Disp_LED231廣東工業(yè)大學(xué)物理與光電工程學(xué)院?LED_Disp_LED231: ;快閃標(biāo)志送CBCCMLED2_Con ;?C送LED2_Con引腳,控制LED2亮、滅
JRTLED_Disp_LED24LED_Disp_LED23:;肯定屬于11態(tài),LED應(yīng)常亮
BRESLED2_Con ;?LED2_Con輸出低電平,使LED2常亮LED_Disp_LED24:;-------------------LED3顯示設(shè)置-----------------------LDA,LED_stuANDA,#30H ;保留LED3狀態(tài)位(b5、b4)
廣東工業(yè)大學(xué)物理與光電工程學(xué)院?CPA,#00HJRNELED_Disp_LED31;為00態(tài),LED指示燈滅
BSETLED3_Con ;LED3_Con輸出高電平,LED3滅
JRTLED_Disp_LED34LED_Disp_LED31:CPA,#10HJRNELED_Disp_LED32;為01態(tài),LED指示慢閃
BTJTLED_low_SB,LED_Disp_LED321LED_Disp_LED321: ;慢閃標(biāo)志送CBCCMLED3_Con ;?C送LED3_Con引腳,控制LED3亮、滅
廣東工業(yè)大學(xué)物理與光電工程學(xué)院?JRTLED_Disp_LED34LED_Disp_LED32:CPA,#20HJRNELED_Disp_LED33;為10態(tài),LED指示快閃
BTJTLED_faster_SB,LED_Disp_LED331LED_Disp_LED331: ;快閃標(biāo)志送CBCCMLED3_Con ;?C送LED3_Con引腳,控制LED3亮、滅
JRTLED_Disp_LED34廣東工業(yè)大學(xué)物理與光電工程學(xué)院?LED_Disp_LED33:;肯定屬于11態(tài),LED應(yīng)常亮
BRESLED3_Con ;?LED3_Con輸出低電平,使LED3常亮LED_Disp_LED34:;-------------------LED4顯示設(shè)置-----------------------LDA,LED_stuANDA,#0C0H ;保留LED4狀態(tài)位(b7、b6)CPA,#00H廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
JRNELED_Disp_LED41;為00態(tài),LED指示燈滅
BSETLED4_Con ;輸出高電平,使LED4滅
JRTLED_Disp_LED44LED_Disp_LED41:CPA,#40HJRNELED_Disp_LED42;為01態(tài),LED指示慢閃
BTJTLED_low_SB,LED_Disp_LED421LED_Disp_LED421: ;慢閃標(biāo)志送CBCCMLED4_Con ;?C送LED4_Con引腳,控制LED4亮、滅
JRTLED_Disp_LED44廣東工業(yè)大學(xué)物理與光電工程學(xué)院?LED_Disp_LED42:CPA,#80HRNELED_Disp_LED43;為10態(tài),LED指示快閃
BTJTLED_faster_SB,LED_Disp_LED431LED_Disp_LED431: ;快閃標(biāo)志送CBCCMLED4_Con ;?C送LED4_Con引腳,控制LED4亮、滅
廣東工業(yè)大學(xué)物理與光電工程學(xué)院?JRTLED_Disp_LED44LED_Disp_LED43:;肯定屬于11態(tài),LED應(yīng)常亮
BRESLED4_Con ;LED4_Con輸出低電平,使LED4常亮LED_Disp_LED44:LED_Disp_EXIT:IRETIRETIRETIRETIRET廣東工業(yè)大學(xué)物理與光電工程學(xué)院?10.5LED數(shù)碼管及其顯示驅(qū)動(dòng)電路
LED數(shù)碼管是單片機(jī)控制系統(tǒng)中最常用的顯示器件之一。在單片機(jī)系統(tǒng)中,常用一只或數(shù)只,甚至十幾只LED數(shù)碼管,來顯示MCU的處理結(jié)果、輸入/輸出信號(hào)的狀態(tài)或大小。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?10.5.1LED數(shù)碼管
LED數(shù)碼管的外觀如圖10-8(a)所示,筆段及其對(duì)應(yīng)引腳排列如圖10-8(b)所示,其中,a~g段用于顯示數(shù)字或字符的筆畫;dp顯示小數(shù)點(diǎn);而3、8引腳連通,作為公共端。一英寸以下的LED數(shù)碼管內(nèi),每一筆段含有1只LED發(fā)光二極管,導(dǎo)通壓降為1.2~2.5V;而一英寸及以上LED數(shù)碼管的每一筆段,由多只LED發(fā)光二極管以串、并聯(lián)方式連接而成,筆段導(dǎo)通電壓與筆段內(nèi)包含的LED發(fā)光二極管的數(shù)目、連接方式有關(guān)。在串聯(lián)方式中,確定電源電壓VCC時(shí),每只LED工作電壓通常以2.0V計(jì)算。例如,4英寸七段LED數(shù)碼顯示器LC4141的每一個(gè)筆段均由四只LED發(fā)光二極管按串聯(lián)方式連接而成,因此導(dǎo)通電壓應(yīng)在7~8V之間,電源電壓VCC必須取9V以上。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
根據(jù)LED數(shù)碼管內(nèi)各筆段LED發(fā)光二極管的連接方式,可以將LED數(shù)碼管分為共陰和共陽兩大類。在共陰LED數(shù)碼管中,所有筆段的LED發(fā)光二極管的負(fù)極連在一起,如圖10-8(c)所示;而在共陽LED數(shù)碼管中,所有筆段的LED發(fā)光二極管的正極連在一起,如圖10-8(d)所示。由于共陽LED數(shù)碼管與OC、OD門驅(qū)動(dòng)器連接方便,因此在單片機(jī)控制系統(tǒng)中,多用共陽LED數(shù)碼管。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?圖10-8LED數(shù)碼顯示管
LED數(shù)碼管有單體、雙體、三體等多種封裝形式。對(duì)于雙體、三體封裝形式LED數(shù)碼管,其引腳排列與筆段的對(duì)應(yīng)關(guān)系可能會(huì)因生產(chǎn)廠家的不同而不同,通過數(shù)字萬用表或指針式萬用表10k歐姆擋,就能判別出連接方式(是共陰還是共陽)及其公共端,借助外部電源與一只電阻值為1kΩ的限流電阻識(shí)別出引腳排列方式。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?10.5.2LED數(shù)碼顯示器接口電路
從LED數(shù)碼管的結(jié)構(gòu)可以看出,點(diǎn)亮不同的筆段就可以顯示出不同的字符。例如,筆段a、b、c、d、e、f被點(diǎn)亮?xí)r,就可以顯示數(shù)字“0”;筆段a、b、c、d、g被點(diǎn)亮就顯示數(shù)字“3”。在理論上,七個(gè)筆段可以顯示128種不同的字符,扣除其中沒有意義的狀態(tài)組合后,八段LED數(shù)碼管可以顯示的字符如表10-2所示。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?表10-2八段LED數(shù)碼管可以顯示的字符廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
LED靜態(tài)顯示接口電路由筆段代碼鎖存器、筆段譯碼器(采用軟件譯碼的LED靜態(tài)顯示驅(qū)動(dòng)電路不需要筆段譯碼器)、驅(qū)動(dòng)器等部分組成。在單片機(jī)應(yīng)用系統(tǒng)中,一般不用七段譯碼器芯片,如74249、CD4511等構(gòu)成筆段譯碼器,而采用軟件譯碼方式,原因是軟件譯碼靈活、方便。下面介紹單片機(jī)系統(tǒng)中常用的LED靜態(tài)顯示接口電路。
(1)圖10-9所示是一位共陽LED靜態(tài)顯示驅(qū)動(dòng)電路,PG口輸出筆段代碼。該電路的優(yōu)點(diǎn)是結(jié)構(gòu)簡(jiǎn)單,直接利用MCU的PG口輸出數(shù)據(jù)寄存器PG_ODR作筆段碼鎖存器,其缺點(diǎn)是占用了PG0~PG7八根MCUI/O引腳。
1.?LED靜態(tài)顯示接口電路廣東工業(yè)大學(xué)物理與光電工程學(xué)院?圖10-9直接利用MCUI/O驅(qū)動(dòng)小尺寸LED數(shù)碼管在圖10-9(a)中,LED筆段編號(hào)a~dp按順序分別接到PG0~PG7引腳,筆段碼表中的數(shù)據(jù)可直接引用表10-2中的共陽LED數(shù)碼管筆段代碼信息,驅(qū)動(dòng)程序段如下:
CLRWX
LDXL,A ;存放在累加器A中的顯示數(shù)碼送寄存器X
LDA,(LEDTAB,X) ;取出顯示數(shù)碼對(duì)應(yīng)的筆段碼LDPG_ODR,A ;筆段碼送PG口,顯示(PG口初始化為OD輸出方式)數(shù)碼信息
LEDTAB: ;筆段碼表首地址
DC.BC0H,0F9H,0A4H,. ;筆段代碼表廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
例如,顯示數(shù)字“0”時(shí),要求a、b、c、d、e、f筆段亮,即PG0~PG5輸出低電平,PG6輸出高電平,PG7與筆段無關(guān),規(guī)定輸出高電平,因此數(shù)字“0”的筆段代碼為C0H。同理,可以推算出其他數(shù)字或字符的筆段代碼。在PCB設(shè)計(jì)時(shí),如果發(fā)現(xiàn)按圖10-9(a)所示順序連接時(shí),連線交叉多,可調(diào)整LED數(shù)碼管筆段編號(hào)與I/O引腳之間的連接關(guān)系,如選擇類似圖10-9(b)所示的連接關(guān)系。在這種情況下,驅(qū)動(dòng)程序沒有變化,僅需要根據(jù)其連線關(guān)系重新構(gòu)造LED筆段碼表。可見,在MCU控制系統(tǒng)中,采用軟件譯碼方式非常靈活、方便。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
(2)當(dāng)需要驅(qū)動(dòng)兩位或以上LED數(shù)碼管時(shí),為減少I/O引腳開銷,常用串行移位方式輸出LED數(shù)碼管的筆段碼信息,如圖10-10所示。
LED數(shù)碼管顯示驅(qū)動(dòng)電路在本質(zhì)上依然是靜態(tài)顯示驅(qū)動(dòng)方式,用74HC595串行移位寄存器作筆段碼鎖存器。借助串行移位寄存器74HC595的級(jí)聯(lián)功能,可獲得兩位或兩位以上LED數(shù)碼管靜態(tài)顯示驅(qū)動(dòng)電路。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
根據(jù)74HC595串行移位規(guī)則(串行輸入端SDI接b0),先輸出LED2的dp段碼,最后輸出LED1的a段碼。由于SPI總線可以先發(fā)送b7位(MSB),因此,圖10-10(a)可以直接使用表10-2給出的筆段碼信息。而在圖10-10(b)中使用UART串行接口輸出筆段碼信息時(shí),由于UART接口只能先輸出b0位(LSB),因此不能直接使用表10-2所示筆段碼,需要按倒序方式重新編排表10-2中筆段碼信息,即b7與b0對(duì)調(diào),b6與b1對(duì)調(diào),b5與b2對(duì)調(diào),b4與b3對(duì)調(diào)。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?圖10-10串行輸出LED筆段碼的靜態(tài)顯示驅(qū)動(dòng)電路廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
可見,借助74HC595芯片,通過串行輸出方式驅(qū)動(dòng)LED數(shù)碼管方式,不僅占用MCUI/O的引腳少,且MCU散發(fā)的熱量小,系統(tǒng)的熱穩(wěn)定性高。當(dāng)LED數(shù)碼管工作電流較大(5?mA以上)或驅(qū)動(dòng)電壓較高(如5V以上)時(shí),可在74HC595與數(shù)碼管之間增加OC輸出7406(反相)、7407(同相)芯片作筆段碼驅(qū)動(dòng)器,如圖10-11所示。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?圖10-11高壓或大電流LED數(shù)碼管靜態(tài)顯示驅(qū)動(dòng)電路廣東工業(yè)大學(xué)物理與光電工程學(xué)院?在靜態(tài)顯示方式中,顯示驅(qū)動(dòng)程序簡(jiǎn)單,CPU占用率低(更新顯示內(nèi)容時(shí),才需要輸出筆段碼信息),但每一位LED數(shù)碼管需要一個(gè)8位鎖存器來鎖存筆段碼信息,硬件開銷大成本高,僅適用于顯示位數(shù)較少(4位以下)的場(chǎng)合。當(dāng)需要顯示的位數(shù)在4~12時(shí),多采用“按位掃描、軟件譯碼(在單片機(jī)系統(tǒng)中一般不用硬件譯碼)的動(dòng)態(tài)顯示”方式。而當(dāng)顯示位數(shù)大于12時(shí),可采用分組按位掃描或按筆段掃描的動(dòng)態(tài)顯示方式。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
2.LED顯示器動(dòng)態(tài)顯示方式廣東工業(yè)大學(xué)物理與光電工程學(xué)院?2023/2/1STM8S單片機(jī)原理與應(yīng)用圖10-5為8位LED動(dòng)態(tài)顯示2003.10.10的過程。圖(a)是顯示過程,某一時(shí)刻,只有一位LED被選通顯示,其余位則是熄滅的;圖(b)是實(shí)際顯示結(jié)果,人眼看到的是8位穩(wěn)定的
同時(shí)顯示的字符。2023/2/1單片機(jī)原理與應(yīng)用PB.5PB.4PB.3PB.2PB.2PB.0PG.7PG.6PG.5PG.4PG.3PG.2PG.1PG.07406OC門X3+5VSTM8S位選線段代碼要求:此處為共陰數(shù)碼管,PG口送段代碼,PB口送位選信號(hào)。通過查表實(shí)現(xiàn)動(dòng)態(tài)顯示。條件:待顯數(shù)據(jù)(00H—09H)已放在:7FH—7AH單元中(分別對(duì)應(yīng)十萬位~個(gè)位)說明:由于用了反相驅(qū)動(dòng)器7406,要用共陽譯碼表。共陰數(shù)碼管上拉電阻×142023/2/1單片機(jī)原理與應(yīng)用7406OC門X3+5V(7FH)(7EH)(7DH)(7CH)(7BH)(7AH)十萬萬位千位百位十位個(gè)位數(shù)據(jù)緩沖區(qū)/顯示緩沖區(qū)PG口送段代碼,PB口送位選信號(hào)。待顯數(shù)據(jù)已經(jīng)放在:7FH—7AH單元(分別對(duì)應(yīng)十萬位→個(gè)位)使用共陽譯碼表。
在按位掃描的動(dòng)態(tài)顯示方式中,每位LED數(shù)碼管同筆段引腳并聯(lián)在一起,共用一套筆段代碼鎖存器(由于單片機(jī)的I/O口、串行移位寄存器均具有輸出鎖存功能,因而不需要額外的筆段代碼鎖存器)、譯碼器(采用軟件譯碼時(shí),不用譯碼器)及驅(qū)動(dòng)器。為了控制各位LED數(shù)碼管輪流工作,各顯示位的公共端與位譯碼(采用軟件譯碼時(shí)不用)、鎖存、驅(qū)動(dòng)電路相連。這樣就可以依次輸出每一個(gè)顯示位的筆段代碼和位掃描碼,輪流點(diǎn)亮各位LED數(shù)碼顯示管,實(shí)現(xiàn)按位掃描動(dòng)態(tài)顯示??梢?,在動(dòng)態(tài)顯示方式中,僅需一套筆段代碼鎖存、譯碼(軟件譯碼除外)、驅(qū)動(dòng)器,以及一套位掃描碼鎖存、驅(qū)動(dòng)器,硬件開銷少。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
在動(dòng)態(tài)顯示方式中,各LED數(shù)碼管輪流工作,為防止出現(xiàn)閃爍現(xiàn)象,LED數(shù)碼管刷新頻率必須大于25Hz,即同一個(gè)LED數(shù)碼管相鄰兩次點(diǎn)亮?xí)r間間隔必須小于40ms。對(duì)于具有N個(gè)LED數(shù)碼管的動(dòng)態(tài)顯示電路來說,如果LED顯示器刷新頻率為f,那么刷新周期為1/f,則每一位的顯示時(shí)間為1/(f?×?N)秒。顯然,位數(shù)越多,每一位的顯示時(shí)間就越短,在驅(qū)動(dòng)電流一定的情況下,亮度就越低。正因如此,在動(dòng)態(tài)LED顯示電路中,需適當(dāng)增大驅(qū)動(dòng)電流,一般取10~20mA,以抵消因顯示時(shí)間短而引起的亮度下降現(xiàn)象。為保證一定的亮度,實(shí)驗(yàn)表明:對(duì)于普通亮度LED來說,在驅(qū)動(dòng)電流取30mA的情況下,每位顯示時(shí)間不能小于1ms;對(duì)于高亮度LED來說,在驅(qū)動(dòng)電流取20mA的情況下,每位顯示時(shí)間也不能小于1ms。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
在圖10-12中,使用PG口作為筆段碼鎖存器,7407作筆段碼驅(qū)動(dòng)器(由于在LED動(dòng)態(tài)顯示電路中,為獲得足夠亮度,限流電阻較小,LED瞬態(tài)電流較大,一般不能省去筆段碼驅(qū)動(dòng)器,除非LED尺寸很小,每段工作電流在3mA以下);PB口作位掃描碼鎖存器,用中功率PNP管,如8550作位驅(qū)動(dòng)器。顯然,筆段碼、位掃描碼均采用軟件譯碼方式。
LED動(dòng)態(tài)顯示器顯示時(shí),依次將各位筆段碼送PG口,位掃描碼送PB口,即可分時(shí)顯示所有位。就微觀來說,任意時(shí)刻只有一只LED數(shù)碼管工作,利用人眼視覺的惰性特征,只要刷新頻率不小于25Hz,宏觀上就看到所有位同時(shí)顯示,且沒有閃爍感。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
從圖10-12可以看出,在軟件譯碼的動(dòng)態(tài)LED顯示電路中,無論顯示位數(shù)有多少個(gè),僅需一套筆段碼鎖存器與驅(qū)動(dòng)器,一套位掃描碼鎖存器與驅(qū)動(dòng)器,硬件開銷少。因此,在單片機(jī)應(yīng)用系統(tǒng)中得到了廣泛應(yīng)用。另外,PB口采用OD輸出方式,低電平驅(qū)動(dòng)能力強(qiáng),可吸收10mA的灌電流,當(dāng)PNP三極管電流放大系數(shù)β大于100時(shí),集電極最大電流ICmax達(dá)到1A,足可以驅(qū)動(dòng)50只動(dòng)態(tài)工作電流為20mA的發(fā)光二極管。例如,基極限流電阻取3.6kΩ,基極電流IB約為1.1mA,各筆段限流電阻取200~300Ω。當(dāng)LED工作電壓VF取2.0V時(shí),LED工作電流IF約為8.5~13mA之間。這樣的電路結(jié)構(gòu)簡(jiǎn)單,僅使用8只中功率PNP管、2片7407同相驅(qū)動(dòng)器,驅(qū)動(dòng)程序的編寫、調(diào)試難度也不大。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?圖10-12由PB、PG口構(gòu)成的8位LED動(dòng)態(tài)顯示接口電路廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
在動(dòng)態(tài)掃描顯示方式中,一般使用定時(shí)中斷方式確定各位切換時(shí)間。由于顯示位數(shù)較多,刷新頻率取值較低,如50Hz,則一位顯示時(shí)間為1/(50?×?8)?=?2.5ms,即定時(shí)時(shí)間為2.5ms。用軟件方式完成筆段譯碼時(shí),一般采用雙顯示緩沖區(qū)結(jié)構(gòu):顯示數(shù)碼緩沖區(qū)和筆段代碼緩沖區(qū)。當(dāng)有數(shù)據(jù)進(jìn)入數(shù)碼緩沖區(qū)時(shí),執(zhí)行查表操作,把顯示數(shù)碼緩沖區(qū)內(nèi)的數(shù)碼轉(zhuǎn)換為筆段碼并保存到筆段代碼緩沖區(qū)內(nèi);在顯示定時(shí)中斷服務(wù)程序中,只需將筆段碼緩沖區(qū)的信息輸出到筆段代碼鎖存器中,原因是不會(huì)經(jīng)常改寫顯示的內(nèi)容。這樣就能有效地減少顯示驅(qū)動(dòng)程序的執(zhí)行時(shí)間,提高系統(tǒng)的響應(yīng)速度。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
圖10-12所示接口電路的顯示驅(qū)動(dòng)參考程序如下:
.LED_NO_BUFDS.B8 ;在ram1段內(nèi)定義數(shù)碼顯示緩沖區(qū)(假設(shè)低位放在低地址)
.LED_SEG_BUFDS.B 8 ;在ram1段內(nèi)定義筆段代碼緩沖區(qū)(假設(shè)低位放在低地址)
.LED_SPDS.B 1 ;在ram1段內(nèi)定義LED位掃描指針
.NDHZDS.B 1 ;在ram1段內(nèi)定義“滅0”標(biāo)志;*********定義I/O引腳輸出方式*********
MOVPB_DDR,#0FFH ;?DDR為1,PB口輸出
CLRPB_CR1 ;?CR1為0,采用OD輸出方式廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
MOVPB_ODR,#0FFH ;?PB口初始為高電平
MOVPG_DDR,#0FFH ;?DDR為1,PG口輸出
MOVPG_CR1,#0FFH ;?CR1為1,PG口采用推挽輸出方式;**********定義中斷服務(wù)程序中顯示驅(qū)動(dòng)程序*********
INCLED_SP ;
顯示指針加1
LDA,LED_SP
CPA,#8
JRCLED_DISP_NEXT1;指針不小于8,從0開始
CLRLED_SP
LED_DISP_NEXT1:
LDA,LED_SP ;取顯示指針
廣東工業(yè)大學(xué)物理與光電工程學(xué)院?JRNELED_DISP_NEXT21;指針為0,顯示第0位
MOVPB_ODR,#11111110B ;除b0位外,其他非顯示位掃描信號(hào)為1MOVPG_ODR,{LED_SEG_BUF+0} ;第0位筆段碼信息送PG口
JRTLED_DISP_EXITLED_DISP_NEXT21:CPA,#1
廣東工業(yè)大學(xué)物理與光電工程學(xué)院?JRNELED_DISP_NEXT22
;指針為1,顯示第1位MOVPB_ODR,#11111101B
;除b1位外,其他非顯示位掃描信號(hào)為1MOVPG_ODR,{LED_SEG_BUF+1};第1位筆段碼信息送
PG口
JRTLED_DISP_EXITLED_DISP_NEXT22:CPA,#2JRNELED_DISP_NEXT23;指針為2,顯示第2位廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
MOVPB_ODR,#11111011B
;除b2位外,其他非顯示位掃描信號(hào)為1
MOVPG_ODR,{LED_SEG_BUF+2} ;第2位筆段碼信息送PG口
JRTLED_DISP_EXITLED_DISP_NEXT23:CPA,#3JRNELED_DISP_NEXT24;指針為3,顯示第3位
MOVPB_ODR,#11110111B ;除b3位外,其他非顯示位掃描信號(hào)為1MOVPG_ODR,{LED_SEG_BUF+3} ;第3位筆段碼信息送PG口
廣東工業(yè)大學(xué)物理與光電工程學(xué)院?JRTLED_DISP_EXITLED_DISP_NEXT24:CPA,#4JRNELED_DISP_NEXT25;指針為4,顯示第4位
MOVPB_ODR,#11101111B
;除b4位外,其他非顯示位掃描信號(hào)為1MOVPG_ODR,{LED_SEG_BUF+4} ;第4位筆段碼信息送PG口
JRTLED_DISP_EXITLED_DISP_NEXT25:CPA,#5廣東工業(yè)大學(xué)物理與光電工程學(xué)院?JRNELED_DISP_NEXT26;指針為5,顯示第5位
MOVPB_ODR,#11011111B ;除b5位外,其他非顯示位掃描信號(hào)為1MOVPG_ODR,{LED_SEG_BUF+5} ;第5位筆段碼信息送PG口
JRTLED_DISP_EXITLED_DISP_NEXT26:CPA,#6
廣東工業(yè)大學(xué)物理與光電工程學(xué)院?JRNELED_DISP_NEXT27;指針為6,顯示第6位
MOVPB_ODR,#10111111B ;除b6位外,其他非顯示位掃描信號(hào)為1MOVPG_ODR,{LED_SEG_BUF+6} ;第6位筆段碼信息送PG口
JRTLED_DISP_EXIT廣東工業(yè)大學(xué)物理與光電工程學(xué)院?LED_DISP_NEXT27:;指針肯定為7,顯示第7位
MOVPB_ODR,#01111111B ;除b7位外,其他非顯示位掃描信號(hào)為1MOVPG_ODR,{LED_SEG_BUF+7} ;第7位筆段碼信息送PG口LED_DISP_EXIT:;顯示驅(qū)動(dòng)程序結(jié)束廣東工業(yè)大學(xué)物理與光電工程學(xué)院?注:為便于讀者理解LED動(dòng)態(tài)掃描顯示原理,在上述程序段中有意詳細(xì)給出了各位掃描輸出指令。程序段中帶灰色背景部分,完全可用查表指令代替,這不僅減小了代碼量,也縮短了執(zhí)行時(shí)間,提高了系統(tǒng)的響應(yīng)速度。
LDA,LED_SPCLRWXLDXL,A ;顯示指針?biāo)蚗寄存器
LDA,(SCAN_TAB,X) ;查表位掃描碼表,取出對(duì)應(yīng)位的掃描碼
CPLA ;取反
;位掃描碼在累加器A中
廣東工業(yè)大學(xué)物理與光電工程學(xué)院?LDPB_ODR,A ;位掃描碼送PB口
LDA,(LED_SEG_BUF,X) ;取對(duì)應(yīng)位筆段碼,并送PG口顯示
LDPG_ODR,ALED_DISP_EXIT:;******當(dāng)顯示信息變化時(shí),把顯示緩沖區(qū)內(nèi)數(shù)碼轉(zhuǎn)換為筆段碼,并存放在筆段碼緩沖區(qū)中*****;******(檢查高位是否為0,若是要滅0)******LED_NO_TO_Seg: ;轉(zhuǎn)換程序段
PUSHWXPUSHWYLDWX,#07 ;從最高位開始
BSETNDHZ,#0 ;“滅0”標(biāo)志預(yù)先置為有效廣東工業(yè)大學(xué)物理與光電工程學(xué)院?LED_Seg_LOOP1:LDA,(LED_NO_BUF,X)BTJFNDHZ,#0,LED_Seg_NEXT1;“滅0”標(biāo)志有效,說明前一位為0,要檢查當(dāng)前位是否為0,若為0,不顯示
CPA,#0JRNELED_Seg_NEXT1;當(dāng)前位內(nèi)容為0,不顯示,須送關(guān)閉碼FFH到筆段碼緩沖區(qū)
LDA,#0FFHJRTLED_Seg_NEXT2LED_Seg_NEXT1:BRESNDHZ,#0 ;“滅0”標(biāo)志無效
廣東工業(yè)大學(xué)物理與光電工程學(xué)院?CLRWYLDYL,A ;顯示數(shù)碼送YLDA,(DISPTAB,Y) ;查表取出筆段碼信息LED_Seg_NEXT2:LD(LED_SEG_BUF,X),A ;筆段碼信息送筆段碼緩沖區(qū)
DECWX ;指針減1JRNELED_Seg_LOOP1;轉(zhuǎn)換不需要“滅0”的個(gè)位
LDA,{LED_NO_BUF+0} ;取個(gè)位數(shù)碼
CLRWY
廣東工業(yè)大學(xué)物理與光電工程學(xué)院?LDYL,A ;顯示數(shù)碼送YLDA,(DISPTAB,Y) ;查表取出筆段碼信息LD(LED_SEG_BUF,X),A ;筆段碼信息送筆段碼緩沖區(qū)POPWYPOPWXRET廣東工業(yè)大學(xué)物理與光電工程學(xué)院?DISPTAB: ;七段共陽LED筆段碼(0~F)DC.B0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EHSCAN_TAB: ;位掃描碼
DC.B01H,02H,04H,08H,10H,20H,40H,80H廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
當(dāng)MCUI/O引腳資源緊張時(shí),可采用串行移位方式輸出位掃描碼、筆段碼,如圖10-13所示。其中,U1作位掃描碼鎖存器;U2作筆段碼鎖存器,OC輸出7407芯片U4~U5作筆段碼驅(qū)動(dòng)器(74HC595芯片輸出高、低電平時(shí),驅(qū)動(dòng)電流僅為2mA左右,而動(dòng)態(tài)顯示方式筆段電流較大,必須設(shè)置筆段碼驅(qū)動(dòng)器);施密特輸入反相器U3可選擇:當(dāng)連線較長(zhǎng)或MCU驅(qū)動(dòng)能力不足時(shí),可考慮在74HC595串行移位脈沖SCLK輸入端、并行鎖存脈沖PCLK的輸入端,增加74HC14反相器,以改善移位脈沖(SCLK)與并行鎖存脈沖(PCLK)的邊沿。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?圖10-13所示電路顯示驅(qū)動(dòng)程序與圖10-12所示并行輸出方式的顯示驅(qū)動(dòng)程序基本相同,唯一區(qū)別是:位掃描碼不送PB_ODR寄存器,而是某一個(gè)RAM單元,如U1_Buffer;筆段碼不送PG_ODR寄存器,而是某一個(gè)RAM單元,如U2_Buffer。然后將位掃描碼U1_Buffer與筆段碼U2_Buffer以串行方式輸出到U1、U2芯片中。由于圖10-13所示電路中占用的MCUI/O引腳少,僅需增加2片74HC595,因此成本低廉,在單片機(jī)應(yīng)用系統(tǒng)中得到了廣泛應(yīng)用。注:筆段碼信息與圖10-12的略有不同,必須根據(jù)連線關(guān)系重新構(gòu)造。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
當(dāng)LED顯示位數(shù)較多,如12位以上時(shí),即使將顯示刷新率降到25Hz(實(shí)際上當(dāng)刷新頻率降到25Hz時(shí),人眼已感到存在輕微的閃爍感)后,仍不能保證每位顯示時(shí)間大于1ms時(shí),可采用按筆段掃描方式或按位分組掃描方式的動(dòng)態(tài)顯示驅(qū)動(dòng)電路。在按筆段掃描方式中,不論位數(shù)多少,對(duì)于八段數(shù)碼顯示器來說,筆段引腳只有8根,即使顯示刷新頻率為50?Hz,按筆段掃描時(shí),每一筆段顯示時(shí)間依然為1/(50?×?8)?=?2.5ms。顯示時(shí),每次點(diǎn)亮所有位的一個(gè)筆段(即掃描信息從筆段引腳dp~a輸入),各位同一筆段的顯示信息由位選擇電路控制,如圖10-14所示(LED數(shù)碼管為共陰連接方式)。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?圖10-13以串行方式輸出位掃描碼及筆段碼的LED動(dòng)態(tài)顯示驅(qū)動(dòng)電路廣東工業(yè)大學(xué)物理與光電工程學(xué)院?圖10-14按筆段掃描動(dòng)態(tài)顯示驅(qū)動(dòng)電路廣東工業(yè)大學(xué)物理與光電工程學(xué)院?圖10-14所示顯示驅(qū)動(dòng)電路顯示時(shí),先將顯示數(shù)碼緩沖區(qū)內(nèi)的數(shù)碼轉(zhuǎn)換為筆段碼,然后將筆段碼緩沖區(qū)內(nèi)的信息轉(zhuǎn)化為位筆段顯示信息碼,如圖10-15所示。其顯示時(shí)只要將位筆段的顯示信息送位選擇口即可。圖10-15查表轉(zhuǎn)換示意圖廣東工業(yè)大學(xué)物理與光電工程學(xué)院?在按位分組掃描方式中,每次同時(shí)顯示各組中的一位。例如,在圖10-16所示電路中,將16個(gè)LED數(shù)碼顯示管分成兩組,其中,U6輸出第一組(1~8位)LED數(shù)碼顯示管的筆段代碼;U2輸出第二組(9~16位)LED數(shù)碼顯示管的筆段代碼。而位掃描信號(hào)由U1輸出(同時(shí)顯示兩只LED數(shù)碼管,當(dāng)兩只LED數(shù)碼管共16個(gè)筆段全亮?xí)r,所需驅(qū)動(dòng)電流較大,選擇PNP基極電阻時(shí),必須保證PNP管飽和)。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?圖10-16按位分組掃描動(dòng)態(tài)顯示驅(qū)動(dòng)電路廣東工業(yè)大學(xué)物理與光電工程學(xué)院?在按位分組掃描顯示時(shí),依次將第一組(即1~8位)筆段碼送U6,第二組(即9~16位)筆段碼送U2,然后將掃描碼送U1,這樣一次掃描將同時(shí)顯示兩位,盡管顯示的位數(shù)多了,但每一個(gè)LED數(shù)碼顯示管顯示時(shí)間并沒有縮短。顯然,在這種顯示方式中,每組需要一套筆段碼鎖存和驅(qū)動(dòng)器,硬件成本略有上升,但顯示驅(qū)動(dòng)程序與一般動(dòng)態(tài)顯示電路的相似,驅(qū)動(dòng)程序的編寫和調(diào)試相對(duì)較容易。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?
點(diǎn)陣式LED顯示驅(qū)動(dòng)多采用動(dòng)態(tài)掃描方式,由行(或列)掃描電路及信息顯示輸出電路(列或行)組成。其中,行掃描電路由行掃描信息鎖存器(可并行輸出,也可以串行輸出)、行驅(qū)動(dòng)器兩部組成(一般點(diǎn)陣LED顯示器由MCU芯片控制,不需要硬件譯碼電路),每次掃描一行;信息顯示由列線輸出,由列鎖存器(由于列數(shù)較多,因此采用串行輸出方式可減少M(fèi)CU引腳的開銷)、列驅(qū)動(dòng)器(為保證一定的亮度,列驅(qū)動(dòng)電流IF一般取10~20mA,必須在鎖存器后加驅(qū)動(dòng)電路)組成。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?圖10-1716?×?64點(diǎn)陣LED顯示器結(jié)構(gòu)廣東工業(yè)大學(xué)物理與光電工程學(xué)院?為便于讀者理解點(diǎn)陣式LED顯示驅(qū)動(dòng)方式,在圖10-17中,采用串入并出數(shù)字芯片74HC595構(gòu)成行、列信息鎖存器。行驅(qū)動(dòng)器由大功率P溝MOS管組成(當(dāng)同一行上所有LED被點(diǎn)亮?xí)r,驅(qū)動(dòng)電流較大,其值為列數(shù)乘IF,因此最好采用功率MOS管驅(qū)動(dòng))。當(dāng)行掃描鎖存器輸出低電平時(shí),PMOS管導(dǎo)通,驅(qū)動(dòng)電壓通過MOS管源極S→漏極D施加到點(diǎn)陣式LED顯示器對(duì)應(yīng)的行線上。而當(dāng)行掃描鎖存器輸出高電平時(shí),PMOS管截止。顯示信息由列線輸入,對(duì)于要顯示的像點(diǎn),列鎖存器輸出高電平,經(jīng)OC輸出7406反相后,列線輸出低電平,對(duì)應(yīng)的LED導(dǎo)通。而對(duì)于非顯示像點(diǎn),列鎖存器輸出低電平,經(jīng)OC輸出7406反相后,列線輸出高電平,對(duì)應(yīng)的LED截止。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?行掃描驅(qū)動(dòng)電路中電阻RV00~RV15的取值為20~30Ω,目的是防止MOS管柵極產(chǎn)生尖峰過沖脈沖。列驅(qū)動(dòng)電路中限流電阻RH00~RH63的計(jì)算方法為其中,VF為L(zhǎng)ED工作電壓,可按2.0V計(jì)算;|VDS|為行掃描驅(qū)動(dòng)PMOS管導(dǎo)通電壓,其值與PMOS管導(dǎo)通電阻、行驅(qū)動(dòng)電流有關(guān);VOL為7406輸出低電平電壓,當(dāng)IF為10~20mA時(shí),可按0.4V計(jì)算。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?根據(jù)列鎖存器的特征及其與列線的連接關(guān)系,確定LED行線上顯示點(diǎn)與鎖存器位之間的對(duì)應(yīng)關(guān)系,從而確定顯示RAM與LED屏像素的對(duì)應(yīng)關(guān)系(指屏幕行上每8個(gè)像點(diǎn)與顯示RAM是按順序還是倒序關(guān)系對(duì)應(yīng))。對(duì)于圖10-17來說,根據(jù)列鎖存器與列線的連接關(guān)系,即列鎖存器UH0的b0位對(duì)應(yīng)行線的第0個(gè)像素,b1位對(duì)應(yīng)行線的第1個(gè)像素……?b7位對(duì)應(yīng)行線的第7個(gè)像素;UH1的b0位對(duì)應(yīng)行線的第8個(gè)像素……?b7位對(duì)應(yīng)行線的第15個(gè)像素;依次類推,UH7的b7位對(duì)應(yīng)行線的第63個(gè)像素。顯然,所需顯示RAM的容量為16(行)?×?8B(每行含有64列,即8字節(jié)),共計(jì)128字節(jié)。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?可見,LED分辨率越高,所需顯示RAM的容量就越大。對(duì)于48?×?192點(diǎn)陣式LED屏來說,將需要RAM的容量為48(行)?×?24?B,即1152?B。而STM8系列MCU芯片RAM容量的最大值為6?KB,可用約4?KB作顯示RAM,能直接控制128?×?240點(diǎn)陣式LED屏。根據(jù)74HC595的串行移位時(shí)序,顯示時(shí),先輸出同一行顯示RAM中的最后一個(gè)字節(jié)的b7位,然后輸出同一行顯示RAM中倒數(shù)第二字節(jié)的b7位,依次類推,最后輸出同一行顯示RAM中的首字節(jié)的b7位。廣東工業(yè)大學(xué)物理與光電工程學(xué)院?為避免閃爍,行掃描頻率取50Hz,則每隔1.25ms輸出一行,在定時(shí)中斷服務(wù)程序中,顯示驅(qū)動(dòng)參考程序如下:
V_SCAN_NO.B DS.B 1 ;行掃描計(jì)數(shù)器
DISP_RAM_Buf DS.B128 ;顯示緩沖區(qū)
…… ;略去相關(guān)I/O引腳定義
#defineVPCLKPD_ODR,#1 ;定義行掃描鎖存脈沖
#defineVSCLKPD_ODR,#2 ;定義行掃描串行移位脈沖廣東工業(yè)大學(xué)物理與光電工程學(xué)院?#defineVSDi PD_ODR,#3 ;定義行掃描串行數(shù)據(jù)輸入引腳
#defineHPCLKPC_ODR,#4 ;定義顯示信息鎖存脈沖
#defineHSCLKPC_ODR,#5 ;定義顯示信息串行移位脈沖
#defineHSDi PC_ODR,#6 ;定義顯示信息串行數(shù)據(jù)輸入引腳;------行掃描驅(qū)動(dòng)程序---LDA,V_SCAN_NOINCA ;行掃描指針加1CPA,#16
廣東工業(yè)大學(xué)物理與光電工程學(xué)院?JRCV_SCAN_NEXT1;行掃描指針不小于16,指針回零
CLRAV_SCAN_NEXT1:LDV_SCAN_NO,A ;回寫行掃描指針
CLRWXLDXL,A ;行指針?biāo)图拇嫫鱔LDWX,(SCAN_TAB,X) ;通過查表取出行掃描信息
CPLWX廣東工業(yè)大學(xué)物理與光電工程學(xué)院? ;取反(使顯示行輸出低電平,不顯示行輸出高電平)BRESVPCLK ;并行鎖存脈沖為低電平
MOVR11,#16V_SCAN_LOOP1:BRESVSCLK ;行串行移位脈沖為低電平
RLCWX ;先輸出b15位
BCCMVSDi ;數(shù)據(jù)送行掃描串行輸入端廣東工業(yè)大學(xué)物理與光電工程學(xué)院?NOP ;根據(jù)CPU頻率,插入NOP指令延遲
BSETVSCLK ;行串行移位脈沖為高電平
DECR11JRNEV_SCAN_LOOP1BRESVSCLK ;行串行移位脈沖為低電平
BSETVPCLK ;行并行鎖存脈沖為高電平
NOPBRESVPCLK
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024簡(jiǎn)單家具維修合同范本
- 2024年加工承攬合同標(biāo)的與質(zhì)量標(biāo)準(zhǔn)
- 2024建筑材料采購(gòu)合同范本下載
- 2024年度公園綠化樹苗采購(gòu)合同
- 2024年山東濰坊物業(yè)委托管理合同
- 迷霧解說課件教學(xué)課件
- 2024年度互聯(lián)網(wǎng)金融產(chǎn)品研發(fā)與推廣合同
- 04版智能家居系統(tǒng)研發(fā)與銷售合同
- 2024年度云服務(wù)提供商合同
- 2024年店鋪投資合作協(xié)議
- 護(hù)理質(zhì)量安全與風(fēng)險(xiǎn)管理的案例分析
- 工程流體力學(xué)課后習(xí)題答案-(杜廣生)
- AI智能客服應(yīng)用實(shí)踐
- 《止吐藥臨床應(yīng)用》課件
- 幕墻工程檢驗(yàn)批質(zhì)量驗(yàn)收記錄
- 危險(xiǎn)化學(xué)品經(jīng)營(yíng)企業(yè)安全生產(chǎn)獎(jiǎng)懲制度范本
- 報(bào)價(jià)單模板完
- 30題藥品質(zhì)量檢測(cè)崗位常見面試問題含HR問題考察點(diǎn)及參考回答
- 《嬰幼兒行為觀察、記錄與評(píng)價(jià)》期末試卷及答案 卷3
- 企業(yè)戰(zhàn)略管理概述
- 消防安全概述
評(píng)論
0/150
提交評(píng)論