下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、4*4矩陣鍵盤(pán)在單片機(jī)應(yīng)用系統(tǒng)中,鍵盤(pán)是人機(jī)對(duì)話不可缺少的組件之一。在按鍵比較少時(shí),我們可以一個(gè)單片機(jī) I/0 口接一個(gè)按鍵,但當(dāng)按鍵需要很多,I/0資源又比較緊張時(shí),使用矩陣式鍵盤(pán)無(wú)疑是最好的選擇。4*4矩4*4矩陣鍵盤(pán)是運(yùn)用得最多的鍵盤(pán)形式,也是單片機(jī)入門(mén)必需掌握的一種鍵盤(pán)識(shí)別技術(shù),通常的陣鍵盤(pán)都是占用八個(gè)I0 口,但是掃描的時(shí)候就是分時(shí)工作的,這樣我們用四個(gè)10就可以實(shí)現(xiàn)八個(gè)10的功能,10資源可以更好的提高10利用率。通過(guò)單向?qū)щ姷亩O管,4個(gè)I0 口掃描16個(gè)按鍵,按傳統(tǒng)的行列式掃描方法,單片機(jī)系統(tǒng)要掃描16個(gè)按鍵,需要采用8個(gè)10 口。當(dāng)10 口個(gè)數(shù)有限時(shí),就要采用另外的辦法。如下
2、電路,只用4個(gè)10口就實(shí)現(xiàn)采集16個(gè)按鍵的輸入,在工程中得到很好地使用。掃描方法如下:1) PA0 , PA1, PA2 PA3設(shè)置為內(nèi)部上拉輸入模式。則是5列中相應(yīng)I0 口對(duì)應(yīng)行處的按鍵按下。程序讀取這四個(gè)10 口的引腳電平,如果某個(gè)10為低電平。2)PA0輸出低電平,PA1, PA2 PA3設(shè)置為內(nèi)部上拉輸入模式。程序讀取 腳電平。如果某個(gè)10為低電平,則是4列中相應(yīng)10口對(duì)應(yīng)行處的按鍵按下。P A1,PA2PA3這三個(gè)10 口的引3)PA1輸出低電平,PA0, PA2 PA3設(shè)置為內(nèi)部上拉輸入模式。程序讀取P A0,PA2PA3這三個(gè)10 口的引腳電平。如果某個(gè)10為低電平,則是3列中相
3、應(yīng)10口對(duì)應(yīng)行處的按鍵按下。4)PA2輸出低電平,PA0, PA1, PA3設(shè)置為內(nèi)部上拉輸入模式。程序讀取 腳電平。如果某個(gè)10為低電平,則是2列中相應(yīng)10口對(duì)應(yīng)行處的按鍵按下。P A0,PA1,PA3這三個(gè)10 口的引5)PA3輸出低電平,PA0, PA1, PA2設(shè)置為內(nèi)部上拉輸入模式。程序讀取 腳電平。如果某個(gè)10為低電平,則是1列中相應(yīng)10 口對(duì)應(yīng)行處的按鍵按下。P A0,PA1,PA2這三個(gè)10 口的引但是應(yīng)該注意一個(gè)問(wèn)題是當(dāng)一 IO口正在掃鍵時(shí),如果有對(duì)地的鍵按下,這是有可能會(huì)誤判按鍵,對(duì)地鍵比其他鍵有更高的響應(yīng)優(yōu)先級(jí),例如掃描時(shí),恰好S15按下,那就不能判別式 S15還是12,
4、我們可以在程序上避免這種按鍵誤判,若檢測(cè)到PA1有鍵按下,就先去判斷是否有對(duì)地鍵按下,如果沒(méi)有那就可以正確地判斷是S12了;按鍵消抖:當(dāng)檢測(cè)到有按鍵按下時(shí),延遲 5ms,延時(shí)后如果還是檢測(cè)到被按下,則說(shuō)明按鍵確實(shí)被按 下。當(dāng)按鍵處于按下?tīng)顟B(tài)時(shí),一直循環(huán)當(dāng)前指令,當(dāng)按鍵釋放后才執(zhí)行后面程序。鍵盤(pán)掃描程序void Key_G PI O_Co nfig(void)/*定義一個(gè) GPIO_InitTypeDef類(lèi)型的結(jié)構(gòu)體*/ GPIO_lnitTyp eDef GPIO_ln itStructure;/*開(kāi)啟GPIOA的外設(shè)時(shí)鐘*/RCC_A PB2Perip hClockCmd( RCC_A PB
5、2 Peri ph_GP lOA, ENABLE);/*選擇要控制的GPIOA引腳*/GP10nitStructure.G PIO_ Pin = GPIO_P in_0|G PIO_P in_1 | GPIO_Pin_2| GPIO_Pin_3;/*設(shè)置引腳模式為通用推挽輸出*/GP IO_I nitStructure.G PI O_Mode = GPI O_Mode_I PU;/* 設(shè)置引腳速率為 50MHz */GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;/* 調(diào)用庫(kù)函數(shù),初始化 GPIOA*/ GPIO_Init(GPIOA, &am
6、p;GPIO_InitStructure); GPIO_SetBits(GPIOA, GPIO_Pin_0|GPIO_Pin_1 | GPIO_Pin_2| GPIO_Pin_3);key_scan(void ) unsigned int key=0;void/ GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5); if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)&& GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)&&
7、GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)&& GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)!=1 )Delay_nms(5);if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)&&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)&&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)&&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)!=1
8、)if( GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)=0)key=16;if( GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)=0)key=15;if( GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)=0)key=14;if( GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)=0)key=13;GPIO_ResetBits(GPIOA, GPIO_Pin_0);GPIO_SetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2| GPIO_Pin
9、_3);if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1) &&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2) &&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)!=1)Delay_nms(5);if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1) &&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2) &&GPIO_ReadInputDataBit(GPIOA,GPIO_P
10、in_3)!=1) if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)=0)if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)=1) key=15;else key=12;if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)=0)if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)=1) key=14;else key=11;if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)=0)if(GPIO_ReadInputDataBit(
11、GPIOA,GPIO_Pin_3)=1) key=13;else key=10;GPIO_SetBits(GPIOA, GPIO_Pin_1);GPIO_SetBits(GPIOA, GPIO_Pin_0 | GPIO_Pin_2| GPIO_Pin_3);if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) &&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2) &&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)!=1) Delay_nms(5);if(GPIO_Rea
12、dInputDataBit(GPIOA,GPIO_Pin_2) &&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) &&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)!=1) if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)=0)if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)=1) key=16;else key=9;if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)=0) if(GPIO_R
13、eadInputDataBit(GPIOA,GPIO_Pin_2)=1) key=14;else key=8; if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)=0) if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)=1) key=13;else key=7;GPIO_SetBits(GPIOA, GPIO_Pin_2);GPIO_SetBits(GPIOA, GPIO_Pin_0 | GPIO_Pin_1| GPIO_Pin_3);if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) &a
14、mp;&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1) &&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)!=1) Delay_nms(5);if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1) &&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) &&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)!=1) if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pi
15、n_0)=0)if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)=1) key=16;else key=6;if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)=0) if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)=1) key=15;else key=5;if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)=0) if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)=1) key=13;else key=4;GPIO_SetB
16、its(GPIOA, GPIO_Pin_3);GPIO_SetBits(GPIOA, GPIO_Pin_0 | GPIO_Pin_1| GPIO_Pin_2);if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) &&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1) &&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)!=1) Delay_nms(5);if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)&&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)&&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)!=1) if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)=0)if(GPIO_ReadInputDataBit
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版移動(dòng)辦公設(shè)備采購(gòu)與網(wǎng)絡(luò)配置合同3篇
- 2025年度個(gè)人合伙藝術(shù)創(chuàng)作工作室合作協(xié)議4篇
- 2024石料礦山環(huán)境保護(hù)合同補(bǔ)充協(xié)議范本2篇
- 科技助力下的學(xué)生情緒管理策略
- 寵物教育全解析如何有效溝通與培訓(xùn)
- 校園內(nèi)火災(zāi)應(yīng)急預(yù)案的制定與實(shí)施
- 辦公室文員入職合同范本
- 2025年度智能交通系統(tǒng)個(gè)人勞務(wù)用工合同范本4篇
- 教育與科技的結(jié)合學(xué)校教學(xué)樓電氣優(yōu)化策略
- 教育科技視角下的小學(xué)科學(xué)實(shí)驗(yàn)教學(xué)實(shí)踐案例分享與反思
- 2025屆河南省鄭州一中高三物理第一學(xué)期期末學(xué)業(yè)水平測(cè)試試題含解析
- 個(gè)體工商戶章程(標(biāo)準(zhǔn)版)
- 七年級(jí)英語(yǔ)閱讀理解55篇(含答案)
- 廢舊物資買(mǎi)賣(mài)合同極簡(jiǎn)版
- 2024年正定縣國(guó)資產(chǎn)控股運(yùn)營(yíng)集團(tuán)限公司面向社會(huì)公開(kāi)招聘工作人員高頻考題難、易錯(cuò)點(diǎn)模擬試題(共500題)附帶答案詳解
- 李克勤紅日標(biāo)準(zhǔn)粵語(yǔ)注音歌詞
- 教科版六年級(jí)下冊(cè)科學(xué)第一單元《小小工程師》教材分析及全部教案(定稿;共7課時(shí))
- 中藥材產(chǎn)地加工技術(shù)規(guī)程 第1部分:黃草烏
- 危險(xiǎn)化學(xué)品經(jīng)營(yíng)單位安全生產(chǎn)考試題庫(kù)
- 案例分析:美國(guó)紐約高樓防火設(shè)計(jì)課件
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(yíng)(吳洪貴)任務(wù)一 用戶定位與選題
評(píng)論
0/150
提交評(píng)論