历史上的今天
返回首页

历史上的今天

今天是:2025年03月25日(星期二)

正在发生

2021年03月25日 | MSP430矩阵式按钮驱动程序

2021-03-25 来源:eefocus

#include "msp430x14x.h"

unsigned char LineScan[4]={0xef,0xdf,0xbf,0x7f}; //列值列举


void ADD()

{

  P4OUT+=1;

}


void SUB()

{

  P4OUT-=1;

}


unsigned int key_check(void)  //检测是否有按键按下

{

 unsigned char temp;      

 P1DIR=0xf0;                  //定义P1.4~P1.7为输出

 temp=P1IN & 0x0f;          

 if(temp!=0x0f)

   return 1;

 else

   return 0;


unsigned char scan_key(void)   //扫描对应按键的键号

{

P1DIR=0xf0;

unsigned  char count;

unsigned char i,temp,m,n;    //m为列的值,n为行的值

unsigned int flag=0;

for(i=0;i<4;i++)               //列扫描

{

  P1OUT=LineScan[i];             //获取扫描的列

  temp=P1IN&0x0f;

 

   if(temp==0x07)                //为第一行

     {n=0;                       //记录按下按钮的行

      flag=1;                    //标志检测出来

      break;}

   else if(temp==0x0b)           //为第二行

     {n=1;

      flag=1;

      break;}

   else if(temp==0x0d)           //为第三行

     {n=2;

      flag=1;

      break;}

   else if(temp==0x0e)           //为第四行

     {n=3;

      flag=1;

      break;}

}

 if(flag==1)

  {m=i;

  flag=0;

  count=n*4+m;

     switch(count)

       {

         case 0: {;break;}

         case 1: {;break;}

         case 2: {;break;}

         case 3: {;break;}

         case 4: {;break;}

         case 5: {;break;}

         case 6: {;break;}

         case 7: {;break;}

         case 8: {;break;}

         case 9: {;break;}

         case 10:{;break;}

         case 11:{SUB();break;}

         case 12:{;break;}

         case 13:{;break;}

         case 14:{;break;}

         case 15:{ADD();break;}

       }

     return;

    }

 else

   return;

}


void Delay(char wDelay)  //延时子程序

{

  while(wDelay!=0)

    wDelay--;

}


int main( void )

{

  WDTCTL = WDTPW + WDTHOLD;

  P4DIR =0xff;

  P4OUT=0X00;

  while(1)

  {

   if(key_check())

   {Delay(10000);

      if(key_check()) 

      {

        scan_key();

        while(key_check());

        P1OUT=0x0f;

      }

   }

  }

}



推荐阅读

史海拾趣

ARMKEIL Microcontroller Tools公司的发展小趣事

2005年,对于Keil公司来说是一个具有里程碑意义的年份。在这一年,英国的ARM公司看中了Keil在嵌入式系统开发工具领域的领先地位和技术实力,决定对其进行收购。收购完成后,Keil公司正式成为ARM公司的一部分,继续专注于嵌入式系统开发工具的研发和销售。这一事件标志着Keil公司进入了一个新的发展阶段,也为其未来的发展奠定了坚实的基础。

Coors Components Inc公司的发展小趣事

随着电子行业的不断发展,智能化、绿色化成为了行业的新趋势。Coors Components Inc公司敏锐地捕捉到这一趋势,加大了对智能电子产品和环保材料的研发力度。通过不断推出符合市场需求的新产品,公司成功抓住了行业发展的机遇,实现了快速发展。

振华新云(CEC)公司的发展小趣事

背景:随着电子行业的快速发展,振华新云不断加大技术创新和产品研发力度。

内容:公司积极引进先进技术和设备,加强与国际先进企业的合作与交流。同时,注重培养高素质的技术人才队伍,为技术创新和产品研发提供有力支持。

成果:通过持续不断的技术创新和产品研发,振华新云在电子元器件领域取得了多项重要成果,如开发出具有国际先进水平的钽电解电容器等产品,进一步巩固了公司在行业中的领先地位。

Advanced Semiconductor, Inc.公司的发展小趣事

随着科技的快速发展,ASI不断加大对研发的投入,努力突破技术瓶颈。在某一时期,公司成功研发出一款具有划时代意义的半导体芯片,这款芯片不仅性能卓越,而且功耗更低,极大地提升了电子设备的性能和使用体验。这一技术突破使得ASI在市场上获得了更多的份额,并奠定了公司在半导体行业的领先地位。

Advantech公司的发展小趣事

随着全球对环保和可持续发展的重视,ASI也积极响应这一趋势,致力于研发更加环保、节能的半导体产品。公司不断投入资源研发低功耗、高性能的芯片技术,为推动绿色电子产业的发展贡献力量。同时,ASI也对未来充满信心,将继续加大在新技术、新应用领域的投入,为半导体行业的未来发展贡献更多的智慧和力量。

这五个故事展示了Advanced Semiconductor, Inc.在电子行业中的发展历程和取得的成就。从创立初期的艰难探索到如今的行业领先地位,ASI凭借其独特的技术、创新的精神和敏锐的市场洞察力,不断突破自我、超越自我,成为了半导体行业的一颗璀璨明星。

BOSER公司的发展小趣事

随着科技的不断发展,BOSER公司意识到只有不断创新才能在激烈的竞争中立于不败之地。因此,公司投入大量研发资源,致力于开发具有自主知识产权的新技术。经过不懈努力,BOSER成功推出了一系列创新产品,引领了电子行业的技术发展潮流。

问答坊 | AI 解惑

1602中文资料 附调试图片

LCD1602,大概介绍下 1602采用标准的16脚接口,其中:   第1脚:VSS为地电源 第2脚:VDD接5V正电源 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通 ...…

查看全部问答>

超高频无源RFID标签的一些关键电路的设计

来活跃下气氛 ,HOHO 本文针对超高频无源RFID 标签芯片的设计,给出了一些关键电路的设计考虑。文章从UHF RFID标签的基本组成结构入手,先介绍了四种电源恢复电路结构,以及在标准CMOS 工艺下制作肖特基二极管来组成倍压电路的解决方案。然后针对 ...…

查看全部问答>

深大DSP系统设计课件3

第三部分 TI DSP软件开发工具CCS的使…

查看全部问答>

wince开机内存占用问题?

如上图,红色指示区域是wince进入桌面后程序内存的使用量。有9M多呢 这样子正常吗?启动应用都没运行呢! 哪位兄台解答一下啊? …

查看全部问答>

请问如何实现将抓取的图片通过GPRS模块(mc39i)进行无线传输

拨号上网的功能已经实现了 操作系统是linux,最后要移植到arm-linux上去 不知怎么编程能才能实现两端的文件发送和接受这种功能 哪位做过该方面的麻烦不吝赐教下,说一下思路或流程 最好详细点,谢谢…

查看全部问答>

Visual studio 2005上的wince5.0嵌入式开发,高手们进来看看啊

Visual studio 2005上的wince5.0嵌入式开发,就是在PDA上播放个语音文件,    [System.Runtime.InteropServices.DllImport(\"winmm.dll\")]         public static extern long PlaySound(String lpszNam ...…

查看全部问答>

WinCE 6.0 离线安装包 共包含多少个文件啊

     我下载的离线安装包,安装后始终是无法建立OS project,提示WINCEROOR无效,难道是我的离线安装包的问题?…

查看全部问答>

STM8S-DISCOVERY上的stlink可以用在其他板子上吗?

                                 rt…

查看全部问答>

【求助】问下大家,到这一步了,该如何继续?

手头有一块S3C2410的开发板   我想移植UCOS系统 现在已完成的工作:   板子的VIVI已烧写好 UCOS系统代码也已用ADS编译通过   那么接下来该怎么做呢? 该如何把UCOS移植到板子上? 我编写了一个LED的测试实验,该如何一上 ...…

查看全部问答>

易电源学习心得

低輸出電壓紋波 納米模塊在 2 MHz 的固定開關頻率下運\行, 可實現低輸出紋波和高效率的平衡。該模塊 還具有低 ESR 陶瓷電容器的穩定性。使用 一個 10 μF X5R 0805 輸出電容的標準解決方案可實現低於 10mVp-p 的輸出紋波,從而可替代需要較高效率 ...…

查看全部问答>