#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar
smg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x7
1} ;
uchar smg_we[]={0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78} ;
//有一篇 74HC573 必须为高电平
//*************************8
//12M 频率下大约 50US 延时
//**************************
void delay_50us(uint t)
{
uchar j;
for(;t>0;t--)
for(j=19;j>0;j--) ;
}
void delay_50ms(uint t)
{
uchar j;
for(;t>0;t--)
for(j=6245;j>0;j--);
}
/*这个程序可以不用松手检测,因为我们程序首选判断键是否按下
然后发现按下后我们延时 5MS,然后再检测。确实是按下啦。我们再执行
在第二个循环假如我们继续检测,那么消耗时间 10MS 这个短时间中
我们的按键已经松手啦。不会在执行后面的。
*/
void main()
{
uchar key_l,key_h;
uchar key;
while(1)
{
P3=0xf0; //首先给 P3 口赋值
key_l=P3; //从 p3 口读一个数据到 key_l
key_l=key_l&0xf0;
if(key_l!=0xf0) //如果不等于的话,说明有按键按下去
{
delay_50us(100);//稍微延时一下
if(key_l!=0xf0)
{