MSP430矩阵式按钮驱动程序

发布者:chaohuangmeitao最新更新时间:2021-03-25 来源: eefocus关键字:MSP430  矩阵式按钮  驱动程序 手机看文章 扫描二维码
随时随地手机看文章

#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;

      }

   }

  }

}



关键字:MSP430  矩阵式按钮  驱动程序 引用地址:MSP430矩阵式按钮驱动程序

上一篇:MSP430矩阵式按钮驱动程序
下一篇:嵌进式RTOS在MSP430单片机上的实现

推荐阅读最新更新时间:2024-11-13 07:46

MSP430中断程序
#include msp430g2553.h void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P1DIR |= 0x01; // Set P1.0 to output direction P1IE |= 0x10; // P1.4 interrupt enabled P1IES |= 0x10; // P1.4 Hi/lo edge
[单片机]
MSP430F149的ADC12模块
1 概述 MSP430F149的ADC12为SAR型12位AD,共有16路输入通道,其中8路独立的外部输入通道,2路接外部Vref+,Vref-,3路内部通道可分别测内部温度传感器、AVCC、和外部参考源。 P6口第二功能为AD输入端。MSP430F149的10、11分别接外部电压参考源正负极,7脚可将内部电压参考源输出。 ADC12共有18个中断源,公用一个中断向量ADC12_VECTOR。 AD的参考源可选择内部电压参考源或外部电压参考源。内部电压参考源有1.5V,2.5V可选,使用时向ADC12CTL0写入REFON+ REF2_5V就打开了2.5V。外部电压参考源由REF+接入。上电时若不设置参考源,则参考源
[单片机]
MSP430 LaunchPad IO外部中断
#include msp430g2231.h int main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; P1DIR |= 0x01;//设置P1.0口为输出 P1IE |= 0x08;//使能P1.3中断 P1IES |= 0x08;//P1.3口下降沿触发中断 P1IFG &= ~0x08;//中断标志位清零 _EINT();//开总中断 //_BIS_SR(LPM4_bits + GIE); while(1) { } } /*中断服务程序*/ #pragma vector =
[单片机]
51单片机+MPU6050驱动程序,1602显示
想做滚球控制系统,先写了个MPU6050驱动看看 单片机源程序如下: #include REG52.H #include math.h //Keil library #include stdio.h //Keil library #include INTRINS.H typedef unsigned char uchar; typedef unsigned short ushort; typedef unsigned int uint; //**************************************** // 定义51单片机端口 //*******************************
[单片机]
51单片机+MPU6050<font color='red'>驱动程序</font>,1602显示
单片机MSP430入门--理论④--时钟模块-BCSCTL2寄存器
上期大概给大家汇总介绍了,在MSP430环境下的时钟寄存器DOCCTL和BCSCTL1寄存器,每个位代表的意义以及他们的设置方法 本期将重点介绍下,在MSP430环境下的时钟寄存器BCSCTL2,他每个位的意义以及他们的设置方法 1.0 BCSCTL2(Basic Clock System Control2)寄存控制器(用来设置SMCLK子时钟,MCLK主时钟),地址为58H,初始值为00H SELM0-SELM1: 选择MCLK的时钟源,0和1为DCOCLK,2为XT2CLK,3为LFXT1CLK DIVM0-DIVM1: 选择MCLK的分频因子,DIVM=0,1,2,3,对应MCLK的分频因子1,2,4,8
[单片机]
单片机<font color='red'>MSP430</font>入门--理论④--时钟模块-BCSCTL2寄存器
基于MSP430单片机的智能自适应间断光控系统设计
为了克服现有补光系统补光时间、补光程度不能调节,全光谱不能被光合作用充分利用的缺点,系统基于MSP430单片机,利用光合作用光反应速率大于暗反应的原理,将持续补光改进为间断补光,避免浪费光反应产物,抑制暗反映;由光敏传感电路检测当前环境光强,以设定占空比进行间断补光至最适宜该植物生长的光强;采用红色:蓝色为5:1的高亮LED灯组代替普通补光灯,光谱吸收率高。该系统创新、高效、节能,适合温室、大棚、家庭等广泛应用。 传统的温室大棚光照系统,在光照强度不够的情况下就进行补光,补光的时间不能调节,是一直亮着的,而且补光的程度都一致,不能调节。这样在有些情况下,不仅会浪费多余的光照,浪费了宝贵的电能,不利于节能减排,而且如果外
[单片机]
基于<font color='red'>MSP430</font>单片机的智能自适应间断光控系统设计
OK6410按键驱动程序(改)亲测可以运行
#include linux/kernel.h #include linux/module.h #include linux/init.h #include linux/fs.h #include linux/gpio.h #include linux/types.h #include linux/cdev.h #include linux/interrupt.h #include linux/sched.h #include linux/device.h #include linux/poll.h #include linux/semaphore.h #include linux/
[单片机]
MSP430F5529学习笔记(二)——按键|IO输入
学习了简单的IO口输出点灯实验,IO既有输出也有输入,在MSP430中输出由PxOUT寄存器进行操作,相对应的就有输入寄存器PxIN来进行输入的操作。 为体现按键效果我采用了按键控制LED灯的使用场景,这个也是单片机中按键的基础操作,通过对输入信号的检测来改变输出信号。首先我们是对LED的简单配置 WDTCTL = WDTPW +WDTHOLD;// stop watchdog timer P1DIR |=BIT0;//板载LED设置为输出 P1OUT|=BIT0; 以上操作即为关闭看门狗,设置对应IO口输出状态并给予IO口初始状态,如有疑问可参照我上一篇笔记。 按键外设的IO口配置 按键作为常用外设之一,
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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