再次理解你的需求,發現你是要從鍵盤矩陣輸入一個任意2位整數,并輸出到LCD顯示器上,為此本人將昨天的程序做了修改,做成一個從矩陣鍵盤獲取任意2位整數的函數(其實可以簡單獲得任意整數),獲取一個任意2位整數并在LCD上顯示。以供參考。
下面是修改后的程序:
#include<reg51.h>
sbit kx0=P2^0;
sbit kx1=P2^1;
sbit kx2=P2^2;
sbit kx3=P2^3;
sbit ky0=P2^4;
sbit ky1=P2^5;
sbit ky2=P2^6;
sbit ky3=P2^7;
sbit rs=P3^5;
sbit rw=P3^6;
sbit E=P3^7;
//==============================================================================
void delay(int ii){int i;for(i=0;i<ii;i++);}
void writeCmd(unsigned char c){E=0;rw=0;rs=0;delay(50);delay(50);P1=c;delay(50);E=1;delay(50);E=0; }
void writeDat(unsigned char c){E=0;rw=0;rs=1;delay(50);delay(50);P1=c;delay(50);E=1;delay(50);E=0;}
void Prtstr(char *cp){char i=0;while(cp!=0){writeDat(cp);i++;}}
//------------------------------------------------------------------------------
int KeyDown()
{char v,x,y;
x=4;y=4;
P2=0x0f;v=P2;
if(v!=0x0f){if(kx0==0)x=0;if(kx1==0)x=1;if(kx2==0)x=2;if(kx3==0)x=3;
P2=0xf0;if(ky0==0)y=0;if(ky1==0)y=1;if(ky2==0)y=2;if(ky3==0)y=3;
}
return x*4+y;
}
//---------------------------------------------------------------
int GetNum()
{char w,num,key;
w=0;
while(1)
{key=KeyDown();
if(key<10)
{key=KeyDown();while(key==KeyDown());
if(w==0){num=key;w=1;}
else {num=num*10+key;w=0;P0=(num/10)*16+num%10;return num;}
P0=(num/10)*16+num%10;
}
};
}
//################################################################
void main()
{int n;
writeCmd(0x38);writeCmd(0x0f);writeDat('a');
while(1)
{writeCmd(0x80);
Prtstr("Please Input Int:");
n=GetNum();writeCmd(0x80+0x40);Prtstr("Your Input=");
writeDat(n/10+0x30);writeDat(n%10+0x30);
}
}
程序運行載圖如下:
ask6b.JPG (72.02 KB, 下載次數: 54)
下載附件
2019-3-10 11:15 上傳
|