智能车制作

标题: 上图,来高手吧、 [打印本页]

作者: 恋May    时间: 2011-8-15 19:50
标题: 上图,来高手吧、
[attach]8837[/attach]
int keyscan()
{
uchar temp,z,x;
DDRB=0xf0;
PORTB=0x0f;
x=PORTB&0x0f;
if(x!=0x0f)
{
  delay1ms(10);
  x=PORTB&0x0f;
  if(x!=0x0f)
  {
   temp=PORTB&0x0f;
   DDRB=0x0f;
   PORTB=0xf0;  
   z=temp|PORTB;
   x=PORTB&0xf0;
   while(x!=0xf0)//松手检测
   {
    x=PORTB&0xf0;  
   }
   switch(z)
   {
    case 0xee: num =0; break;
         case 0xde: num =4; break;
         case 0xbe: num =8; break;
         case 0x7e: num =12; break;
         case 0xed: num =1; break;
         case 0xdd: num =5; break;
         case 0xbd: num =9; break;
         case 0x7d: num =13; break;
         case 0xeb: num =2; break;
         case 0xdb: num =6;break;   
         case 0xbb: num =10;break;
         case 0x7b: num =14;break;
         case 0xe7: num =3;break;
         case 0xd7: num =7;break;
         case 0xb7: num =11;break;
         case 0x77: num =15;break;
         default:num=988;
   }
  }
}
return num;
}



只要帮我 改一下 这个 键盘 扫描的 函数,只要我按下键,然后 return的 值是 与之对应的 数字 比如 0  、1   、2  、3  之类的就行。
搞了好久 没行。  键盘的 图 就是 上图,用的是 PB口。等待 高人。圣人,指点迷津的时候到了,也没那么夸张,能有帮助的回复,都万分感谢。
作者: 恋May    时间: 2011-8-15 19:50
等待能人啊,谢谢了= =
作者: 恋May    时间: 2011-8-15 19:51
额,谢谢,坐等。
作者: 恋May    时间: 2011-8-15 19:52
补充一下 键盘 行 从上往下 是 PB0~PB3

从左往右 列 是 PB4~PB7  


这等于 是到 题目,请爱钻研的 朋友 来研究一下。
作者: flyer1988hh    时间: 2011-8-16 00:25
提示: 作者被禁止或删除 内容自动屏蔽
作者: turf456    时间: 2011-8-16 00:34
木看懂
作者: sonwendi    时间: 2011-8-16 01:02
回复 5# flyer1988hh


    这个只是个方法~估计LZ是用不上了~
作者: sonwendi    时间: 2011-8-16 01:11
回复 1# 恋May


    感觉程序没太大问题,出错的现象是什么?
作者: 恋May    时间: 2011-8-16 10:49
一切从0开始。今天早上起来自己从头编写了一个 扫描程序,问题解决了。马上来上 程序。
作者: 恋May    时间: 2011-8-16 10:50
int key(void) {
      int readkey;
      int x_temp,y_temp;
      DDRB=0X0f;
      PUCR_PUPBE=1;
      PORTB=0Xf0;
      if(PORTB!=0xf0) {
       delay(1000);
       if(PORTB!=0xf0) {
        PORTB&=0xf0;
        x_temp=PORTB;
        DDRB=0Xf0;
        PORTB=0X0f;
        if(PORTB!=0x0f){
         PORTB&=0X0f;
         y_temp=PORTB;
         readkey=(x_temp|y_temp);
         switch(readkey) {
                case 0xee:num=1;break;  //1
                case 0xde:num=2;break;
                case 0xbe:num=3;break;
                case 0x7e:num=4;break;
                case 0xed:num=5;break;
                case 0xdd:num=6;break;
                case 0xbd:num=7;break;
                case 0x7d:num=8;break;
                case 0xeb:num=9;break;
                case 0xdb:num=10;break;
                case 0xbb:num=11;break;
                case 0x7b:num=12;break;
                case 0xe7:num=13;break;
                case 0xd7:num=14;break;
                case 0xb7:num=15;break;
                case 0x77:num=16;break;
   
              }
          }
        }
      }
      return num;
      }
作者: 恋May    时间: 2011-8-16 10:52
希望自己做小车也是一样,不是总去模仿,而是在拥有知识的基础上,自己想到解决问题的办法,要拥有创新的意识和技术。相信什么问题都能解决的。我是学习计算机的,现在开始转向硬件了,多向前辈们学习学习啊。
作者: brucelee    时间: 2012-2-18 15:49





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2