单片机实验:矩阵式键盘输入识别
1.实验内容
编写 c 语言程序,设计一个 4X4 的矩阵键盘,键盘的号码 0~15,要求编写出一个键盘输入扫描程序,要求单片机能根据键盘排列顺序,能将按下去键盘号正确识别出来,并采用两个数码管分别键盘号码的个位和十位。
2.Proteus参考电路图
3.实验程序
#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit L1=P1^0;sbit L2=P1^1;sbit L3=P1^2;sbit L4=P1^3;sbit L5=P3^0;uchar dis[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uchar key;uint time;void delay(time){uint j;for(j=0;j<time;j++);}void display(uchar k){L5=0;delay(5);L5=1;P0=dis[k/10];delay(5);P2=dis[k%10];}void main(){uchar temp;uchar i;key=0x00;while(1){P1=0xef;for(i=0;i<=3;i++){if(L1==0) {key=0+4*i;}if(L2==0) {key=1+4*i;}if(L3==0) {key=2+4*i;}if(L4==0) {key=3+4*i;}delay(500);temp=P1;temp=temp|0x0f;temp=temp<<1;temp=temp|0x0f;P1=temp;}display(key);}}