標(biāo)準(zhǔn)鍵盤 PS/2與單片機通信_第1頁
標(biāo)準(zhǔn)鍵盤 PS/2與單片機通信_第2頁
標(biāo)準(zhǔn)鍵盤 PS/2與單片機通信_第3頁
標(biāo)準(zhǔn)鍵盤 PS/2與單片機通信_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、十五.標(biāo)準(zhǔn)鍵盤 PS2與單片機通信實驗任務(wù)標(biāo)準(zhǔn)鍵盤 PS2 向單片機輸入數(shù)字.字母.字符等,用 128X64 液晶顯示器顯示出來。硬件電路圖實驗原理鍵盤通過時鐘線和數(shù)據(jù)線和單片機通信,鍵盤和系統(tǒng)的相互通信都是采用11 位格式的串行方式。第 1 位是起始位 0;第 2 到 9 位是 8 位數(shù)據(jù)位,第 10 位是奇偶校驗位。第11位停止位。時序圖如下C語言源程序/注意 與第十三個實驗128X64液晶顯示器的基本應(yīng)用一樣,以下提供程序并沒/有包含128X64 液晶顯示驅(qū)動程序,只有主程序和PS2 鍵盤通信的驅(qū)動程序。/請大家到QQ 群:19305255,資源共享里面去下/以下程序只有單片機接收PS2

2、 鍵盤程序,沒有單片機向PS2 發(fā)送命令程序。/還有鍵盤數(shù)據(jù)處理上不是很完善,主要是為用戶提供一個參考程序。/如果把此實驗看作是一個系統(tǒng)的話,那么這一個系統(tǒng)就是一個漏洞百出,充滿/Bug 系統(tǒng)。大家在用的時侯可以對它多作改進。#include#include/包含128X64 驅(qū)動程序#include /包含圖片和漢字庫sbit Key_Data =P20;/定義Keyboard 數(shù)據(jù)端口引腳sbit Key_CLK=P33; /中斷端口,時鐘線static unsigned char KeyV=0X00; /鍵值static unsigned char BF = 0; /標(biāo)識是否有字符被收到

3、static unsigned char IntNum = 0; /中斷次數(shù)計數(shù)unsigned char lie,hang;/lie 為列值, hang 為行值bit dx=0; /大小寫標(biāo)志 dx=1 時大寫狀態(tài)void Keyboard_out(void) interrupt 2/鍵盤中斷處理 鍵值存儲在 KeyV 中if (IntNum0) & (IntNum 1; /因鍵盤數(shù)據(jù)是低高,結(jié)合上一句所以右移一位if (Key_Data=1) /當(dāng)鍵盤數(shù)據(jù)線為1 時KeyV = KeyV | 0x80; /存儲一位IntNum+; /中斷次數(shù)加一(中斷一次接收一位數(shù)據(jù))if (IntNum

4、 10) /中斷11 次后數(shù)據(jù)發(fā)送完畢IntNum=0; /當(dāng)中斷11 次后表示一幀數(shù)據(jù)收完,清變量準(zhǔn)備下一次接收BF = 1; /標(biāo)識有字符輸入完了EA = 0; /關(guān)中斷等顯示完后再開中 void Decode() /鍵值處理unsigned char data TempCyc;signed char data k;TempCyc=KeyV;if(BF=1) /接收完一個有效數(shù)據(jù)時BF=0; /準(zhǔn)備下一次接收switch ( TempCyc ) /鍵值與顯示字符的對應(yīng)關(guān)系 /鍵值/ /對應(yīng)字符/case 0x8A: k=0; break; /0 case 0x3C: k=2; break;

5、 /2case 0x2C: k=1; break; /1 case 0x4C: k=3; break; /3case 0x4A: k=4; break; /4 case 0x88: k=24; break;case 0x5C: k=5; break; /5 case 0x9A: k=25; break;case 0x6C: k=6; break; /6 case 0x2A: k=26; break;case 0x7A: k=7; break; /7 case 0x5A: k=27; break;case 0x7C: k=8; break; /8 case 0x36: k=28; break;c

6、ase 0x8C: k=9; break; /9 case 0x58: k=29; break;case 0x38: k=10; break; /a case 0x78: k=30; break;case 0x64: k=11; break; /b case 0x54: k=31; break;case 0x42: k=12; break; /c case 0x3A: k=32; break;case 0x46: k=13; break; /d case 0x44: k=33; break;case 0x48: k=14; break; /e case 0x6A: k=34; break;ca

7、se 0x56: k=15; break; /f case 0x34: k=35; break;case 0x68: k=16; break; /g case 0x98: k=63; break;case 0x66: k=17; break; /h case 0xAA: k=65; breakcase 0x86: k=18; break; /i case 0xF2: k=68; break;case 0x76: k=19; break; /j case 0x52: k=-16;break; /空case 0x84: k=20; break; /k case 0xB0: k=101;breaca

8、se 0x96: k=21; break; /l 大小寫控制鍵Caps lockcase 0x74: k=22; break; /m case 0x62: k=23; break; /nif(k=101) dx=!dx; /按下大小寫控制鍵時 大小寫標(biāo)志取反if(k=-16) /空格鍵按下時lcd_putchar8x8(lie, hang, -16+0); /清除光標(biāo)lcd_putchar8x8(lie+8, hang, 79+0);/光標(biāo)移一位if(dx=0) /小寫狀態(tài)時顯示lcd_putchar8x8(lie, hang, k+0);/小寫字符lcd_putchar8x8(lie+8,

9、hang, 79+0);/光標(biāo)if(dx=1)/大寫狀態(tài)時顯示if(k9 & k=0 & k=9)lcd_putchar8x8(lie, hang, (k-10)+0);/數(shù)字鍵對應(yīng)的符號lcd_putchar8x8(lie+8, hang, 79+0);/光標(biāo)if(lie=120) /寫滿一行l(wèi)ie=0;hang=hang+1;/換行l(wèi)cd_putchar8x8(lie, hang, 79+0);/光標(biāo)下移else lie=lie+8;EA=1;void delay(int x) /延時程序 int i,j;for(i=0;i600;i+)for(j=0;jx;j+); void wlcom

10、e() /開機畫面和歡迎界面lcd_init(); /初始化液晶驅(qū)動硬件 hz_disp(lie+24,hang, shu );/輸lcd_clr(); /清屏 hz_disp(lie+40,hang, ru);/入Disp_Img(yema);/顯示一張圖片 hz_disp(lie+56,hang, xi);/系delay(200); /延時等待 hz_disp(lie+72, hang, tong);/統(tǒng)lie=20; hang=1; delay(200);lcd_clr();lcd_clr(); lie=8; hang=0;hz_disp(lie+0, hang, huan);/歡 hz

11、_disp(lie+16,hang, qing);/ 請hz_disp(lie+16,hang, ying);/迎 hz_disp(lie+32,hang, shu);/輸hz_disp(lie+32,hang, shi);/使 hz_disp(lie+48,hang, ru);/入hz_disp(lie+48,hang, yong);/用 hz_disp(lie+64,hang, zi);/字hz_disp(lie+64,hang, DP);/DP hz_disp(lie+80,hang, fu);/符hz_disp(lie+80,hang, Y);/Y for(lie=0;lie128;lie+)/畫一條直線lie=8;h

溫馨提示

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

評論

0/150

提交評論