3750|8

2

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

AVR单片机矩阵键盘控制电机 [复制链接]


AVR单片机矩阵键盘控制电机,PE口接键盘,pc口接电机,电机正转是0x28,我不知道哪里有问题,求帮忙

#include <iom128v.h>
#define uchar unsigned char
#define uint unsigned int
uchar tab[]={0x28,0x28,0x28,0x28};
void delay(uint k)
{
 uint m,n;
     for(m=0;m<k;m++)
	 {
	 for(n=0;n<114;n++);
	 }
}



uchar ScanKey()
{
 uchar temp,temp1,key;
 temp=PIND;
 temp&=0x0F;
 switch(temp)
 {
    case 0x0E:
	{
	     DDRF=0x0F;
		 PORTF=0xF0;
		 delay(5);
		 temp1=PINF;
		 temp1&=PINF;
		 switch(temp1)
		 {
		    case 0xE0:
			key=0;
			break;
			case 0xD0:
			key=1;
			break;
			case 0xB0:
			key=2;
			break;
			case 0x70:
			key=3;
			break;
		    default:
		    key=0;
		    break;
	}
	DDRF=0xF0;
    PORTF=0x0F;
	break;
 }
     case 0x0D:
	    {
	         DDRF=0x0F;
		     PORTF=0xF0;
		     delay(5);
		     temp1=PINF;
		     temp1&=PINF;
		     switch(temp1)
		     {
		     case 0xE0:
			 key=0;
			 break;
			 case 0xD0:
			 key=1;
			 break;
			 case 0xB0:
			 key=2;
			 break;
			 case 0x70:
			 key=3;
			 break;
		     default:
		     key=0;
		     break;
	}
	DDRF=0xF0;
    PORTF=0x0F;
	break;
 }
   case 0x0B:
	  {
	     DDRF=0x0F;
		 PORTF=0xF0;
		 delay(5);
		 temp1=PINF;
		 temp1&=PINF;
		 switch(temp1)
		 {
		    case 0xE0:
			key=0;
			break;
			case 0xD0:
			key=1;
			break;
			case 0xB0:
			key=2;
			break;
			case 0x70:
			key=3;
			break;
		    default:
		    key=0;
		    break;
	}
	DDRF=0xF0;
    PORTF=0x0F;
	break;
 }
   case 0x07:
	   {
	     DDRF=0x0F;
		 PORTF=0xF0;
		 delay(5);
		 temp1=PINF;
		 temp1&=PINF;
		 switch(temp1)
		 {
		    case 0xE0:
			key=0;
			break;
			case 0xD0:
			key=1;
			break;
			case 0xB0:
			key=2;
			break;
			case 0x70:
			key=3;
			break;
		    default:
		    key=0;
		    break;
	    }
	   DDRF=0xF0;
       PORTF=0x0F;
	   break;
     }
 default:
 key=0;
 break;
}
return(key);
}
void main()
{
  uchar temp,keynum;
  DDRF=0XF0;
  PORTF=0X0F;
  DDRC=0XFF;
  PORTC=0X20;
  while(1)
  {
  temp=PINF;
  temp&=0x0F;
  if(temp==0x0F)
  {
  continue;
  }
  else
  {
  delay(100);
  temp=PINF;
  temp&=0x0F;
  }
  if(temp==0x0F)
  {
  continue;
  }
  else
  {
  keynum=ScanKey();
  PORTC=tab[keynum];
  }
  while(temp!=0x0F)
  {
  temp=PINF;
  temp&=0x0F;
  }
}
}
此帖出自单片机论坛

最新回复

[attach]72668[/attach]矩阵键盘样例程序硬件测试通过 [ 本帖最后由 15075039ZQ 于 2011-9-21 20:00 编辑 ]  详情 回复 发表于 2011-9-17 18:18
点赞 关注
 

回复
举报

165

帖子

2

TA的资源

纯净的硅(高级)

沙发
 

回复 楼主 q350699658 的帖子

问题问得一点不好,你应该把出现的问题说出来,有什么现象,大家看了才能给你分析下,你就放上一段程序,别人首先要一步步看懂你的程序才行,然后才能分析对于否,有时看完了没有硬件现象也未必能分析的出来。希望楼主说清楚问题根源,说到重点上。
此帖出自单片机论坛
 
 

回复

2

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
那个,不好意思,我初学的,就是按键盘上的键没反应,电机不会动,在线连接上应该没问题
此帖出自单片机论坛
 
 
 

回复

1万

帖子

141

TA的资源

版主

4
 
 

回复

7230

帖子

195

TA的资源

五彩晶圆(高级)

5
 

回复 4楼 chunyang 的帖子

对的 贴源程序不太好 别人看起来也麻烦
此帖出自单片机论坛
 
 
 

回复

350

帖子

0

TA的资源

纯净的硅(中级)

6
 
源代码没的注释。呼呼!最好讲下原理!
此帖出自单片机论坛
 
 
 

回复

187

帖子

0

TA的资源

一粒金砂(中级)

7
 
呵呵,纯贴代码大家看的都费劲
此帖出自单片机论坛
 
个人签名油画|http://www.chndafen.com
 
 

回复

165

帖子

2

TA的资源

纯净的硅(高级)

8
 

回复 楼主 q350699658 的帖子

那就可能是程序的问题,好像你的程序好复杂
此帖出自单片机论坛
 
 
 

回复

165

帖子

2

TA的资源

纯净的硅(高级)

9
 

矩阵键盘样例程序硬件测试通过

矩阵键盘样例程序硬件测试通过

[ 本帖最后由 15075039ZQ 于 2011-9-21 20:00 编辑 ]

4X4KEY.rar

1.88 KB, 下载次数: 2

此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表