• 液晶显示计算器(按键程序)



    #include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
    #include"keyboard.h"
    #include"delay.h"

    #define KeyPort P1

    /*------------------------------------------------
    按键扫描函数,返回扫描键值
    ------------------------------------------------*/
    unsigned char KeyScan(void)  //键盘扫描函数,使用行列反转扫描法
    {
     unsigned char cord_h,cord_l;//行列值中间变量
     KeyPort=0x0f;            //行线输出全为0
     cord_h=KeyPort&0x0f;     //读入列线值
     if(cord_h!=0x0f)    //先检测有无按键按下
     {
      DelayMs(10);        //去抖
      if((KeyPort&0x0f)!=0x0f)
      {
        cord_h=KeyPort&0x0f;  //读入列线值
        KeyPort=cord_h|0xf0;  //输出当前列线值
        cord_l=KeyPort&0xf0;  //读入行线值

        while((KeyPort&0xf0)!=0xf0);//等待松开并输出

        return(cord_h+cord_l);//键盘最后组合码值
       }
      }return(0xff);     //返回该值
    }
    /*------------------------------------------------
              按键值处理函数,返回扫键值
               可以根据需要改变返回值

                  | 1 | 2 | 3 | + |  
                  | 4 | 5 | 6 | - |  
                  | 7 | 8 | 9 | * |  
                  | 0 | . | = | / | 
    ------------------------------------------------*/
    unsigned char KeyPro(void)
    {
     switch(KeyScan())
     {
      case 0x7e:return 1  ;break;//0 按下相应的键显示相对应的码值
      case 0x7d:return 2  ;break;//1
      case 0x7b:return 3  ;break;//2
      case 0x77:return '+';break;//3

      case 0xbe:return 4  ;break;//4
      case 0xbd:return 5  ;break;//5
      case 0xbb:return 6  ;break;//6
      case 0xb7:return '-';break;//7

      case 0xde:return 7  ;break;//8
      case 0xdd:return 8  ;break;//9
      case 0xdb:return 9  ;break;//a
      case 0xd7:return 'x';break;//b

      case 0xee:return 0  ;break;//c
      case 0xed:return '.';break;//d
      case 0xeb:return '=';break;//e
      case 0xe7:return '/';break;//f
      default:return 0xff;break;
     }
    }

     

  • 相关阅读:
    flink operator 1.7 更换日志框架log4j 到logback
    Tomcat8 任意写文件PUT方法 (CVE-2017-12615)
    数据可视化项目(一)
    layui的layer.confirm获取按钮焦点
    TPM分析笔记(十)TPM 组织架构(TPM hierarchy)
    dubbo学习笔记
    electron 基础项目搭建 &&主线程和渲染线程的通信
    如何在FPGA中构建数控振荡器 (NCO)
    MATLAB与Excel的数据交互
    LabVIEW性能和内存管理 8
  • 原文地址:https://blog.csdn.net/qq_46065313/article/details/131320263