数码管显示4X4矩阵键盘按键号说明:按下任意键时,数码管都会显示其键的序号,扫描程序首先判断按键发生在哪一列,然后根据所发生的行附加不同的值,从而得到按键的序号。
#include#defineucharunsignedchar#defineuintunsignedintucharcodeDSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00};//上次按键和当前按键的序号,该矩阵中序号范围0~15,16表示无按键ucharPre_KeyNo=16,KeyNo=16;voidDelayMS(uintx){uchari;while(x--)for(i=0;i<120;i++);}//矩阵键盘扫描voidKeys_Scan(){ucharTmp;P1=0x0f;//高4位置0,放入4行DelayMS(1);Tmp=P1^0x0f;switch(Tmp)//判断按键发生于0~3列的哪一列{case1:KeyNo=0;break;case2:KeyNo=1;break;case4:KeyNo=2;break;case8:KeyNo=3;break;default:KeyNo=16;//无键按下}P1=0xf0;//低4位置0,放入4列DelayMS(1);Tmp=P1>>4^0x0f;switch(Tmp)//对0~3行分别附加起始值0,4,case1:KeyNo+=0;break;case2:KeyNo+=4;break;case4:KeyNo+=8;break;case8:KeyNo+=12;}}voidmain(){P0=0x00;while(1){P1=0xf0;if(P1!=0xf0)Keys_Scan();//获取键序号if(Pre_KeyNo!=KeyNo){P0=~DSY_CODE[KeyNo];Pre_KeyNo=KeyNo;}DelayMS(100);}}
举一反三
- 17数码管显示4×4键盘矩阵按键.zip17数码管显示4×4键盘矩阵按键
- 下述键盘扫描子程序的正确顺序是()。1判断键盘上有无按键按下;2按键去抖动;3判别按键的键号;4等待键释放,读出键号。 A: ①②③④ B: ①③④② C: ②①③④ D: ①③②④
- 用数码管显示矩阵式按键的键值:学会判断矩阵式按键是否按下,并将其键值送给数码管显示
- 【资料题】单片机 P1 口连接 8 个独立按键, P2 口连接一个数码管,按下其中任意一个按键后,数码管显示该按键值,无按键按下时数码管显示 0
- 设计一个4*4矩阵键盘,16个键分别对应数字0~9、字母A~F,当有键按下时,数码管显示按键值;无键按下时,数码管不显示。
内容
- 0
矩阵式键盘采用扫描法识别按键的4个步骤( )、( )( )和( )。 A: (1)判断键盘上是否有键按下(2)求出按下键的键号(3)去除键的抖动(4)判断按键是否释放 B: (1)判断键盘上是否有键按下(2)判断按键是否释放(3)去除键的抖动(4)求出按下键的键号 C: (1)判断键盘上是否有键按下(2)求出按下键的键号(3)判断按键是否释放(4)去除键的抖动 D: (1)判断键盘上是否有键按下(2)去除键的抖动(3)求出按下键的键号(4)判断按键是否释放
- 1
矩阵式键盘列扫描法识别按键的步骤为()。 A: 判断有无按键按下,键盘扫描,取得闭合按键的行、列号。 B: 用计算法或查表法得到键值。 C: 判断闭合按键是否被释放,如没释放,则继续等待。 D: 将闭合键的键值保存,同时转去执行该闭合键的功能。
- 2
简答题 (16.0分) 难度: 易[br][/br]编程: 对编号为1, 2, 3, 4的4个按键进行识别, 通过1个数码管显示按下的按键的键值 (只能按下一个键) 。[br][/br]用开发板上的4个按键和最低位数码管显示。[br][/br]我的答案
- 3
扫描法识别按键的编程包括以下几种。1:判断有无按键按下2:按键扫描取得闭合键的行,列号3:用计算法或查表法得到键值4:判断闭合键是否释放,如没有释放则继续等待。5:将闭合键的键值保存,同时转去执行该闭合键的功能。
- 4
独立键盘的按键扫描程序需解决以下问题( )。 A: 判断是否有键按下 B: 去抖动 C: 识别按键,保存键号 D: 以上都正确