版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第十章 數(shù)碼管的顯示與鍵盤識別,10.1 數(shù)碼管的顯示 10.1.1 7段數(shù)碼管原理與結(jié)構(gòu) 10.1.2 7段數(shù)碼管編碼 10.1.3 數(shù)碼管動(dòng)態(tài)掃描 10.1.4 數(shù)碼管顯示硬件設(shè)計(jì) 10.1.5 數(shù)碼管顯示軟件設(shè)計(jì)10.2 鍵盤識別 10.2.1 開關(guān)與鍵盤
2、 10.2.2 鍵盤的消抖問題 10.2.3 鍵盤的識別功能 10.2.4 鍵盤的硬件設(shè)計(jì) 10.2.5 鍵盤掃描法軟件設(shè)計(jì) 10.2.6 鍵盤的掃描策略,Page 1,Page 2,,,第十章數(shù)碼管的顯示與鍵盤識別—數(shù)碼管的顯示,10.1.1 7 (8)段數(shù)碼管原理與結(jié)構(gòu)把7個(gè)細(xì)長的LED排成‘日’字型,還有一位控制小
3、數(shù)點(diǎn)。8個(gè)LED,使用一個(gè)公用端,共陽型:所有LED的陽極連在一起, 共陰型:所有LED的陰極連在一起單獨(dú)控制每個(gè)段的亮滅,可以表示出數(shù)字 0~9使用多個(gè)數(shù)碼管表示數(shù)字應(yīng)用非常廣泛多種顏色,多種尺寸,使用單個(gè)數(shù)碼管時(shí)公用端接入電源或地,用微控制器的IO控制每一個(gè)段LED的亮滅。多位數(shù)碼管表示一個(gè)多
4、位數(shù)時(shí),每個(gè)數(shù)碼管僅能表示一位,對每位都要進(jìn)行編碼轉(zhuǎn)換多個(gè)數(shù)碼管可以使用動(dòng)態(tài)掃描的方法節(jié)約IO端口。,第十章數(shù)碼管的顯示與鍵盤識別—數(shù)碼管的使用,Page 3,10.1.2 7(8)段數(shù)碼管編碼,Page 4,,,第十章數(shù)碼管的顯示與鍵盤識別—數(shù)碼管的顯示,10.1.2 7(8)段數(shù)碼管編碼,,,,,,,,b,c,d,e,f,g,a,共陰型:1 – 表示點(diǎn)亮 0 – 表示熄滅共陽型:取反
5、,,DP,Page 5,,,第十章數(shù)碼管的顯示與鍵盤識別—數(shù)碼管的顯示,10.1.3 數(shù)碼管動(dòng)態(tài)掃描通過段控制信息確定數(shù)碼管顯示的數(shù)字(多位復(fù)用)通過位控制信號使得任意時(shí)刻只有一位數(shù)碼管處于顯示狀態(tài)利用視覺暫留現(xiàn)象,定時(shí)更改位控制信息和段控制信息,得到穩(wěn)定的數(shù)字顯示多個(gè)LED同時(shí)點(diǎn)亮的電流都經(jīng)過公共端,MCU的IO無法承受,必須使用三極管為了減小MCU的灌入電流,段控制端都連接了輸出驅(qū)動(dòng)器74LS07(六高壓輸出緩
6、沖器/驅(qū)動(dòng)器),,,段控制,位控制,注:所有引腳都是低電平有效,,Page 6,,,第十章數(shù)碼管的顯示與鍵盤識別—數(shù)碼管的顯示,10.1.4 數(shù)碼管顯示硬件設(shè)計(jì)實(shí)驗(yàn)板上有4位數(shù)碼管,共陽極結(jié)構(gòu),引出12根連線,8根段控制,4根位控制,對應(yīng)關(guān)系如下:實(shí)驗(yàn)中可將段控制連接到P口,將位控制連接到T口,連線關(guān)系如下:,Page 7,,,第十章數(shù)碼管的顯示與鍵盤識別—數(shù)碼管的顯示,10.1.4 數(shù)碼管顯示軟件設(shè)計(jì)顯示一位數(shù)
7、字:const unsigned char DisplayDecode[]={~0x3f,~0x06,~0x5b,~0x4f,~0x66,~0x6d,~0x7d,~0x07,~0x7f,~0x6f,~0x77,~0x7c,~0x39,~0x5e,~0x79,~0x71}; //0-9和ABCDEF DDRP|=0XFF; DDRT|=0XFF;//點(diǎn)亮一個(gè)數(shù)碼管,顯示2 PTP=DisplayDecod
8、e[2];PTT=0xfe;LED動(dòng)態(tài)顯示時(shí),按人眼的反應(yīng),刷新頻率得大于80Hz,即所有LED在12ms內(nèi)必須刷新一次?,F(xiàn)有4組LED,即每段顯示3ms。這個(gè)3ms可以用軟件延遲實(shí)現(xiàn),但為提高CPU效率,一般使用定時(shí)器。,PTP(寄存器名): P、T、S、M、P、H、J命名相似。PORTA(寄存器名) :A、B、E、K命名類似。,Page 8,,,第十章數(shù)碼管的顯示與鍵盤識別—數(shù)碼管的顯示,示例程序 //unsigned
9、 char showdata[4]; void Show(){ unsigned char DisplayNumber; PTT=0x0f;for(DisplayNumber=0;DisplayNumber<4;DisplayNumber++){ PTP=DisplayDecode[showdata[DisplayNumber]]; if (DisplayNumber==2)
10、PTP&=0x7f; switch(DisplayNumber) { case 0: PTT=0xfe; break; case 1: PTT=0xfd; break; case 2: PTT=0xfb; break; default: PTT=0xf7;
11、 break; } delay(1);}},Page 9,,,第十章數(shù)碼管的顯示與鍵盤識別—數(shù)碼管的顯示,示例程序 //unsigned char showdata[4]; void delay(unsigned int countert) //3ms{ unsigned int i,j; for(i=0;i<countert;i++)
12、 for(j=0;j<4000;) j++;},123/1,晶振16M,總線時(shí)鐘8M,延時(shí)為:4000*(1+2+3)/(8*106)s=3ms,LED顯示應(yīng)用實(shí)例實(shí)驗(yàn)3任務(wù):(1) 在4個(gè)數(shù)碼管上分時(shí)顯示自己的班級(如C05)、學(xué)號(如H23)和目標(biāo)要達(dá)到的考試成績(如98.5,必須要帶小數(shù)點(diǎn))。 (2) 在4個(gè)數(shù)碼管上實(shí)現(xiàn)“F”字符跑馬燈。
13、 顯示速度通過改變系統(tǒng)總線時(shí)鐘來實(shí)現(xiàn)。(注意F字符的顯示是否出現(xiàn)問題),Page 10,第十章數(shù)碼管的顯示與鍵盤識別—實(shí)驗(yàn)3,第十章數(shù)碼管的顯示與鍵盤識別—實(shí)驗(yàn)3,硬件連線,Page 11,數(shù)碼管12線連P口和T口,第十章數(shù)碼管的顯示與鍵盤識別—實(shí)驗(yàn)3,硬件連線,Page 12,數(shù)碼管12線引出口,P口引出口,T口引出口,,,第十章數(shù)碼管的顯示與鍵盤識別—鍵盤識別,10.2.1 開關(guān)與鍵盤開關(guān)(Switch)開關(guān)有兩種狀態(tài)
14、-閉合和斷開船形開關(guān),撥位開關(guān)按鍵:帶有自恢復(fù)裝置的開關(guān),常開常閉型各種形狀,各種尺寸耐高壓,輕觸式,帶指示鍵盤:由多個(gè)按鍵組合而成為了區(qū)分按鍵,給每個(gè)按鍵安排了一個(gè)代碼,稱鍵碼。編碼鍵盤和非編碼鍵盤前者較復(fù)雜,較貴。后者較簡單,極便宜。非編碼鍵盤分為獨(dú)立式鍵盤和行列式鍵盤,Page 13,,,第十章數(shù)碼管的顯示與鍵盤識別—鍵盤識別,10.2.2 鍵盤的消抖問題按鍵用于產(chǎn)生一個(gè)脈沖,1個(gè)MCU的IO口可以檢查一
15、個(gè)按鍵的狀態(tài)按下和釋放的時(shí)刻會(huì)有抖動(dòng)需要設(shè)計(jì)硬件消抖電路或軟件消抖硬件消抖:阻容濾波或雙穩(wěn)態(tài)觸發(fā)器軟件消抖:延時(shí)等待(12ms),Page 14,void delay(void){ unsigned int i,j; for(i=0;i<4;i++) for(j=0;j<4000;) j++;},,包含16個(gè)按鍵的鍵盤需要多少個(gè)IO來連接?,1個(gè)MCU的IO口,可以檢查一
16、個(gè)按鍵的狀態(tài),第十章數(shù)碼管的顯示與鍵盤識別—鍵盤識別,Page 15,可以利用掃描方式獲取按鍵信息,減少占用的IO數(shù)目,第十章數(shù)碼管的顯示與鍵盤識別—鍵盤識別,Page 16,,,第十章數(shù)碼管的顯示與鍵盤識別—鍵盤識別,10.2.3 鍵盤的識別功能有無鍵按下 軟件延時(shí)消抖掃描求鍵碼等待鍵釋放查表求鍵值,Page 17,,,第十章數(shù)碼管的顯示與鍵盤識別—鍵盤識別,Page 18,10.2.4 鍵盤的硬件設(shè)計(jì),,,
17、,,,,,,,,,,,,,5V,行端口輸出,,,,,,,Y1,X1,Y2,Y3,Y4,X2,X3,X4,列端口輸入,1,2,3,4,5,6,7,8,9,0,A,B,C,D,E,F,注:將MCUI/O口輸入端的內(nèi)部上拉電阻使能,P27頁,以A口為例:PUPAE=1 (A口的8個(gè)引腳,設(shè)置為輸入的引腳上拉電阻被使能,設(shè)置為輸出的引腳的上拉電阻未被使能),,第十章數(shù)碼管的顯示與鍵盤識別—鍵盤識別,Page 19,1,實(shí)驗(yàn)板上有一個(gè)4*4的薄
18、膜鍵盤,板上無上拉電阻,接口是X1-4、Y1-4,實(shí)驗(yàn)中可將其連接到PORTA口上,Y1-4(PA0-3)為輸出, X1-4(PA4-7)做為輸入,使能PORTA的上拉電阻,,,,,行端口輸出,,,,,,,Y1,X1,Y2,Y3,Y4,X2,X3,X4,列端口輸入,2,3,4,5,6,7,8,9,0,A,B,C,D,E,F,注意:次序不是固定的,是可以自己根據(jù)情況定義的。,,,第十章數(shù)碼管的顯示與鍵盤識別—鍵盤識別,Page 20,,
19、,,,,,,,,,,,,,,,5V,行端口輸出,,,,,,,Y1(PA0),X1(PA4),Y2(PA1),Y3(PA2),Y4(PA3),X2(PA5),X3(PA6),X4(PA7),列端口輸入,1,2,3,4,5,6,7,8,9,0,A,B,C,D,E,F,10.2.5 鍵盤掃描法軟件設(shè)計(jì)當(dāng)所有行輸出為0,列輸入碼若不全為1,說明不為零那一列有鍵按下;令某一行輸出為0,其余行輸出為1,列輸入碼若不全為1,說明該行有鍵按
20、下根據(jù)行輸出碼和列輸入碼中同時(shí)為0的行號和列號,可以確定鍵號。多鍵識別時(shí)需要依次掃描所有行(shift+A)竄鍵問題:軟件處理連續(xù)輸入問題:需要考慮掃描策略,逐行掃描法,,,,,,,,,,,,,,,,,,,,5V,,,行端口,列端口,,對第一行進(jìn)行掃描: 行輸出端口輸出 0111 檢查列回讀端口的值,Page 21,逐行掃描法,,,行端口,列端口,,,,對第二行進(jìn)行掃描: 行輸出端口輸出
21、 1011 檢查列回讀端口的值,最壞的情況下需要進(jìn)行4次掃描過程,faster?,對第一行進(jìn)行掃描: 行輸出端口輸出 0111 檢查列回讀端口的值,Page 22,,,,反轉(zhuǎn)掃描法,,,,,,,,,,,,,,,,,5V,,,行端口,列端口,,,行端口輸出 0000檢查列端口的值根據(jù)列端口的值,已經(jīng)可以確定在哪一列有鍵按下,Page 23,,,,反轉(zhuǎn)掃描法,,,,,,,,,,,,,,,,,
22、5V,,,行端口,列端口,,,行端口輸出 0000檢查列端口的值根據(jù)列端口的值,確定哪一列有鍵按下將行端口和列端口輸入輸出方向反轉(zhuǎn)列端口輸出0000檢查行端口的值根據(jù)行端口的值,確定哪一行有鍵按下,Page 24,反轉(zhuǎn)掃描法,Hey,Wait。。。。。。行列反轉(zhuǎn)時(shí)上拉電阻怎么辦?OK。。。。給行列都加上上拉電阻缺點(diǎn)作為輸出時(shí),這個(gè)上拉電阻其實(shí)沒有什么作用,反而白白消耗了電流改進(jìn)用MCU端口的內(nèi)部上
23、拉電阻,根據(jù)輸入輸出狀態(tài)進(jìn)行動(dòng)態(tài)配置限制有些IO端口只支持成組打開/關(guān)閉上拉電阻。那么需要兩個(gè)端口的IO配合使用。有些IO端口的每一個(gè)引腳都有獨(dú)立的上拉電阻控制位。 Perfect!,Page 25,,,,,,,,,,,,,,,,,,,,5V,,,行端口,列端口,,對第一行進(jìn)行掃描: 僅第一行輸出, 其余行端口為輸入 檢查所有輸入端口,,,,,,,,,,,,5V,多鍵按下的掃描識別,Page 26,逐行掃描,,,,,,
24、,,,,,,,,,,,,,,5V,,,行端口,列端口,,對第一行進(jìn)行掃描:,,,,,,,,,,,,5V,對第二行進(jìn)行掃描: 僅第二行輸出, 其余行端口為輸入 檢查所有輸入端口,,,Page 27,逐行掃描,,,,,,,,,,,,,,,,,,,,5V,,,行端口,列端口,,對第一行進(jìn)行掃描:,,,,,,,,,,,,5V,對第二行進(jìn)行掃描:,,,對第三行進(jìn)行掃描: 僅第三行輸出, 其余行端口為輸入 檢查所有輸入端口,
25、Page 28,逐行掃描,,,,,,,,,,,,,,,,,,,,5V,,,行端口,列端口,,對第一行進(jìn)行掃描:,,,,,,,,,,,,5V,對第二行進(jìn)行掃描:,對第三行進(jìn)行掃描:,對第四行進(jìn)行掃描: 僅第四行輸出, 其余行端口為輸入 檢查所有輸入端口,Page 29,,,第十章數(shù)碼管的顯示與鍵盤識別—鍵盤識別(逐行掃描),Page 30,鍵值表:const unsigned char KeyDecode[]={ 0x01,
26、0x02,0x03,0x04,0x05,0x06,0x07,0x08, 0x09,0x00,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};,,,,,行端口輸出,,,,,,,1,1,1,1,Y1,X1,Y2,Y3,Y4,X2,X3,X4,列端口輸入,1,2,3,4,5,6,7,8,9,0,A,B,C,D,E,F,0,,示例程序:unsigned char KeyScan() { unsigned char
27、Input,Output,Keynumber,Keyvalue1,i; Keyvalue1=0xFF; Output=0xF0; PORTA=Output; Input=PORTA>>4;if(Input!=0x0F){ delay(4); Input=PORTA>>4; if(Input!=0x0F) { Output=0xFE; for(i=0;
28、i>4; if(Input!=0x0F) { switch(Input) { case 0x0E: Keynumber=0; break; case 0x0D: Keynumber=1; break; case 0x0B: Keynumber=2; break; case 0x07: Key
29、number=3; break; } Keynumber=Keynumber+i*ColumnSize; Keyvalue1=KeyDecode[Keynumber]; break; } else Output<<=1; } }}return(Keyvalue1);,,第十章數(shù)碼管的顯示與鍵盤識別—鍵盤識別(逐行掃描),Pa
30、ge 32,,,,,,,,,,,,,,,,5V,,,,,,,Y1(PA0),X1(PA4),Y2(PA1),Y3(PA2),Y4(PA3),X2(PA5),X3(PA6),X4(PA7),行端口輸出,列端口輸入,注意:輸入輸出,,,第十章數(shù)碼管的顯示與鍵盤識別—鍵盤識別(逐行掃描),10.2.6 鍵盤的掃描策略循環(huán)掃描:可行、可靠,占用CPU時(shí)間;定時(shí)掃描:可能丟失按鍵動(dòng)作,需要確定掃描頻率,觸點(diǎn)接觸時(shí)間在幾十到幾百ms
31、量級;鍵盤中斷:發(fā)現(xiàn)有任何按鍵按下時(shí)啟動(dòng)鍵盤掃描,需要設(shè)計(jì)相應(yīng)的硬件電路,Page 33,示例程序:void main(void) { /* put your own code here */ unsigned char Keyresult; showdata[0]=1; showdata[1]=2; showdata[2]=3; showdata[3]=4;EnableInterrupts;
32、Init_PORT(); Show(); //PPT的第8頁 for(;;) { Keyresult=KeyScan(); //鍵盤掃描 if(Keyresult!=0xFF) showdata[0]=Keyresult; Show(); //顯示} },示例程序:見書P182頁。,,第十章
33、數(shù)碼管的顯示與鍵盤識別—鍵盤識別(反轉(zhuǎn)掃描),5V,,,,,,,,,,,,,,,,,,,,,,Y1(PA7),Y2(PA6),Y3(PA5),Y4(PA4),X1(PA0),X2(PA1),X3(PA2),X4(PA3),Y1(PA7),Y2(PA6),Y3(PA5),Y4(PA4),注意:鍵盤線的設(shè)置,鍵盤應(yīng)用實(shí)例實(shí)驗(yàn)4任務(wù):(1)在4個(gè)數(shù)碼管上依次顯示鍵盤鍵入的鍵值(掃描法)。 (2)在4個(gè)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論