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

📄 display.c

📁 51系列单片机上实现PC键盘的识别
💻 C
字号:
/////////////////////////////////////////////////////////////
//  LED点阵显示函数
//  显示字符A-Z以及数字0-9
//  
#include "at89x52.h"
#include "common.h"
#include "display.h"

///////////////////////////////////////////////////////////////////////////////
//    如果需要显示模块
#ifdef NEED_DISPLAY

/////////////////////////////////////////////////////////////////////////////////////////
//  字母显示编码
const unsigned char code char_A[8]={0x80,0xe0,0xbc,0x22,0xbc,0xe0,0x80,0x00}; 
const unsigned char code char_B[8]={0x00,0x82,0xFE,0x92,0x92,0x92,0x6C,0x00}; 
const unsigned char code char_C[8]={0x00,0x7C,0x82,0x82,0x84,0x66,0x00,0x00}; 
const unsigned char code char_D[8]={0x00,0x82,0xFE,0x82,0x82,0x44,0x38,0x00}; 
const unsigned char code char_E[8]={0x00,0x82,0xFE,0x92,0xBA,0x82,0xC6,0x00}; 
const unsigned char code char_F[8]={0x00,0x82,0xFE,0x92,0x3A,0x06,0x00,0x00}; 
const unsigned char code char_G[8]={0x00,0x7C,0x82,0x82,0x94,0x76,0x10,0x00}; 
const unsigned char code char_H[8]={0x00,0xFE,0x10,0x10,0x10,0x10,0xFE,0x00}; 
const unsigned char code char_I[8]={0x00,0x00,0x82,0xFE,0x82,0x00,0x00,0x00}; 
const unsigned char code char_J[8]={0x00,0x60,0x80,0x82,0x7E,0x02,0x00,0x00}; 
const unsigned char code char_K[8]={0x00,0xFF,0x10,0x08,0x14,0x22,0x41,0x80}; 
const unsigned char code char_L[8]={0x00,0x82,0xFE,0x82,0x80,0x80,0xC0,0x00}; 
const unsigned char code char_M[8]={0x00,0xFF,0x0C,0x30,0xC0,0x30,0x0C,0xFF}; 
const unsigned char code char_N[8]={0x00,0xFE,0x04,0x08,0x10,0x20,0x40,0xFE}; 
const unsigned char code char_O[8]={0x00,0x38,0x44,0x82,0x82,0x82,0x44,0x38}; 
const unsigned char code char_P[8]={0x00,0xFE,0x12,0x12,0x12,0x12,0x1C,0x00}; 
const unsigned char code char_Q[8]={0x3C,0x42,0x81,0xA1,0xA1,0x42,0xBC,0x00}; 
const unsigned char code char_R[8]={0x00,0xFE,0x12,0x12,0x12,0x72,0x9C,0x80}; 
const unsigned char code char_S[8]={0x00,0x6E,0x89,0x89,0x89,0x89,0x72,0x00}; 
const unsigned char code char_T[8]={0x00,0x06,0x82,0xFE,0x82,0x06,0x00,0x00}; 
const unsigned char code char_U[8]={0x00,0x02,0x7E,0x80,0x80,0x7E,0x02,0x00}; 
const unsigned char code char_V[8]={0x00,0x02,0x3E,0xC0,0x38,0x1E,0x02,0x00}; 
const unsigned char code char_W[8]={0x00,0x1E,0xE0,0x3E,0xE0,0x1E,0x00,0x00}; 
const unsigned char code char_X[8]={0x00,0x82,0xC6,0x38,0xC6,0x82,0x00,0x00}; 
const unsigned char code char_Y[8]={0x00,0x02,0x8E,0xF0,0x8E,0x02,0x00,0x00}; 
const unsigned char code char_Z[8]={0x00,0x86,0xC2,0xB2,0x8E,0xC2,0x00,0x00}; 

////////////////////////////////////////////////////////////////////////////////////////
//  数字显示编码

const unsigned char code char_0[8]={0x00,0x7C,0x82,0x82,0x82,0x7C,0x00,0x00}; 
const unsigned char code char_1[8]={0x00,0x00,0x84,0xFE,0x80,0x00,0x00,0x00}; 
const unsigned char code char_2[8]={0x00,0x8C,0xC2,0xA2,0x92,0x8C,0x00,0x00}; 
const unsigned char code char_3[8]={0x00,0x44,0x82,0x92,0x92,0x6C,0x00,0x00}; 
const unsigned char code char_4[8]={0x00,0x10,0x28,0x24,0xFE,0xA0,0x00,0x00}; 
const unsigned char code char_5[8]={0x00,0x4E,0x8A,0x8A,0x8A,0x72,0x00,0x00}; 
const unsigned char code char_6[8]={0x00,0x7C,0x92,0x92,0x96,0x60,0x00,0x00}; 
const unsigned char code char_7[8]={0x00,0x06,0x02,0xF2,0x0E,0x02,0x00,0x00}; 
const unsigned char code char_8[8]={0x00,0x6C,0x92,0x92,0x92,0x6C,0x00,0x00}; 
const unsigned char code char_9[8]={0x00,0x1C,0xD2,0x92,0x92,0xFC,0x00,0x00};

