




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 項(xiàng)目項(xiàng)目3 3 按鍵識別的設(shè)計(jì)按鍵識別的設(shè)計(jì) 知識目標(biāo):1. 1. 掌握掌握AT89S51AT89S51單片機(jī)最小系統(tǒng)的組成及相關(guān)電路的工作原理;單片機(jī)最小系統(tǒng)的組成及相關(guān)電路的工作原理;2. 2. 掌握掌握AT89S51AT89S51單片機(jī)基本鍵盤接口電路的組成及按鍵識別方法。單片機(jī)基本鍵盤接口電路的組成及按鍵識別方法。 能力目標(biāo):1. 1. 認(rèn)識認(rèn)識AT89S51AT89S51單片機(jī)、晶體振蕩器、電阻、電容、按鍵,鍵盤單片機(jī)、晶體振蕩器、電阻、電容、按鍵,鍵盤 等元器件。等元器件。2. 2. 會(huì)設(shè)計(jì)硬件去抖動(dòng)電路,編寫軟件去抖動(dòng)按鍵識別程序;會(huì)設(shè)計(jì)硬件去抖動(dòng)電路,編寫軟件去抖動(dòng)按鍵識別程
2、序;3. 3. 掌握矩陣鍵盤按鍵掃描程序,分支處理掌握矩陣鍵盤按鍵掃描程序,分支處理 。 在單片機(jī)應(yīng)用系統(tǒng)中,鍵盤主要用于向計(jì)算機(jī)輸入數(shù)據(jù)、傳送命令等,是人工干預(yù)計(jì)算機(jī)的主要手段。鍵盤要通過接口與單片機(jī)相連,分為編碼鍵盤和非編碼鍵盤兩類。 鍵盤上閉合鍵的識別由專用的硬件編碼器實(shí)現(xiàn),并產(chǎn)生鍵編碼號或鍵值的稱為編碼鍵盤,如計(jì)算機(jī)鍵盤。而靠軟件編程來識別的稱為非編碼鍵盤,在單片機(jī)組成的各種系統(tǒng)中,使用最廣泛的是非編碼鍵盤。當(dāng)然,也有用到編碼鍵盤的。 非編碼鍵盤有分為:獨(dú)立鍵盤和行列式(又稱為矩陣式)鍵盤。 單單 鍵鍵矩陣鍵盤矩陣鍵盤 讀P1口的按鍵狀態(tài),P2口以二進(jìn)制記錄P1口的狀態(tài)變化次數(shù)。1 1
3、提出任務(wù)提出任務(wù)2 2任務(wù)分析任務(wù)分析 (1)硬件電路設(shè)計(jì) 以8051單片機(jī)作為控制電路,按鍵連接至單片機(jī)的 P1口,P2口外接8個(gè)采用共陽極連接方式的發(fā)光二極管(LED)和 8個(gè)限流電阻,硬件電路原理圖所示。任務(wù)任務(wù)1:按鍵測試:按鍵測試 任務(wù)任務(wù)1:按鍵測試:按鍵測試 3 3程序流程程序流程 #include #include #define uchar unsigned char #define uchar unsigned char unsigned char i,j;unsigned char i,j;void main( )void main( ) j=0; j=0; /變化次數(shù)變
4、化次數(shù)P2=0 xff; P2=0 xff; /P2/P2口燈全滅,燈滅表示為口燈全滅,燈滅表示為0 0,燈亮表示,燈亮表示1 1i=P1; i=P1; /讀讀P1P1口口 while(1) while(1) if(i!=P1) if(i!=P1) /判斷判斷P1P1口是否有變化口是否有變化 j+; j+; /有變化次數(shù)加有變化次數(shù)加1 1 P2=j; P2=j; /次數(shù)在次數(shù)在P2P2口顯示口顯示 i=P1; i=P1; /重新記錄重新記錄P1P1口的狀態(tài)口的狀態(tài) Lesson369-lesskey11Lesson369-lesskey11 在鍵盤的軟件設(shè)計(jì)中還要注意按鍵的去抖動(dòng)問題。由于按
5、鍵一般是由機(jī)械式觸點(diǎn)構(gòu)成的,在按鍵按下和斷開的瞬間均有一個(gè)抖動(dòng)過程,時(shí)間大約為5ms10ms,可能會(huì)造成單片機(jī)對按鍵的誤識別。 物理按鍵抖動(dòng)波形圖物理按鍵抖動(dòng)波形圖 按鍵消抖一般有兩種方法,即硬件消抖和軟件消抖。硬件消抖方法硬件消抖方法 在軟件設(shè)計(jì)中,當(dāng)單片機(jī)檢測到有鍵按下時(shí),可以先延時(shí)一段時(shí)間越過抖動(dòng)過程再對按鍵識別。實(shí)際應(yīng)用中,一般希望按鍵一次按下單片機(jī)只處理一次,但由于單片機(jī)執(zhí)行程序的速度很快,按鍵一次按下可能被單片機(jī)多次處理。為避免此問題,可在按鍵第一次按下時(shí)延時(shí)10ms之后再次檢測按鍵是否按下,如果此時(shí)按鍵仍然按下,則確定有按鍵輸入。這樣便可以避免按鍵的重復(fù)處理。軟件消抖方法軟件消抖
6、方法 任務(wù)任務(wù)2 2 單鍵控制單鍵控制LEDLED的設(shè)計(jì)的設(shè)計(jì)軟件消抖流程圖軟件消抖流程圖 任務(wù)任務(wù)2 2 單鍵控制單鍵控制LEDLED的設(shè)計(jì)的設(shè)計(jì) 用單鍵(即獨(dú)立鍵盤中的按鍵)實(shí)現(xiàn)對LED進(jìn)行控制,每按一次按鍵時(shí),LED 方式變化一次,用以表示按鍵控制的結(jié)果。1 1提出任務(wù)提出任務(wù)2 2任務(wù)分析任務(wù)分析 (1)硬件電路設(shè)計(jì) 以8051單片機(jī)作為控制電路,按鍵連接至單片機(jī)的P1.4引腳,另一端接地,P2.0口外接1個(gè)采用共陽極連接方式的發(fā)光二極管(LED)和 1個(gè)限流電阻,硬件電路原理圖所示。 任務(wù)任務(wù)2 2 單鍵控制單鍵控制LEDLED的設(shè)計(jì)的設(shè)計(jì) 任務(wù)任務(wù)2 2 單鍵控制單鍵控制LEDLE
7、D的設(shè)計(jì)的設(shè)計(jì)軟件消抖流程圖軟件消抖流程圖 #include #include #define uchar unsigned char #define uchar unsigned char void delay(uchar);void delay(uchar);sbit p14=P14; /sbit p14=P14; /定義位定義位sbit p20=P20;sbit p20=P20;main()main() p20=0; p20=0; /P2.0/P2.0初始狀態(tài)燈亮初始狀態(tài)燈亮while(1)while(1) if(p14=0) if(p14=0) /判斷是否按鍵判斷是否按鍵 delay(
8、2); delay(2); /延時(shí)延時(shí)20MS20MS,去抖動(dòng),去抖動(dòng) if(p14=0) if(p14=0) / / 確認(rèn)有鍵按下確認(rèn)有鍵按下 p20=p20; p20=p20; /指示燈狀態(tài)取反指示燈狀態(tài)取反 while(!p14); while(!p14); /等待按鍵釋放等待按鍵釋放 / /* *延時(shí)子程序延時(shí)子程序* */ /void delay(uchar k )void delay(uchar k ) uchar x,y,z;uchar x,y,z;for(x=k;x0;x-)for(x=k;x0;x-)for(y=20;y0;y-)for(y=20;y0;y-)for(z=25
9、0;z0;z-);for(z=250;z0;z-); Lesson3-lessonkey12Lesson3-lessonkey12 思考題:思考題:1. 用P2口指示燈記錄P14復(fù)位鍵,按鍵的次數(shù) 任務(wù)任務(wù)2 2 多路按鍵狀態(tài)指示的設(shè)計(jì)多路按鍵狀態(tài)指示的設(shè)計(jì) 知識鏈接知識鏈接 一、矩陣式鍵盤 1結(jié)構(gòu)和工作原理 當(dāng)輸入部分有多個(gè)按鍵時(shí),若仍然采用獨(dú)立鍵盤,必然會(huì)占用大量的I/O口,采用矩陣鍵盤是一種比較節(jié)省資源的方法。矩陣式鍵盤又稱行列式鍵盤,往往用于按鍵數(shù)量較多的場合。矩陣式鍵盤的按鍵設(shè)置在行與列的交點(diǎn)上。 任務(wù)任務(wù)3 3 多路按鍵狀態(tài)指示的設(shè)計(jì)多路按鍵狀態(tài)指示的設(shè)計(jì)一般矩陣鍵盤的連接示意圖一
10、般矩陣鍵盤的連接示意圖 任務(wù)任務(wù)2 2 多路按鍵狀態(tài)指示的設(shè)計(jì)多路按鍵狀態(tài)指示的設(shè)計(jì) 2按鍵的識別按鍵的識別A) 行(列)掃描法。行(列)掃描法。 (1)先將全部列線置為低電平,然后通過行線接口讀取行線電平,判斷鍵盤中是否有按鍵被按下。 (2)判斷閉合鍵的具體位置。在確認(rèn)鍵盤中有按鍵被按下后,依次將列線置為低電平,再逐行檢測各行的電平狀態(tài)。若某行為低電平,則該行與置為低電平的列線相交處的按鍵即為閉合按鍵。 (3)綜合上述兩步的結(jié)果,即可確定出閉合鍵所在的行和列,從而識別出所按下的鍵。 B) 反轉(zhuǎn)法反轉(zhuǎn)法: 1)行輸入、列輸出,將列輸出端全置為0, 通過接口讀取行線電平,判斷行的位置 2)列輸入
11、、行輸出,將行輸出端全置為0, 通過接口讀取列線電平,判斷列的位置 綜合兩步獲取按鍵號。任務(wù)任務(wù)2 2 多路按鍵狀態(tài)指示的設(shè)計(jì)多路按鍵狀態(tài)指示的設(shè)計(jì) 任務(wù)任務(wù)2 2 多路按鍵狀態(tài)指示的設(shè)計(jì)多路按鍵狀態(tài)指示的設(shè)計(jì) 3矩陣式鍵盤的軟件設(shè)計(jì)矩陣式鍵盤的軟件設(shè)計(jì) 無論采用哪種方式,都要編制相應(yīng)的鍵盤掃描程序。在鍵盤掃描程序中一般要完成以下幾個(gè)功能: (1)判斷鍵盤上有無按鍵按下; (2)去鍵的機(jī)械抖動(dòng)影響; (3)求所按鍵的鍵號; (4)轉(zhuǎn)向鍵處理程序。 任務(wù)任務(wù)2 2 多路按鍵狀態(tài)指示的設(shè)計(jì)多路按鍵狀態(tài)指示的設(shè)計(jì)按鍵識別按鍵識別程序流程圖程序流程圖 任務(wù)任務(wù)3 3 多路按鍵狀態(tài)指示的設(shè)計(jì)多路按鍵狀態(tài)
12、指示的設(shè)計(jì) 用8051單片機(jī)及LED數(shù)碼管實(shí)現(xiàn)對鍵盤鍵值的實(shí)現(xiàn)。當(dāng)按下鍵盤中不同按鍵時(shí),用LED燈顯示不同的鍵值。 1 1提出任務(wù)提出任務(wù) 任務(wù)任務(wù)2 2 多路按鍵狀態(tài)指示的設(shè)計(jì)多路按鍵狀態(tài)指示的設(shè)計(jì)2 2任務(wù)分析任務(wù)分析 (1)硬件電路設(shè)計(jì) 本設(shè)計(jì)采用8051單片機(jī)最小系統(tǒng),P1口外接矩陣式鍵盤接口電路,P2口外接8個(gè)共陽發(fā)光二極管。 任務(wù)任務(wù)2 2 多路按鍵狀態(tài)指示的設(shè)計(jì)多路按鍵狀態(tài)指示的設(shè)計(jì)鍵盤鍵值顯示電路圖鍵盤鍵值顯示電路圖 任務(wù)任務(wù)3 3 多路按鍵狀態(tài)指示的設(shè)計(jì)多路按鍵狀態(tài)指示的設(shè)計(jì)3 3源程序編寫源程序編寫uchar keyscan( ) uchar keyscan( ) /鍵盤反
13、轉(zhuǎn)掃描鍵盤反轉(zhuǎn)掃描uchar i,scan1,scan2,keycode;uchar i,scan1,scan2,keycode;P1=0 xf0; P1=0 xf0; /行線設(shè)為低低平行線設(shè)為低低平scan1=P1; scan1=P1; / / 讀讀P1P1口口if (scan1&0 xf0)!=0 xf0) if (scan1&0 xf0)!=0 xf0) /判斷是否有按鍵判斷是否有按鍵 delay(2); delay(2); /延時(shí)延時(shí) scan1=P1; scan1=P1; if (scan1&0 xf0)!=0 xf0) / if (scan1&0 xf0)!=0 xf0) /再次判
14、斷再次判斷 P1=0 x0f; P1=0 x0f; /列線設(shè)為低電平列線設(shè)為低電平 scan2=P1; scan2=P1; keycode=scan1|scan2; / keycode=scan1|scan2; /組合成鍵編組合成鍵編碼碼 for(i=0;i16;i+) for(i=0;i0;x-)for(x=k;x0;x-)for(y=20;y0;y-)for(y=20;y0;y-)for(z=250;z0;z-);for(z=250;z0;z-); / /* *延時(shí)延時(shí)20ms20ms* */ / 任務(wù)任務(wù)3 3 多路按鍵狀態(tài)指示的設(shè)計(jì)多路按鍵狀態(tài)指示的設(shè)計(jì)3 3源程序編寫源程序編寫/#i
15、nclude #include#define uchar unsigned char void delay(uchar);uchar keyscan();uchar code keytable=0 xee,0 xed,0 xeb,0 xe7,0 xde,0 xdd,0 xdb,0 xd7,0 xbe,0 xbd,0 xbb,0 xb7,0 x7e,0 x7d,0 x7b,0 x77,0 xff;uchar key;main()main() while(1)while(1) key=key=keyscan( );keyscan( ); if(key!=16 if(key!=16) ) /顯示顯示
16、二進(jìn)制鍵二進(jìn)制鍵值值 P2=key; P2=key; else else P2=0 xff; P2=0 xff; /無按鍵不顯示無按鍵不顯示 任務(wù)任務(wù)3 3 多路按鍵狀態(tài)指示的設(shè)計(jì)多路按鍵狀態(tài)指示的設(shè)計(jì)二、函數(shù)的返回值 函數(shù)的值是指函數(shù)被調(diào)用之后,執(zhí)行函數(shù)體中的程序段所取得的并返回給主調(diào)函數(shù)的值。對函數(shù)返回值有以下一些說明: 函數(shù)的值只能通過return語句返回主調(diào)函數(shù)。 return 語句的一般形式為: return 表達(dá)式; 或者為: return (表達(dá)式); 該語句的功能是計(jì)算表達(dá)式的值,并返回給主調(diào)函數(shù)。在函數(shù)中允許有多個(gè)return語句,但每次調(diào)用只能有一個(gè)return 語句被執(zhí)行,因此只能返回一個(gè)函數(shù)值。 任務(wù)任務(wù)3 3 多路按鍵狀態(tài)指示的設(shè)計(jì)多路按鍵狀態(tài)指示的設(shè)計(jì)函數(shù)值的類型和函數(shù)定義中函數(shù)的類型應(yīng)保持一致。如果兩者不一致,則以函數(shù)類型為準(zhǔn),自動(dòng)進(jìn)行類型轉(zhuǎn)換。 如函數(shù)值為整型,在函數(shù)定義時(shí)可以省去類型說明。 不返回函數(shù)值的函數(shù),可以明確定義為“空類型”,類型說明符為“void”。如: v
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 熱變形實(shí)驗(yàn)報(bào)告范文大全
- 浙江國企招聘2025臺(tái)州市海核新能源發(fā)展有限公司第二批招聘5人筆試參考題庫附帶答案詳解
- 二零二五年度港口碼頭保安服務(wù)合同
- 2025年度河砂開采與生態(tài)修復(fù)承包服務(wù)合同
- 2025年度航空航天勞務(wù)外包保密協(xié)議
- 二零二五年度農(nóng)村電商融資借款合同
- 二零二五年度農(nóng)村宅基地租賃與農(nóng)村電商供應(yīng)鏈金融協(xié)議
- 二零二五年度文化創(chuàng)意產(chǎn)業(yè)擔(dān)保合同
- 二零二五年度煙草店店鋪轉(zhuǎn)讓及區(qū)域市場拓展合同
- 二零二五年度出租車安全責(zé)任險(xiǎn)及轉(zhuǎn)讓協(xié)議
- 2025年安徽職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫學(xué)生專用
- 2025年黑龍江農(nóng)業(yè)工程職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫完整版
- 小學(xué)科學(xué)點(diǎn)亮我的小燈泡省公開課一等獎(jiǎng)全國示范課微課金獎(jiǎng)?wù)n件
- 2023-2024學(xué)年高中信息技術(shù)必修一滬科版(2019)第三單元項(xiàng)目六《 解決溫標(biāo)轉(zhuǎn)換問題-認(rèn)識程序和程序設(shè)計(jì)語言》教學(xué)設(shè)計(jì)
- 2024年中國農(nóng)業(yè)大學(xué)招聘筆試真題
- 浙江新陣地教育聯(lián)盟2025屆高三第二次聯(lián)考化學(xué)試題及答案
- 課件:以《哪吒2》為鏡借哪吒精神燃開學(xué)斗志
- 新生兒胃腸減壓護(hù)理
- 七年級數(shù)學(xué)下冊 第8章 單元測試卷(蘇科版 2025年春)
- 2025年全球及中國大型不銹鋼鑄件行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報(bào)告
- 帶電粒子在磁場中的運(yùn)動(dòng)與臨界問題-2025年高考物理易錯(cuò)題專練(解析版)
評論
0/150
提交評論