/*按键扫描函数*/ void keyScan(void){ //P3=0x00;col1=0;col2=1;col3=1;col4=1;temp=P2&0x3f;if(col1==0) //假设第一列有按键 { if(temp!=0x3f) //没有按键退出这次对第一列键盘扫描 { tem...
uint keyscan(void)//键盘扫描函数,使用行列反转扫描法 { uint cord_h,cord_l,cord;//行列值 P3=0x0f; //行线输出全为0 cord_h=P3&0x0f; //读入列线值 if(cord_h!=0x0f) //先检测有无按键按...
再写一个长短键判断函数,调用那个按键扫描函数unsigned char KEY_process(void){ static unsigned char Old_key = 0;/
看程序中P1.0-P1.3是行扫描输出,P1.4-P1.7是扫描输入。所以原理是P1.0-P1.3中每次只有一个引脚输出0,其余输出1,然后读取P1.4-P1.7是否有引脚为0;如果有0说明有按键按下,如果全1说明没有按键按下。sc...
uchar keyscan(void); //主要的矩阵键盘扫描函数。uchar alonekey(void); //按键 void delay(uint i);void main(){ uchar key,akey;P2=0x00;//1数码管亮 按相应的按键,会显示按键上的字符 while(1)...
扫描按键,把按键值返回给k
uchar KeyScan()//按键扫描函数(方式1,需配合源程序矩阵布局,返回值0表示无按键,1-16为对应按键),缺点:无法扫描组合键(同时按2个按键以上){ uchar temp_h,temp_l,scan_value,i;KeyPort=0xf0;//设置低4位为0(扫描...
6位LED为动态扫描方式 。先显示第一位,延时一定时间后在显示第二位依次类推。。。 共有17个按键。按下按键后数码管显示相应的数字,并左移一位。uchar kbscan(void) /*键扫描函数*/{uchar j; uchar sccod...
列扫描线是输出,行扫描线是输入。下面就程序作一个说明 (***)表示注意点 1、首先判断整个键盘有无按下键,只要行扫描线输入不为全1,(1111)即有键按下;P1 = 0xf0;if((P1&0xf0)!=0xf0) 如果无按键按下,...
输入两次即可,假设keyscan()是带返回值的按键扫描函数 i=0;While(i<2){ m=keyscan();if (m<10){ A[i]=keyscan();i++;} } 再将输入的两个数合成一个数即可 value=A[1]*10十A[0];同样可以获得3位数...