单片机
返回首页

MSP430矩阵式4×4键盘源代码

2021-04-02 来源:eefocus

简介:本文给大家分享了一个msp430矩阵式4×4键盘源代码。

#include   

char key;

manage_key1()

{}

.................

.................

manage_key16()

{}

void delays( )

    {

     int v=500;

     while(v!=0)v--;

    }

void keyscan( )

  char sccode,recode;

  P1DIR=0X0f;         

 

  P1OUT=0X00;           //置所有行为低电平,行扫描,列线输入(此时)  

  if((P1IN&0X0F)!=0X0F)   //判断是否有有键按下(读取列的真实状态,若第4列有键按下 则P1的值会变成0111 0000),有往下执行

  {

    delays();

    if((P1IN&0x0f)!=0x0f)     //再次判断列中是否是干扰信号,不是则向下执行

    {

     sccode=0xef;            //逐行扫描初值(即先扫描第1行)

     while((sccode&0x01)!=0)  //行扫描完成(4行已全部扫描完)sccode为1110 1111 停止while程序

      {

        P1OUT=sccode;         //输出行扫描码

        if((P1IN&0x0F)!=0X0F)  //本行有键按下(即P1(真实的状态)的高四位不全为1)

        {

          recode=(P1IN&0x0F)|0xf0;  //列(列处于低四位,高四位补1)

          key=(sccode & recode);     //行和列

        }

//所扫描行没有键按下,则扫描下一行,直到4行都扫描,此时sccode为1110 1111退出while程序

        else

        {

          sccode=(sccode<<1)|0x10;   ;//行扫描码左移一位

        }

       }

     }

        //无键按下,返回0

  }

}

void main( )

{

   keyscan();

   delays();

   switch(key)

   {

    case 0xee: manage_key1();break;    // 1110 1110

    case 0xde: manage_key2();break;    // 1101 1110

    case 0xbe: manage_key3();break;    // 1011 1110

    case 0x7e: manage_key4();break;    // 0111 1110

   

    case 0xed: manage_key5();break;    // 1110 1101

    case 0xdd: manage_key6();break;    // 1101 1101

    case 0xbd: manage_key7();break;    // 1011 1101

    case 0x7d: manage_key8();break;    // 0111 1101

   

    case 0xeb: manage_key9();break;    // 1110 1011

    case 0xdb: manage_key10();break;    // 1101 1011

    case 0xbb: manage_key11();break;    // 1011 1011

    case 0x7b: manage_key12();break;    // 0111 1011

   

    case 0xe7: manage_key13();break;    // 1110 0111

    case 0xd7: manage_key14();break;    // 1101 0111

    case 0xb7: manage_key15();break;    // 1011 0111

case 0x77: manage_key16();break;    // 0111 0111 

default: break; 

   }

}


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • CCD图像传感器在微光电视系统中的应用

  • 如何利用ESP8266制作一个简单的四轴飞行器

  • 非常简单的150W功放电路图

  • 基于IC555的可变PWM振荡器电路

  • 分享一个电网倾角计电路

  • 使用NE555和磁簧开关的橱柜照明电路

    相关电子头条文章