#include <reg51.h>
#include <intrins.h>//要用到 _nop_()
#define uint unsigned int
#define uchar unsigned char
sbit SH_595=P2^1;
sbit DATA_595=P2^0;
sbit ST_CP_595=P2^2;//74HC595(12)-ST_CP上升沿-移位寄存器的数据进入数据存储寄存器 输出锁存器的时钟信号端口
sbit MR_595=P2^3; //74HC595(10)-MR 为0将移位寄存器的数据清0
sbit E1_154=P2^4;//74HC154(18)-E1为0开列(col)输出 显示允许 控制信号端口
uchar keynum;
uchar tempbmp[64];
uint base=0; //在bmp地址中移动,从0 到 rows - 15,每次加2,实现移动效果
uint tmp=0;
uint col=0;
unsigned char code bmp1[]={ //字模表
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x08,0x00,0x08,0x1F,0xC8,0x92,0x48,0x52,0x48,0x32,0x48,0x12,0x48,0x1F,0xFF,
0x12,0x48,0x32,0x48,0x52,0x48,0x92,0x48,0x1F,0xC8,0x