找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 16106|回复: 13
打印 上一主题 下一主题
收起左侧

基于51单片机的门禁系统之电子密码锁

  [复制链接]
跳转到指定楼层
楼主
ID:105099 发表于 2016-2-5 16:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文作者:薛 二 炜
      在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。
        在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。
 
 本文中电子密码锁将实现以下功能:
1.通过矩阵键盘来输入密码,如果密码正确则门打开,如果密码不正确提示剩余输入次数,次数为0则锁定2分钟后才能再输入。
2.门打开后等待关门信号(本文中用P3^4接按键模拟),待收到信号后表示门已关闭。
3.可以通过按键来修改密码,修改前需要验证原密码。
4.支持掉电保存功能。
5. 为了防止密码被窃取,本文中的密码采用ASCII存放,并且存放地址无规则(可根据自己需求修改)。

特别说明:
1. 由于代码长度过大,请大家用大内存的单片机测试(本文中采用STC90C58RD+ 12T单片机);
2. CPU时钟请用11.0592MHz(液晶画点部分用22.1184MHz测试时失败!估计是速度过高);
3. 本文中的EEprom采用的是STC单片机内部EEProm,如果大家要用24Cxx系列或其它存储器请自行修改代码;
4. 由于测试最小系统接口限制,请大家测试时自行修改接口定义(液晶接口、矩阵接口、独立按键接口);
5. 本文中开、关门控制接口程序中没有引出,只用到“
Door”这个逻辑型变量,大家在做实物时请自行定义一个接口,并赋该变量值即可!
6. 第一次使用时(用STC自带EEProm)请先写入初始密码(将主程序屏蔽的那7行代码解除屏蔽,写入后再屏蔽掉即可!),程序中的初始密码为“888888”;
7. 本文中采用的是12864图形液晶(不带字库的),请大家务必注意!!!
8. 本文只简单的实现的密码锁的基础功能,需要更高级功能的朋友请自行添加!
9. 由于个人能力有限,程序中难免存在BUG, 遇到BUG请大家及时反馈以便在后期加以修正。
最后祝大家身体健康,万事如意!

★后附源代码

 
外观图:
 
 欢迎界面: 
 
 工作界面: 
 
 门开启提示: 
 
 门关闭提示: 
 
 密码输入错误提示: 
 
 密码输入错误提示: 
 
 系统锁死提示: 
 
 系统锁死提示: 
 
 修改密码界面: 
 
 原密码校验失败: 
 
 输入新密码界面: 
 
 再次输入新密码界面: 
 
 密码修改成功界面: 
 
 外观: 
 
★====================主程序====================
#include "reg52.h"
#include "intrins.h"
#include "Variable.h"
#include "EEProm.h"
#include "Function.h"
#include "L12864.h"
#include "L12864_Windows.h"
#include "Key_Alone.h"
#include "Key_44.h"
#include "math.h"

void main(void)
{
//IapEraseSector(0x8000);//擦除第一个扇区
//IapProgramunsigned(1,0x38);//写数据
//IapProgramunsigned(9,0x38);//写数据
//IapProgramunsigned(6,0x38);//写数据
//IapProgramunsigned(8,0x38);//写数据
//IapProgramunsigned(0,0x38);//写数据
//IapProgramunsigned(3,0x38);//写数据
ReadPassWord();//读出密码到本地
InitTimer0();//定时器中断初始化
L12864_init();
L12864_Windows_Init();//载入初始化界面
L12864_Delay1S();
L12864_Windows_Input(0);//载入密码输入0次界面
MODE=1;//置模式一 输入开门密码模式
while(1)
{
Key_44_KeySan();
Key_44_KeyHandle();
}
}

void Timer0Interrupt(void) interrupt 1
{
    TH0 = 0x0B8;
    TL0 = 0x00;
    ms++;
if(ms==50)
{
ms=0;
s--;
if(s==-1)
{
s=59;
fen--;
}
if(fen>=2)
{
Unit=0;
}
else
{
Unit=1;
}
}
}
★===================主程序结束=================== 
★=================== 全 局 变 量 =================== 
#define Count 3
#define ErrMin 2
unsigned char jianzhi;
unsigned char MODE; //模式 0=不能输入 1=输入开门密码 2=修改密码 3=输入新密码1 4=输入新密码2 5=门已经开启 6=等待时间
unsigned char InPutCount=0; //输入计次
unsigned char ErrCount=Count; //输入错误计次
unsigned char ErrWait=ErrMin; //错误等待时间
bit KeyAvailable; //key按键可用
bit Door=1; //门状态 0=开 1=关
bit NextCycle_MODE3,NextCycle_MODE4;
unsigned char InPutPassWord[6];
unsigned char InPutPassWordNew1[6];
unsigned char InPutPassWordNew2[6];
unsigned char PassWord[6]={0,0,0,0,0,0};
unsigned char ms,NewS,Newfen,s=59,fen=ErrMin;
bit Unit; //倒计时单位 0为分钟 1为秒
★==================全局变量结束===================  
★================== EEProm代码=================== 
sfr IAP_DATA    =   0xE2;           //Flash 数据注册
sfr IAP_ADDRH   =   0xE3;           //Flash 地址高位
sfr IAP_ADDRL   =   0xE4;           //Flash 地址低位
sfr IAP_CMD     =   0xE5;           //Flash 命令注册
sfr IAP_TRIG    =   0xE6;           //Flash 命令触发
sfr IAP_CONTR   =   0xE7;           //Flash 控制方式注册

#define CMD_IDLE    0               //Stand-By
#define CMD_READ    1               //字节读取
#define CMD_PROGRAM 2               //字节编程
#define CMD_ERASE   3               //扇区擦除
#define ENABLE_IAP   0x81           //if SYSCLK<20MHz


#define IAP_ADDRESS 0x08000 //注意 地址必须加上这个8000  不然就是操作的单片机内存
void IapIdle(void)
{
    IAP_CONTR = 0;
    IAP_CMD = 0;
    IAP_TRIG = 0;
    IAP_ADDRH = 0x80;
    IAP_ADDRL = 0;
}

unsigned char IapReadunsigned (unsigned int V)
{
    unsigned char dat;
unsigned int addr;
addr=V+IAP_ADDRESS;
    IAP_CONTR = ENABLE_IAP;
    IAP_CMD = CMD_READ;
    IAP_ADDRL = addr;
    IAP_ADDRH = addr >> 8;
    IAP_TRIG = 0x46;
    IAP_TRIG = 0xb9;
    _nop_();
    dat = IAP_DATA;
    IapIdle();

    return dat;
}

void IapProgramunsigned (unsigned int V, unsigned char dat)
{
unsigned int addr;
addr=V+IAP_ADDRESS;
    IAP_CONTR = ENABLE_IAP;
    IAP_CMD = CMD_PROGRAM;
    IAP_ADDRL = addr;
    IAP_ADDRH = addr >> 8;
    IAP_DATA = dat;
    IAP_TRIG = 0x46;
    IAP_TRIG = 0xb9;
    _nop_();
    IapIdle();
}

void IapEraseSector(unsigned int addr)
{
    IAP_CONTR = ENABLE_IAP;
    IAP_CMD = CMD_ERASE;
    IAP_ADDRL = addr;
    IAP_ADDRH = addr >> 8;
    IAP_TRIG = 0x46;
    IAP_TRIG = 0xb9;
    _nop_();
    IapIdle();
}
★================EEProm代码结束===================
★=================Function代码==================== 
void InitTimer0(void) //20ms中断初始化
{
    TMOD = 0x01;
    TH0 = 0x0B8;
    TL0 = 0x00;
    EA = 1;
    ET0 = 1;
    TR0 = 0;
}

bit PassWordCheck(void)
{
unsigned char i;
bit ReturnV;
ReturnV=1;
for(i=0;i<6;i++)
{
if(InPutPassWord[i]!=PassWord[i])
{
ReturnV=0;
}
}
return ReturnV;
}

bit PassWordCheckNew(void)
{
unsigned char i;
bit ReturnV;
ReturnV=1;
for(i=0;i<6;i++)
{
if(InPutPassWordNew1[i]!=InPutPassWordNew2[i])
{
ReturnV=0;
}
}
return ReturnV;
}

