永发信息网

我用矩阵按键来控制一个数码管,显0----9,但程序实际运无反映,请高手指导

答案:3  悬赏:0  手机版
解决时间 2021-03-01 10:44
我用矩阵按键来控制一个数码管,显0----9,但程序实际运无反映,请高手指导
最佳答案
void keyscan()
  {
  P2=0xfe;
  temp=P2;
  temp=temp&0xf0;
  while(temp!=0xf0)
  {
  delay(5);
  temp=P2;
  temp=temp&0xf0;
  while(temp!=0xf0)
  {
  temp=P2;
  switch(temp)
  {
  case 0xee:num=0;
  break;
  case 0xde:num=1;
  break;
  case 0xbe:num=2;
  break;
  case 0x7e:num=3;
  break;
  }
  while(temp!=0xf0)
  {
  temp=P2;
  temp=temp&0xf0;
  }
  flag=flag+1;
  }

  }

  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=4;
  break;
  case 0xdd:num=5;
  break;
  case 0xbd:num=6;
  break;
  case 0x7d:num=7;
  break;
  }
  while(temp!=0xf0)
  {
  temp=P2;
  temp=temp&0xf0;
  }
  flag=flag+1;
  }

  }

  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=8;
  break;
  case 0xdb:num=9;
  break;
  case 0xbb:num=10;
  break;
  case 0x7b:num=11;
  break;
  }
  while(temp!=0xf0)
  {
  temp=P2;
  temp=temp&0xf0;
  }
  flag=flag+1;
  }
  }

  P1=0xf7;
  temp=P1;
  temp=temp&0xf0;
  while(temp!=0xf0)
  {
  delay(5);
  temp=P1;
  temp=temp&0xf0;
  while(temp!=0xf0)
  {
  temp=P1;
  switch(temp)
  {
  case 0xe7:num=12;
  break;
  case 0xd7:num=13;
  break;
  case 0xb7:num=14;
  break;
  case 0x77:num=15;
  break;
  }
  while(temp!=0xf0)
  {
  temp=P1;
  temp=temp&0xf0;
  }
  flag=flag+1;
  }
  }
  }

  这是键扫程序,肯定有用的
全部回答
汇编的你懂吗?需要的话我教你追问不懂,还没开始学学,谢谢。
按键扫描,把I/0口的高低位相加
void Keyscan(void)
{
uchar r, c,key_value;
KEY_DATA = 0xf0; // 发全0行列扫描码,列线输入
key_value=KEY_DATA;

if( key_value!= 0xf0) // 若有键按下
{
delay_ms(4);
if(key_value!=0xf0)
{
r=key_value; //保存行输入码
KEY_DATA=0x0f; // 发全0行列扫描码,列线输入
key_value=KEY_DATA;
if(key_value!=0x0f) // 若有键按下
{
c=key_value; //保存列输入码
}
//键盘编码
}
key=(r+c);
}
}
利用上面所加的结果,生成键码表,S=0到S=15,
在主函数中,依据S的值做你想完成的操作
uchar KeyDeal(uchar Key)
{
if(Key!=0)
{

switch(Key)
{

case 0xe7: S=0; break;
case 0xeb: S=1; break;
case 0xed: S=2; break;
case 0xee: S=3; break;
case 0xd7: S=4; break;
case 0xdb: S=5; break;
case 0xdd: S=6; break;
case 0xde: S=7; break;
case 0xb7: S=8; break;
case 0xbb: S=9; break;
case 0xbd: S=10; break;
case 0xbe: S=11; break;
case 0x77: S=12; break;
case 0x7B: S=13; break;
case 0x7D: S=14; break;
case 0x7E: S=15; break;

}

}
return (S); // 返回键编码
}
追问理论看来可以,但我试了好像行不通。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
Premiere CS5 不能读取AVCHD(MTS)音频
(1/2)的(log2底5)次方还有[2的(log2底5)次
2011年存农行5年30万的利息是多少
美味时差私房烘焙地址有知道的么?有点事想过
如何淸洗东风本田思域缸盖废气阀
拼多多竞价是什么意思
请问转弯让直行是什么意思、是让同车道的后车
【garage是什么意思】businessgarage是什么意
我也是农村的怎么了,不要瞧不起农村人
经纪人赚钱多还是歌手赚钱多
我今天遇到一件极其恼火的事情,我在酒吧有唱
在英国读完研究生可不可以拿到绿卡
陈紫函演过的电视剧 陈紫函主演哪些电视剧
下步蔸在什么地方啊,我要过去处理事情
【灵位牌怎么写】祭祀牌位怎么写
推荐资讯
韩饰时尚生活时集店地址有知道的么?有点事想
北站西路/百户路(路口)地址在什么地方,想过
有没有知道空调冷凝水处理方法的
阿胶蒸着吃起来为什么会有鸡肉味儿?
交通事故 死亡 主责 到检查院 积极赔偿家属
请问,高级别的法师进来下,请问 技能先学那个
康熙的兰奇儿反了吗
一个男生对一个女生发比心的图是什么意思
黔味食府地址在什么地方,想过去办事
天谷图文怎么去啊,有知道地址的么
天蝎女和射手女哪个更厉害
银汞补牙材质有没有毒
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?