/////////////////////////////////////////////////////////////////////////////////////////
//
const unsigned char code char_F1[8]={0x82,0xFE,0x92,0x3A,0x06,0x90,0xF8,0x80}; 
const unsigned char code char_F2[8]={0x82,0xFE,0x92,0x3A,0x06,0xE8,0xA8,0xB8}; 
const unsigned char code char_F3[8]={0x82,0xFE,0x92,0x3A,0x06,0xA8,0xA8,0xF8}; 
const unsigned char code char_F4[8]={0x82,0xFE,0x92,0x3A,0x66,0x50,0xF8,0x40}; 
const unsigned char code char_F5[8]={0x82,0xFE,0x92,0x3A,0x06,0xB8,0xA8,0xE8}; 
const unsigned char code char_F6[8]={0x82,0xFE,0x92,0x3A,0x06,0xF8,0xA8,0xE8}; 
const unsigned char code char_F7[8]={0x82,0xFE,0x92,0x3A,0x06,0x10,0x10,0xF0}; 
const unsigned char code char_F8[8]={0x82,0xFE,0x92,0x3A,0x06,0xF8,0xA8,0xF8}; 
const unsigned char code char_F9[8]={0x82,0xFE,0x92,0x3A,0x06,0xB8,0xA8,0xF8}; 
const unsigned char code char_F10[8]={0x82,0xFE,0x92,0x3A,0xE6,0x00,0xE0,0xA0}; 
const unsigned char code char_F11[8]={0x82,0xFE,0x92,0x3A,0x06,0xF0,0x00,0xF0}; 
const unsigned char code char_F12[8]={0x82,0xFE,0x92,0x3A,0xE6,0x00,0xE8,0xB8};
const unsigned char code char_SP[8]={0xDE,0x92,0xF6,0x00,0xF8,0x28,0x28,0x38}; 
const unsigned char code char_ET[8]={0x20,0x70,0xF8,0x20,0x20,0x21,0x3F,0x01}; 
const unsigned char code char_CT[8]={0x7E,0x82,0x84,0x66,0x00,0x10,0xF0,0x10}; 
const unsigned char code char_SH[8]={0xDE,0x92,0xF6,0x00,0xF8,0x20,0x20,0xF8}; 
const unsigned char code char_AT[8]={0xA0,0xFC,0x22,0xFC,0xA0,0x10,0xF0,0x10}; 
const unsigned char code char_CP[8]={0x7E,0x82,0x84,0x66,0x00,0xF8,0x28,0x38}; 
const unsigned char code char_TB[8]={0x10,0xF0,0x10,0x82,0xFE,0x92,0x92,0x6C}; 
const unsigned char code char_Down[8]={0x00,0x10,0x2E,0x42,0x2E,0x10,0x00,0x00}; 
const unsigned char code char_Upper[8]={0x00,0x08,0x74,0x42,0x74,0x08,0x00,0x00}; 
const unsigned char code char_Left[8]={0x00,0x10,0x28,0x44,0x28,0x28,0x38,0x00}; 
const unsigned char code char_Right[8]={0x00,0x38,0x28,0x28,0x44,0x28,0x10,0x00}; 
const unsigned char code char_Add[8]={0x00,0x08,0x08,0x7E,0x08,0x08,0x00,0x00}; 
const unsigned char code char_Sub[8]={0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x00}; 
const unsigned char code char_Mul[8]={0x00,0x82,0xC6,0x38,0xC6,0x82,0x00,0x00}; 
const unsigned char code char_Dev[8]={0x00,0x08,0x08,0x2A,0x08,0x08,0x00,0x00}; 
const unsigned char code char_Sla[8]={0x00,0x40,0x20,0x10,0x08,0x04,0x02,0x00}; 
const unsigned char code char_FSla[8]={0x00,0x02,0x04,0x08,0x10,0x20,0x40,0x00}; 
const unsigned char code char_Dou[8]={0x00,0x00,0x00,0x4C,0x3C,0x00,0x00,0x00}; 
const unsigned char code char_Jue[8]={0x00,0x00,0x18,0x24,0x24,0x18,0x00,0x00}; 
const unsigned char code char_Fen[8]={0x00,0x00,0x00,0xB6,0x76,0x00,0x00,0x00}; 
const unsigned char code char_Jian[8]={0x00,0x10,0x0E,0x00,0x00,0x00,0x00,0x00}; 
const unsigned char code char_Dian[8]={0x00,0x00,0x00,0x00,0x0E,0x10,0x00,0x00};
const unsigned char code char_LKuo[8]={0x00,0x7E,0x42,0x42,0x00,0x00,0x00,0x00}; 
const unsigned char code char_RKuo[8]={0x00,0x00,0x00,0x00,0x42,0x42,0x7E,0x00}; 
const unsigned char code char_Den[8]={0x00,0x14,0x14,0x14,0x14,0x14,0x14,0x00}; 
const unsigned char code char_Back[8]={0x00,0x08,0x1C,0x08,0x08,0x08,0x08,0x00}; 
const unsigned char code char_Esc[8]={0xFE,0x02,0x12,0xFA,0x92,0x82,0xBE,0x00}; 
const unsigned char code char_DLine[8]={0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00}; 
const unsigned char code char_Win[8]={0x00,0x2A,0x15,0x2A,0x54,0xA8,0x54,0x00}; 
const unsigned char code char_Apps[8]={0x00,0xFE,0xAA,0x82,0xBA,0xDE,0x28,0x40}; 
 
