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

📄 key.c

📁 键盘扫描及其LCD显示输出,有源程序与仿真文件,都测试通过.
💻 C
字号:

#include <macros.h>
#include "includes.h"
//#pragma interrupt_handler icp_time1:6
//#define BIT(x) (1<<(x))
#define uchar unsigned char
#define uint unsigned int
const unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
  0x77,0x7c,0x39,0x5e,79,71};//七段译码字形表
const uchar table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar ledbuff[6];//显示缓冲区
uchar led[6];
uint oldcount;
uint newcount;
/*
键盘扫描函数
 读取当前键盘的状态
 有按键按下返回相应按键值
 无按键按下返回"0x00"
*/
uchar key_read(){
 uchar i;
 DDRA = 0x00;/*获取列地址*/
 PORTA = 0x0F;
 DDRA = 0xF0;
 i = PINA;
 DDRA = 0x00;/*获取行地址*/
 PORTA = 0xF0;
 DDRA = 0x0F;
 i&=PINA;
 
 DDRA = 0x00;/*输出复位*/
 PORTA = 0xFF;
 
 switch (i) {/*将按键码转换成键值*/
  case  0x81: return 0x00;
  case  0x82: return 'a';
  case  0x84: return 'b';
  case  0x88: return 'c';
  case  0x41: return '1';
  case  0x42: return 0x02;
  case  0x44: return 0x03;
  case  0x48: return 'd';
  case  0x21: return 0x04;
  case  0x22: return 0x05;
  case  0x24: return 0x06;
  case  0x28: return 'e';
  case  0x11: return 0x07;
  case  0x12: return 0x08;
  case  0x14: return 0x09;
  case  0x18: return 'f';
  default : return 0x00;
}
}

/*****************************************
                延时1MS
******************************************/
void delay_ms()
{uint i;
  for(i+0;i<1142;i++)
  ;
  }
void delay(uint t)
{uchar i;
  for(i=0;i<t;i++)
  ;
}

/****************************************
                mcu初始化
*****************************************/
void init()
{ //DDRA=0x00;
  DDRD=0xff;
  DDRB=0xff;
 // PORTA=0xff;
  PORTB=0xff;
  PORTD=0xff;
  
  }
void main()
 { uchar key;
   uchar i;
   uchar x_position;
    uchar *space = "                   ";
    Init_LCD();   
    //PORTD = 0xff; 
    //DDRD =  0xf0;     
    PORTA = 0xff;
    DDRA  = 0xf8;
    LCD_DisplayString(1,1,"key scan test");
    x_position = 2;
   init();
   for( ; ; )
   { 
	 key=key_read();
	  //针对4X4的键盘         
         switch(key)   
         {  
            case 1:            
                LCD_Cursor(2,x_position);
                LCD_DisplayCharacter('1');          
                break;
            case 2:            
                LCD_Cursor(2,x_position);
                LCD_DisplayCharacter('2');          
                break;
            case 3:            
                LCD_Cursor(2,x_position);
                LCD_DisplayCharacter('3');          
                break; 
            case 4:            
                LCD_Cursor(2,x_position);
                LCD_DisplayCharacter('4');          
                break;
            case 5:            
                LCD_Cursor(2,x_position);
                LCD_DisplayCharacter('5');          
                break;
            case 6:            
                LCD_Cursor(2,x_position);
                LCD_DisplayCharacter('6');          
                break;
            case 7:            
                LCD_Cursor(2,x_position);
                LCD_DisplayCharacter('7');          
                break;  
            case 8:            
                LCD_Cursor(2,x_position);
                LCD_DisplayCharacter('8');          
                break;
            case 9:            
                LCD_Cursor(2,x_position);
                LCD_DisplayCharacter('9');          
                break;            
            case 10:            
                LCD_Cursor(2,x_position);
                LCD_DisplayCharacter('*');          
                break;
            case 11:            
                LCD_Cursor(2,x_position);
                LCD_DisplayCharacter('0');          
                break;
             case 12:            
                LCD_Cursor(2,x_position);
                LCD_DisplayCharacter('#');          
                break;         
         default : break;
		 }         
         //delay_nms(10);
    }
}
	

⌨️ 快捷键说明

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