




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
12.4PS2鍵盤(pán)與液晶顯示實(shí)例 本節(jié)主要講述PS/2鍵盤(pán)與S52單片機(jī)連接的方法,以及單片機(jī)與12232液晶之間的接口程序的編寫(xiě)。實(shí)現(xiàn)的功能是從PS/2中讀入數(shù)據(jù),并在液晶上面顯示出來(lái)。12.4.1電路原理圖 硬件電路圖如圖12.20所示圖12.20電路原理圖 采用最小系統(tǒng),PS/2和LCD接口都通過(guò)插座連接,系統(tǒng)使用4MHZ的晶振。12.4.2程序設(shè)計(jì) 程序包括兩部份,PS/2處理程序和LCD處理程序。PS/2處理程序設(shè)計(jì)如圖9-15中電路所示。PS/2鍵盤(pán)與單片機(jī)連數(shù)據(jù)傳送方式為PS/2向單片機(jī)發(fā)數(shù)據(jù),單片機(jī)接收數(shù)據(jù),從圖9-2可以看出每經(jīng)過(guò)11時(shí)鐘周期單片機(jī)接收到一個(gè)字節(jié)的數(shù)據(jù)。PS/2鍵盤(pán)的時(shí)鐘線與單片機(jī)的INT0引腳相連,在單片機(jī)的中斷服務(wù)程序中負(fù)著進(jìn)行數(shù)據(jù)處理,只接收11個(gè)時(shí)鐘周期中的鍵碼信息,而對(duì)起始、停止和校驗(yàn)位不處理。LCD處理程序設(shè)計(jì)LCD與單片機(jī)的連接關(guān)系如圖9-15中電路所示。程序通過(guò)模擬LCD的讀寫(xiě)時(shí)序完成對(duì)LCD的操作,LCD的時(shí)序如圖9-14。LCD在開(kāi)始顯示之前需要對(duì)其進(jìn)行初始化設(shè)置,12232的初始化步驟如下(參考程序中的disp.c中的init函數(shù)):控制器復(fù)位關(guān)閉顯示關(guān)閉靜態(tài)驅(qū)動(dòng),使用動(dòng)態(tài)驅(qū)動(dòng)方式(省電)設(shè)置顯示首行的位置(STARTLINE)設(shè)置Duty(動(dòng)態(tài)驅(qū)動(dòng)占空比)計(jì)數(shù)器方向設(shè)置(ADC)關(guān)閉“讀-寫(xiě)-修改”模式設(shè)置DDRAM地址計(jì)數(shù)器的位置打開(kāi)顯示通過(guò)以上步驟的操作后,LCD就能夠正常顯示了。整個(gè)程序采用模塊設(shè)計(jì),及相應(yīng)的功能存放一個(gè)c文件中,建立多個(gè)c文件。工程上的應(yīng)用為了便于維護(hù)和程序的擴(kuò)展,大多采用模塊化設(shè)計(jì)。模塊化設(shè)計(jì)的特點(diǎn)是建立多個(gè)文件,各模塊文件中定義各自的函數(shù),并將被其他文件函數(shù)調(diào)用函數(shù)用頭文件提出來(lái)并標(biāo)注“extern”保留字,這樣其他文件只要包含(include)該頭文件就能夠引用該頭文件中定義的那些函數(shù)。該原理如圖9-19所示圖9-19多模塊開(kāi)發(fā)原理整個(gè)程序如下:12.4.3LCD顯示程序disp.c#include<AT89X52.H>#include"char.h"#defineucharunsignedchar#defineuintunsignedint#defineDIP2_1#defineRWP2_0#defineE1P2_6#defineE2P2_7unsignedcharcodeenter[]={0x00,0x00,0x80,0xF8,0xF0,0x80,0x00,0x00,0x00,0x38,0x3F,0x3F,0x3F,0x3F,0x38,0x00};unsignedcharcodezero[]={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00};unsignedcharcodeone[]={0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00};unsignedcharcodetwo[]={0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00};unsignedcharcodethree[]={0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00};unsignedcharcodefour[]={0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00};unsignedcharcodefive[]={0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00};unsignedcharcodesix[]={0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00};unsignedcharcodeseven[]={0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00};unsignedcharcodeeight[]={0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00};unsignedcharcodenine[]={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00};unsignedcharcodeqing[]={0x40,0x42,0x4C,0xC4,0x00,0x22,0xAA,0xAA,0xAA,0xBF,0xAA,0xAA,0xAA,0x22,0x20,0x00, 0x00,0x00,0x00,0x7F,0x20,0x10,0xFF,0x0A,0x0A,0x0A,0x4A,0x8A,0x7F,0x00,0x00,0x00};/*"請(qǐng)",0*/unsignedcharcodecha[]={0x08,0x08,0x08,0xFF,0x88,0x48,0x92,0x92,0x52,0x12,0xFE,0x11,0x91,0x91,0x90,0x00, 0x02,0x42,0x81,0x7F,0x00,0x00,0x7F,0x24,0x24,0x20,0x3F,0x20,0x24,0x24,0x7F,0x00};/*"插",1*/unsignedcharcodeka[]={0x00,0x40,0x40,0x40,0x40,0x40,0x40,0xFF,0x44,0x44,0x44,0x44,0x44,0x44,0x40,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x02,0x04,0x0C,0x38,0x10,0x00,0x00};/*"卡",2*/unsignedcharcodehao[]={0x40,0x40,0x40,0x5F,0xD1,0x51,0x51,0x51,0x51,0x51,0x51,0x5F,0x40,0x40,0x40,0x00, 0x00,0x00,0x00,0x02,0x07,0x02,0x02,0x22,0x42,0x82,0x42,0x3E,0x00,0x00,0x00,0x00};/*"號(hào)",0*/unsignedcharcodezhuang[]={0x00,0x42,0x2C,0x24,0x10,0xFF,0x04,0x64,0xA4,0x24,0x3F,0x24,0x24,0x24,0x04,0x00, 0x20,0x21,0x11,0x11,0xF9,0x45,0x23,0x03,0x05,0x09,0x11,0x29,0x45,0xC1,0x41,0x00};/*"裝",0*/unsignedcharcodepiao[]={0x00,0x01,0x3D,0xA5,0xA5,0xA5,0xBF,0xA5,0xA5,0xBF,0xA5,0xA5,0xA5,0x3D,0x01,0x00, 0x04,0x44,0x24,0x14,0x04,0x44,0x84,0x7C,0x04,0x04,0x04,0x14,0x24,0x44,0x04,0x00};/*"票",1*/unsignedcharcodezhang[]={0x00,0xF8,0x08,0xFF,0x08,0xF8,0x80,0x80,0xFF,0xA0,0x90,0x98,0x8C,0x88,0x80,0x00, 0x00,0x07,0x00,0xFF,0x04,0x07,0x00,0x40,0xFF,0x40,0x23,0x0C,0x10,0x60,0x20,0x00};/*"帳",0*/unsignedcharcodeda[]={0x10,0x10,0x10,0xFF,0x90,0x50,0x14,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x00, 0x02,0x42,0x81,0x7F,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00};/*"打",0*/unsignedcharcodeyin[]={0x00,0xFC,0x44,0x44,0x42,0x42,0x42,0x00,0xFE,0x02,0x02,0x02,0x02,0xFE,0x00,0x00, 0x08,0x1F,0x08,0x04,0x04,0x02,0x00,0x00,0xFF,0x00,0x00,0x04,0x08,0x07,0x00,0x00};/*"印",1*/unsignedcharcodezhong[]={0x00,0x00,0xFC,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0xFC,0x08,0x00,0x00, 0x00,0x00,0x07,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x02,0x02,0x07,0x00,0x00,0x00};/*"中",0*/unsignedcharcodewan[]={0x00,0x90,0x8C,0xA4,0xA4,0xA4,0xA5,0xA6,0xA4,0xA4,0xA4,0xA4,0x94,0x8C,0x04,0x00, 0x00,0x80,0x40,0x20,0x18,0x07,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x70,0x00,0x00};/*"完",0*/unsignedcharcodebi[]={0x00,0x00,0xFF,0x88,0x48,0x28,0x08,0x80,0x7F,0x88,0x88,0x88,0x84,0x84,0xE0,0x00, 0x04,0x04,0x04,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00};/*"畢",1*/unsignedcharcodeshu[]={0x44,0xF4,0x4F,0xE4,0x44,0x64,0x90,0x98,0x94,0x93,0x14,0x98,0x08,0xD0,0x10,0x00, 0x04,0x04,0x04,0xFF,0x02,0x02,0xFF,0x4A,0x8A,0x7F,0x00,0x3F,0x80,0xFF,0x00,0x00};/*"輸",0*/unsignedcharcoderu[]={0x00,0x00,0x00,0x00,0x01,0x83,0x76,0x18,0x60,0x80,0x00,0x00,0x00,0x00,0x00,0x00, 0x40,0x20,0x10,0x08,0x06,0x01,0x00,0x00,0x00,0x00,0x03,0x04,0x18,0x30,0x10,0x00};/*"入",1*/unsignedcharcodemi[]={0x00,0x58,0x24,0x04,0xF4,0x04,0x8D,0xB6,0x44,0x34,0xCC,0x94,0x24,0xCC,0x04,0x00, 0x02,0x06,0x02,0x79,0x41,0x41,0x41,0x7D,0x41,0x41,0x41,0x40,0x78,0x00,0x00,0x00};/*"密",0*/unsignedcharcodema[]={0x02,0x82,0xE2,0x5E,0x42,0xC2,0x00,0x02,0xFA,0x82,0x82,0x82,0xFE,0x80,0x00,0x00, 0x01,0x00,0x7F,0x10,0x10,0x3F,0x00,0x04,0x04,0x04,0x44,0x84,0x40,0x3F,0x00,0x00};/*"碼",1*/unsignedcharcodebian[]={0x20,0x30,0xAC,0x63,0x32,0x00,0xFC,0xA4,0xA5,0xA6,0xA4,0xA4,0xA4,0xBC,0x00,0x00, 0x10,0x11,0x09,0x49,0x21,0x1C,0x03,0x7F,0x04,0x3F,0x04,0x3F,0x44,0x7F,0x00,0x00};/*"編",0*/unsignedcharcodegai[]={0x00,0x04,0x24,0x24,0x25,0x26,0x24,0xFC,0x24,0x26,0x25,0x34,0x26,0x84,0x00,0x00, 0x41,0x41,0x7D,0x45,0x45,0x7D,0x45,0x45,0x45,0x7D,0x45,0x45,0x7D,0x41,0x41,0x00};/*"蓋",1*/unsignedcharcodezang[]={0x10,0x10,0x12,0xD2,0x56,0x5A,0x52,0x53,0x52,0x5A,0x56,0xD2,0x12,0x12,0x10,0x00, 0x10,0x10,0x10,0x17,0x15,0x15,0x15,0xFD,0x15,0x15,0x15,0x17,0x10,0x10,0x10,0x00};/*"章",0*/unsignedcharcodexie[]={0x00,0x08,0x06,0x82,0xFA,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x9A,0x96,0x02,0x00, 0x00,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x04,0x04,0x46,0x84,0x60,0x1F,0x00,0x00};/*"寫(xiě)",0*/unsignedcharcodemaohao[]={0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00};/*":",0*/unsignedcharcodeshenglvhao[]={0x00,0xC0,0xC0,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*"…",0*/unsignedcharcodetanhao[]={0x00,0x00,0x70,0xF8,0xF8,0x70,0x00,0x00,0x00,0x00,0x00,0x0D,0x0D,0x00,0x00,0x00};/*"!",0*/voidDelay(uchari){ while((i--)!=0);}/******************************原型:voidDisplayon_m(uchari)*****功能:顯示開(kāi)關(guān)*****參數(shù):i*****說(shuō)明:0關(guān)顯示,1開(kāi)顯示*****返回值:無(wú)*************************/voidDisplay_m(uchari){ RW=0; DI=0; P0=0xae+i; E1=1; Delay(5); E1=0; RW=1; DI=1;}voidLongDelay(uintm){ while(m) { Delay(200); m--; }}/******************************原型:voidDisplay_s(uchari)*****功能:顯示開(kāi)關(guān)*****參數(shù):i*****說(shuō)明:0關(guān)顯示,1開(kāi)顯示*****返回值:無(wú)*************************/voidDisplay_s(uchari){ RW=0; DI=0; P0=0xae+i; E2=1; Delay(5); E2=0; RW=1; DI=1;}/******************************原型:voidStartLine_m(uchari)*****功能:設(shè)置顯示的首行位置*****參數(shù):i*****說(shuō)明:1-31行*****返回值:無(wú)*************************/voidStartLine_m(uchari){ RW=0; DI=0; P0=0xc0+i; E1=1; Delay(5); E1=0; RW=1; DI=1;}/******************************原型:voidStartLine_s(uchari)*****功能:設(shè)置顯示的首行位置*****參數(shù):i*****說(shuō)明:1-31行*****返回值:無(wú)*************************/voidStartLine_s(uchari){ RW=0; DI=0; P0=0xc0+i; E2=1; Delay(5); E2=0; RW=1; DI=1;}/******************************原型:voidSetPageAdd_m(uchari)*****功能:設(shè)置顯示的首行位置*****參數(shù):i*****說(shuō)明:0-3頁(yè)*****返回值:無(wú)*************************/voidSetPageAdd_m(uchari){ DI=0; RW=0; P0=0xb8+i; E1=1; Delay(5); E1=0; DI=1; RW=1;}/******************************原型:voidSetPageAdd_s(uchari)*****功能:設(shè)置顯示的首行位置*****參數(shù):i*****說(shuō)明:0-3頁(yè)*****返回值:無(wú)*************************/voidSetPageAdd_s(uchari){ DI=0; RW=0; P0=0xb8+i; E2=1; Delay(5); E2=0; DI=1; RW=1;}/******************************原型:SetY_m(uchari)*****功能:設(shè)置顯示的列位置*****參數(shù):i*****說(shuō)明:0-79列*****返回值:無(wú)*************************/voidSetY_m(uchari){ DI=0; RW=0; P0=0x00+i; E1=1; Delay(5); E1=0; DI=1; RW=1;}/******************************原型:SetY_s(uchari)*****功能:設(shè)置顯示的列位置*****參數(shù):i*****說(shuō)明:0-79列*****返回值:無(wú)*************************/voidSetY_s(uchari){ DI=0; RW=0; P0=0x00+i; E2=1; Delay(5); E2=0; DI=1; RW=1;}/******************************原型:voidWriteData_m(uchari)*****功能:寫(xiě)顯示數(shù)據(jù)*****參數(shù):i*****說(shuō)明:*****返回值:無(wú)*************************/voidWriteData_m(uchari){ DI=1; RW=0; P0=i; E1=1; Delay(5); E1=0; E1=1; DI=1; RW=1;}/******************************原型:voidWriteData_s(uchari)*****功能:寫(xiě)顯示數(shù)據(jù)*****參數(shù):i*****說(shuō)明:*****返回值:無(wú)*************************/voidWriteData_s(uchari){ DI=1; RW=0; P0=i; E2=1; Delay(5); E2=0; DI=1; RW=1;}/******************************原型:voidAdcSelect_m(void)*****功能:*****參數(shù):i*****說(shuō)明:*****返回值:無(wú)*************************/voidAdcSelect_m(uchari){ DI=0; RW=0; P0=0xa0+i; E1=1; Delay(5); E1=0; DI=1; RW=1;}/******************************原型:voidAdcSelect_s(void)*****功能:*****參數(shù):i*****說(shuō)明:*****返回值:無(wú)*************************/voidAdcSelect_s(uchari){ DI=0; RW=0; P0=0xa0+i; E2=1; E2=0; DI=1; RW=1;}/******************************原型:voidStaticDrv_m(uchari)*****功能:*****參數(shù):i*****說(shuō)明:0;1*****返回值:無(wú)*************************/voidStaticDrv_m(uchari){ DI=0; RW=0; P0=0xa4+i; E1=1; Delay(5); E1=0; DI=1; RW=1;}/******************************原型:voidStaticDrv_s(uchari)*****功能:*****參數(shù):i*****說(shuō)明:0;1*****返回值:無(wú)*************************/voidStaticDrv_s(uchari){ DI=0; RW=0; P0=0xa4+i; E2=1; Delay(5); E2=0; DI=1; RW=1;}/******************************原型:voidDutyRatio_m(uchari)*****功能:設(shè)置驅(qū)動(dòng)比*****參數(shù):i*****說(shuō)明:0-16;1-32*****返回值:無(wú)*************************/voidDutyRatio_m(uchari){ DI=0; RW=0; P0=0xa8+i; E1=1; Delay(5); E1=0; DI=1; RW=1; }/******************************原型:voidDutyRatio_s(uchari)*****功能:設(shè)置驅(qū)動(dòng)比*****參數(shù):i*****說(shuō)明:0-16;1-32*****返回值:無(wú)*************************/voidDutyRatio_s(uchari){ DI=0; RW=0; P0=0xa8+i; E2=1; Delay(5); E2=0; DI=1; RW=1;}/******************************原型:voidReset_m(void)*****功能:復(fù)位*****參數(shù):*****說(shuō)明:*****返回值:無(wú)*************************/voidReset_m(void){ DI=0; RW=0; P0=0xe2; E1=1; Delay(5); E1=0; DI=1; RW=1;}/******************************原型:voidReset_s(void)*****功能:復(fù)位*****參數(shù):*****說(shuō)明:*****返回值:無(wú)*************************/voidReset_s(void){ DI=0; RW=0; P0=0xe2; E2=1; Delay(5); E2=0; DI=1; RW=1; }voidRMW_m(void){ DI=0; RW=0; P0=0xee; E1=1; Delay(5); E1=0; DI=1; RW=1;}voidRMW_s(void){ DI=0; RW=0; P0=0xee; E2=1; Delay(5); E2=0; DI=1; RW=1;}/******************************原型:voidClr()*****功能:全屏清除*****參數(shù):無(wú)*****說(shuō)明:*****返回值:無(wú)*************************/voidClr(){ uchari; ucharj; for(i=0;i<=3;i++) { SetPageAdd_m(i); SetPageAdd_s(i); SetY_m(0); SetY_s(0); for(j=0;j<61;j++) { WriteData_m(0x00); WriteData_s(0x00); } }}/******************************原型:voidClr_onech(uchari,ucharj)*****功能:清除一個(gè)字符16×16*****參數(shù):i,j,坐標(biāo)位置*****說(shuō)明:*****返回值:無(wú)*************************/voidClr_onech(uchari,ucharj){ ucharcnt; if(j<=52) { SetY_m(j); SetPageAdd_m(i); for(cnt=0;cnt<16;cnt++) { if(cnt==8) { SetPageAdd_m(i+1); SetY_m(j); } WriteData_m(0x00); } } elseif((j>=53)&&(j<=60)) { SetY_m(j); SetPageAdd_m(i); for(cnt=0;cnt<=(60-j);cnt++) { WriteData_m(0x00); } SetY_s(0); SetPageAdd_s(i); for(cnt=0;cnt<(j-53);cnt++) { WriteData_s(0x00); } SetY_m(j); SetPageAdd_m(i+1); for(cnt=0;cnt<=(60-j);cnt++) { WriteData_m(0x00); } SetY_s(0); SetPageAdd_s(i+1); for(cnt=0;cnt<(j-53);cnt++) { WriteData_s(0x00); } } else { SetY_s(j-61); SetPageAdd_s(i); for(cnt=0;cnt<16;cnt++) { if(cnt==8) { SetPageAdd_s(i+1); SetY_s(j-61); } WriteData_s(0x00); } } }/******************************原型:voidinit(void)*****功能:顯示初始化*****參數(shù):*****說(shuō)明:*****返回值:無(wú)*************************/voidinit(void){ Reset_m(); Reset_s(); Display_m(0); Display_s(0); StaticDrv_m(0); StaticDrv_s(0); StartLine_m(0); StartLine_s(0); DutyRatio_m(1); DutyRatio_s(1); AdcSelect_m(0); AdcSelect_s(0); RMW_m(); RMW_s(); SetY_m(0); SetY_s(0); SetPageAdd_m(0); SetPageAdd_s(0); Display_m(1); Display_s(1); Clr();}/******************************原型:voiddisp_ch(uchari,ucharj,ucharcode*ch,uchara)*****功能:顯示一個(gè)字符16*816*16*****參數(shù):坐標(biāo)位置,顯示數(shù)組首地址,顯示大小16or32*****說(shuō)明:16為16×832為16×16*****返回值:無(wú)*************************/voiddisp_ch(uchari,ucharj,ucharcode*ch,uchara){ ucharcnt; if(j<(60-a/2)) { SetY_m(j); SetPageAdd_m(i); for(cnt=0;cnt<a;cnt++) { if(cnt==(a/2)) { SetPageAdd_m(i+1); SetY_m(j); } WriteData_m(*ch); ch++; } } elseif((j>=60-a/2)&(j<=60)) { SetY_m(j); SetPageAdd_m(i); for(cnt=0;cnt<=(60-j);cnt++) { WriteData_m(*ch); ch++; } SetY_s(0); SetPageAdd_s(i); for(cnt=0;cnt<(a/2+j-61);cnt++) { WriteData_s(*ch); ch++; } SetY_m(j); SetPageAdd_m(i+1); for(cnt=0;cnt<=(60-j);cnt++) { WriteData_m(*ch); ch++; } SetY_s(0); SetPageAdd_s(i+1); for(cnt=0;cnt<(a/2+j-61);cnt++) { WriteData_s(*ch); ch++; } } else { SetY_s(j-61); SetPageAdd_s(i); for(cnt=0;cnt<a;cnt++) { if(cnt==a/2) { SetPageAdd_s(i+1); SetY_s(j-61); } WriteData_s(*ch); ch++; } }}12.4.4PS/2解碼程序ps2key.c#include<AT89X52.H>#include"ps2key.h"#include"disp.h"#include"scancodes.h"#include"char.h"/****************************************函數(shù)名:charDecode(ucharScanCode)***功能:返回解碼后的值***參數(shù):接收到的ps2鍵值***返回值:uchar**************************************/ucharDecode(ucharScanCode){ ucharTempCyc; uchari; if(!Key_UP) { switch(ScanCode) { case0xF0: Key_UP=1; break; default: for(TempCyc=0;(UnShifted[TempCyc][0]!=ScanCode)&&(TempCyc<59);TempCyc++);//查表顯示 if(UnShifted[TempCyc][0]==ScanCode) { i=UnShifted[TempCyc][1]; } } } else { Key_UP=0; } returni;}12.4.5main主程序程序main.c#include<AT89X52.H>#include"disp.h"#include"char.h"#include"ps2key.h"staticunsignedcharcode_temp[20]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};voidKeyboard_out(void)interrupt2{ if((IntNum>0)&&(IntNum<9)) { KeyV=KeyV>>1; if(Key_Data)KeyV=KeyV|0x80; } IntNum++; while(!Key_CLK); if(IntNum>10) { IntNum=0; BF=1; EA=0; }}voidinput_char(uchar*id,ucharlength)reentrant{ uchari_temp; uchari; ucharj=0; ucharm,n; BF=0; EA=1; Clr(); while(*(id+length-1)!=60) { if(BF) { i_temp=Decode(KeyV); if((i_temp!=0)&&(i_temp!='.')) { if(j==length) { Clr(); j=0; m=0; n=0; }
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 標(biāo)準(zhǔn)離婚合同全文
- 新能源汽車銷售代理合同
- 商品房買賣合同示例
- 畢業(yè)生檔案托管合同協(xié)議書(shū)
- 廣告投放合同「樣本」
- 多人合伙經(jīng)營(yíng)合同范例大全
- 屋頂防水修繕項(xiàng)目合同
- 戶外廣告LED大屏租賃合同
- 稻谷購(gòu)銷合同樣本
- 腎性貧血的治療課件
- 《英語(yǔ)史》課程教學(xué)大綱
- 智能鎖培訓(xùn)課程
- 小兒腸系膜淋巴結(jié)護(hù)理查房
- 【MOOC期末】《大學(xué)體育射箭》(東南大學(xué))中國(guó)大學(xué)慕課答案
- 2025年女職工權(quán)益保護(hù)法律知識(shí)競(jìng)賽題庫(kù)及答案(100題)
- 與國(guó)外客戶達(dá)成代理協(xié)議的合同協(xié)議模板中英文板
- VQ-100無(wú)人機(jī)手冊(cè)(一)
- 凈身出戶離婚協(xié)議書(shū)2025年
- 八省八校2025屆高三上學(xué)期12月聯(lián)合測(cè)評(píng)語(yǔ)文試題及參考答案
- 現(xiàn)代物流基礎(chǔ)習(xí)題+參考答案
- 科目三 贛州職業(yè)技術(shù)學(xué)院2024年單獨(dú)招生《職業(yè)適應(yīng)性測(cè)試》考試樣卷及答案(適用于“高中畢業(yè)生”)
評(píng)論
0/150
提交評(píng)論