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

下載本文檔

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

文檔簡(jiǎn)介

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

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

3、static unsigned char IntNum = 0; /中斷次數(shù)計(jì)數(shù)unsigned char lie,hang;/lie 為列值, hang 為行值bit dx=0; /大小寫標(biāo)志 dx=1 時(shí)大寫狀態(tài)void Keyboard_out(void) interrupt 2/鍵盤中斷處理 鍵值存儲(chǔ)在 KeyV 中if (IntNum0) & (IntNum 1; /因鍵盤數(shù)據(jù)是低高,結(jié)合上一句所以右移一位if (Key_Data=1) /當(dāng)鍵盤數(shù)據(jù)線為1 時(shí)KeyV = KeyV | 0x80; /存儲(chǔ)一位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)識(shí)有字符輸入完了EA = 0; /關(guān)中斷等顯示完后再開中 void Decode() /鍵值處理unsigned char data TempCyc;signed char data k;TempCyc=KeyV;if(BF=1) /接收完一個(gè)有效數(shù)據(jù)時(shí)BF=0; /準(zhǔn)備下一次接收switch ( TempCyc ) /鍵值與顯示字符的對(duì)應(yīng)關(guān)系 /鍵值/ /對(duì)應(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; /按下大小寫控制鍵時(shí) 大小寫標(biāo)志取反if(k=-16) /空格鍵按下時(shí)lcd_putchar8x8(lie, hang, -16+0); /清除光標(biāo)lcd_putchar8x8(lie+8, hang, 79+0);/光標(biāo)移一位if(dx=0) /小寫狀態(tài)時(shí)顯示lcd_putchar8x8(lie, hang, k+0);/小寫字符lcd_putchar8x8(lie+8,

9、hang, 79+0);/光標(biāo)if(dx=1)/大寫狀態(tài)時(shí)顯示if(k9 & k=0 & k=9)lcd_putchar8x8(lie, hang, (k-10)+0);/數(shù)字鍵對(duì)應(yīng)的符號(hào)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) /延時(shí)程序 int i,j;for(i=0;i600;i+)for(j=0;jx;j+); void wlcom

10、e() /開機(jī)畫面和歡迎界面lcd_init(); /初始化液晶驅(qū)動(dòng)硬件 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); /延時(shí)等待 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);/ 請(qǐng)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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論