3156|3

83

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

msp430的一个矩阵键盘 困惑 [复制链接]

#include
typedef unsigned char uchar;
typedef unsigned int  uint;

uchar NUM_LED[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                    0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

uchar key_value, key_temp1, key_temp2;



void Delay_1ms(uint i)
{
        uint x,j;
        for(j=0;j         for(x=0;x<=148;x++);       
}
void led_Display(uchar tmp)
  {                  
   
      
      P5OUT=BIT0;
      P4OUT= NUM_LED[tmp/10];  
      Delay_1ms(8);
      
      P5OUT=BIT1;
      P4OUT= NUM_LED[tmp%10];  
      Delay_1ms(8);
      
}

//检查按键,确认键值
uchar Check_Key(void)
{
   uchar i,j, temp, kk,Buffer[4] = {0xfe, 0xfd, 0xfb, 0xf7};
       kk=P1IN;
        for(j=0; j<4; j++)
        {
                kk= Buffer[j];
               
                 Delay_1ms(2);                     
                 temp = 0x01;                                          

                for(i=0; i<4; i++)
                {
                        if(!(kk& temp))
                        {
                                return (i+j*4);                  //返回取得的


                        }
                        temp <<= 1;
                }       
        }
        return 16;
}








void main (void)
{
   WDTCTL = WDTHOLD + WDTPW ;
   P1DIR|=0X0F;
   P1OUT=0X0F;
   P5DIR |= 0x01;
   P5DIR |= 0x02;
   P4DIR=0xff;
   
  while(1)
     {
       P1OUT|=0xFF;;
       key_temp1=Check_Key();
                  if(key_temp1!=16)
                  {
                       Delay_1ms(5);
                       key_temp2=Check_Key();
                       Delay_1ms(2);
                       if((key_temp1==key_temp2)&&(key_temp2!=16))
                       key_value=key_temp1;
                  
                  }
                  
                  led_Display(key_value);
                  
      
        
     }
   
}

P1.0-P1.3是行。
我上电后怎么没有高电平,全是低电平的。对430不熟悉,麻烦大家看看,谢谢。

最新回复

谢谢了,我重新写一个。呵呵  详情 回复 发表于 2010-5-21 13:43
点赞 关注

回复
举报

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
帮你顶

你看看手册 io 定义,

你的程序乱乱的
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
程序太乱了,尤其是检查按键那,括号有问题
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用楼主 kangyonghui 的回复:
#include
typedef unsigned char uchar;
typedef unsigned int uint;

uchar NUM_LED[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

uchar ke……
谢谢了,我重新写一个。呵呵
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表