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

📄 lcd_key.c

📁 基于MFRC500读卡芯片的完整读卡程序
💻 C
字号:
/*------------------------------------------------------------------*-
LCD_KEY.C
键盘与LCD刷新函数库
-*------------------------------------------------------------------*/
#include "main.h"
#include "Keypad.h"
#include "LCD.h"
#include "delay.h"

/*-------私有变量定义----------------------------------------------------*/
static tByte cout=0;                   //按键次数计数变量

/*------公有变量声明-----------------------------------------------------*/  
extern bit KEY_SCAN_G; 
extern tWord Card_Money;                  //储存卡余额 
extern tByte LCD_Key[6];                  //显示按键缓冲区
extern tByte LCD_Money[5];                //显示卡数据缓冲区

//----------------------------------------------------------------------------
//刷新键盘_LCD_读卡数据,每隔50毫秒刷新一次,只在卡被激活后才被调用
//----------------------------------------------------------------------------
void LCD_KEY_Update(void)
 {  
  char Key;                                     
  KEYPAD_Update();                             //刷新键盘

	
  if (KEYPAD_Get_Data_From_Buffer(&Key) == 0)  //刷新键盘缓冲区
      {  
	    LCD_Update(LCD_Key,LCD_Money);         //无键按下就只显示余额,然后返回
       return;
	  }
 
                                                                     
  if(Key=='*')                                 //'*'为功能键,用作'取消'功能
      {                                        //'*'被按下,允许重新输入键盘                                 	          
        LCD_Key[0]=' ';                       
    	LCD_Key[1]=' ';
		LCD_Key[2]=' ';
        LCD_Key[3]=' '; 
        LCD_Update(LCD_Key,LCD_Money);         // 清扣除金额显示  
        KEYPAD_Clear_Buffer();                 //清键盘缓冲区  
		cout=0;                                //清按键计数                                               
	   	return;         	      	 
       }


                                                      
  if(Key=='#'||cout==4)                         //'#'为功能键,用作'确认'功能 
      {                                         //'#'被按下或者按键次数cout=4 
          	                                    //余额=卡中金额-扣除金额             
        Card_Money=Card_Money-((LCD_Key[0]-48)*1000+(LCD_Key[1]-48)*100+(LCD_Key[2]-48)*10+(LCD_Key[3]-48));
        LCD_Key[0]=' ';                         
		LCD_Key[1]=' ';
		LCD_Key[2]=' ';
        LCD_Key[3]=' ';		  
        LCD_Money[0]=Card_Money/1000+48;        //加载千位     
        LCD_Money[1]=Card_Money%1000/100+48;    //百位
        LCD_Money[2]=Card_Money%1000%100/10+48; //十位
        LCD_Money[3]=Card_Money%1000%100%10+48; //个位         
        LCD_Update(LCD_Key,LCD_Money);          //余额显示,清扣除金额显示
        
        delay_nms(500);                              
     	  
		LCD_Money[0]=' ';                      // delay 0.5秒
		LCD_Money[1]=' ';
		LCD_Money[2]=' ';
        LCD_Money[3]=' '; 
        LCD_Update(LCD_Key,LCD_Money);         //清余额显示
         
        KEYPAD_Clear_Buffer();                 //清键盘缓冲区          
		cout=0;                                //清按键计数
        KEY_SCAN_G=0;                          //清键盘扫描标志,停止键盘扫描            
	   	return;	      	 
      }
                                                //有键按下,但不是功能键
  LCD_Key[cout++]= Key;                         //送数
  LCD_Update(LCD_Key,LCD_Money);                //显数

  }

/*------------------------------------------------------------------*-
  ---- END OF FILE -------------------------------------------------
-*------------------------------------------------------------------*/

⌨️ 快捷键说明

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