打印

求大神帮忙

[复制链接]
984|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1394592555|  楼主 | 2014-7-21 14:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚到公司,正在学习msp430,公司安排了个任务,用msp430f149做一个6*6的按键+5个LED灯(可控)+一个串口,比较简单但是现在还不会,求大神帮忙,

相关帖子

沙发
1394592555|  楼主 | 2014-7-21 14:56 | 只看该作者
非常感谢

使用特权

评论回复
板凳
dirtwillfly| | 2014-7-21 20:36 | 只看该作者
有啥困难吗?

使用特权

评论回复
地板
1394592555|  楼主 | 2014-7-22 09:33 | 只看该作者
恩,困难大大的,关键是我还不会,在网上找的都是4*4的,还不会写6*6,所以现在基础很差,需要大神帮忙,写一个让我学习一下,完全自学,感觉入门有点难啊

使用特权

评论回复
5
smilingangel| | 2014-7-22 22:25 | 只看该作者
我还是觉得你先找MSP430单片机的技术支持的提供下开发历程的吧,这个很简单的啦。

使用特权

评论回复
6
houjiakai| | 2014-7-22 22:54 | 只看该作者
百度的

使用特权

评论回复
7
houjiakai| | 2014-7-22 22:54 | 只看该作者
网上没有方案吗

使用特权

评论回复
8
1394592555|  楼主 | 2014-7-23 16:49 | 只看该作者
没有,都是4*4的而且好多弄不对

使用特权

评论回复
9
1394592555|  楼主 | 2014-7-23 16:52 | 只看该作者
其实6*6的按键对照着4*4的写出来了但是我想通过两个数码管显示出来再加上串口,真不会啊,虚妄大神能帮助一下我这个小菜鸟

使用特权

评论回复
10
1394592555|  楼主 | 2014-7-23 17:41 | 只看该作者
#include <msp430x14x.h>
typedef unsigned char uchar;
typedef unsigned int uint;   /***************全局变量***************/
uchar key_pressed; //按键是否被按下:1--是,0--否
uchar key_val;//存放键值
uchar key_flag;//按键是否已放开:1--是,0--否
uchar key_map[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
/*******************************************
函数名称:Init_Keypad
功 能:初始化扫描键盘的IO端口
参 数:无
返回值 :无
********************************************/
void Init_Keypad(void)
{
  P1DIR=0X3f;  //P1.0-P1.5设置为输出
  P1OUT |=0X3f;  //置P1.0-P1.5为高电平
  P2DIR=0XC0;    //P2.6-P2.7设置为输出
  P2OUT |=0XC0;  //置P2.6-P2.7为高电平
  key_flag=0;
  key_pressed=0;
  key_val=0;
}
/*******************************************
函数名称:Check_Key
功 能:扫描键盘的IO端口,获得键值
参 数:无
返回值 :无
********************************************/
void check_key(void)
{
  uchar row,col,tmp1,tmp2;
  tmp1=0x20;
  for(row=0;row<6;row++)  //行扫描
  {
    P1OUT=0X3F;   //P1.0-P1.5全输出1
    P1OUT -=tmp1; //P10-P1.5输出六位中有一个为0
    tmp1>>=1;
    if((P2IN&0X3F)<0X3F)  //是否P2IN的P2.0-P2.5中有一个为0
    {
      tmp2=0x01;  //tmp2用于检测出哪一位为0
   for(col=0;col<6;col++)
   {
     if((P2IN&tmp2)==0x00)
     {
       key_val=key_map[row*6+col];
       return;
     }
     tmp2<<=1;
   }
    }
  }
}
/*******************************************
函数名称:delay
功 能:延时约15ms,完成消抖功能
参 数:无
返回值 :无
********************************************/
void delay()
{
  uint tmp;
  for(tmp=12000;tmp>0;tmp--);
}

/*******************************************
函数名称:Key_Event
功 能:检测按键,并获取键值
参 数:无
返回值 :无
********************************************/

void key_event(void)
{
uchar tmp;
P1OUT&=0X00;  //设置P1OUT全是0,等待按键输入
tmp=P2IN;  //获取P2IN
if((key_pressed==0x00)&&((tmp&0x3f)<0x3f))
{
  key_pressed=1;
  delay();
  check_key();
}
else if((key_pressed==1)&&((tmp&0x3f)==0x3f))
{
  key_pressed=0;
  key_flag=1;
}
else
{
  _NOP();
}
}
   


这样改能实现6*6么?大神帮忙看看

使用特权

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

本版积分规则

1

主题

11

帖子

0

粉丝