今天学习了第十一集:矩阵键盘。并且完成了课后小练:简易洗衣机。
下面是4X4矩阵键盘扫描程序
- void KEY_Task(void) //4*4矩阵键盘扫描
- { //#define key P2 //矩阵键盘的数据口为P2
- u8 key_temp;
- u8 key1,key2;
- key=0xf0;
- key1=key;
- if(key1 != 0xf0 )
- {
- key1=key&0xf0; //确定哪一行的按键按下
- key=0x0f;
- key2=key;
- if(key2 != 0x0f )
- key2=key&0x0f; //确定哪一列的按键按下
- key_temp=key1|key2; //确定按键位置
- }
- // else
- // key_temp = no_key ;
- switch(key_temp) //当确定按键按下后,列举所有的按键情况
- {
- case 0xee: key_value=0;break;
- case 0xde: key_value=1;break;
- case 0xbe: key_value=2;break;
- case 0x7e: key_value=3;break;
- case 0xed: key_value=4;break;
- case 0xdd: key_value=5;break;
- case 0xbd: key_value=6;break;
- case 0x7d: key_value=7;break;
- case 0xeb: key_value=8;break;
- case 0xdb: key_value=9;break;
- case 0xbb: key_value=10;break;
- case 0x7b: key_value=11;break;
- case 0xe7: key_value=12;break;
- case 0xd7: key_value=13;break;
- case 0xb7: key_value=14;break;
- case 0x77: key_value=15;break;
- // case 0xff: key_value=16;break;
- }
- switch(key_value)
- {
- case 0: fen = 10;break; //赋予1-5各按键所表示模式运行时间
- case 1: fen = 11;break;
- case 2: fen = 12;break;
- case 3: fen = 13;break;
- case 4: fen = 14;break;
- case 15: start = 1;break; //第16键设置为启动工作键
- }
- }
复制代码
放上演示视频
详情请浏览我的贴子:
AI8051U教学视频课后小练
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=13824
(出处: 国芯技术交流网站)
|