×
单片机 > 单片机程序设计 > 详情

单片机第8课:矩阵键盘扫描

发布时间:2020-09-03 发布时间:
|

JP3接P0,VCC接+5V,矩阵键盘的左边八个引脚接在P1上面。想要的结果是按第0个按键,数码管显示0,以此类推。注意,这里的数码管是共阳极的。


#include
#define uint unsigned int
#define uchar unsigned char
uchar code table[] = {0xc0, 0xf9, 0xa4, 0xb0, 
					  0x99, 0x92, 0x82, 0xf8, 
					  0x80, 0x90, 0x88, 0x83, 
					  0xc6, 0xa1, 0x86, 0x8e};
uchar code table_scan[] = {0xfe, 0xfd, 0xfb, 0xf7};
void init();
uchar temp;
void main()
{
	uint i_row;
	init();
	while(1)
	{
		for(i_row=0; i_row<4; i_row++)
		{
			P1 = table_scan[i_row];
			temp = P1;
			temp = P1 & 0xf0;
			switch(temp)
			{
				case 0xe0:
				if(i_row==0) P0 = table[0];				
				else if(i_row==1) P0 = table[4];				
				else if(i_row==2) P0 = table[8];				 
				else P0 = table[12];
					break;
				case 0xd0: 
					if(i_row==0) P0 = table[1];				
					else if(i_row==1) P0 = table[5];				
					else if(i_row==2) P0 = table[9];				 
					else P0 = table[13];
					break;
				case 0xb0: 
					if(i_row==0) P0 = table[2];				
					else if(i_row==1) P0 = table[6];				
					else if(i_row==2) P0 = table[10];				 
					else P0 = table[14];
					break;
				case 0x70: 
					if(i_row==0) P0 = table[3];				
					else if(i_row==1) P0 = table[7];				
					else if(i_row==2) P0 = table[11];				 
					else P0 = table[15];
					break;
			}
		}
		
		
	}
}

void init()
{

	P0 = 0xff;
	
}


注意,代码中没有进行消抖操作,是因为这个不消抖不会影响实验结果。





『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
关于89C52单片机11.0592M晶振产生115200波特率的方法