////////////////////////////////////////////////////////////////////////////////////////
//  空编码
const unsigned char code char_NULL[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

////////////////////////////////////////////////////////////////////////////////////

const unsigned char Row[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};  //  列扫描编码
unsigned char *ChoicePtr;           //数据选择指针  
unsigned char ScanPtr=0;            //扫描指针

///////////////////////////////////////////////////////////////////////////////
//  图形显示函数
//  每次调用扫描一列
//  参数:无
//  返回值:无
void Display()
{
        unsigned char CircleTemp=0x00;
        gShiftPulse=0x00;                       //RDK控制端 ,用以控制并行数据的输出
        for(CircleTemp=0x00;CircleTemp<0x08;CircleTemp++)
        {

            lShiftPulse=0x0;                     //SCK移位脉冲
            DataPort=Row[ScanPtr]&(0x80>>CircleTemp);  
            lShiftPulse=0x1;
        }

        for(CircleTemp=0x00;CircleTemp<0x08;CircleTemp++)
       
        {   
            lShiftPulse=0x00;
            DataPort=ChoicePtr[ScanPtr]&(0x80>>CircleTemp); //数据传送端    
            lShiftPulse=0x1;
        } 
        gShiftPulse=0x01;
        ScanPtr++;
        if(ScanPtr==0x08)
        {
            ScanPtr=0x00; 
        }   
    
}
////////////////////////////////////////////////////////////////////////////////
//  换码函数
//  通过键盘扫描码获得要输出数据的LED点阵图形代码
//  参数:无
//  返回值:无

extern unsigned char gSymboleE0;

void Print(unsigned char lCode)
{
    if(gSymboleE0==0)                //如果有E0标志位
    {
        switch(lCode) 
        {

        case 0x1C:                   //获得的是键盘的扫描码  
        ChoicePtr=char_A; 
        break; 
        case 0x32: 
        ChoicePtr=char_B; 
        break; 
        case 0x21: 
        ChoicePtr=char_C;; 
        break; 
        case 0x23: 
        ChoicePtr=char_D; 
        break; 
        case 0x24:   
        ChoicePtr=char_E; 
        break; 
        case 0x2B: 
        ChoicePtr=char_F; 
        break; 
        case 0x34: 
        ChoicePtr=char_G; 
        break; 
        case 0x33: 
        ChoicePtr=char_H; 
        break; 
        case 0x43: 
        ChoicePtr=char_I;
        break; 
        case 0x3B: 
        ChoicePtr=char_J; 
        break; 
        case 0x42: 
        ChoicePtr=char_K;
        break; 
        case 0x4B: 
        ChoicePtr=char_L; 
        break; 
        case 0x3A: 
        ChoicePtr=char_M; 
        break; 
        case 0x31: 
        ChoicePtr=char_N; 
        break; 
        case 0x44: 
        ChoicePtr=char_O; 
        break; 
        case 0x4D: 
        ChoicePtr=char_P; 
        break; 
        case 0x15: 
        ChoicePtr=char_Q;
        break; 
        case 0x2D: 
        ChoicePtr=char_R; 
        break; 
        case 0x1B: 
        ChoicePtr=char_S;
        break; 
        case 0x2C: 
        ChoicePtr=char_T;
        break; 
        case 0x3C: 
        ChoicePtr=char_U; 
        break; 
        case 0x2A: 
        ChoicePtr=char_V; 
        break; 
        case 0x1D: 
        ChoicePtr=char_W; 
        break; 
        case 0x22: 
        ChoicePtr=char_X; 
        break; 
        case 0x35: 
        ChoicePtr=char_Y; 
        break; 
        case 0x1A: 
        ChoicePtr=char_Z; 
        break; 
        case 0x45: 
        ChoicePtr=char_0;; 
        break; 
        case 0x16: 
        ChoicePtr=char_1; 
        break; 
        case 0x1E: 
        ChoicePtr=char_2; 
        break; 
        case 0x26: 
        ChoicePtr=char_3; 
        break; 
        case 0x25: 
        ChoicePtr=char_4; 
        break; 
        case 0x2E: 
        ChoicePtr=char_5;
        break; 
        case 0x36: 
        ChoicePtr=char_6; 
        break; 
        case 0x3D: 
        ChoicePtr=char_7; 
        break; 
        case 0x3E: 
        ChoicePtr=char_8; 
        break; 
        case 0x46: 
        ChoicePtr=char_9;

        case 0x05: 
        ChoicePtr=char_F1; 
        break; 
        case 0x06: 
        ChoicePtr=char_F2; 
        break; 
        case 0x04: 
        ChoicePtr=char_F3; 
        break; 
        case 0x0C: 
        ChoicePtr=char_F4; 
        break; 
        case 0x03: 
        ChoicePtr=char_F5; 
        break; 
        case 0x0B: 
        ChoicePtr=char_F6;
        break; 
        case 0x83: 
        ChoicePtr=char_F7; 
        break; 
        case 0x0A: 
        ChoicePtr=char_F8; 
        break; 
        case 0x01: 
        ChoicePtr=char_F9; 
        break; 
        case 0x09: 
        ChoicePtr=char_F10; 
        break; 
        case 0x78: 
        ChoicePtr=char_F11; 
        break; 
        case 0x07: 
        ChoicePtr=char_F12;
        break;
 
        case 0x5A: 
        ChoicePtr=char_ET; 
        break; 
        case 0x12: 
        ChoicePtr=char_SH; 
        break; 
        case 0x29: 
        ChoicePtr=char_SP; 
        break; 
        case 0x11: 
        ChoicePtr=char_AT; 
        break; 
        case 0x14: 
        ChoicePtr=char_CT; 
        break; 
        case 0x0D: 
        ChoicePtr=char_TB; 
        break; 
        case 0x58: 
        ChoicePtr=char_CP; 
        break; 
        case 0x59:
        ChoicePtr=char_SH; 
        break; 
        case 0x54:              
        ChoicePtr=char_LKuo; 
        break; 
        case 0x5B:               
        ChoicePtr=char_RKuo; 
        break; 
        case 0x66:              
        ChoicePtr=char_Back; 
        break; 
        case 0x79:              
        ChoicePtr=char_Add; 
        break; 
        case 0x7B:              
        ChoicePtr=char_Sub; 
        break; 
        case 0x7C:               
        ChoicePtr=char_Mul; 
        break; 
        case 0x4C:              
        ChoicePtr=char_Fen; 
        break; 
        case 0x41:             
        ChoicePtr=char_Dou; 
        break; 
        case 0x49:               
        ChoicePtr=char_Jue; 
        break; 
        case 0x4A:              
        ChoicePtr=char_Sla; 
        break; 
        case 0x52:               
        ChoicePtr=char_Jian; 
        break; 
        case 0x0E:             
        ChoicePtr=char_Dian; 
        break; 
        case 0x4E:              
        ChoicePtr=char_DLine; 
        break; 
        case 0x55:               
        ChoicePtr=char_Den;
        break; 
        case 0x5D:              
        ChoicePtr=char_FSla; 
        break; 
        case 0x76:               
        ChoicePtr=char_Esc; 
        break; 
        case 0x71:              
        ChoicePtr=char_Jue; 
        break; 
        default: 
        ChoicePtr=char_NULL; 
        }
    }
    
    else if(gSymboleE0==1)
    {
        switch(lCode)
        {

        case 0x5A: 
        ChoicePtr=char_ET; 
        break; 
        case 0x11: 
        ChoicePtr=char_AT; 
        break; 
        case 0x14: 
        ChoicePtr=char_CT; 
        break; 
        case 0x75: 
        ChoicePtr=char_Upper; 
        break; 
        case 0x6B: 
        ChoicePtr=char_Left; 
        break; 
        case 0x72: 
        ChoicePtr=char_Down; 
        break; 
        case 0x74: 
        ChoicePtr=char_Right; 
        break; 
        case 0x4A:               
        ChoicePtr=char_Sla;
        break; 
        case 0x1F: 
        ChoicePtr=char_Win; 
        break; 
        case 0x27: 
        ChoicePtr=char_Win; 
        break; 
        case 0x2F: 
        ChoicePtr=char_Apps; 
        break; 
        case 0x71: 
        ChoicePtr=char_Jue; 
        break; 
        default: 
        ChoicePtr=char_NULL; 
        }
    }
}

///////////////////////////////////////////////////////////////////////////////////
//    文件结束
#endif
 

⌨️ 快捷键说明

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