2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、第十章 數(shù)碼管的顯示與鍵盤識別,10.1 數(shù)碼管的顯示 10.1.1 7段數(shù)碼管原理與結(jié)構(gòu) 10.1.2 7段數(shù)碼管編碼 10.1.3 數(shù)碼管動態(tài)掃描 10.1.4 數(shù)碼管顯示硬件設計 10.1.5 數(shù)碼管顯示軟件設計10.2 鍵盤識別 10.2.1 開關與鍵盤

2、 10.2.2 鍵盤的消抖問題 10.2.3 鍵盤的識別功能 10.2.4 鍵盤的硬件設計 10.2.5 鍵盤掃描法軟件設計 10.2.6 鍵盤的掃描策略,Page 1,Page 2,,,第十章數(shù)碼管的顯示與鍵盤識別—數(shù)碼管的顯示,10.1.1 7 (8)段數(shù)碼管原理與結(jié)構(gòu)把7個細長的LED排成‘日’字型,還有一位控制小

3、數(shù)點。8個LED,使用一個公用端,共陽型:所有LED的陽極連在一起, 共陰型:所有LED的陰極連在一起單獨控制每個段的亮滅,可以表示出數(shù)字 0~9使用多個數(shù)碼管表示數(shù)字應用非常廣泛多種顏色,多種尺寸,使用單個數(shù)碼管時公用端接入電源或地,用微控制器的IO控制每一個段LED的亮滅。多位數(shù)碼管表示一個多

4、位數(shù)時,每個數(shù)碼管僅能表示一位,對每位都要進行編碼轉(zhuǎn)換多個數(shù)碼管可以使用動態(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 – 表示點亮 0 – 表示熄滅共陽型:取反

5、,,DP,Page 5,,,第十章數(shù)碼管的顯示與鍵盤識別—數(shù)碼管的顯示,10.1.3 數(shù)碼管動態(tài)掃描通過段控制信息確定數(shù)碼管顯示的數(shù)字(多位復用)通過位控制信號使得任意時刻只有一位數(shù)碼管處于顯示狀態(tài)利用視覺暫留現(xiàn)象,定時更改位控制信息和段控制信息,得到穩(wěn)定的數(shù)字顯示多個LED同時點亮的電流都經(jīng)過公共端,MCU的IO無法承受,必須使用三極管為了減小MCU的灌入電流,段控制端都連接了輸出驅(qū)動器74LS07(六高壓輸出緩

6、沖器/驅(qū)動器),,,段控制,位控制,注:所有引腳都是低電平有效,,Page 6,,,第十章數(shù)碼管的顯示與鍵盤識別—數(shù)碼管的顯示,10.1.4 數(shù)碼管顯示硬件設計實驗板上有4位數(shù)碼管,共陽極結(jié)構(gòu),引出12根連線,8根段控制,4根位控制,對應關系如下:實驗中可將段控制連接到P口,將位控制連接到T口,連線關系如下:,Page 7,,,第十章數(shù)碼管的顯示與鍵盤識別—數(shù)碼管的顯示,10.1.4 數(shù)碼管顯示軟件設計顯示一位數(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;//點亮一個數(shù)碼管,顯示2 PTP=DisplayDecod

8、e[2];PTT=0xfe;LED動態(tài)顯示時,按人眼的反應,刷新頻率得大于80Hz,即所有LED在12ms內(nèi)必須刷新一次。現(xiàn)有4組LED,即每段顯示3ms。這個3ms可以用軟件延遲實現(xiàn),但為提高CPU效率,一般使用定時器。,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,總線時鐘8M,延時為:4000*(1+2+3)/(8*106)s=3ms,LED顯示應用實例實驗3任務:(1) 在4個數(shù)碼管上分時顯示自己的班級(如C05)、學號(如H23)和目標要達到的考試成績(如98.5,必須要帶小數(shù)點)。 (2) 在4個數(shù)碼管上實現(xiàn)“F”字符跑馬燈。

13、 顯示速度通過改變系統(tǒng)總線時鐘來實現(xiàn)。(注意F字符的顯示是否出現(xiàn)問題),Page 10,第十章數(shù)碼管的顯示與鍵盤識別—實驗3,第十章數(shù)碼管的顯示與鍵盤識別—實驗3,硬件連線,Page 11,數(shù)碼管12線連P口和T口,第十章數(shù)碼管的顯示與鍵盤識別—實驗3,硬件連線,Page 12,數(shù)碼管12線引出口,P口引出口,T口引出口,,,第十章數(shù)碼管的顯示與鍵盤識別—鍵盤識別,10.2.1 開關與鍵盤開關(Switch)開關有兩種狀態(tài)

14、-閉合和斷開船形開關,撥位開關按鍵:帶有自恢復裝置的開關,常開常閉型各種形狀,各種尺寸耐高壓,輕觸式,帶指示鍵盤:由多個按鍵組合而成為了區(qū)分按鍵,給每個按鍵安排了一個代碼,稱鍵碼。編碼鍵盤和非編碼鍵盤前者較復雜,較貴。后者較簡單,極便宜。非編碼鍵盤分為獨立式鍵盤和行列式鍵盤,Page 13,,,第十章數(shù)碼管的顯示與鍵盤識別—鍵盤識別,10.2.2 鍵盤的消抖問題按鍵用于產(chǎn)生一個脈沖,1個MCU的IO口可以檢查一

15、個按鍵的狀態(tài)按下和釋放的時刻會有抖動需要設計硬件消抖電路或軟件消抖硬件消抖:阻容濾波或雙穩(wěn)態(tài)觸發(fā)器軟件消抖:延時等待(12ms),Page 14,void delay(void){ unsigned int i,j; for(i=0;i<4;i++) for(j=0;j<4000;) j++;},,包含16個按鍵的鍵盤需要多少個IO來連接?,1個MCU的IO口,可以檢查一

16、個按鍵的狀態(tài),第十章數(shù)碼管的顯示與鍵盤識別—鍵盤識別,Page 15,可以利用掃描方式獲取按鍵信息,減少占用的IO數(shù)目,第十章數(shù)碼管的顯示與鍵盤識別—鍵盤識別,Page 16,,,第十章數(shù)碼管的顯示與鍵盤識別—鍵盤識別,10.2.3 鍵盤的識別功能有無鍵按下 軟件延時消抖掃描求鍵碼等待鍵釋放查表求鍵值,Page 17,,,第十章數(shù)碼管的顯示與鍵盤識別—鍵盤識別,Page 18,10.2.4 鍵盤的硬件設計,,,

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個引腳,設置為輸入的引腳上拉電阻被使能,設置為輸出的引腳的上拉電阻未被使能),,第十章數(shù)碼管的顯示與鍵盤識別—鍵盤識別,Page 19,1,實驗板上有一個4*4的薄

18、膜鍵盤,板上無上拉電阻,接口是X1-4、Y1-4,實驗中可將其連接到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 鍵盤掃描法軟件設計當所有行輸出為0,列輸入碼若不全為1,說明不為零那一列有鍵按下;令某一行輸出為0,其余行輸出為1,列輸入碼若不全為1,說明該行有鍵按

20、下根據(jù)行輸出碼和列輸入碼中同時為0的行號和列號,可以確定鍵號。多鍵識別時需要依次掃描所有行(shift+A)竄鍵問題:軟件處理連續(xù)輸入問題:需要考慮掃描策略,逐行掃描法,,,,,,,,,,,,,,,,,,,,5V,,,行端口,列端口,,對第一行進行掃描: 行輸出端口輸出 0111 檢查列回讀端口的值,Page 21,逐行掃描法,,,行端口,列端口,,,,對第二行進行掃描: 行輸出端口輸出

21、 1011 檢查列回讀端口的值,最壞的情況下需要進行4次掃描過程,faster?,對第一行進行掃描: 行輸出端口輸出 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)時上拉電阻怎么辦?OK。。。。給行列都加上上拉電阻缺點作為輸出時,這個上拉電阻其實沒有什么作用,反而白白消耗了電流改進用MCU端口的內(nèi)部上