void ClrarPassBuf(void)
{unsigned char i;
for(i=0;i<6;i++)
{
InPutPassWord[i]=0;
InPutPassWordNew1[i]=0;
InPutPassWordNew2[i]=0;
}
}
void ReadPassWord(void)
{
PassWord[0]=IapReadunsigned(1);
PassWord[1]=IapReadunsigned(9);
PassWord[2]=IapReadunsigned(6);
PassWord[3]=IapReadunsigned(8);
PassWord[4]=IapReadunsigned(0);
PassWord[5]=IapReadunsigned(3);
}
void WriteNewPassWord(void)
{
unsigned char i;
IapEraseSector(0x8000); //擦除第一个扇区 不擦除写不了
IapProgramunsigned(1,InPutPassWordNew2[0]);
IapProgramunsigned(9,InPutPassWordNew2[1]);
IapProgramunsigned(6,InPutPassWordNew2[2]);
IapProgramunsigned(8,InPutPassWordNew2[3]);
IapProgramunsigned(0,InPutPassWordNew2[4]);
IapProgramunsigned(3,InPutPassWordNew2[5]);
for(i=0;i<6;i++)
{
PassWord[i]=InPutPassWordNew2[i];
}
} 
★===============Function代码结束=================== 
★================12864底层代码==================== 
/* ◆------ L12864驱动底层函数 ------◆
STC90C58RD+
11.0592MHz  画点只能在11.0592MHz下运行
!!!改变晶振请重写延时函数
*/
#include "L12864_CODE.h"

#define L12864_Port P0
#define L12864_Data P2

#define L12864_comm 0 //常量 写命令
#define L12864_data 1 //常量 写数据

#define L12864_Screen_L 1 //常量 左屏
#define L12864_Screen_R 2 //常量 右屏
#define L12864_Screen_LR 3 //常量 左右屏
#define L12864_Screen_NULL 0//常量 无
/******************************************************************      
 - 说明:端口定义
 - 备注:无
 ******************************************************************/

sbit L12864_RST = L12864_Port^3;     //复位端,低电平有效。
sbit L12864_CS2 = L12864_Port^2; //右屏片选(高电平有效)
sbit L12864_CS1 = L12864_Port^4; //左屏片选(高电平有效)
sbit L12864_E   = L12864_Port^5; //读写使能,高电平有效,下降沿锁定数据。
sbit L12864_RW  = L12864_Port^6; //读/写选择:高电平为读数据,低电平为写数据。
sbit L12864_RS  = L12864_Port^7; //数据/指令选择:高电平为数据,低电平为指令。
/******************************************************************
 - 功能描述:延时子程序
 - 入口参数:长整数型
 - 参 数 值:0-65535
 - 返回说明:无
 - 备    注:无
 ******************************************************************/
void L12864_Delayus(unsigned int V)
{
while(V--);
}
void L12864_Delay50us(void)
{
    unsigned char a,b;
    for(b=1;b>0;b--)
        for(a=20;a>0;a--);
}
void L12864_Delay1S(void)
{
    unsigned char a,b,c;
    for(c=175;c>0;c--)
        for(b=22;b>0;b--)
            for(a=118;a>0;a--);
}
/******************************************************************
 - 功能描述:写数据(命令)子函数
 - 入口参数:x,dat
 - 参 数 值:x=0 ro 1 dat=0x00-0xff;
 - 返回说明:无
 - 备    注:X=0 写命令 x=1 写数据
 ******************************************************************/
void L12864_Write(bit x,unsigned char dat)
{
if(x)
L12864_RS=1;
else
L12864_RS=0; // RS置高电平
L12864_RW=0; // RW置低电平
L12864_Data=dat; // 写入数据
L12864_E=1; // E下降沿
L12864_Delayus(5);
L12864_E=0;
}
/******************************************************************
 - 功能描述:读数据子程序
 - 入口参数:无
 - 参 数 值:无
 - 返回说明:无
 - 备    注:
 
 ******************************************************************/
unsigned char L12864_Read(void)
{
unsigned char dat;

L12864_Data=0xff; //读空操作
L12864_RS=1; //the data
L12864_RW=1; //read
L12864_E=1; // E下降沿
L12864_E=1; //
L12864_E=0; //

L12864_Data=0xff; //读空操作
L12864_RS=1; //the data
L12864_RW=1; //read
L12864_E=1; // E下降沿
dat=L12864_Data; //
L12864_E=0; //
return dat; //
}
/******************************************************************
 - 功能描述:初始化子程序
 - 入口参数:无
 - 参 数 值:无
 - 返回说明:无
 - 备    注:
 
 ******************************************************************/
void L12864_init(void)//初始化12864
{
L12864_Delay50us(); //延时40ms以上
L12864_RST=1; //RST上升沿复位
L12864_Delayus(2);
L12864_RST=0;
L12864_Delayus(5);
L12864_RST=1;
L12864_CS1=1; //片选
L12864_CS2=1;
L12864_Delayus(5);
L12864_Write(L12864_comm,0x3e);//关显示
L12864_Delayus(5);
L12864_Write(L12864_comm,0x3f);//开显示
L12864_Delayus(5);
L12864_CS1=0; //关闭片选
L12864_CS2=0;
}
/******************************************************************
 - 功能描述:清屏子程序
 - 入口参数:无
 - 参 数 值:无
 - 返回说明:无
 - 备    注:
 
 ******************************************************************/
void L12864_ClearScreen(void)
{unsigned char x,y;
L12864_CS1=L12864_CS2=1; //选中屏
L12864_Write(L12864_comm,0xc0); //定义起始行
for(x=0;x<8;x++)
{
L12864_Write(L12864_comm,0xb8+x); //定义页
for(y=0;y<64;y++)
{
L12864_Write(L12864_comm,0x40+y); //定义列
L12864_Write(L12864_data,0x00); //写数据
}
}
}
/******************************************************************
 - 功能描述:画点子程序
 - 入口参数:X,Y,DOT
 - 参 数 值:X=0-127 Y=0-63 DOT=0 or 1
 - 返回说明:无
 - 备    注:X,Y为要画点的坐标位置 DOT表示画点(1)或清点(0)
 
 ******************************************************************/
