/**************************************************
实验名称:矩阵键盘实验一
实验目的:按下16个矩阵键盘依次在数码管上显示1-16的
平方。如按下第一个显示1,第二个显示4...
实验备注:
**************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit DUAN = P2^6;
sbit WEI = P2^7;
uchar code duan_table[]=
{0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar code wei_table[]=
{0xfe,0xfd,0xfb,
0xf7,0xef,0xdf};
void delay_1ms(uchar);
void display(uchar,uchar,uchar);
uchar scan_mkey(uchar);
void main()
{
uchar bai, ge, shi,num_tem;
uint num;
num_tem = 0;
num = 0;
while(1)
{
num_tem = scan_mkey(num_tem);
num = num_tem * num_tem;
bai = num/100;
shi = num%100/10;
ge = num%10;
display(bai,shi,ge);
}
}
void delay_1ms(uchar x)
{
uchar i, j;
for(i = 0; i < x; i++)
for(j = 0; j < 110; j++);
}
void display(uchar bai,uchar shi, uchar ge)
{
DUAN = 1;
P0 = duan_table[bai];
DUAN = 0;
P0 = 0xff;
WEI = 1;
P0 = wei_table[0];
WEI = 0;
delay_1ms(1);
DUAN = 1;
P0 = duan_table[shi];
DUAN = 0;
P0 = 0xff;