23、拉電阻,根據(jù)輸入輸出狀態(tài)進行動態(tài)配置限制有些IO端口只支持成組打開/關閉上拉電阻。那么需要兩個端口的IO配合使用。有些IO端口的每一個引腳都有獨立的上拉電阻控制位。 Perfect!,Page 25,,,,,,,,,,,,,,,,,,,,5V,,,行端口,列端口,,對第一行進行掃描: 僅第一行輸出, 其余行端口為輸入 檢查所有輸入端口,,,,,,,,,,,,5V,多鍵按下的掃描識別,Page 26,逐行掃描,,,,,,

24、,,,,,,,,,,,,,,5V,,,行端口,列端口,,對第一行進行掃描:,,,,,,,,,,,,5V,對第二行進行掃描: 僅第二行輸出, 其余行端口為輸入 檢查所有輸入端口,,,Page 27,逐行掃描,,,,,,,,,,,,,,,,,,,,5V,,,行端口,列端口,,對第一行進行掃描:,,,,,,,,,,,,5V,對第二行進行掃描:,,,對第三行進行掃描: 僅第三行輸出, 其余行端口為輸入 檢查所有輸入端口,

25、Page 28,逐行掃描,,,,,,,,,,,,,,,,,,,,5V,,,行端口,列端口,,對第一行進行掃描:,,,,,,,,,,,,5V,對第二行進行掃描:,對第三行進行掃描:,對第四行進行掃描: 僅第四行輸出, 其余行端口為輸入 檢查所有輸入端口,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時間;定時掃描:可能丟失按鍵動作,需要確定掃描頻率,觸點接觸時間在幾十到幾百ms

31、量級;鍵盤中斷:發(fā)現(xiàn)有任何按鍵按下時啟動鍵盤掃描,需要設計相應的硬件電路,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),注意:鍵盤線的設置,鍵盤應用實例實驗4任務:(1)在4個數(shù)碼管上依次顯示鍵盤鍵入的鍵值(掃描法)。 (2)在4個

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論