⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inputkey.c

📁 基于MSP430247TPM的4*4矩阵键盘的扫描程序
💻 C
字号:
#include"msp430x24x.h"
#include "delay.h"
#include "ILI9320.h"
#include "number.h"
#define  DIRECTION  P1DIR
#define  CONTROL    P1SEL 
#define  IN         P1IN  
#define  KEYOUT     P1OUT 
/*unsigned char inputkey(void)
{
  unsigned char temp;
  CONTROL=0;
  DIRECTION=0X0F;
  KEYOUT=0x01;
  temp=IN&0xf0;
  if(temp!=0)
  {
    if(temp==0X10)
       return(0);
    else if(temp==0X20)
       return(1);
    else if(temp==0X40)
       return(2);
    else if(temp==0X80)
       return(3);
    else 
      ;
  }
    KEYOUT=0X02;
    temp=IN&0xf0;
    if(temp!=0)
       {
          if(temp==0X10)
              return(4);
          else if(temp==0X20)
              return(5);
          else if(temp==0X40)
              return(6);
         else  if(temp==0X80)
              return(7);
         else
           ;
       }
    KEYOUT=0X04;
    temp=IN&0x0f0;
    if(temp!=0)
       {
          if(temp==0X10)
              return(8);
          if(temp==0X20)
              return(9);
          if(temp==0X40)
              return(10);
          if(temp==0X80)
              return(11);
       }
    KEYOUT=0X08;
    temp=IN&0xf0;
    if(temp!=0)
       {
          if(temp==0X10)
              return(12);
          if(temp==0X20)
              return(13);
          if(temp==0X40)
              return(14);
          if(temp==0X80)
              return(15);
       }
    return(0xff);
}*/
unsigned char inputkey(void)
{
  unsigned char temp;
  CONTROL=0;
  DIRECTION=0X0F;
  KEYOUT=0x01;
  temp=IN&0xf0;
  if(temp!=0)
  {
    if(temp==0X10)
       return(1);
    else if(temp==0X20)
       return(2);
    else if(temp==0X40)
       return(3);
    else if(temp==0X80)
       return(10);
    else 
      ;
  }
    KEYOUT=0X02;
    temp=IN&0xf0;
    if(temp!=0)
       {
          if(temp==0X10)
              return(4);
          else if(temp==0X20)
              return(5);
          else if(temp==0X40)
              return(6);
         else  if(temp==0X80)
              return(13);
         else
           ;
       }
    KEYOUT=0X04;
    temp=IN&0x0f0;
    if(temp!=0)
       {
          if(temp==0X10)
              return(7);
          if(temp==0X20)
              return(8);
          if(temp==0X40)
              return(9);
          if(temp==0X80)
              return(12);
       }
    KEYOUT=0X08;
    temp=IN&0xf0;
    if(temp!=0)
       {
          if(temp==0X10)
              return(0);
          if(temp==0X20)
              return(14);
          if(temp==0X40)
              return(15);
          if(temp==0X80)
              return(11);
       }
    return(0xff);
}
unsigned char get_key(void)
{
unsigned char key_flag1;
unsigned char key_flag2;
key_flag1=inputkey();
delay_nms(50);
key_flag2=inputkey();
if((key_flag1==key_flag2)&&((key_flag1>=0)&&(key_flag1<=15)))
				{
				return key_flag1;
				}

else
return 0xff;
}
unsigned char  scan_big_number(unsigned char x,unsigned int y,unsigned char num,unsigned int front,unsigned int back,unsigned char temp)
{

unsigned char x1;
unsigned int y1;
unsigned char key; 
unsigned char i;
i=num;
x1=x+(i*16);
y1=y;
if(temp==0)
				{
				LCD_Write_Number_SD(x1,y1,32,32,big_0,front,back);	
				_NOP();
				_NOP();
				key=0;
				}
 else if(temp==1)
				{
				LCD_Write_Number_SD(x1,y1,32,32,big_1,front,back);		
				_NOP();
				_NOP();
				key=1;
				}
				
 else if(temp==2)
				{
				LCD_Write_Number_SD(x1,y1,32,32,big_2,front,back);	
				_NOP();
				_NOP();
				key=2;
				}
else if(temp==3)
				{
				LCD_Write_Number_SD(x1,y1,32,32,big_3,front,back);	
				_NOP();
				_NOP();
				key=3;
				}
else if(temp==4)
				{
				LCD_Write_Number_SD(x1,y1,32,32,big_4,front,back);	
				_NOP();
				_NOP();
				key=4;
				}
else if(temp==5)
				{
				LCD_Write_Number_SD(x1,y1,32,32,big_5,front,back);	
				_NOP();
				_NOP();
				key=5;
				}
else if(temp==6)
				{
				LCD_Write_Number_SD(x1,y1,32,32,big_6,front,back);	
				_NOP();
				_NOP();
				key=6;
				}
else if(temp==7)
			{
				LCD_Write_Number_SD(x1,y1,32,32,big_7,front,back);		
				_NOP();
				_NOP();
				key=7;
				}
else if(temp==8)
				{
				LCD_Write_Number_SD(x1,y1,32,32,big_8,front,back);	
				_NOP();
				_NOP();
				key=8;
				}
else if(temp==9)
				{
				LCD_Write_Number_SD(x1,y1,32,32,big_9,front,back);	
				_NOP();
				_NOP();
				key=9;
				}
else
key=0xff;
return(key);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -