單片機原理及應用實驗六按鍵識別數碼管顯示實驗_第1頁
單片機原理及應用實驗六按鍵識別數碼管顯示實驗_第2頁
單片機原理及應用實驗六按鍵識別數碼管顯示實驗_第3頁
單片機原理及應用實驗六按鍵識別數碼管顯示實驗_第4頁
單片機原理及應用實驗六按鍵識別數碼管顯示實驗_第5頁
已閱讀5頁,還剩3頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、電子信息學院實驗報告書 課 程 名: 單片機原理及應用實驗 題 目: 實驗六 按鍵識別數碼管顯示實驗 軟件+硬件實驗 實驗類別: 【設計】 班 級: 電子1313 學 號: 26 姓 名: 吳限 評語:(1)電路連接調試: 正確 基本正確 不正確(2)實驗程序編寫: 正確 基本正確 不正確(3)數據測量分析: 準確 基本準確 不準確成績:A B C D ,指導教師: 王英赫 批閱時間:2016年 月 日1、實驗內容或題目1)題目:按鍵識別數碼管顯示實驗2)實驗內容:數碼管顯示矩陣按鍵號。2、實驗目的與要求1)實驗目的:掌握按鍵識別及數碼管顯示的實現方法。2)實驗要求:通過XL2000 的16

2、位矩陣按鍵,在數碼管上分別顯示09,A,B,C,D,E,F。用Keil編譯、Proteus仿真,代碼下載到單片機實驗箱上驗證。3、實驗儀器(1)PC微機 1臺(2)實驗箱1臺開始4、實驗程序流程圖 初始化程序N有鍵按下延時去抖動YN有鍵按下Y判斷哪個鍵按下顯示相應的數字結束5、實驗程序(實驗程序清單作為附件放在最后)6、實驗步驟1)keil中C語言程序實現。2)在proteus中完成電路圖設計,并實現仿真。3)硬件實驗部分:用一條8PIN 數據排線,把矩陣按鍵部份的JP50,接到CPU 部份的P1 口JP44;接8 位數碼管的數據線。將數碼管部份的數據口 JP5 接到CPU 部份的P0 口JP

3、51;接8 位數碼管的顯示位線。將數碼管部份的顯示位口 JP8 接到CPU 部份的P2 口JP52.7、實驗數據及結果8、思考題采用P3口控制矩陣按鍵輸入,程序應該如何修改?答:本實驗的程序中可以不用蜂鳴器驅動線,把以下程序的sbit BEEP = P3 7;及函數void beep()等刪掉后;需要把掃描鍵值的函數改一下:unsigned char keyscan() unsigned char scan1, scan2, keycode,j; P13= 0xf0; scan1 = P3; if (scan1 != 0xf0) /判鍵是否按下 delayms(10); scan1 = P3;

4、 if (scan1 != 0xf0) /二次判鍵是否按下 P1 = 0x0f; scan2 = P3; keycode = scan1 | scan2; /組合成鍵掃描編碼 for (j = 0; j < 16; j+) if (keycode = key_codej) /查表得鍵值 key = j; return (key); /返回有效鍵值 else P3 = 0xff; return (key = 16); /返回無效碼 即P1口換成P3口,而鍵編碼數組是固定的,可以不變;此外主函數中的P1口也要改為P3口:void main(void) P0 = 0xf7; /數碼管初始顯示&

5、quot;-" P2 = 0xfd;/數碼管顯示在第二位 P3 = 0xff; while (1) keyscan(); if (key < 16) /有效鍵值 P0 = disp_codekey; /顯示鍵值 <附件> 實驗程序清單 #include <reg52.h> #include <intrins.h> sbit BEEP = P3 7; /蜂鳴器驅動線 unsigned char key; unsigned char code disp_code = 0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80

6、, 0x90,0x88,0x83,0xc6, 0xc0,0x86,0x8e,0xc0; unsigned char code key_code = 0xee, 0xed, 0xeb, 0xe7, 0xde, 0xdd, 0xdb, 0xd7, 0xbe, 0xbd, 0xbb, 0xb7, 0x7e, 0x7d, 0x7b, 0x77 /鍵編碼數組 ; char code SST5163 _at_ 0x003b; /保留仿真器 /*延時子函數*/ void delayms(unsigned int ms) unsigned char t; while (ms-) for (t = 0; t &

7、lt; 114; t+); /*x*0.14MS 延時子函數*/ void delayus(unsigned char x) unsigned char i; while (x-) for (i = 0; i < 14; i+) ; /*蜂鳴器驅動子函數*/ void beep() unsigned char i; for (i = 0; i < 250; i+) delayus(6); BEEP = !BEEP; /BEEP取反 BEEP = 1; /關閉蜂鳴器 delayms(150); /延時 /*鍵盤掃描子函數*/ unsigned char keyscan() unsig

8、ned char scan1, scan2, keycode, j; P1 = 0xf0; scan1 = P1; if (scan1 != 0xf0) /判鍵是否按下 delayms(10); /延時10ms scan1 = P1; if (scan1 != 0xf0) /二次判鍵是否按下 P1 = 0x0f; scan2 = P1; keycode = scan1 | scan2; /組合成鍵掃描編碼 for ( j = 0; j < 16; j+) if (keycode = key_code j) /查表得鍵值 key = j; return (key); /返回有效鍵值 else P1 = 0xff; return (key = 16); /返回無效碼 /*主函數*/ void main(void) P0 = 0xf7; /數碼管初始顯示&

溫馨提示

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

評論

0/150

提交評論