


下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優(yōu)質文檔-傾情為你奉上51單片機矩陣掃描鍵盤程序#include <reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar idata x,y;uchar code disp_code = 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, / 0-9 0 1 2 3 4 5 6 7 8 9 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e, / 10-15 a b
2、c d e f 0x7F, 0xBF, 0x9C, 0xFF / 16-19 . - 。null; /數碼管顯示值列表void delay(uchar c) /延時函數 char a,b; for(a=c;a>0;a-) for(b=110;b>0;b-);uchar key_scan() /鍵盤掃描函數 uchar k; uchar z; x=0x00; y=0x00; P3=0xf0; /先給P3賦一個初值 if(P3!=0xf0) /判斷P3不等于所賦初值,說明有健按下 delay(10); /消除鍵盤抖動 延時10ms if(P3!=0xf0) x=P3; P3=0x0f;
3、 y=P3; z=x|y; switch(z) case 0xee: k=0; break; case 0xed: k=1; break; case 0xeb: k=2; break; case 0xe7: k=3; break; case 0xde: k=4; break; case 0xdd: k=5; break; case 0xdb: k=6; break; case 0xd7: k=7; break; case 0xbe: k=8; break; case 0xbd: k=9; break; case 0xbb: k=10;break; case 0xb7: k=11;break;
4、case 0x7e: k=12;break; case 0x7d: k=13;break; case 0x7b: k=14;break; case 0x77: k=15;break; return(k);void main() uchar dat; while(1) P3=0xf0; while(P3!=0xf0) dat=key_scan(); P1=0; P0=disp_codedat; 2:#include <reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned in
5、tuchar idata x,y;uchar code disp_code = 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, / 0-9 0 1 2 3 4 5 6 7 8 9 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e, / 10-15 a b c d e f 0x7F, 0xBF, 0x9C, 0xFF / 16-19 . - 。null; /數碼管顯示值列表void delay(uchar c) /延時函數 char a,b; for(a=c;a>0;a-) for(b=110;b&
6、gt;0;b-);uchar key_scan() /鍵盤掃描函數 uchar k; uchar z; x=0x00; y=0x00; P3=0xf0; /先給P3賦一個初值 if(P3!=0xf0) /判斷P3不等于所賦初值,說明有健按下 delay(10); /消除鍵盤抖動 延時10ms if(P3!=0xf0) x=P3; /*這里稍作解釋:起初我們已經給P3賦了一個0xf0的值,如果有鍵按下,P3便一定不再是0xf0 , 如果我們這時查看P3的值我們就能知道是哪一列的鍵按下了(說明一下,我的開發(fā)板上P3.0-P3.3接的是列) 但這時我們先不看P3的值,這時我們先把P3的值賦給x,再給
7、P3賦一個0x0f的值,由于這兩條語句執(zhí)行的速度是 很快的,是us級的,而我們按一個按鍵怎么也得幾十到上百ms,盡管我們在前面已經做過一個10ms的延時,但是 在我們給P3重新賦值后,按鍵一定還是閉合的,所以P3被賦0xof后由于有按鍵閉合,故P3的值又變了,這時候我們 查看P3的值就可以判斷出來是是哪一行的按鍵按下了.然后我們把這時的P3值賦給y,再用x或上y,把他們的值賦給z 然后判斷z的值就可以知道是具體哪一個鍵被按下了?。ㄐ泻土卸即_定了,具體是哪一個鍵自然就確定了) */ P3=0x0f; y=P3; z=x|y; switch(z) case 0xee: k=0; break; ca
8、se 0xed: k=1; break; case 0xeb: k=2; break; case 0xe7: k=3; break; case 0xde: k=4; break; case 0xdd: k=5; break; case 0xdb: k=6; break; case 0xd7: k=7; break; case 0xbe: k=8; break; case 0xbd: k=9; break; case 0xbb: k=10;break; case 0xb7: k=11;break; case 0x7e: k=12;break; case 0x7d: k=13;break; case 0x7b: k=14;break; case 0x77: k=15;break; return(k);void main() uchar dat; while(1) P3=0xf0; while(P3!=0xf0) /*剛開始運行程序就判斷
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 半年工作計劃手帳
- 生產員工轉正評語
- 企業(yè)入申請書范文
- 高中、初中、小學語文課本中的古詩詞和文言文
- 骨折的康復完整版本
- 食堂工作人員職責
- 環(huán)衛(wèi)主題班會課件
- 作業(yè)持證上崗管理制度
- 供應執(zhí)法崗亭管理制度
- 供暖公司運行管理制度
- 《卒中患者吞咽障礙護理規(guī)范》
- DL∕T 698.45-2017 電能信息采集與管理系統(tǒng) 第4-5部分:通信協(xié)議-面向對象的數據交換協(xié)議
- 2024版房屋租賃合同范本房屋租賃合同
- GB/T 44189-2024政務服務便民熱線運行指南
- 浙江省杭州市學軍中學2025屆數學高一下期末統(tǒng)考試題含解析
- 2025年中考數學專題09 逆等線最值專題(原卷版)
- 中醫(yī)醫(yī)療技術手冊2013普及版
- 【全球6G技術大會】:2023通感一體化系統(tǒng)架構與關鍵技術白皮書
- 2024年投資入股協(xié)議電子版(4篇)
- T-XLXH 012-2023 梨火疫病防治技術規(guī)程
- 2024年甘肅省初中《體育》學業(yè)水平考試參考題庫(含答案)
評論
0/150
提交評論