矩阵键盘扫描
矩阵键盘的原理图
根据矩阵键盘的原理图可知,当没有按键按下时,P1=0xf0;然后依次将P1^0~P1^3单独置低电平,其他置高,再扫描各列的状态,来判断是哪个按键按下,比如,将P1^0输出低电平,其他的引脚都输出高电平,即P1=0xfe,那么当第1行有按键按下时P1的相应值为,
1X1(01111110=0x7e)1X2(10111110=0xbe)1x3(11011110=0xde)1X4(11101110=0xee)
将P1^1输出低电平,其他的引脚都输出高电平,即P1=0xfd,那么当第2行有按键按下时P1的相应值为,
2X1(01111101=0x7d)2X2(10111101=0xbd)2x3(11011101=0xdd)2X4(11101101=0xed)
将P1^2输出低电平,其他的引脚都输出高电平,即P1=0xfd,那么当第2行有按键按下时P1的相应值为,
3X1(01111011=0x7b)3X2(10111011=0xbb)3x3(11011011=0xdb)3X4(11101011=0xeb)
将P1^3输出低电平,其他的引脚都输出高电平,即P1=0xfd,那么当第2行有按键按下时P1的相应值为,
4X1(01110111=0x77)4X2(10110111=0xb7)4x3(11010111=0xd7)4X4(11100111=0xe7)
/*
程序中用到了置位,如果检测第一行时置位为0xfe,是为了初始化一下P1口,初始化后
*/
#include《reg52.h》
unsignedintVal;
voidDelay(unsignedintt);
voidmain(void)
{
while(1)
{
if(P1!=0xf0