《51系列单片机_矩阵按键检测》此程序使用 单片机89SC52// 1、 此程序实现矩阵按键的检测功能,按下按键时,数码管显示按键的相应键值
《51系列单片机_矩阵按键检测》
此程序使用 单片机89SC52
// 1、 此程序实现矩阵按键的检测功能,按下按键时,数码管显示按键的相应键值
#include<reg52.h>
void delay_ms(int n) //延时函数,延时n毫秒
{
int i, j;
for(i=0; i<n; i++)
for(j=0; j<110; j++);
}
void display(int num) //控制数码管按位输出显示数值num {
char BitSet[8] =
{
0x7f, 0xbf, 0xdf, 0xef,
0xf7, 0xfb, 0xfd, 0xfe
}; //用于设置(低电平位选)数码管的位选信号,从低到高对应8个数码管
char NumberCode[16] =
{
0x3f, 0x06, 0x5b, 0x4f,
0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c,
0x39, 0x5e, 0x79, 0x71,
}; //用于设置(共阴极)数码管的段选信号,从0~f共16个数值
int n = num, i = 0;
while(n>=0)
{
P0 = 0xff; //关闭数码管当前位的显示,共阳极关闭显示段选信号 P2 = BitSet[i]; //选中数码管对应的位
P0 = ~NumberCode[n%10]; //向数码管的对应位中送入该位数值对应的段选信号 delay_ms(2); //每一位延时显示2ms
P2 = 0xff; //关闭所有位选
i++; //位标记
n=n/10; //取数值n的商
if(n==0) break; //当取得的商为0时退出while循环
}
}