打印

新手寻帮助

[复制链接]
1166|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qinjianbo|  楼主 | 2009-10-23 16:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>

unsigned char Table[16]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, //0,1,2,3,4,5,6
  0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,};//7,8,9,A,B,C,D,E,F,

void delay(unsigned char m)                                        //延时
{
        unsigned char a,b;
        for(a=m;a>0;a--)
                for(b=100;b>0;b--);
}
unsigned char temp,key,number_key;
unsigned char Key_scan();   //键盘扫描

void main()
{
        P0=0xff; //先关闭显示数据
        P2=0xff; //先关闭数码管
        number_key=0xff;
        while(1)
        {       
                P2=0x00;                                //打开数码管
                number_key=Key_scan();  //将返回的键值赋给变量
                P0=number_key;                        //送键值显示
                delay(5);
               
        }
}
unsigned char  Key_scan()     //键盘扫描
{
        P1=0x0f;                         //读低4位
        temp=P1;
        temp=temp&0x0f;
        temp=~(temp|0xf0);                         //读取
        if(temp==1)
                key=1;
        else if(temp==2)
                key=2;
        else if(temp==4)
                key=3;
        else if(temp==8)
                key=4;
       
        P1=0xf0;                                //读高4位
        temp=P1;
        temp=temp&0xf0;
        temp=~(temp|0x0f);  //把高4位得到的按键值转化成数字
       
        if(temp==16)
                key=key+0;
        else if(temp==32)
                key=key+4;
        else if(temp==64)
                key=key+8;
        else if(temp==128)
                key=key+12;
               while(!p1);                 
        return number_key=Table[key-1];

}  请电子朋友帮我看下这个键盘扫描程序怎样修改才可以稳定的显示数字 现在的情况是按下键的时候数字会不稳定按2次或3次才是需要的数字  我是新手请大家指点一下 非常感谢

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

34

帖子

0

粉丝