版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、,4.5.1.2 LED數(shù)碼管原理與編程,LED顯示元件——人機交互輸出設(shè)備,其作用是指示中間運行結(jié)果與運行狀態(tài)。,使數(shù)碼管顯示某字形,只需輸入該字形所對應(yīng)的數(shù)據(jù)編碼,即字形碼。,共陽極,,,,,,,,,,,,,,,,,,,“1”,,,0,1,1,0,0,0,0,0,0x06,“2”,1,1,0,1,1,0,1,0,,,,,,0x5b,,,,,,,,,,,,,共陰極,,,,,,,,,,,,,,,,數(shù)碼管顯示的原理,,,共陰極數(shù)碼管常用
2、字符字形編碼(十六進制),不同LED組合關(guān)系(顯示碼)形成不同的顯示字符,,LED顯示器工作方式有兩種:靜態(tài)顯示方式和動態(tài)顯示方式。所謂靜態(tài)顯示,就是當顯示器顯示某個字符時,相應(yīng)的發(fā)光二極管恒定地導(dǎo)通或截止。所有位選線(數(shù)碼管公共端)連接在一起,每個數(shù)碼管的段選必須接一個8位數(shù)據(jù)線來保持顯示的字形碼。當送入一次字形碼后,顯示字形可一直保持,直到送入新字形碼為止。,靜態(tài)顯示,靜態(tài)顯示,,,,0,1,1,0,0,0,0,0,,,,,靜態(tài)顯
3、示:當數(shù)碼管顯示某個字符時,相應(yīng)的發(fā)光二極管恒定地導(dǎo)通或截止。,單片機I/O與數(shù)碼管直接連接,AT89C51,,,,,1,,,,,,,01100000,11011010,,,,,,,1,,,把一個共陰極的數(shù)碼管接到AT8951單片機的P2口上,編程實現(xiàn)讓此數(shù)碼管顯示數(shù)字0。,數(shù)碼管直連單片機I/O的程序設(shè)計,#include /*包含頭文件reg51.h*/void main() /*無返回值的主程序*/
4、{P2=0x3f;},實例4 LED數(shù)碼管顯示,P0口連接一個共陰極數(shù)碼管,使之循環(huán)顯示0~9,分析:將顯示碼循環(huán)輸出到P0口即可實現(xiàn)循環(huán)顯示。但由于數(shù)字0~9的顯示段碼沒有規(guī)律可循,需要采取查表方式進行操作:,①將顯示碼按序存放在一個數(shù)組中, 順序號與代表的顯示字符相對應(yīng)。(如,char led_mod [ ]={x1,x2,….,xn)②通過循環(huán)變量指定待送出的數(shù)組元素,參考程序,實例5 計數(shù)顯示器,對按鍵動作進行計數(shù)和
5、顯示,達到99后重新由1開始計數(shù)。,個位LED接P2口,十位LED接P0口(共陰型),按鈕接P3.7口線,按壓時為0電平,分析:,①讀P3.7口,進行加1計數(shù)和超界處理;②拆分計數(shù)器數(shù)值——個位、十位;③查找/輸出顯示碼到P0和P2口。,計數(shù)值拆分:取模運算(%)→個位整除10運算(/)→十位,查找/輸出顯示碼:按拆分值輸出相應(yīng)數(shù)組元素,#include 0;i--); },參考程序,void main(void){
6、count=0; //計數(shù)器賦初值 P0=table[count/10]; // 取出計數(shù)值的十位數(shù),送P0口輸出 P2=table[count%10]; // 取出計數(shù)值的個位數(shù),送P2口輸出 while(1) { if(P37==0) // 如果P37為低電平,鍵盤按下{ delay(10); // 軟件延時10ms,軟件去抖動
7、 if(P37==0) // 確實是鍵盤按下了 { count++; //計數(shù)器加1 if(count==100) count=0; P0=table[count/
8、10]; P2=table[count%10]; while(P37==0); // 等待按鍵松開,防止重復(fù)計數(shù) } } } },程序運行效果,課后思考題,1,讀懂例5,并能給其他同學(xué)講述程序工作過程,及編程思路.,4.1 C51
9、的程序結(jié)構(gòu) 4.2 C51的數(shù)據(jù)結(jié)構(gòu) 4.3 C51與匯編語言的混合編程 4.4 C51仿真開發(fā)環(huán)境 4.5 C51初步應(yīng)用編程 4.5.1 IO端口的簡單應(yīng)用 4.5.2 IO端口的進階實踐,,,,4.5.2.1 數(shù)碼管動態(tài)顯示原理與編程,兩種顯示接口:靜態(tài)顯示接口和動態(tài)顯示接口,靜態(tài)顯示接口:一個數(shù)碼管的引腳獨立占據(jù)一根I/O口線。優(yōu)點:被顯示數(shù)據(jù)只要送入并行口后就不再需要CPU干預(yù),因而顯示
10、效果穩(wěn)定。缺點:占用資源較多,,,,動態(tài)顯示接口:將所有位數(shù)碼管的段選線并聯(lián)在一起,而每位數(shù)碼管的公共端分別由一位I/O線控制,由位選線控制哪一位數(shù)碼管有效。選亮數(shù)碼管采用動態(tài)掃描顯示。所謂動態(tài)掃描顯示即輪流向各位數(shù)碼管送出字形碼和相應(yīng)的位選,利用發(fā)光管的余輝和人眼視覺暫留作用,使人的感覺好像各位數(shù)碼管同時都在顯示。,工作原理:采用快速切換方式(如10ms),每一時刻只有一只數(shù)碼管導(dǎo)通工作。利用視力暫留特性,可獲得連續(xù)顯示效果。
11、優(yōu)點:占用資源較少缺點:占用機時較多(需要CPU隨時刷新顯示值),實例6 數(shù)碼管動態(tài)顯示,采用共陰極動態(tài)LED顯示原理,顯示字符“L2” 。,分析:Proteus中的雙聯(lián)LED數(shù)碼管相當于兩個并聯(lián)的數(shù)碼管。,7SEG-MPX2-CC-BLUE,Blue,2 Digit,7-segment Cathode Display,A-G→ “0x38”, 1#→“0”,2# → “1”,A-G→ “0x5b”, 1#→“1”,2# → “0
12、”,進一步說明其工作原理,P2←led_mode[0], P3 ←xxxx xx10B =2P2←led_mode[1], P3 ←xxxx xx01B =1,led_mode[ ]={0x38,0x5b},動態(tài)顯示“L2”的程序如下:,;,//LED “指針”,//顯示字模,完整的主函數(shù),#include char led_mod[] = {0x38,0x5B};//LED字?!癓2”void delay(unsigned i
13、nt time);sbit P17=P1^7;void main() { char led_point = 0; while (1) { P3 = 2 - led_point; //輸出LED位碼P2= led_mod[led_point]; //輸出字模led_point = 1 - led_point; //刷新LED位碼dela
14、y(30); }},編程界面,運行效果圖,鍵盤接口,一、鍵盤是單片機應(yīng)用系統(tǒng)中使用最廣泛的一種數(shù)據(jù)輸入設(shè)備。鍵盤是一組按鍵的組合。鍵通常是一種常開型按鈕開關(guān),常態(tài)下鍵的兩個觸點處于斷開狀態(tài),按下鍵時它們才閉合(短路)。,非編碼鍵盤按組成結(jié)構(gòu)又可分為獨立式鍵盤和矩陣式鍵盤。獨立式鍵盤的工作過程與矩陣式鍵盤類似,無論是硬件結(jié)構(gòu)還是軟件設(shè)計都比較簡單。,通常,鍵盤有編碼和非編碼兩種。編碼鍵盤通過硬件電路產(chǎn)生被按按鍵的鍵碼和
15、一個選通脈沖。選通脈沖可作為CPU的中斷請求信號。這種鍵盤使用方便,所需程序簡單,但硬件電路復(fù)雜,常不被單片機采用。,特點:每個按鍵占用一條I/O線,當按鍵數(shù)量較多時,I/O口利用率不高,但程序編制簡單。適用于所需按鍵較少的場合。,特點:電路連接復(fù)雜,但提高了I/O口利用率,軟件編程較復(fù)雜。適用于需使用大量按鍵的場合。,,1.鍵盤的任務(wù) (1) 判別是否有鍵按下?如果有,進入下一步。 (2) 識別是哪一個鍵被按下,并求出相應(yīng)的鍵
16、值。 (3) 根據(jù)鍵值,執(zhí)行相應(yīng)鍵值對應(yīng)的處理程序。2.按鍵的識別 鍵的閉合與否,體現(xiàn)在行線電壓的高電平或低電平。如果為高電平,表示鍵斷開;如果是低電平,則表示鍵閉合,通過對行線電平的高低狀態(tài)的檢測,可確認按鍵按下還是斷開與否。,二、非編碼鍵盤常見的為兩種結(jié)構(gòu):獨立式鍵盤和矩陣式鍵盤。(1)獨立式鍵盤特點是:一鍵一線,各鍵相互獨立,每個鍵各接一條I/O口線,通過檢測I/O輸入線的電平狀態(tài),可容易地判斷哪個
17、按鍵被按下,如圖1所示。,獨立式鍵盤接口電路,圖中的上拉電阻保證按鍵釋放時,輸入檢測線上有穩(wěn)定的高電平。當某一按鍵按下時,對應(yīng)的檢測線就變成了低電平,與其他按鍵相連的檢測線仍為高電平,只需讀入I/O輸入線的狀態(tài),判別哪一條I/O輸入線為低電平,很容易識別哪個鍵被按下。優(yōu)點:電路簡單,軟件編寫簡單。適用于鍵盤按鍵數(shù)目較少的場合,因為這種方式占用的I/O口線較多。,實例1 獨立按鍵識別,【要求】采用獨立按鍵方式實現(xiàn)下述功能:開機時LE
18、D全熄,然后根據(jù)按鍵動作使相應(yīng)燈亮,并將亮燈保持到按壓其它鍵時為止。,獨立按鍵——每個按鍵都彼此獨立地各占有一位I/O口線。特點是電路簡單,但占用I/O口線較多。,① 按鍵的閉合電平為0, 但LED的驅(qū)動電平為1,故不能直接將P0口的狀態(tài)送到P1口,而應(yīng)使其先取反再送出;,② 為使按鍵抬起后LED能保持先前的點亮狀態(tài),需要在按鍵未壓下期間禁止向P2輸出P0狀態(tài)值。,【分析】,參考程序如下:,“取反”操作的優(yōu)先級高于“與”操作,void
19、main( ) { char key = 0; //定義按鍵變量 P2=0; //初始狀態(tài)為燈全滅 while(1){ key = ~P0 & 0x0f; //讀取按鍵狀態(tài),高4位清零 if (key != 0) P2 = key; //有按鍵動作時,P0狀態(tài)值送P2 }},編程界面和運行界面分別如下圖,實例1運行效果,三、矩陣式鍵盤
20、矩陣式(也稱行列式)鍵盤用于按鍵數(shù)目較多的場合,由行線和列線組成,按鍵位于行、列的交叉點上。如圖2所示,一個4×4的行、列結(jié)構(gòu)可以構(gòu)成一個16個按鍵鍵盤。在按鍵數(shù)目較多的場合,可節(jié)省I/O口線。,1.行掃描法:即逐行或逐列掃描查詢法。,,,行線,列線,四、按鍵識別方法:,識別鍵盤有無鍵被按下的方法,分兩步進行:,第1步:識別鍵盤有無鍵按下;,第2步:如有鍵被按下,識別出具體的按鍵。,掃描法:即先把某一列置低電平,其余各列為高
21、電平,檢查各行線電平的變化,若是全為1,則所按下的按鍵不在此列,進入下一列的掃描;若是不全為1,則所按下的按鍵必在此列,并且按鍵正是此列與讀取到為低電平的行線的交點上。,矩陣鍵盤工作原理,,P3.7--OP3.6--OP3.5--OP3.4--OP3.3--IP3.2--IP3.1--IP3.0--I,掃描第一列:PORTB = 1110 1111讀取值:PINB &0x0F = 0000 11
22、11,P3.7--1P3.6--1P3.5--1P3.4--0P3.3--1P3.2--1P3.1--1P3.0--1,掃描第二列:PORTB = 1101 1111讀取值:PINB &0x0F = 0000 1011,P3.7--1P3.6--1P3.5--1P3.4--0P3.3--1P3.2--1P3.1--1P3.0--1,掃描第三列:PORTB = 101
23、1 1111讀取值:PINB &0x0F = 0000 1111,P3.7--1P3.6--1P3.5--1P3.4--0P3.3--1P3.2--1P3.1--1P3.0--1,掃描第四列:PORTB = 0111 1111讀取值:PINB &0x0F = 0000 1111,P3.7--1P3.6--1P3.5--1P3.4--0P3.3--1P3.2--1
24、P3.1--1P3.0--1,,0111,1 1 1 1,1011,1 1 1 0,1101,1 1 1 1,1110,1 1 1 1,設(shè)第2行第4列鍵按下,行線輸出,列線輸入,0 1 1 1,1 1 1 1,1 0 1 1,1 1 1 0,1 1 0 1,1 1 1 1,1 1 1 0,1 1 1 1,,0000
25、,1 1 1 0,0 0 0 0,1011,設(shè)第2行第4列鍵按下,列值:1110,行值:1101,(2)線反轉(zhuǎn)法。,第1步:行線輸出為全低電平,則列線中電平由高變低的所在列為按鍵所在列。,第2步:列線輸出為全低電平,則行線中電平由高變低所在行為按鍵所在行。,線反轉(zhuǎn)法步驟,只需兩步便能獲得此按鍵所在的行列值。,第3步:通過1、2兩步檢測到P1-P7的電平狀態(tài)進行位或運算,計算出閉合按鍵的鍵值,再查找鍵值表便可
26、以確定按下按鍵的序號。,假設(shè)鍵7被按下。第1步,P1.0~P1.3輸出全為“0”,P1.4~P1.7輸出全為“1”,然后,讀入P1.4~P1.7線的狀態(tài),結(jié)果P1.7=0,而P1.4~P1.6均為1,因此,第4列出現(xiàn)電平的變化,說明第4列有鍵按下;【P1=0111 0000=0X70】第2步,讓P1.4~P1.7輸出全為“0” ,P1.0~P1.3輸出全為“1”,然后,讀入P1.0~P1.3位,結(jié)果P1.1=0,而P1.0,P1.2
27、, P1.3均為1,因此第2行出現(xiàn)電平的變化,說明第2行有鍵按下?!綪1=0000 1101=0X0d】第3步,通過1、2兩步檢測到P1-P7的電平狀態(tài)進行位或運算,計算出閉合按鍵的鍵值為0X7d,再查找鍵值表便可以確定按下按鍵的序號。,① 鍵盤掃描,鍵盤掃描原理(以P3口接4×4鍵盤為例)——按鍵壓下前后,所在行線端口電平反轉(zhuǎn),同時將各行電平置1,分別將各列電平置0。,key_scan[] = {0xef, 0xdf,
28、0xbf, 0x7f},讀P3: 若P3低4位為f 或(P3 & 0x0f)=0x0f →無鍵壓下 若P3低4位≠f或(P3 & 0x0f)≠0x0f →有鍵壓下,其中 0#: 1110 1110B——0xee,② 按鍵判斷,1#: 1101 1110B——0xbe,……F#: 0111 0111B——0x77,③ 鍵值計算,for (j = 0 ; j < 16 ;j++) {
29、 //查找按下鍵鍵值 if (key_buf [j] == P3) return j; },key_buf [] = {0xee, 0xde, 0xbe, 0x7e, 0xed, 0xdd, 0xbd, 0x7d, 0xeb, 0xdb, 0xbb, 0x7b,
30、 0xe7, 0xd7, 0xb7, 0x77};,鍵模,實例7 行列式鍵盤,要求:開機黑屏;按下任意按鍵后,數(shù)碼管上顯示該鍵的鍵值(0~F);若沒有新鍵按下,維持前次按鍵結(jié)果。,行列式鍵盤+靜態(tài)數(shù)碼顯示,實例7程序流程圖,完整程序,編程界面,程序運行效果,原則:即要保證能及時響應(yīng)按鍵操作,又不要過多占用CPU的工作時間。,通常,鍵盤工作方式有3種,即編程掃描、定時掃描和中斷掃描。,1. 編程掃描方式,只有當單片機空閑時,才調(diào)用鍵盤
31、掃描子程序,掃描鍵盤。,五、鍵盤的工作方式,單片機在忙于各項工作任務(wù)時,如何兼顧鍵盤的輸入,取決于鍵盤的工作方式。,2. 定時掃描工作方式,利用單片機內(nèi)的定時器,產(chǎn)生10ms的定時中斷,對鍵盤進行掃描。,3.中斷工作方式,只有在鍵盤有鍵按下時,才執(zhí)行鍵盤掃描程序,如無鍵按下,單片機將不理睬鍵盤。,鍵盤所做的工作分為三個層次,如下圖。,第1層:單片機如何來監(jiān)視鍵盤的輸入。三種工作方 式:①編程掃描②定時掃描③中斷掃描
32、。,第2層:確定具體按鍵的鍵號。體現(xiàn)在按鍵的識別方 法上就是:①掃描法;②線反轉(zhuǎn)法。,第3層:執(zhí)行鍵處理程序。,按鍵在閉合和斷開瞬間會因彈簧開關(guān)的變形產(chǎn)生電壓波動,軟件消抖法: 延時10ms后再次掃描按鍵狀態(tài)。若仍判為“閉合”說明確有鍵壓下;若為“非閉合”說明是誤動作。,按鍵抖動波形,鍵盤消抖原理:,例:矩陣式鍵盤舉例,,實例2 中斷掃描法行列式鍵盤,如何保證能快速響應(yīng)按鍵操作,又不過多占用CPU時間?,
33、中斷掃描法——只有在鍵盤有鍵按下時,才執(zhí)行鍵盤掃描程序。如無鍵按下,CPU可不考慮鍵盤的存在。,查詢掃描法需要花費很多CPU機時,在CPU任務(wù)繁重的情況下往往無法實現(xiàn)。,分析:①增加一個或非門,利用按鍵壓下時的電平產(chǎn)生INT0中斷請求信號;②鍵盤改在P1口(中斷接P3.2)。,,#include char led_mod[] = {0x3f,… …}; //顯示自模char key_buf[] = {0x11,… …};
34、 //按鍵鍵值bit key_flag; //定義全局型bit變量,int0_key () interrupt 0{ key_flag = 1; },參考程序(略去延時和鍵掃描函數(shù)),,實例2運行效果,行列式鍵盤——將IO口分為行線和列線,按鍵跨接在行線和列線上,列線通過上拉電阻接正電源。,4×4行列式鍵盤,7407——六高壓輸出緩沖器/驅(qū)動器,
35、行列式鍵盤的特點:占用IO口線少,但軟件過程復(fù)雜。,鍵值——按鍵壓下時形成的電平編碼值,如0~F,按鍵在閉合和斷開瞬間會因彈簧開關(guān)的變形產(chǎn)生電壓波動,軟件消抖法: 延時10ms后再次掃描按鍵狀態(tài)。若仍判為“閉合”說明確有鍵壓下;若為“非閉合”說明是誤動作。,按鍵抖動波形,鍵盤消抖原理:,補充實例:,,本章小結(jié),C51的數(shù)據(jù)類型與變量的定義,都必須考慮單片機的存儲結(jié)構(gòu)。在Keil下進行C51開發(fā)的基本步驟是:建立項目→輸
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)碼管按鍵顯示
- 數(shù)碼管時鐘顯示按鍵調(diào)時間
- 實現(xiàn)4位數(shù)碼管與4x4按鍵的移位顯示
- 數(shù)碼管課件
- 595驅(qū)動數(shù)碼管
- proteus之數(shù)碼管
- led數(shù)碼管顯示
- 595驅(qū)動數(shù)碼管
- 數(shù)碼管引腳圖判斷
- 利用按鍵開關(guān)控制數(shù)碼管進行八進制數(shù)字顯示課程設(shè)計
- 模塊3-數(shù)碼管顯示接口控制
- 數(shù)碼管引腳圖齊全
- led數(shù)碼管顯示控制
- 數(shù)碼管引腳圖(常用)
- 單片機數(shù)碼管
- 數(shù)碼管使用說明.pdf
- 數(shù)碼管電機保護器
- c51數(shù)碼管控制
- 數(shù)字電子技術(shù)數(shù)碼管課程設(shè)計---數(shù)碼管設(shè)計及原理分析
- 智能風(fēng)扇程序,數(shù)碼管顯示溫度
評論
0/150
提交評論