基于单片机的电子密码锁设计(8)

2019-04-09 11:05

0x00,0x02,0x82,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0xC2,0x82,0x02,0x00,0x00, 0x00,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x30, 0x20,0x00,

/*-- 文字: 位 --19*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x00,0xC0,0x30,0xEC,0x03,0x2A,0xC8,0x09,0x0A,0x0E,0x08,0xE8,0x48,0x08,0x00, 0x00,0x01,0x00,0x00,0x7F,0x20,0x20,0x20,0x27,0x20,0x30,0x2E,0x21,0x20,0x20, 0x20, 0x00,

/*-- 文字: 成 --20*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x00,0x00,0xF8,0x48,0x48,0x48,0xC8,0x08,0xFF,0x08,0x09,0x0A,0xC8,0x88,0x08, 0x00,0x40,0x30,0x0F,0x00,0x08,0x50,0x4F,0x20,0x10,0x0B,0x0C,0x12,0x21,0x40, 0xF0,0x00,

/*-- 文字: 功 --21*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x00,0x04,0x04,0x04,0xFC,0x04,0x14,0x14,0x10,0x90,0x7F,0x10,0x10,0xF0,0x00, 0x00,0x04,0x0C,0x04,0x04,0x03,0x42,0x22,0x11,0x0C,0x23,0x20,0x60,0x20,0x1F, 0x00,0x00,

/*-- 文字: 新 --22*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x20,0x24,0x2C,0x35,0xE6,0x34,0x2C,0x24,0x00,0xFC,0x24,0x24,0xE2,0x22,0x22, 0x00,0x21,0x11,0x4D,0x81,0x7F,0x05,0x59,0x21,0x18,0x07,0x00,0x00,0xFF,0x00, 0x00,0x00,

/*-- 文字: 旧 --23*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0xFE,0x00, 0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x7F,0x20,0x20,0x20,0x20,0x20,0x20,0x7F, 0x00,0x00,

};

/****************************************/ /* 定义ASCII字库8列*16行

*/

/****************************************/ uchar code Ezk[]={ /*-- 文字: 0 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F, 0x00,

33

/*-- 文字: 1 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00, 0x00, /*-- 文字: 2 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30, 0x00, /*-- 文字: 3 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E, 0x00, /*-- 文字: 4 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24, 0x00, /*-- 文字: 5 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E, 0x00, /*-- 文字: 6 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E, 0x00, /*-- 文字: 7 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00, 0x00, /*-- 文字: 8 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C, 0x00, /*-- 文字: 9 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F, 0x00, /*-- 文字: A --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38, 0x20,

34

/*-- 文字: B --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E, 0x00, /*-- 文字: C --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08, 0x00, /*-- 文字: D --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F, 0x00, };

/*状态检查,LCD是否忙*/ void CheckState() {

uchar dat;//状态信息(判断是否忙)

RS=0; // 数据\\指令选择,D/I(RS)=“L” ,表示 DB7∽DB0 为显示指令数据 RW=1; //R/W=“H” ,E=“H”数据被读到DB7∽DB0 do{

DATA=0x00; EN=1; //EN下降源

_nop_(); //一个时钟延时 dat=DATA;

EN=0;

dat=0x80 & dat; //仅当第7位为0时才可操作(判别busy信号) }while(!(dat==0x00)); }

/*写命令到LCD中*/

SendCommandToLCD(uchar com) {

CheckState();//状态检查,LCD是否忙

RS=0; //向LCD发送命令。RS=0写指令,RS=1写数据

35

RW=0;//R/W=“L” ,E=“H→L”数据被写到 IR 或 DR DATA=com; //com :命令 EN=1;//EN下降源 _nop_(); _nop_(); EN=0; }

/*设置页 0xb8是页的首地址*/ void SetLine(uchar page) {

page=0xb8|page; //10111xxx 0<=page<=7 设定页地址--X 0-7,8行为一页64/8=8 SendCommandToLCD(page); }

/*设定显示开始行,0xc0是行的首地址*/ void SetStartLine(uchar startline) {

startline=0xc0|startline; //1100 0000

SendCommandToLCD(startline); //设置从哪行开始:0--63,一般从0 行开始显示 }

/*设定列地址--Y 0-63 ,0x40是列的首地址*/ void SetColumn(uchar column) {

column=column &0x3f; //column最大值为64,越出 0=

/*开关显示,0x3f是开显示,0x3e是关显示*/ void SetOnOff(uchar onoff) {

onoff=0x3e|onoff; //0011 111x,onoff只能为0或者1

36

}

SendCommandToLCD(onoff);

/*写显示数据 */ void WriteByte(uchar dat) {

CheckState();//状态检查,LCD是否忙 RS=1; //RS=0写指令,RS=1写数据

RW=0;////R/W=“L” ,E=“H→L”数据被写到 IR 或 DR DATA=dat;//dat:显示数据 EN=1; //EN下降源 _nop_(); _nop_(); EN=0; }

/*选择屏幕screen: 0-全屏,1-左屏,2-右屏*/ void SelectScreen(uchar screen) {

switch(screen) { case 0: cs1=0;//全屏

_nop_(); _nop_(); _nop_(); cs2=0;

_nop_(); _nop_(); _nop_(); break; case 1: cs1=0;//左屏

_nop_(); _nop_(); _nop_(); cs2=1;

_nop_(); _nop_(); _nop_(); break; case 2: cs1=1;//右屏

_nop_(); _nop_(); _nop_();

37


基于单片机的电子密码锁设计(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:客户经理如何把握好营销工作的三个重点

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: