📄 test.c
字号:
/*=======================================================
键盘显示程序
武汉世纪久华科技有限公司
========================================================*/
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit PL1=P1^0; //数码管选通最低位的端口
sbit LCD_E = P1^7;
uint num,temp;
uchar code dis_7[]={0XC0, 0XF9,0XA4,0XB0,0X99,0X92,0X83, 0XF8,0X80,0X98,0xa0,0x83,0xa7,0xa1,0x84,0x8e,0xbf,0x7f };
//数码管显示编码"0" ——————“9”,“a"-----"f"
void delay(uint z) //延时程序,约7.6us
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
uchar keyscan()
{
P2=0xfe; //1111 1110,P2.0置"0"扫描第四列(K4--K16),P2口高位4位置“1”,准备接受数据
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0) //如果P2口高四位不为1111,说明有键按下
{
delay(5); //延时去抖动
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0) //进一步确定是否有键按下
{
temp=P2;
switch(temp) //进一步确定是第四列的哪一行键按下
{
case 0xee:num=0; //如果是第一个行(第四列)
break;
case 0xde:num=12; //如果是第二行(第四列)
break;
case 0xbe:num=8;
break;
case 0x7e:num=4;
break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
}
P2=0xfd; //扫描第三列
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P2;
switch(temp)
{
case 0xed:num=15; //如果是第一个行(第三列)
break;
case 0xdd:num=11; //如果是第二行(第三列)
break;
case 0xbd:num=7;
break;
case 0x7d:num=3;
break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
}
P2=0xfb; //扫描第二列
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P2;
switch(temp)
{
case 0xeb:num=14;
break;
case 0xdb:num=10;
break;
case 0xbb:num=6;
break;
case 0x7b:num=2;
break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
}
P2=0xf7; //扫描第一列
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P2;
switch(temp)
{
case 0xe7:num=13;
break;
case 0xd7:num=9;
break;
case 0xb7:num=5;
break;
case 0x77:num=1;
break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
}
return num; //返回扫描的键值
}
main()
{
while(1)
{
LCD_E = 0;
keyscan(); // 调用键盘扫描程序
PL1=0; // 只选通数码管的最低位
P0=dis_7[num]; //查找数组中(扫描键值对应的)编码,并赋给P0口(数码管的数据端口)
delay(1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -