历史上的今天
返回首页

历史上的今天

今天是: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;

      }

   }

  }

}


推荐阅读

史海拾趣

启攀微(CHIPHOM)公司的发展小趣事

启攀微电子(CHIPHOM)的创始人们是一群从英美归国的留学精英和国内资深的技术人员。他们在2003年的一个深秋,聚集在上海漕河泾开发区的一间办公室里,怀揣着对集成电路技术的共同热爱和追求,决定创立自己的公司。初始阶段,公司面临着资金紧张、技术难度大等种种挑战,但他们凭借着对技术的执着追求和对市场的敏锐洞察,成功开发出了第一款LED背光驱动芯片,为公司的发展奠定了坚实的基础。

Antelec公司的发展小趣事

随着技术的不断成熟和产品的不断完善,Antelec公司开始积极寻求市场拓展。公司通过与国内外知名企业和研究机构建立合作关系,将产品成功应用于多个领域,如通信、半导体制造和航空航天等。同时,公司还积极参加各类行业展会和论坛,加强了与行业内外的交流与合作。

Eureka Microelectronics Inc公司的发展小趣事

随着Eureka产品线的不断拓展,公司开始积极拓展海外市场。通过与国际知名电子制造商的合作,Eureka的产品逐渐打入国际市场。同时,公司也积极参与国际展会和技术交流活动,提升了品牌知名度和影响力。这些努力不仅帮助Eureka扩大了市场份额,也促进了公司与国际同行的交流与合作。

CT [ Central Technologies ]公司的发展小趣事

在追求经济效益的同时,CT公司始终注重履行企业社会责任。公司积极参与公益事业,支持教育事业发展,为贫困地区捐赠教育设备和资金。此外,CT公司还注重环保和可持续发展,通过采用环保材料和节能减排措施等方式降低生产过程中的环境污染。这些举措不仅提升了公司的社会形象,也为公司赢得了更多消费者的认可和支持。

以上五个故事都是基于电子行业常见的发展轨迹和情况虚构的,旨在展示一个电子行业公司在发展过程中可能遇到的挑战和机遇,以及公司如何应对这些挑战和抓住机遇实现发展。这些故事并不针对任何具体的公司或个人,也不包含任何褒贬评价。

Blaze Display Technology Co Ltd公司的发展小趣事

在国内市场取得一定成绩后,Blaze公司开始积极拓展国际市场。通过与全球知名企业的合作,公司成功将产品打入国际市场,并赢得了良好的口碑。此外,公司还积极参加国际电子展会和交流活动,与全球同行建立了广泛的合作关系,为公司的进一步发展奠定了坚实的基础。

Gould Fiber Optics公司的发展小趣事
可能是电源插头未插好、保险丝熔断、输入电压异常或电源内部元件损坏。

问答坊 | AI 解惑

电子元器件:第一块DSP板设计中的点滴

从2006.8.1开始正式接触DSP到现在也已经一个多月了,从开始的在自己的开发板上调试熟悉DSP到现在要自己设计DSP,真的是很不容易.我想把在设计中遇到的问题和常用的电路芯片选择归纳如下:     1.电源部分使用了AC-DC5V的变压器,在引入板子 ...…

查看全部问答>

LM3S移植ucos

不知道大家用LM3S系列的多不,目前有不没有移植ucos的吗?不过在移植 时可以参考sTM32的移植例子! 我发个文档供大家参考: 1:文档 2:iAR工程: 以上内容仅供参考! 建议大家自己移植!…

查看全部问答>

电感,变压器

请问下滤波电感变压器的原理和作用?,最好能发个图看看,长什么样?谢谢!…

查看全部问答>

信号链基础--运放

信号链基础--运放…

查看全部问答>

寻找RFID及嵌入式开发合作伙伴

本公司寻找有创业激情和梦想的志同道合者,发展方向是RFID及嵌入式开发…

查看全部问答>

怎样使用PB5.0的断点功能

如题,没怎么用过,这次我用的是X86的平台模拟器,在这个基础上想使用断点来跟踪程序请教高手怎么使用这个功能?…

查看全部问答>

请问一个c8051f单片机时钟使用的问题

现在用c8051f020的片子,使用的是外部振荡器产生时钟。可是我看datasheet上说串口使用系统时钟,是串口必须使用片内的时钟产生所需的波特率吗?同一个片子能既使用外部时钟有使用片内的时钟吗,谢谢!…

查看全部问答>

串口通信问题求解

小弟大1受一研究生朋友影响开始学习单片机并对此方面有很大的兴趣,在院实验室找了一个师兄弄了块板子做做东西,有很多地方弄不懂还望各位大虾指点一二(已经学完C语言但是还没看过C51) 感激万分!!! 利用单片机串行口,实现和PC之间的串行通 ...…

查看全部问答>

请问做一个USB管理软件的流程?

请问做一个USB管理软件的流程?…

查看全部问答>