void L12864_DrawDot(unsigned char X,unsigned char Y,bit DOT)
{
unsigned char X2,Y2,Temp;
unsigned char code Tab[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
if(X>127)X=127; //如果X超出范围 则X为最大位置
if(Y>63)Y=63; //如果Y超出范围 则Y为最大位置
if(X<64) //如果X小于64 则选择左半屏
{
L12864_CS1=1;
L12864_CS2=0;
X2=X;
}
else //如果X大于等于64则选择右半屏
{
L12864_CS1=0;
L12864_CS2=1;
X2=X-64;
}
Y2=Y/8; //定义Y所在页的位置

L12864_Write(L12864_comm,0xc0); //设定行地址,固定!
L12864_Write(L12864_comm,0xb8+Y2); //设定页地址
L12864_Write(L12864_comm,0x40+X2); //设定列地址

Temp=L12864_Read(); //读出当前位置的值,记住 读了以后需要再重新写Y地址

if(DOT) //如果dian=1 则画点
Temp = Temp|(Tab[Y&7]); //
else //如果dian=0 则清点
Temp = Temp&(~Tab[Y&7]);//
L12864_Write(L12864_comm,0x40+X2); //重新设定列地址
L12864_Write(L12864_data,Temp); //写新数据

}
/******************************************************************
 - 功能描述:显示图片子程序
 - 入口参数:代码表名称,是否反色(1表示反色,0表示正常)
 - 参 数 值:无
 - 返回说明:无
 - 备    注:图片尺寸: 128 * 64
  取模方式: 纵向取模下高位,数据排列:从上到下从左到右
  
 ******************************************************************/
void L12864_DrawPicture(unsigned char code * tp,bit DOT)
{
unsigned char x,y,temp; //用于给显示坐标计数!
unsigned int add=0; //用于给显示数据计数!

L12864_CS1=1,L12864_CS2=0; //首次运行选中左屏!
for(temp=0;temp<2;temp++) //一屏分两次显示!
{
L12864_Write(L12864_comm,0xc0); //定义起始行!
for(x=0;x<64;x++) //一个半屏有64列!循环64次!
{
for(y=0;y<8;y++) //一屏有8页,循环8次!
{ L12864_Write(L12864_comm,0x40+x); //定义新的列!
L12864_Write(L12864_comm,0xb8+y); //定义新的页!
if(!DOT)
L12864_Write(L12864_data,tp[add]); //写入当前显示数据!
else
L12864_Write(L12864_data,~tp[add]); //写入当前显示数据!
add++; //下一个显示数据!
}
}
L12864_CS1=0,L12864_CS2=1; //左屏显示完毕,换右屏!
}
}
/******************************************************************
 - 功能描述:写16*16字符子程序
 - 入口参数:屏选,x,y,字符表名,字符表中第几个成员
 - 参 数 值:x=0-48 y=0-6
 - 返回说明:无
 - 备    注:字符尺寸: 16 * 6
  取模方式: 纵向取模下高位,数据排列:从上到下从左到右
  
 ******************************************************************/
void L12864_Draw1616(unsigned char ping,unsigned char x,unsigned char y,unsigned char *p,unsigned char num)
{
unsigned char a,b,c=0;
switch(ping)
{
case 0:L12864_CS1=0;L12864_CS2=0;break;
case 1:L12864_CS1=1;L12864_CS2=0;break;
case 2:L12864_CS1=0;L12864_CS2=1;break;
case 3:L12864_CS1=1;L12864_CS2=1;break;
default:L12864_CS1=1;L12864_CS2=0;
}
L12864_Write(L12864_comm,0xc0); //设定行地址,固定!
if(y>6)y=6;
if(x>48)x=48;

for(a=0;a<2;a++)
{
L12864_Write(L12864_comm,0xb8+y+a); //设定页地址
for(b=0;b<16;b++)
{
L12864_Write(L12864_comm,0x40+x+b); //设定列地址
L12864_Write(L12864_data,p[32*num+c]);
c++;
}
}
}

/******************************************************************
 - 功能描述:写16*8字符子程序
 - 入口参数:屏选,x,y,字符表名,字符表中第几个成员
 - 参 数 值:x=0-56 y=0-6
 - 返回说明:无
 - 备    注:字符尺寸: 16 * 6
  取模方式: 纵向取模下高位,数据排列:从上到下从左到右
  
 ******************************************************************/
void L12864_Draw1608(unsigned char ping,unsigned char x,unsigned char y,unsigned char *p,unsigned char num)
{
unsigned char a,b,c=0;
switch(ping)
{
case 0:L12864_CS1=0;L12864_CS2=0;break;
case 1:L12864_CS1=1;L12864_CS2=0;break;
case 2:L12864_CS1=0;L12864_CS2=1;break;
case 3:L12864_CS1=1;L12864_CS2=1;break;
default:L12864_CS1=1;L12864_CS2=0;
}
L12864_Write(L12864_comm,0xc0); //设定行地址,固定!

if(y>6)y=6;
if(x>56)x=56;

for(a=0;a<2;a++)
{
L12864_Write(L12864_comm,0xb8+y+a); //设定页地址
for(b=0;b<8;b++)
{
L12864_Write(L12864_comm,0x40+x+b); //设定列地址
L12864_Write(L12864_data,p[16*num+c]);
c++;
}
}
}
★==============12864底层代码结束===================  
★=============12864多窗口处理代码=================== 
//窗口_初始化 | L12864_Windows_Init();
void L12864_Windows_Init(void)
{
unsigned char i;
L12864_ClearScreen(); //清屏
L12864_Draw1616(L12864_Screen_L,32,0,Char_1616_Text,0); //汉字_欢
L12864_Draw1616(L12864_Screen_L,48,0,Char_1616_Text,1); //汉字_迎
L12864_Draw1616(L12864_Screen_R,0,0,Char_1616_Text,2); //汉字_使
L12864_Draw1616(L12864_Screen_R,16,0,Char_1616_Text,3); //汉字_用

L12864_Draw1616(L12864_Screen_L,16,4,Char_1616_Bmp,0); //图标_锁
L12864_Draw1616(L12864_Screen_L,32,4,Char_1616_Text,4); //汉字_电
L12864_Draw1616(L12864_Screen_L,48,4,Char_1616_Text,5); //汉字_子

L12864_Draw1616(L12864_Screen_R,0,4,Char_1616_Text,6); //汉字_密
L12864_Draw1616(L12864_Screen_R,16,4,Char_1616_Text,7); //汉字_码
L12864_Draw1616(L12864_Screen_R,32,4,Char_1616_Text,8); //汉字_锁
for(i=20;i<108;i++)
{
L12864_DrawDot(i,55,1);
L12864_DrawDot(i,60,1);
}
for(i=55;i<61;i++)
{
L12864_DrawDot(20,i,1);
L12864_DrawDot(108,i,1);
}
for(i=20;i<108;i++)
{
L12864_DrawDot(i,57,1);
L12864_DrawDot(i,58,1);
L12864_Delayus(2000);
}
}

//窗口_输入密码(次数) | L12864_Windows_Input();
void L12864_Windows_Input(unsigned char InPutV)
{
L12864_ClearScreen(); //清屏
if(InPutV>6)
InPutV=6;
L12864_Draw1616(L12864_Screen_L,0,0,Char_1616_Text,9); //汉字_请
L12864_Draw1616(L12864_Screen_L,16,0,Char_1616_Text,10); //汉字_输
L12864_Draw1616(L12864_Screen_L,32,0,Char_1616_Text,11); //汉字_入
L12864_Draw1616(L12864_Screen_L,48,0,Char_1616_Text,12); //汉字_开
L12864_Draw1616(L12864_Screen_R,0,0,Char_1616_Text,13); //汉字_门
L12864_Draw1616(L12864_Screen_R,16,0,Char_1616_Text,6); //汉字_密
L12864_Draw1616(L12864_Screen_R,32,0,Char_1616_Text,7); //汉字_码
L12864_Draw1616(L12864_Screen_R,48,0,Char_1616_Symbol,0); //字符_冒号
L12864_Draw1616(L12864_Screen_L,16,3,Char_1616_Symbol,1); //字符_下划线
L12864_Draw1616(L12864_Screen_L,32,3,Char_1616_Symbol,1); //字符_下划线
L12864_Draw1616(L12864_Screen_L,48,3,Char_1616_Symbol,1); //字符_下划线
L12864_Draw1616(L12864_Screen_R,0,3,Char_1616_Symbol,1); //字符_下划线
L12864_Draw1616(L12864_Screen_R,16,3,Char_1616_Symbol,1); //字符_下划线
L12864_Draw1616(L12864_Screen_R,32,3,Char_1616_Symbol,1); //字符_下划线
if(InPutV==1)
{
L12864_Draw1616(L12864_Screen_R,32,3,Char_1616_Symbol,2); //字符_星号
}
if(InPutV==2)
{
L12864_Draw1616(L12864_Screen_R,16,3,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,32,3,Char_1616_Symbol,2); //字符_星号
}
if(InPutV==3)
{
L12864_Draw1616(L12864_Screen_R,0,3,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,16,3,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,32,3,Char_1616_Symbol,2); //字符_星号
}
if(InPutV==4)
{
L12864_Draw1616(L12864_Screen_L,48,3,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,0,3,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,16,3,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,32,3,Char_1616_Symbol,2); //字符_星号
}
if(InPutV==5)
{
L12864_Draw1616(L12864_Screen_L,32,3,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_L,48,3,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,0,3,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,16,3,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,32,3,Char_1616_Symbol,2); //字符_星号
}
if(InPutV==6)
{
L12864_Draw1616(L12864_Screen_L,16,3,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_L,32,3,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_L,48,3,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,0,3,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,16,3,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,32,3,Char_1616_Symbol,2); //字符_星号
}
}

//窗口_输入错误(次数) | L12864_Windows_Error();
void L12864_Windows_Error(unsigned char ErrV)
{
L12864_ClearScreen(); //清屏
if(ErrV>0)
{
L12864_Draw1616(L12864_Screen_L,16,3,Char_1616_Text,6); //汉字_密
L12864_Draw1616(L12864_Screen_L,32,3,Char_1616_Text,7); //汉字_码
L12864_Draw1616(L12864_Screen_L,48,3,Char_1616_Text,10); //汉字_输
L12864_Draw1616(L12864_Screen_R,0,3,Char_1616_Text,11); //汉字_入
L12864_Draw1616(L12864_Screen_R,16,3,Char_1616_Text,14); //汉字_错
L12864_Draw1616(L12864_Screen_R,32,3,Char_1616_Text,15); //汉字_误
L12864_Draw1616(L12864_Screen_L,0,6,Char_1616_Text,18); //汉字_还
L12864_Draw1616(L12864_Screen_L,16,6,Char_1616_Text,19); //汉字_有
L12864_Draw1608(L12864_Screen_L,32,6,Char_1608_Num,ErrV/10);
L12864_Draw1608(L12864_Screen_L,40,6,Char_1608_Num,ErrV%10);
L12864_Draw1616(L12864_Screen_L,48,6,Char_1616_Text,20); //汉字_次
L12864_Draw1616(L12864_Screen_R,0,6,Char_1616_Text,10); //汉字_输
L12864_Draw1616(L12864_Screen_R,16,6,Char_1616_Text,11); //汉字_入
L12864_Draw1616(L12864_Screen_R,32,6,Char_1616_Text,21); //汉字_机
L12864_Draw1616(L12864_Screen_R,48,6,Char_1616_Text,22); //汉字_会
}
}

//窗口_错误等待(数值,单位) | L12864_Windows_ErrorWait();
void L12864_Windows_ErrorWait(unsigned char MinV,bit Unit)
{
L12864_ClearScreen();
if(Unit)
{
L12864_Draw1616(L12864_Screen_L,0,3,Char_1616_Bmp,0); //图标_锁
L12864_Draw1616(L12864_Screen_L,16,3,Char_1616_Text,9); //汉字_请
L12864_Draw1608(L12864_Screen_L,32,3,Char_1608_Num,MinV/10);
L12864_Draw1608(L12864_Screen_L,40,3,Char_1608_Num,MinV%10);
L12864_Draw1616(L12864_Screen_L,48,3,Char_1616_Text,42); //汉字_秒
L12864_Draw1616(L12864_Screen_R,0,3,Char_1616_Text,27); //汉字_后
L12864_Draw1616(L12864_Screen_R,16,3,Char_1616_Text,28); //汉字_重
L12864_Draw1616(L12864_Screen_R,32,3,Char_1616_Text,29); //汉字_试
}
else
{
L12864_Draw1616(L12864_Screen_L,0,3,Char_1616_Bmp,0); //图标_锁
L12864_Draw1616(L12864_Screen_L,16,3,Char_1616_Text,9); //汉字_请
L12864_Draw1608(L12864_Screen_L,32,3,Char_1608_Num,MinV/10);
L12864_Draw1608(L12864_Screen_L,40,3,Char_1608_Num,MinV%10);
L12864_Draw1616(L12864_Screen_L,48,3,Char_1616_Text,25); //汉字_分
L12864_Draw1616(L12864_Screen_R,0,3,Char_1616_Text,26); //汉字_钟
L12864_Draw1616(L12864_Screen_R,16,3,Char_1616_Text,27); //汉字_后
L12864_Draw1616(L12864_Screen_R,32,3,Char_1616_Text,28); //汉字_重
L12864_Draw1616(L12864_Screen_R,48,3,Char_1616_Text,29); //汉字_试
}
}

//窗口_门打开 | L12864_Windows_Door_Open();
void L12864_Windows_Door_Open(void)
{
L12864_ClearScreen(); //清屏
L12864_Draw1616(L12864_Screen_L,32,3,Char_1616_Text,13); //汉字_门
L12864_Draw1616(L12864_Screen_L,48,3,Char_1616_Text,16); //汉字_已
L12864_Draw1616(L12864_Screen_R,0,3,Char_1616_Text,12); //汉字_开
L12864_Draw1616(L12864_Screen_R,16,3,Char_1616_Text,17); //汉字_启
}

//窗口_门关闭 | L12864_Windows_Door_Close();
void L12864_Windows_Door_Close(void)
{
L12864_ClearScreen(); //清屏
L12864_Draw1616(L12864_Screen_L,32,3,Char_1616_Text,13); //汉字_门
L12864_Draw1616(L12864_Screen_L,48,3,Char_1616_Text,16); //汉字_已
L12864_Draw1616(L12864_Screen_R,0,3,Char_1616_Text,23); //汉字_关
L12864_Draw1616(L12864_Screen_R,16,3,Char_1616_Text,24); //汉字_闭
}

//窗口_修改密码_输入原密码(次数) | L12864_ChangePass_In();
void L12864_ChangePass_In(unsigned char InPutV)
{
L12864_ClearScreen(); //清屏
if(InPutV>6)
InPutV=6;
L12864_Draw1616(L12864_Screen_L,0,0,Char_1616_Symbol,3); //字符_【
L12864_Draw1616(L12864_Screen_L,16,0,Char_1616_Text,6); //汉字_密
L12864_Draw1616(L12864_Screen_L,32,0,Char_1616_Text,7); //汉字_码
L12864_Draw1616(L12864_Screen_L,48,0,Char_1616_Text,34); //汉字_修
L12864_Draw1616(L12864_Screen_R,0,0,Char_1616_Text,35); //汉字_改
L12864_Draw1616(L12864_Screen_R,16,0,Char_1616_Symbol,4); //字符_】
L12864_Draw1616(L12864_Screen_L,0,3,Char_1616_Text,9); //汉字_请
L12864_Draw1616(L12864_Screen_L,16,3,Char_1616_Text,10); //汉字_输
L12864_Draw1616(L12864_Screen_L,32,3,Char_1616_Text,11); //汉字_入
L12864_Draw1616(L12864_Screen_L,48,3,Char_1616_Text,30); //汉字_原
L12864_Draw1616(L12864_Screen_R,0,3,Char_1616_Text,6); //汉字_密
L12864_Draw1616(L12864_Screen_R,16,3,Char_1616_Text,7); //汉字_码
L12864_Draw1616(L12864_Screen_R,32,3,Char_1616_Symbol,0); //字符_冒号
L12864_Draw1616(L12864_Screen_L,16,5,Char_1616_Symbol,1); //字符_下划线
L12864_Draw1616(L12864_Screen_L,32,5,Char_1616_Symbol,1); //字符_下划线
L12864_Draw1616(L12864_Screen_L,48,5,Char_1616_Symbol,1); //字符_下划线
L12864_Draw1616(L12864_Screen_R,0,5,Char_1616_Symbol,1); //字符_下划线
L12864_Draw1616(L12864_Screen_R,16,5,Char_1616_Symbol,1); //字符_下划线
L12864_Draw1616(L12864_Screen_R,32,5,Char_1616_Symbol,1); //字符_下划线
if(InPutV==1)
{
L12864_Draw1616(L12864_Screen_R,32,5,Char_1616_Symbol,2); //字符_星号
}
if(InPutV==2)
{
L12864_Draw1616(L12864_Screen_R,16,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,32,5,Char_1616_Symbol,2); //字符_星号
}
if(InPutV==3)
{
L12864_Draw1616(L12864_Screen_R,0,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,16,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,32,5,Char_1616_Symbol,2); //字符_星号
}
if(InPutV==4)
{
L12864_Draw1616(L12864_Screen_L,48,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,0,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,16,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,32,5,Char_1616_Symbol,2); //字符_星号
}
if(InPutV==5)
{
L12864_Draw1616(L12864_Screen_L,32,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_L,48,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,0,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,16,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,32,5,Char_1616_Symbol,2); //字符_星号
}
if(InPutV==6)
{
L12864_Draw1616(L12864_Screen_L,16,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_L,32,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_L,48,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,0,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,16,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,32,5,Char_1616_Symbol,2); //字符_星号
}
}

//窗口_修改密码_输入新密码(次数) | L12864_ChangePass_NewIn1();
void L12864_ChangePass_NewIn1(unsigned char InPutV)
{
L12864_ClearScreen(); //清屏
if(InPutV>6)
InPutV=6;
L12864_Draw1616(L12864_Screen_L,0,0,Char_1616_Symbol,3); //字符_【
L12864_Draw1616(L12864_Screen_L,16,0,Char_1616_Text,6); //汉字_密
L12864_Draw1616(L12864_Screen_L,32,0,Char_1616_Text,7); //汉字_码
L12864_Draw1616(L12864_Screen_L,48,0,Char_1616_Text,34); //汉字_修
L12864_Draw1616(L12864_Screen_R,0,0,Char_1616_Text,35); //汉字_改
L12864_Draw1616(L12864_Screen_R,16,0,Char_1616_Symbol,4); //字符_】
L12864_Draw1616(L12864_Screen_L,0,3,Char_1616_Text,9); //汉字_请
L12864_Draw1616(L12864_Screen_L,16,3,Char_1616_Text,10); //汉字_输
L12864_Draw1616(L12864_Screen_L,32,3,Char_1616_Text,11); //汉字_入
L12864_Draw1616(L12864_Screen_L,48,3,Char_1616_Text,31); //汉字_新
L12864_Draw1616(L12864_Screen_R,0,3,Char_1616_Text,6); //汉字_密
L12864_Draw1616(L12864_Screen_R,16,3,Char_1616_Text,7); //汉字_码
L12864_Draw1616(L12864_Screen_R,32,3,Char_1616_Symbol,0); //字符_冒号
L12864_Draw1616(L12864_Screen_L,16,5,Char_1616_Symbol,1); //字符_下划线
L12864_Draw1616(L12864_Screen_L,32,5,Char_1616_Symbol,1); //字符_下划线
L12864_Draw1616(L12864_Screen_L,48,5,Char_1616_Symbol,1); //字符_下划线
L12864_Draw1616(L12864_Screen_R,0,5,Char_1616_Symbol,1); //字符_下划线
L12864_Draw1616(L12864_Screen_R,16,5,Char_1616_Symbol,1); //字符_下划线
L12864_Draw1616(L12864_Screen_R,32,5,Char_1616_Symbol,1); //字符_下划线
if(InPutV==1)
{
L12864_Draw1616(L12864_Screen_R,32,5,Char_1616_Symbol,2); //字符_星号
}
if(InPutV==2)
{
L12864_Draw1616(L12864_Screen_R,16,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,32,5,Char_1616_Symbol,2); //字符_星号
}
if(InPutV==3)
{
L12864_Draw1616(L12864_Screen_R,0,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,16,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,32,5,Char_1616_Symbol,2); //字符_星号
}
if(InPutV==4)
{
L12864_Draw1616(L12864_Screen_L,48,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,0,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,16,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,32,5,Char_1616_Symbol,2); //字符_星号
}
if(InPutV==5)
{
L12864_Draw1616(L12864_Screen_L,32,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_L,48,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,0,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,16,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,32,5,Char_1616_Symbol,2); //字符_星号
}
if(InPutV==6)
{
L12864_Draw1616(L12864_Screen_L,16,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_L,32,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_L,48,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,0,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,16,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,32,5,Char_1616_Symbol,2); //字符_星号
}
}

//窗口_修改密码_再输入一次 | L12864_ChangePass_NewIn2();
void L12864_ChangePass_NewIn2(unsigned char InPutV)
{
L12864_ClearScreen(); //清屏
if(InPutV>6)
InPutV=6;
L12864_Draw1616(L12864_Screen_L,0,0,Char_1616_Symbol,3); //字符_【
L12864_Draw1616(L12864_Screen_L,16,0,Char_1616_Text,6); //汉字_密
L12864_Draw1616(L12864_Screen_L,32,0,Char_1616_Text,7); //汉字_码
L12864_Draw1616(L12864_Screen_L,48,0,Char_1616_Text,34); //汉字_修
L12864_Draw1616(L12864_Screen_R,0,0,Char_1616_Text,35); //汉字_改
L12864_Draw1616(L12864_Screen_R,16,0,Char_1616_Symbol,4); //字符_】
L12864_Draw1616(L12864_Screen_L,0,3,Char_1616_Text,9); //汉字_请
L12864_Draw1616(L12864_Screen_L,16,3,Char_1616_Text,32); //汉字_再
L12864_Draw1616(L12864_Screen_L,32,3,Char_1616_Text,10); //汉字_输
L12864_Draw1616(L12864_Screen_L,48,3,Char_1616_Text,11); //汉字_入
L12864_Draw1616(L12864_Screen_R,0,3,Char_1616_Text,33); //汉字_一
L12864_Draw1616(L12864_Screen_R,16,3,Char_1616_Text,20); //汉字_次
L12864_Draw1616(L12864_Screen_R,32,3,Char_1616_Symbol,0); //字符_冒号
L12864_Draw1616(L12864_Screen_L,16,5,Char_1616_Symbol,1); //字符_下划线
L12864_Draw1616(L12864_Screen_L,32,5,Char_1616_Symbol,1); //字符_下划线
L12864_Draw1616(L12864_Screen_L,48,5,Char_1616_Symbol,1); //字符_下划线
L12864_Draw1616(L12864_Screen_R,0,5,Char_1616_Symbol,1); //字符_下划线
L12864_Draw1616(L12864_Screen_R,16,5,Char_1616_Symbol,1); //字符_下划线
L12864_Draw1616(L12864_Screen_R,32,5,Char_1616_Symbol,1); //字符_下划线
if(InPutV==1)
{
L12864_Draw1616(L12864_Screen_R,32,5,Char_1616_Symbol,2); //字符_星号
}
if(InPutV==2)
{
L12864_Draw1616(L12864_Screen_R,16,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,32,5,Char_1616_Symbol,2); //字符_星号
}
if(InPutV==3)
{
L12864_Draw1616(L12864_Screen_R,0,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,16,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,32,5,Char_1616_Symbol,2); //字符_星号
}
if(InPutV==4)
{
L12864_Draw1616(L12864_Screen_L,48,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,0,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,16,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,32,5,Char_1616_Symbol,2); //字符_星号
}
if(InPutV==5)
{
L12864_Draw1616(L12864_Screen_L,32,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_L,48,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,0,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,16,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,32,5,Char_1616_Symbol,2); //字符_星号
}
if(InPutV==6)
{
L12864_Draw1616(L12864_Screen_L,16,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_L,32,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_L,48,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,0,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,16,5,Char_1616_Symbol,2); //字符_星号
L12864_Draw1616(L12864_Screen_R,32,5,Char_1616_Symbol,2); //字符_星号
}
}

//窗口_修改密码_密码验证失败 | L12864_CheckPass_Err();
void L12864_CheckPass_Err(void)
{
L12864_ClearScreen(); //清屏
L12864_Draw1616(L12864_Screen_L,0,0,Char_1616_Symbol,3); //字符_【
L12864_Draw1616(L12864_Screen_L,16,0,Char_1616_Text,6); //汉字_密
L12864_Draw1616(L12864_Screen_L,32,0,Char_1616_Text,7); //汉字_码
L12864_Draw1616(L12864_Screen_L,48,0,Char_1616_Text,34); //汉字_修
L12864_Draw1616(L12864_Screen_R,0,0,Char_1616_Text,35); //汉字_改
L12864_Draw1616(L12864_Screen_R,16,0,Char_1616_Symbol,4); //字符_】
L12864_Draw1616(L12864_Screen_L,16,4,Char_1616_Text,6); //汉字_密
L12864_Draw1616(L12864_Screen_L,32,4,Char_1616_Text,7); //汉字_码
L12864_Draw1616(L12864_Screen_L,48,4,Char_1616_Text,40); //汉字_验
L12864_Draw1616(L12864_Screen_R,0,4,Char_1616_Text,41); //汉字_证
L12864_Draw1616(L12864_Screen_R,16,4,Char_1616_Text,38); //汉字_失
L12864_Draw1616(L12864_Screen_R,32,4,Char_1616_Text,39); //汉字_败
}

//窗口_修改密码_修改成功 | L12864_ChangePass_OK();
void L12864_ChangePass_OK(void)
{
L12864_ClearScreen(); //清屏
L12864_Draw1616(L12864_Screen_L,0,0,Char_1616_Symbol,3); //字符_【
L12864_Draw1616(L12864_Screen_L,16,0,Char_1616_Text,6); //汉字_密
L12864_Draw1616(L12864_Screen_L,32,0,Char_1616_Text,7); //汉字_码
L12864_Draw1616(L12864_Screen_L,48,0,Char_1616_Text,34); //汉字_修
L12864_Draw1616(L12864_Screen_R,0,0,Char_1616_Text,35); //汉字_改
L12864_Draw1616(L12864_Screen_R,16,0,Char_1616_Symbol,4); //字符_】
L12864_Draw1616(L12864_Screen_L,32,4,Char_1616_Text,34); //汉字_修
L12864_Draw1616(L12864_Screen_L,48,4,Char_1616_Text,35); //汉字_改
L12864_Draw1616(L12864_Screen_R,0,4,Char_1616_Text,36); //汉字_成
L12864_Draw1616(L12864_Screen_R,16,4,Char_1616_Text,37); //汉字_功
}

//窗口_修改密码_修改失败 | L12864_ChangePass_Error();
void L12864_ChangePass_Error(void)
{
L12864_ClearScreen(); //清屏
L12864_Draw1616(L12864_Screen_L,0,0,Char_1616_Symbol,3); //字符_【
L12864_Draw1616(L12864_Screen_L,16,0,Char_1616_Text,6); //汉字_密
L12864_Draw1616(L12864_Screen_L,32,0,Char_1616_Text,7); //汉字_码
L12864_Draw1616(L12864_Screen_L,48,0,Char_1616_Text,34); //汉字_修
L12864_Draw1616(L12864_Screen_R,0,0,Char_1616_Text,35); //汉字_改
L12864_Draw1616(L12864_Screen_R,16,0,Char_1616_Symbol,4); //字符_】
L12864_Draw1616(L12864_Screen_L,32,4,Char_1616_Text,34); //汉字_修
L12864_Draw1616(L12864_Screen_L,48,4,Char_1616_Text,35); //汉字_改
L12864_Draw1616(L12864_Screen_R,0,4,Char_1616_Text,38); //汉字_失
L12864_Draw1616(L12864_Screen_R,16,4,Char_1616_Text,39); //汉字_败
} 
★===========12864多窗口处理代码结束==================  
★============模拟关门(独立按键)代码=================== 
unsigned char KeyAloneV;
sbit Key_Door = P3^5;
void keysan_Alone(void)
{ if(Key_Door==0)
KeyAloneV=1;
if(Key_Door==1&&KeyAloneV==1)
{
KeyAloneV=0;
Door=1;
}
} 
★============模拟关门(独立按键)代码结束================ 
★=============矩阵键盘扫描、处理代码================== 
#define Key_44_Data P1 //宏定义矩阵键盘接口
unsigned char zhi,a,hang,lie;

/******************************************************************
 - 功能描述:延时子程序
 - 入口参数:长整数型
 - 参 数 值:0-65535
 - 返回说明:无
 - 备    注:无
 ******************************************************************/  
void Key_44_Delay(unsigned char i)
{  unsigned char x;
for(x=80;x>0;x--)
for(i;i>0;i--);
}

/******************************************************************
 - 功能描述:矩阵键盘扫描子程序
 - 入口参数:无
 - 参 数 值:无
 - 返回说明:无
 - 备    注:无
 ******************************************************************/
void Key_44_KeySan(void)
{ Key_44_Data=0x0f; //给4行赋高电平,4列赋低电平
if(Key_44_Data!=0x0f) //判断是否有键按下
Key_44_Delay(5); //按键消除抖动
if(Key_44_Data!=0x0f) //再次判断是否有键按下
{ hang=Key_44_Data; //把行的值暂存
a=1; //按键按下标志位置1
Key_44_Data=0xf0; //给4列赋高电平,4行赋低电平
lie=Key_44_Data; //把列的值暂存
zhi=lie|hang; //将行值和列值相或得出键值
}  
if((Key_44_Data==0x0f)&&(a==1)) //判断是否松手
Key_44_Delay(5); //按键松手消除抖动
if((Key_44_Data==0x0f)&&(a==1)) //再次判断是否松手
{ a=0; //按键按下标志位清零
switch(zhi) //比较读键值
{
case 0x77:jianzhi=15;break; //按键D
case 0x7b:jianzhi=14;break; //按键C
case 0x7d:jianzhi=13;break; //按键B
case 0x7e:jianzhi=12;break; //按键A修改密码
case 0xb7:jianzhi=10;break; //按键#确认
case 0xbb:jianzhi=9;break; //按键9
case 0xbd:jianzhi=6;break; //按键6
case 0xbe:jianzhi=3;break; //按键3
case 0xd7:jianzhi=0;break; //按键0
case 0xdb:jianzhi=8;break; //按键8
case 0xdd:jianzhi=5;break; //按键5
case 0xde:jianzhi=2;break; //按键2
case 0xe7:jianzhi=11;break; //按键*取消
case 0xeb:jianzhi=7;break; //按键7
case 0xed:jianzhi=4;break; //按键4
case 0xee:jianzhi=1;break; //按键1
}
if(jianzhi<13) //如果按下的是0-9 确认 取消 修改密码键 则按键有效
{
KeyAvailable=1;
}
}
}

/******************************************************************
 - 功能描述:矩阵键盘处理子程序
 - 入口参数:无
 - 参 数 值:无
 - 返回说明:无
 - 备    注:无
 ******************************************************************/
void Key_44_KeyHandle(void)
{
if(KeyAvailable)
{
//----- 模式=1 输入开门密码模式
if(MODE==1) //如果当前为输入开门密码模式
{
if((InPutCount<=5) && (jianzhi<=9)) //当前输入的是0-9 并且输入不足6位
{
InPutPassWord[InPutCount]=jianzhi+0x30;
InPutCount++;
L12864_Windows_Input(InPutCount);
}
if((jianzhi==10) &&(InPutCount==6)) //如果按下确认键并且密码输入完整
{
if(PassWordCheck())
{
L12864_Windows_Door_Open(); //密码正确 门已经开启
ErrCount=Count; //输入错误计次归位
Door=0; //置门打开标志位 0表示打开

MODE=5;
}
else
{
MODE=0;
ErrCount--;
if(ErrCount>0)
{
L12864_Windows_Error(ErrCount);
L12864_Delay1S(); //延时3秒
InPutCount=0;
L12864_Windows_Input(InPutCount);
MODE=1;
}
else
{
L12864_Windows_ErrorWait(ErrWait,0);
MODE=6;
}

}
}
if(jianzhi==11) //如果按下取消键
{
ClrarPassBuf();
InPutCount=0;
L12864_Windows_Input(InPutCount);
MODE=1;
}
if(jianzhi==12) //如果按下修改密码键
{
InPutCount=0;
L12864_ChangePass_In(InPutCount);
MODE=2; //设置当前为修改密码模式
}
}

//----- 模式=2 修改密码模式
if(MODE==2) //如果当前为修改密码模式
{
if((InPutCount<=5) && (jianzhi<=9)) //当前输入的是0-9 并且输入不足6位
{
InPutPassWord[InPutCount]=jianzhi+0x30;
InPutCount++;
L12864_ChangePass_In(InPutCount);
}
if(jianzhi==10) //如果按下确认键
{
if(PassWordCheck())
{
InPutCount=0;
L12864_ChangePass_NewIn1(InPutCount);
MODE=3;
}
else
{
L12864_CheckPass_Err();
L12864_Delay1S(); //延时3秒
InPutCount=0;
L12864_Windows_Input(InPutCount);
MODE=1;
}
}
if(jianzhi==11) //如果按下取消键
{
ClrarPassBuf();
InPutCount=0;
L12864_Windows_Input(InPutCount);
MODE=1;
}
}

//----- 模式=3 输入新密码1
if(MODE==3)
{
if((InPutCount<=5) && (jianzhi<=9)) //当前输入的是0-9 并且输入不足6位
{
InPutPassWordNew1[InPutCount]=jianzhi+0x30;
InPutCount++;
L12864_ChangePass_NewIn1(InPutCount);
}
if((NextCycle_MODE3) && (jianzhi==10)) //如果按下确认键
{
if(InPutCount==6)
{
InPutCount=0;
L12864_ChangePass_NewIn2(InPutCount);
MODE=4;
}
}
if(jianzhi==11) //如果按下取消键
{
ClrarPassBuf();
InPutCount=0;
L12864_Windows_Input(InPutCount);
MODE=1;
}
if(MODE==3)
NextCycle_MODE3=1;
else
NextCycle_MODE3=0;
}

//----- 模式=4 输入新密码2
if(MODE==4)
{
if((InPutCount<=5) && (jianzhi<=9)) //当前输入的是0-9 并且输入不足6位
{
InPutPassWordNew2[InPutCount]=jianzhi+0x30;
InPutCount++;
L12864_ChangePass_NewIn2(InPutCount);
}
if((NextCycle_MODE4) && (jianzhi==10)) //如果按下确认键
{
if(PassWordCheckNew())
{
WriteNewPassWord();
L12864_ChangePass_OK();
}
else
{
L12864_ChangePass_Error();
}
L12864_Delay1S(); //延时3秒
InPutCount=0;
L12864_Windows_Input(InPutCount);
MODE=1;
}
if(jianzhi==11) //如果按下取消键
{
ClrarPassBuf();
InPutCount=0;
L12864_Windows_Input(InPutCount);
MODE=1;
}
if(MODE==4)
NextCycle_MODE4=1;
else
NextCycle_MODE4=0;
}
//----- 模式=5 等待关门
if(MODE==5)
{
while(Door==0)
{
keysan_Alone();
}
//此时门已经关闭
L12864_Windows_Door_Close();
L12864_Delay1S(); //延时3秒
InPutCount=0;
L12864_Windows_Input(InPutCount);
MODE=1;
}

//----- 模式=6 等待时间到
if(MODE==6)
{
TR0=1;
fen=ErrMin;
while(fen>=1)
{
if(Unit)//为1 单位为秒
{
if(NewS!=s)
{
L12864_Windows_ErrorWait(s,1);
NewS=s;
}
}
else //否则单位为分钟
{
if(Newfen!=fen)
{
L12864_Windows_ErrorWait(fen,0);
Newfen=fen;
}
}
L12864_Delay1S();
if((fen==0) && (s==-1))
{
break;
}
}
TR0=0;
ms=0;
s=59;
Unit=0;//单位切换为分
fen=ErrMin;
ErrCount=Count;
InPutCount=0;
L12864_Windows_Input(InPutCount);
MODE=1; 
}
}
KeyAvailable=0;
} 
★============矩阵键盘扫描、处理代码结束================  
★=================12864Code=====================  
unsigned char code Char_1608_Num[]={
0x00,0xF0,0x08,0x08,0x08,0x08,0xF0,0x00,0x00,0x0F,0x10,0x10,0x10,0x10,0x0F,0x00,/*"0",0*/
0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x1F,0x10,0x10,0x00,/*"1",1*/
0x00,0x10,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x18,0x14,0x12,0x11,0x10,0x10,0x00,/*"2",2*/
0x00,0x10,0x08,0x88,0x88,0x88,0x70,0x00,0x00,0x08,0x10,0x10,0x10,0x10,0x0F,0x00,/*"3",3*/
0x00,0x00,0x80,0x60,0x10,0xF8,0x00,0x00,0x00,0x03,0x02,0x02,0x12,0x1F,0x12,0x00,/*"4",4*/
0x00,0xF8,0x88,0x88,0x88,0x88,0x08,0x00,0x00,0x08,0x10,0x10,0x10,0x10,0x0F,0x00,/*"5",5*/
0x00,0xE0,0x10,0x88,0x88,0x88,0x00,0x00,0x00,0x0F,0x11,0x10,0x10,0x10,0x0F,0x00,/*"6",6*/
0x00,0x18,0x08,0x08,0x88,0x68,0x18,0x00,0x00,0x00,0x18,0x06,0x01,0x00,0x00,0x00,/*"7",7*/
0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00,0x0F,0x10,0x10,0x10,0x10,0x0F,0x00,/*"8",8*/
0x00,0xF0,0x08,0x08,0x08,0x88,0xF0,0x00,0x00,0x00,0x11,0x11,0x11,0x08,0x07,0x00,/*"9",9*/
0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x00,0x00,0x00,0x00,/*"/",10*/
};
unsigned char code Char_1616_Text[]={
0x04,0x34,0xC4,0x04,0xC4,0x3C,0x20,0x10,0x0F,0xE8,0x08,0x08,0x28,0x18,0x00,0x00,//汉字_00 欢
0x10,0x08,0x06,0x01,0x82,0x8C,0x40,0x30,0x0C,0x03,0x0C,0x10,0x60,0xC0,0x40,0x00,
0x40,0x42,0x44,0xC8,0x00,0xFC,0x04,0x02,0x82,0xFC,0x04,0x04,0x04,0xFE,0x04,0x00,//汉字_01 迎
0x00,0x40,0x20,0x1F,0x20,0x47,0x42,0x41,0x40,0x7F,0x40,0x42,0x44,0x63,0x20,0x00,
0x40,0x20,0xF8,0x07,0x04,0xF4,0x14,0x14,0x14,0xFF,0x14,0x14,0x14,0xF6,0x04,0x00,//汉字_02 使
0x00,0x00,0xFF,0x00,0x80,0x43,0x45,0x29,0x19,0x17,0x21,0x21,0x41,0xC3,0x40,0x00,
0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0xFF,0x02,0x00,0x00,//汉字_03 用
0x80,0x60,0x1F,0x02,0x02,0x02,0x02,0x7F,0x02,0x02,0x42,0x82,0x7F,0x00,0x00,0x00,
0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xFC,0x08,0x00,0x00,0x00,//汉字_04 电
0x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,0x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00,
0x80,0x80,0x82,0x82,0x82,0x82,0x82,0xE2,0xA2,0x92,0x8A,0x86,0x80,0xC0,0x80,0x00,//汉字_05 子
0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x10,0x4C,0x24,0x04,0xF4,0x84,0x4D,0x56,0x24,0x24,0x14,0x84,0x24,0x54,0x0C,0x00,//汉字_06 密
0x00,0x01,0xFD,0x41,0x40,0x41,0x41,0x7F,0x41,0x41,0x41,0x41,0xFC,0x00,0x00,0x00,
0x02,0x82,0xF2,0x4E,0x43,0xE2,0x42,0xFA,0x02,0x02,0x02,0xFF,0x02,0x80,0x00,0x00,//汉字_07 码
0x01,0x00,0x7F,0x20,0x20,0x7F,0x08,0x09,0x09,0x09,0x0D,0x49,0x81,0x7F,0x01,0x00,
0x80,0x40,0x70,0xCF,0x48,0x48,0x00,0xE2,0x2C,0x20,0xBF,0x20,0x28,0xF6,0x20,0x00,//汉字_08 锁
0x00,0x02,0x02,0x7F,0x22,0x92,0x80,0x4F,0x40,0x20,0x1F,0x20,0x20,0x4F,0x80,0x00,
0x20,0x22,0xEC,0x00,0x20,0x22,0xAA,0xAA,0xAA,0xBF,0xAA,0xAA,0xEB,0xA2,0x20,0x00,//汉字_09 请
0x00,0x00,0x7F,0x20,0x10,0x00,0xFF,0x0A,0x0A,0x0A,0x4A,0x8A,0x7F,0x00,0x00,0x00,
0x88,0x68,0x1F,0xC8,0x0C,0x28,0x90,0xA8,0xA6,0xA1,0x26,0x28,0x10,0xB0,0x10,0x00,//汉字_10 输
0x09,0x09,0x05,0xFF,0x05,0x00,0xFF,0x0A,0x8A,0xFF,0x00,0x1F,0x80,0xFF,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0xE2,0x1C,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//汉字_11 入
0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x03,0x0C,0x30,0x40,0xC0,0x40,0x00,
0x80,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x82,0x82,0xFE,0x82,0x83,0xC2,0x80,0x00,//汉字_12 开
0x00,0x80,0x40,0x30,0x0F,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,
0x00,0xFC,0x01,0x02,0x06,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0xFF,0x02,0x00,//汉字_13 门
0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,
0x80,0x40,0x70,0xCF,0x48,0x48,0x48,0x48,0x7F,0x48,0x48,0x7F,0xC8,0x68,0x40,0x00,//汉字_14 错
0x00,0x02,0x02,0x7F,0x22,0x12,0x00,0xFF,0x49,0x49,0x49,0x49,0xFF,0x01,0x00,0x00,
0x40,0x42,0xC4,0x0C,0x00,0x40,0x5E,0x52,0x52,0xD2,0x52,0x52,0x5F,0x42,0x00,0x00,//汉字_15 误
0x00,0x00,0x7F,0x20,0x12,0x82,0x42,0x22,0x1A,0x07,0x1A,0x22,0x42,0xC3,0x42,0x00,
0x00,0x02,0xF2,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0xFF,0x02,0x00,0x00,0x00,//汉字_16 已
0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x78,0x00,0x00,
0x00,0x00,0x00,0xFC,0x44,0x44,0x44,0x45,0x46,0x44,0x44,0x44,0x44,0x7E,0x04,0x00,//汉字_17 启
0x40,0x20,0x18,0x07,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0xFF,0x02,0x00,
0x20,0x22,0xEC,0x00,0x04,0x04,0x04,0x84,0xE4,0x1C,0x84,0x04,0x04,0x06,0x04,0x00,//汉字_18 还
0x40,0x20,0x1F,0x20,0x44,0x42,0x41,0x40,0x5F,0x40,0x40,0x41,0x43,0x66,0x20,0x00, 
0x04,0x04,0x04,0x84,0xE4,0x3C,0x27,0x24,0x24,0x24,0x24,0xF4,0x24,0x06,0x04,0x00,//汉字_19 有
0x04,0x02,0x01,0x00,0xFF,0x09,0x09,0x09,0x09,0x49,0x89,0x7F,0x00,0x00,0x00,0x00,
0x00,0x02,0x04,0x8C,0x40,0x00,0x20,0x18,0x17,0xD0,0x10,0x50,0x38,0x10,0x00,0x00,//汉字_20 次
0x02,0x02,0xFF,0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x0C,0x10,0x60,0xC0,0x40,0x00,
0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0xFC,0x04,0x04,0x04,0xFE,0x04,0x00,0x00,0x00,//汉字_21 机
0x04,0x03,0x00,0xFF,0x80,0x41,0x20,0x1F,0x00,0x00,0x00,0x3F,0x40,0x40,0x70,0x00,
0x80,0x80,0x40,0x20,0x50,0x48,0x44,0x43,0x44,0x48,0x50,0x20,0x40,0xC0,0x40,0x00,//汉字_22 会
0x00,0x00,0x02,0x42,0x62,0x52,0x4E,0x42,0x42,0x52,0x62,0xC3,0x02,0x00,0x00,0x00,
0x00,0x10,0x10,0x11,0x12,0x1C,0x10,0xF0,0x10,0x18,0x14,0x13,0x1A,0x90,0x00,0x00,//汉字_23 关
0x81,0x81,0x41,0x41,0x21,0x11,0x0D,0x03,0x0D,0x11,0x21,0x21,0x41,0xC1,0x41,0x00,
0x00,0xF8,0x01,0x22,0x26,0x20,0x22,0xA2,0xFA,0x22,0x32,0x22,0x02,0xFF,0x02,0x00,//汉字_24 毕
0x00,0xFF,0x00,0x08,0x04,0x02,0x21,0x40,0x3F,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,
0x00,0x80,0x40,0x20,0x98,0x86,0x80,0x80,0x83,0x8C,0x90,0x20,0xC0,0x80,0x80,0x00,//汉字_25 分
0x01,0x00,0x80,0x40,0x20,0x1F,0x00,0x40,0x80,0x40,0x3F,0x00,0x00,0x01,0x00,0x00,
0x80,0x40,0x70,0xCF,0x48,0x48,0x00,0xF0,0x10,0x10,0xFF,0x10,0x10,0xF8,0x10,0x00,//汉字_26 钟
0x02,0x02,0x02,0x7F,0x22,0x12,0x00,0x07,0x02,0x02,0xFF,0x02,0x02,0x07,0x00,0x00,
0x00,0x00,0xFC,0x24,0x24,0x24,0x24,0x24,0x24,0x22,0x22,0x23,0xA2,0x30,0x20,0x00,//汉字_27 后
0x40,0x30,0x0F,0x00,0x00,0xFF,0x41,0x41,0x41,0x41,0x41,0x41,0xFF,0x01,0x00,0x00,
0x08,0x08,0x0A,0xEA,0xAA,0xAA,0xAA,0xFE,0xAA,0xAA,0xA9,0xF9,0x29,0x0C,0x08,0x00,//汉字_28 重
0x40,0x40,0x48,0x4B,0x4A,0x4A,0x4A,0x7F,0x4A,0x4A,0x4A,0x4B,0x48,0x60,0x40,0x00,
0x40,0x42,0xCC,0x00,0x10,0x90,0x90,0x90,0x90,0x90,0xFF,0x10,0x12,0x14,0x10,0x00,//汉字_29 试
0x00,0x00,0x7F,0x20,0x10,0x20,0x60,0x3F,0x10,0x10,0x01,0x3E,0x40,0x80,0x70,0x00,
0x00,0x00,0xFE,0x02,0xE2,0xA2,0xB2,0xAE,0xA2,0xA2,0xA2,0xA2,0xF3,0x22,0x00,0x00,//汉字_30 原
0x40,0x30,0x0F,0x40,0x23,0x1A,0x42,0x82,0x7E,0x02,0x02,0x0A,0x13,0x60,0x00,0x00,
0x40,0x44,0x54,0x65,0xC6,0x64,0xD6,0x44,0x40,0xFC,0x44,0x42,0xC3,0x62,0x40,0x00,//汉字_31 新
0x20,0x11,0x49,0x81,0x7F,0x01,0x05,0x29,0x18,0x07,0x00,0x00,0xFF,0x00,0x00,0x00,
0x00,0x02,0x02,0xF2,0x92,0x92,0x92,0xFE,0x92,0x92,0x92,0xFA,0x13,0x02,0x00,0x00,//汉字_32 再
0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x07,0x04,0x44,0x84,0x7F,0x04,0x06,0x04,0x00,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xC0,0x80,0x00,//汉字_33 一
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x40,0x20,0xF8,0x07,0xF0,0xA0,0x90,0x4F,0x54,0x24,0xD4,0x4C,0x84,0x80,0x80,0x00,//汉字_34 修
0x00,0x00,0xFF,0x00,0x0F,0x80,0x92,0x52,0x49,0x25,0x24,0x12,0x08,0x00,0x00,0x00,
0x04,0xC4,0x44,0x44,0x44,0xFE,0x44,0x20,0xDF,0x10,0x10,0x10,0xF0,0x18,0x10,0x00,//汉字_35 改
0x00,0x7F,0x20,0x20,0x10,0x90,0x80,0x40,0x21,0x16,0x08,0x16,0x61,0xC0,0x40,0x00,
0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x08,0x7F,0x88,0x0A,0x0C,0x08,0xC8,0x00,0x00,//汉字_36 成
0x40,0x20,0x1F,0x00,0x08,0x10,0x0F,0x40,0x20,0x13,0x1C,0x24,0x43,0x80,0xF0,0x00,
0x08,0x08,0x08,0xF8,0x0C,0x28,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0xF0,0x20,0x00,//汉字_37 功
0x08,0x18,0x08,0x0F,0x84,0x44,0x20,0x1C,0x03,0x20,0x40,0x80,0x40,0x3F,0x00,0x00,
0x00,0x40,0x20,0x1E,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x18,0x10,0x80,0x00,0x00,//汉字_38 失
0x01,0x81,0x81,0x41,0x21,0x11,0x0D,0x03,0x0D,0x11,0x21,0x21,0x41,0xC1,0x41,0x00,
0x00,0xFE,0x02,0xFA,0x02,0xFF,0x02,0x20,0x10,0xCF,0x08,0x08,0xF8,0x0C,0x08,0x00,//汉字_39 败
0x80,0x47,0x30,0x0F,0x10,0x67,0x80,0x40,0x20,0x17,0x08,0x16,0x21,0x60,0x20,0x00,
0x02,0xFA,0x02,0x02,0xFF,0x42,0x20,0x50,0x4C,0x43,0x4C,0x50,0x20,0x60,0x20,0x00,//汉字_40 验
0x10,0x31,0x11,0x49,0x89,0x7F,0x42,0x5C,0x40,0x4F,0x60,0x58,0x47,0x60,0x40,0x00,
0x20,0x20,0x21,0xE6,0x00,0x02,0x02,0xC2,0x02,0x02,0xFE,0x82,0x82,0xC3,0x82,0x00,//汉字_41 证
0x00,0x00,0x00,0x7F,0x20,0x50,0x40,0x7F,0x40,0x40,0x7F,0x40,0x40,0x60,0x40,0x00,
0x20,0x24,0x24,0xA4,0xFE,0xA3,0x22,0x80,0x70,0x00,0xFF,0x00,0x10,0x20,0x60,0x00,//汉字_42 秒
0x10,0x08,0x06,0x01,0xFF,0x00,0x81,0x80,0x40,0x20,0x17,0x08,0x04,0x03,0x00,0x00,
};

unsigned char code Char_1616_Bmp[]={
0x80,0xFC,0xFE,0x86,0x83,0x81,0x81,0x81,0x81,0x81,0x83,0x86,0xFE,0xFC,0x80,0x00,//图标_00 锁
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x81,0xE1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,
};

unsigned char code Char_1616_Symbol[]={
0x00,0x00,0x00,0x00,0x80,0xC0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//符号_00 冒号
0x00,0x00,0x00,0x00,0x31,0x7B,0x7B,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//符号_01 下划线
0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,
0x00,0x86,0x8E,0x9C,0xB8,0xF0,0xE0,0xFE,0xFE,0xE0,0xF0,0xB8,0x9C,0x8E,0x86,0x00,//符号_02 星号
0x00,0x61,0x71,0x39,0x1D,0x0F,0x07,0x7F,0x7F,0x07,0x0F,0x1D,0x39,0x71,0x61,0x00,
0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0xFC,0x7C,0x1C,0x0C,0x04,0x00,0x00,0x00,0x00,//符号_03 【
0x00,0x00,0x00,0x00,0x00,0x3F,0x3F,0x3F,0x3E,0x38,0x30,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x04,0x0C,0x1C,0x7C,0xFC,0xFC,0xFC,0x00,0x00,0x00,0x00,//符号_04 】
0x00,0x00,0x00,0x00,0x00,0x20,0x30,0x38,0x3E,0x3F,0x3F,0x3F,0x00,0x00,0x00,0x00,
};
★================12864Code结束=================== 

===========================  《 完   ==========================
薛 二 炜    于江苏·无锡
2015  年 04  月  06  日
smhacker@126.com  转载请注明出处 
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏7 分享淘帖 顶2 踩
回复

使用道具 举报

沙发
ID:105813 发表于 2016-2-19 10:40 | 只看该作者
大神有原理图吗
回复

使用道具 举报

板凳
ID:94791 发表于 2016-3-19 21:50 | 只看该作者
高人,可以发给我吗?谢谢!我的邮箱1099533035@qq.com
回复

使用道具 举报

地板
ID:103574 发表于 2016-3-19 22:43 | 只看该作者
大神啊
回复

使用道具 举报

5#
ID:148321 发表于 2017-2-23 09:02 | 只看该作者
谢谢分享
回复

使用道具 举报

6#
ID:108193 发表于 2017-7-19 21:48 | 只看该作者
不错
回复

使用道具 举报

7#
ID:221012 发表于 2017-7-20 10:17 | 只看该作者
大神,历害了
回复

使用道具 举报

8#
ID:166341 发表于 2017-12-30 18:41 | 只看该作者
收藏,感谢分享
回复

使用道具 举报

9#
ID:260743 发表于 2018-3-21 14:26 | 只看该作者
这操作666
回复

使用道具 举报

10#
ID:266164 发表于 2018-5-20 21:53 | 只看该作者
107387048@qq.com   大神请给我发一份密码锁资料啊。谢谢。万分感谢
回复

使用道具 举报

11#
ID:460418 发表于 2019-1-2 20:25 | 只看该作者

   3522638808@qq.com
同求大神发我一份密码锁完整资料啊。万分感谢
回复

使用道具 举报

12#
ID:634141 发表于 2019-12-12 07:26 | 只看该作者
求大神发我一份密码锁完整资料,十分感谢!274490449@qq.com
回复

使用道具 举报

13#
ID:675693 发表于 2019-12-28 13:42 | 只看该作者
求大神发我一份密码锁完整资料,非常感谢   2972385621@qq.com
回复

使用道具 举报

14#
ID:1084333 发表于 2023-6-15 17:21 | 只看该作者

收藏,感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表