版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理与应用课程设计报告课程设计名称:电子密码锁的设计专业班级:学生姓名:学号:指导教师:设计时间:成绩:信电工程学院徐州工程学院单片机原理及应用课程设计目录1绪论 11.1电子密码锁简介 11.2电子密码锁的背景与研究意义 11.3电子密码锁的现状及发展趋势 12系统整体方案设计 22.1设计目标 22.2系统的基本方案 22.2.1系统方案选择 22.2.2各模块方案选择 32.3主要元器件介绍 32.3.1STC89C52的简介 32.3.2LCD12864的简介 43系统的硬件设计与实现 53.1系统硬件概述 53.2主要单元电路的设计 53.2.1键盘扫描模块电路的设计 53.2.2单片机控制模块电路的设计 53.2.3报警模块电路的设计 63.2.4LCD12864显示模块电路的设计 74系统的软件设计与实现 84.1KEIL软件介绍 84.2系统程序设计流程图 84.2.1主程序软件设计 84.2.2按键软件设计 94.2.3密码设置软件设计 94.2.4开锁软件设计 105系统仿真设计 125.1Proteus软件介绍 125.2Proteus仿真图 125.3硬件调试 135.4调试结果 136结论 14参考文献 15附录 16附录1硬件实物图 16附录2C语言源程序 16徐州工程学院单片机原理及应用课程设计PAGE51绪论1.1电子密码锁简介电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁。1.2电子密码锁的背景与研究意义 在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。电子工业的迅速发展,数字电子技术已经深入到了人们生活的各个层面,在国内外各种各样的电子产品也正在日新月异地向着高精尖技术发展。在安全技术防范领域,具有防盗报警功能的电子密码锁代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。1.3电子密码锁的现状及发展趋势当今电子密码锁发展已经到了非常高的境界,由于电子元件特别是单片机应用在这几年得到空前发展,无论功能性,稳定性都比较全面,在保密方面已做到人眼识别,指纹识别,人声识别基本上电影上有的现实也有。在国外发展比较早,所以应用也比较广泛,主要在家庭装较贵重地方,银行,保险柜等应用较多,在国内这方面发展也较快,不管自己开发或是引进都有,在重要地方应用也较多,由于价钱比普通弹子锁较贵,早几年应用较少,现在越来越普及到平常化,未来的发展也会越来越被大众采用,由于它的功能、安全是弹子锁无法相比的,发展前境也是非常大的。2系统整体方案设计2.1设计目标本设计采用STC89C52单片机为主控芯片,结合外围电路矩阵键盘、液晶显示器LCD12864等部分组成。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警,组成的电子密码锁系统,能够实现:1.完全正确输入6位密码的前提下,有开锁提示;2.3次错误输入密码情况下,蜂鸣器报警;3.用户可以自行设定和修改密码;系统整体设计框图如图2-1所示:主控芯片STC89C52显示电路主控芯片STC89C52显示电路输入电路输入电路复位电路复位电路晶振电路晶振电路输出电路输出电路图2-1系统整体设计框图2.2系统的基本方案2.2.1系统方案选择采用以STC89C52为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。其原理如图2-2所示33×4键盘输入STC89C52LCD12864显示直流稳压电源报警图2-2系统框图2.2.2各模块方案选择单片机的选择采用STC89C52单片机,它是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。键盘的选择采用矩阵式键来控制,把按键按行列组成矩阵,在行列交点上都对应有一个键,这样使用的按键要少,为判定有无键被按下以及被按键的位置,这种称为键扫描法。这样虽然提高了编程难度,但是节约了单片机大量的I/O口,免去了上拉电阻为焊接带来了方便,提高了整块电路板的美观度。显示模块的选择液晶显示采用LCD液晶显示,显示的位数多,由单片机驱动。此方案有美观、显示清晰多样的优点。报警模块的选择采用蜂鸣器来报警,可以发出声音报警且降低了成本。2.3主要元器件介绍2.3.1STC89C52的简介STC89C52是一种带8K字节闪烁可编程可檫除只读存储器的低电压,高性能COMOS8的微处理器,俗称单片机。该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。STC89C52具体介绍如下:①主电源引脚(2根)VCC(Pin40):电源输入,接+5V电源GND(Pin20):接地线②外接晶振引脚(2根)XTAL1(Pin19):片内振荡电路的输入端XTAL2(Pin20):片内振荡电路的输出端③控制引脚(4根)RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。ALE/PROG(Pin30):地址锁存允许信号PSEN(Pin29):外部存储器读选通信号EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。④可编程输入/输出引脚(32根)STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。P0口(P39~P32):8位双向I/O口线,名称为P0.0~P0.7P1口(P1~P8):8位准双向I/O口线,名称为P1.0~P1.7P2口(P21~P28):8位准双向I/O口线,名称为P2.0~P2.7P3口(P10~P17):8位准双向I/O口线,名称为P3.0~PLCD12864的简介本设计所使用的是不带字库的LCD12864液晶显示屏,因为其可以在proteus中仿真,便于设计,其引脚表如2-3所示。表2-312864引脚3系统的硬件设计与实现3.1系统硬件概述本系统是通过键盘扫描模块,既能够显示数据并且还能修改密码,开锁密码,具有强大的功能,通过键盘扫描模块输入到单片机控制系统STC89C52中。然后通过LCD显示模块来显示我们所要有数据,还有一个就是报警模块,当输入的密码相同时,则显示模块的灯点亮,当输入的密码是错误时,重新输入,三次出错蜂鸣器响,发出报警。为了达到设定的功能,本装置键盘扫描模块、单片机控制模块、LCD显示模块,报警模块等4模块组成。3.2主要单元电路的设计3.2.1键盘扫描模块电路的设计如图3-1所示,本模块的作用是进行键盘的扫描,首先判定有没有键被按下,然后再判定被按键的位置,因为键盘矩阵有键被按下时,被按键处的行线和列线被接通,使得开关之间接通。当扫描表明有按键被按下之后,紧接着应是进行去抖动处理,一般我们采用的是软件来去抖动,软件方法则是采用时间延迟以躲过抖动,待行线上状态稳定之后,再进行行状态输入。图3-1键盘扫描电路图3.2.2单片机控制模块电路的设计单片机作为本装置的核心器件,在系统中起到控制报警、以及LCD显示的作用,其中采用的是STC89C52是标准的40引脚双列直插式集成电路芯片,有4个八位的并行双向I/O端口,分别记作P0、P1、P2、P3。第20引脚为接地端;第40引脚为电源端;第31引脚需要接高电位使单片机选用内部程序存储器;第18、19脚之间接上一个12MHz的晶振为单片机提供时钟信号;第9脚为复位脚,当其接高电位时,单片机停止工作。P1口接LCD控制引脚,P0口连接一LCD12864显示屏数据输入端,P3口与12个阵列式按键相连实现对键盘的扫描。如图3-2所示。图3-2主控电路图3.2.3报警模块电路的设计本模块的作用是当开锁按钮被按下时,如果LCD当前显示值相同,则红灯点亮,当输入的数与密码不同时,则蜂鸣器立刻发出声音报警。如图3-3所示。图3-3报警电路图3.2LCD12864显示模块电路的设计本模块主要用于显示指示用户密码输入要求。根据管脚要求连接电路,P0口接上拉电阻,并与LCD数据输入端口连接,控制管脚与P1口连接。如图3-4所示。图3-4显示模块电路图4系统的软件设计与实现4.1KEIL软件介绍Keil是美国Keil公司的C51编译器,它被嵌入到了KeiluVision集成开发环境中。Keil是目前最常用的编译器,支持浮点等到类型,支持多维数组,能生成对应的汇编代码,能直接编译汇编代码程序和内嵌多种工具,可以方便的链接,生成可执行文件。KeiluVision2IDE是Keilsoftware公司的产品,它集项目管理、编译工具、代码编写工具、代码调试以及完全仿真于一体,适合个人开发或人数少、对开发过程的管理还不成熟的开发团体。这一功能强大的软件提供简易的开发平台,可以让开发者在开发过程中集中精力于项目本身,加快开发速度。4.2系统程序设计流程图4.2.1主程序软件设计通过上述原理,已对密码锁整体运行环境有了充分认识,绘制主程序和子程序流程图,利用Keil软件,对单片机进行编程,如图4-1为主程序功能流程图:4-1主程序功能流程图4.2.2按键软件设计如图4-2为按键功能流程图,在按键当中,有与输入、开锁、清除、设置、确认的程序相对应的按键,并按顺序与输入的数相比较,当输入正确时,进入密码程序,错误时进行清除,输入两次新密码正确时,可进行重新设置密码,最后确认程序。4-2按键功能流程图4.2.3密码设置软件设计如图4-3为密码设置流程图,开始按下设置键,输入旧密码,如果错误累计三次,进行报警程序。如输入正确,可以修改密码,确认后再次输入新密码,如两次输入一样,则更成功。如果两次输入的新密码不一样,则修改密码失败,重新返回设置新密码。4-3密码设置程序流程图4.2.4开锁软件设计如图4-4为开锁流程图,开始时按开锁键,输入密码,如果输入正确,则开锁成功。如果输入错误累计达到三次,则执行报警程序。4-4开锁程序流程图5系统仿真设计5.1Proteus软件介绍Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。使用Proteus软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力;在单片机课程设计和全国大学生电子设计竞赛中,我们使用Proteus开发环境对学生进行培训,在不需要硬件投入的条件下,学生普遍反映,对单片机的学习比单纯学习书本知识更容易接受,更容易提高。实践证明,在使用Proteus进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计效率。因此,Proteus有较高的推广利用价值。5.2Proteus仿真图图5-1为输入密码界面图,图5-2为选择界面,实现开锁与修改密码的选择。图5-1输入密码界面图图5-2选择界面图5.3硬件调试硬件调试主要是测试各硬件部分能否完成设计功能。在焊接的过程中,每接一根线都用万用表测试是否短路或开路。这样焊接完了之后,就不必怀疑线路不通的问题了,由于线路很繁琐也免去了大量排查的工作。最初焊接最小系统,查看二极管能否正常闪烁,以此判断单片机是否正常工作。整体电路焊接完后,通电测试所有硬件芯片的输入输出电压是否在设计要求的范围内,判断单片机的工作与否。5.4调试结果在调试中出现的很多问题,开始显示屏不显示,经排查是一处地线没连接,导致显示屏供不上电。连接后显示屏正常亮了,但是显示不出想要的结果,调节可变电阻,改变背光度,依然不显示。经高玉芹,田传耕老师的指导,我们知道是程序的问题。于是我们修改了程序,并最终调试出想要的效果。6结论首先,感谢高玉芹老师给我们这次机会,让我们做硬件。因为要考研,本想不做的,但是难得有一次机会来让我们得到锻炼,我们很珍惜。这份课程设计,我们严格按照毕业论文的标准来。程序,我们自己来研究,探讨,参考一些学长做的项目中相关程序。在网上搜集资料时,发现很多关于LCD1602做的密码锁,LCD12864做的少之又少,所以我们想挑战一下,即使失败,但当中的过程却是无价的。在做这个设计的时候是信心满满的,查了网络资料,也到图书馆搜集了资料,结合生活中对密码锁的功能特性要求,我们设计出一套电子密码锁系统的主要硬件结构和软件结构,基本完成了课题的要求。不过由于了解的专业知识尚浅,对课题的研究经验的不足,使得在技术的解决与运用上显得粗糙了一些,特别是功能按键的设定。但因为我们的水平有限,此电路中也存在大量的问题。譬如说电路的密码不能遗忘,一旦遗忘,就很难打开等,所以很遗憾!回顾起此次单片机课程设计,至今我仍感慨颇多。的确,从选题到定稿,从理论到实践,在整整两星期的日子里,我们焊接了4块板子,一遍遍的排查软硬件的错误,可以说是达到了废寝忘食的地步。虽然是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机C语言掌握得不好,通过这次课程设计之后,一定把以前所学过的知识重新温故。徐州工程学院单片机原理及应用课程设计PAGE44参考文献[1]高玉芹.单片机原理及应用及C51编程技术.北京:机械工业出版社,2011.6[2]赵文博,刘文涛.单片机语言C51程序设计[M].北京:人民邮电出版社,2005,10.[3]孙育才.MCS-51系列单片微型计算机及其应用[M].东南大学出版社,2004,6.[4]沈红卫.单片机应用系统设计实力与分析[M].北京:北京航空航天大学出版社,2003.[5]徐爱钧,彭秀华.单片机高级语言C51应用程序设计[M].北京航空航天大学出版社,2006.[6]曾一江.单片微机原理与接口技术[M].北京:科技出版社,2009,12.[7]康华光.电子技术基础(模拟部分)[M].北京:高等教育出版社,2004,4.[8]江晓安,董秀峰.模拟电子技术[M].西安电子科技大学出版社,2001.10[9]戴佳,苗龙,陈斌.51单片机应用系统开发典型实例[M].中国电力出版社,2005.9[10]荣贵.电子制作[M].科学技术文献出版社,2003[11]刘建清.轻松玩转51单片机:魔法入门·实例解析·开发揭秘全攻略[M].北京航空航天大学出版社,2011附录附录1硬件实物图附录2C语言源程序主函数: #include<reg51.h>#include<12864.h>#include<keypad.h>#include<chu.h>#defineucharunsignedchar#defineuintunsignedintsbitLED1=P1^5;sbitLED2=P1^6;sbitINIT=P2^2;sbitSOUND=P1^7;ucharidatakey[6]={0,0,0,0,0,0};ucharidataiic[6]={0,1,2,3,4,5};voidpress(uchar*s){ uchardat;//**************************************************P3=0xf0; //保存第一位密码 while(P3==0xf0);dat=key_scan(); if((dat!=0x0a)&&(dat!=0x0b)){*s=dat; Left(); star_12864(star,0x05,16); } s++; //************************************************** P3=0xf0; //保存第二位密码 while(P3==0xf0); dat=key_scan(); if((dat!=0x0a)&&(dat!=0x0b)){*s=dat; Left(); star_12864(star,0x05,24); } s++; //************************************************** P3=0xf0; //保存第三位密码 while(P3==0xf0); dat=key_scan(); if((dat!=0x0a)&&(dat!=0x0b)){*s=dat; Left(); star_12864(star,0x05,32); } s++; //************************************************** P3=0xf0; //保存第四位密码 while(P3==0xf0); dat=key_scan(); if((dat!=0x0a)&&(dat!=0x0b)){*s=dat; Left(); star_12864(star,0x05,40); } s++; //************************************************** P3=0xf0; //保存第五位密码 while(P3==0xf0); dat=key_scan(); if((dat!=0x0a)&&(dat!=0x0b)){*s=dat; Left(); star_12864(star,0x05,48); } s++; //************************************************** P3=0xf0; //保存第六位密码 while(P3==0xf0); dat=key_scan(); if((dat!=0x0a)&&(dat!=0x0b)){*s=dat; Left(); star_12864(star,0x05,56); }//************************************************** do{P3=0xf0; //键入Enter键盘继续执行下面语句,否则等待 while(P3==0xf0); dat=key_scan(); }while(dat!=0x0b);}voidDelay10ms(void) //延时10ms{ uinti,j,k; for(i=5;i>0;i--) for(j=4;j>0;j--) for(k=248;k>0;k--);}voidmain(){uchardat;uchari=0,j=0,k;ucharx; LED1=1; LED2=1; SOUND=0; INIT=1;if(INIT==0) //密码初始化{ x=SendB(iic,0x50,6); Delay10ms();} //首先从IIC器件中读出密码以供下面输入密码进行比较x=ReadB(iic,0x50,6);Init_12864(); for(i=0;i<150;i++){Delay10ms();}//**********************************若密码不正确,循环执行do{}while()********************************************do{ LED1=1; System(); //显示:"请输入密码"字幕 press(key); if((key[0]==iic[0])&&(key[1]==iic[1])&&(key[2]==iic[2])&&(key[3]==iic[3])&&(key[4]==iic[4])&&(key[5]==iic[5]))//密码比较,若密码正确责进入系统,若密码不正确则显示密码错误,重新输入密码{ true(); do { P3=0xf0; //键入1或2继续执行下面语句,否则等待 while(P3==0xf0); dat=key_scan(); }while(dat!=0x01&&dat!=0x02); if(dat==1) //开锁 { LED1=0; unlock(); for(i=0;i<100;i++){Delay10ms();} continue; } if(dat==2) //修改密码 { do{ System(); press(key); again(); press(iic); if((key[0]==iic[0])&&(key[1]==iic[1])&&(key[2]==iic[2])&&(key[3]==iic[3])&&(key[4]==iic[4])&&(key[5]==iic[5])) { succeed(); //修改密码成功 for(i=0;i<100;i++){Delay10ms();} Delay10ms(); x=SendB(iic,0x50,6); Delay10ms(); x=ReadB(iic,0x50,6);break; } else //修改密码不成功,重新修改 { repeat(); for(i=0;i<100;i++){Delay10ms();} } }while(1); } } else //密码不正确,重新输入密码 { j++; if(j==3) { for(i=0;i<8;i++) { LED2=0; for(k=0;k<5;k++){Delay10ms();} LED2=1; for(k=0;k<5;k++){Delay10ms();} } j=0; } error(); for(i=0;i<50;i++){Delay10ms();} }}while(1); }键盘函数: #ifndef_keypad_h_#define_keypad_h_#include<reg51.h>#include<absacc.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintucharidatacom1,com2;ucharkey_scan(){uchartemp;ucharcom;P3=0xf0;if(P3!=0xf0) {com1=P3;P3=0x0f;com2=P3;} P3=0xf0;while(P3!=0xf0); temp=com1|com2; if(temp==0xee)com=0x01; if(temp==0xed)com=0x02; if(temp==0xeb)com=0x03; if(temp==0xde)com=0x04; if(temp==0xdd)com=0x05; if(temp==0xdb)com=0x06; if(temp==0xbe)com=0x07; if(temp==0xbd)com=0x08; if(temp==0xbb)com=0x09; if(temp==0x7e)com=0x0a; //10为键值,其代码功能为清除 if(temp==0x7d)com=0x00; if(temp==0x7b)com=0x0b; //其代码功能为输入密码结束并确认,即开锁 return(com);}#endif12864显示函数:#ifndef_12864_h_#define_12864_h_#include<reg51.h>#include<absacc.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#definePORTP0ucharcodeNum[]={ //32×32字节的汉字取模,一个汉字72字节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,0x00,0x30,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,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,0x00,0x00,0x00,0x00,0x00,0x30,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,0x00,0x00,0x00,0x00,// 720x00,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,0x30,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,0x00,0x00,0x00,0x00,// 1440x00,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,0x30,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,0x00,0x00,0x00,0x00,// 2160x00,0x00,0x00,0x00,0x10,0x00,0x00,0x08,0x00,0x00,0x46,0x00,0x00,0x47,0x00,0xC0,0x45,0x00,0xF0,0x64,0x1E,0x7E,0xFE,0x1F,0x4E,0x26,0x0C,0x60,0x32,0x06,0x60,0x32,0x42,0x00,0x00,0x40,0x30,0x86,0x21,0x70,0xFF,0x33,0x20,0x03,0x18,0x03,0xD9,0x0F,0xFF,0xF9,0x03,0x06,0x09,0x04,0x20,0x01,0x0C,0xB0,0xFF,0x1B,0x1C,0xFF,0x39,0x0C,0x00,0x70,0x08,0x00,0x00,0x00,0x00,0x00,//锁 2880x00,0x00,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x10,0x00,0x08,0x10,0x10,0x0C,0x08,0x10,0x0C,0x0E,0x10,0x84,0x03,0xF8,0xFF,0x01,0xF8,0x3F,0x00,0x18,0x06,0x00,0x18,0x06,0x00,0x1C,0x06,0x00,0xFC,0xFF,0x07,0xFC,0xFF,0xFF,0x0C,0x02,0x00,0x0C,0x03,0x00,0x0C,0x03,0x00,0x00,0x03,0x00,0x00,0x03,0x00,0x00,0x03,0x00,0x00,0x03,0x00,0x00,0x02,0x00,0x00,0x00,0x00,//开 360};ucharcodeTab[]={ //16×16字节的汉字取模,一个汉字32个字节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,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,//+320x00,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,//+640x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xFC,0x08,0x00,0x00,0x00,0x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,0x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00,//电+960x80,0x80,0x82,0x82,0x82,0x82,0x82,0xE2,0xA2,0x92,0x8A,0x86,0x80,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//子+1280x10,0x4C,0x24,0x04,0xF4,0x84,0x4D,0x56,0x24,0x24,0x14,0x84,0x24,0x54,0x0C,0x00,0x00,0x01,0xFD,0x41,0x40,0x41,0x41,0x7F,0x41,0x41,0x41,0x41,0xFC,0x00,0x00,0x00,//密+1600x02,0x82,0xF2,0x4E,0x43,0xE2,0x42,0xFA,0x02,0x02,0x02,0xFF,0x02,0x80,0x00,0x00,0x01,0x00,0x7F,0x20,0x20,0x7F,0x08,0x09,0x09,0x09,0x0D,0x49,0x81,0x7F,0x01,0x00,//码+1920x80,0x40,0x70,0xCF,0x48,0x48,0x00,0xE2,0x2C,0x20,0xBF,0x20,0x28,0xF6,0x20,0x00,0x00,0x02,0x02,0x7F,0x22,0x92,0x80,0x4F,0x40,0x20,0x1F,0x20,0x20,0x4F,0x80,0x00,//锁 +2240x20,0x22,0xEC,0x00,0x20,0x22,0xAA,0xAA,0xAA,0xBF,0xAA,0xAA,0xEB,0xA2,0x20,0x00,0x00,0x00,0x7F,0x20,0x10,0x00,0xFF,0x0A,0x0A,0x0A,0x4A,0x8A,0x7F,0x00,0x00,0x00,//请 2560x88,0x68,0x1F,0xC8,0x0C,0x28,0x90,0xA8,0xA6,0xA1,0x26,0x28,0x10,0xB0,0x10,0x00,0x09,0x09,0x05,0xFF,0x05,0x00,0xFF,0x0A,0x8A,0xFF,0x00,0x1F,0x80,0xFF,0x00,0x00,//输 2880x00,0x00,0x00,0x00,0x00,0x01,0xE2,0x1C,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x03,0x0C,0x30,0x40,0xC0,0x40,0x00,//入 3200x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//:冒号3520x80,0x40,0x70,0xCF,0x48,0x48,0x48,0x48,0x7F,0x48,0x48,0x7F,0xC8,0x68,0x40,0x00,0x00,0x02,0x02,0x7F,0x22,0x12,0x00,0xFF,0x49,0x49,0x49,0x49,0xFF,0x01,0x00,0x00,//错 3840x40,0x42,0xC4,0x0C,0x00,0x40,0x5E,0x52,0x52,0xD2,0x52,0x52,0x5F,0x42,0x00,0x00,0x00,0x00,0x7F,0x20,0x12,0x82,0x42,0x22,0x1A,0x07,0x1A,0x22,0x42,0xC3,0x42,0x00,//误 4160x08,0x08,0x0A,0xEA,0xAA,0xAA,0xAA,0xFE,0xAA,0xAA,0xA9,0xF9,0x29,0x0C,0x08,0x00,0x40,0x40,0x48,0x4B,0x4A,0x4A,0x4A,0x7F,0x4A,0x4A,0x4A,0x4B,0x48,0x60,0x40,0x00,//重 4480x40,0x44,0x54,0x65,0xC6,0x64,0xD6,0x44,0x40,0xFC,0x44,0x42,0xC3,0x62,0x40,0x00,0x20,0x11,0x49,0x81,0x7F,0x01,0x05,0x29,0x18,0x07,0x00,0x00,0xFF,0x00,0x00,0x00,//新 4800x40,0x42,0x44,0xCC,0x00,0x60,0x5E,0x48,0xC8,0x7F,0xC8,0x48,0x4C,0x68,0x40,0x00,0x00,0x40,0x20,0x1F,0x20,0x60,0x90,0x8C,0x83,0x80,0x8F,0x90,0x90,0xD0,0x5C,0x00,//选 5120x10,0x10,0x10,0xFF,0x90,0x50,0x82,0x46,0x2A,0x92,0x2A,0x46,0x82,0x80,0x80,0x00,0x02,0x42,0x81,0x7F,0x00,0x09,0x08,0x09,0x09,0xFF,0x09,0x09,0x0C,0x09,0x00,0x00,//择 5440x80,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x82,0x82,0xFE,0x82,0x83,0xC2,0x80,0x00,0x00,0x80,0x40,0x30,0x0F,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,//开 5760x40,0x20,0xF8,0x07,0xF0,0xA0,0x90,0x4F,0x54,0x24,0xD4,0x4C,0x84,0x80,0x80,0x00,0x00,0x00,0xFF,0x00,0x0F,0x80,0x92,0x52,0x49,0x25,0x24,0x12,0x08,0x00,0x00,0x00,//修 6080x04,0xC4,0x44,0x44,0x44,0xFE,0x44,0x20,0xDF,0x10,0x10,0x10,0xF0,0x18,0x10,0x00,0x00,0x7F,0x20,0x20,0x10,0x90,0x80,0x40,0x21,0x16,0x08,0x16,0x61,0xC0,0x40,0x00,//改 6400x00,0x02,0x02,0xF2,0x92,0x92,0x92,0xFE,0x92,0x92,0x92,0xFA,0x13,0x02,0x00,0x00,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x07,0x04,0x44,0x84,0x7F,0x04,0x06,0x04,0x00,//再 6720x00,0x02,0x04,0x8C,0x40,0x00,0x20,0x18,0x17,0xD0,0x10,0x50,0x38,0x10,0x00,0x00,0x02,0x02,0xFF,0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x0C,0x10,0x60,0xC0,0x40,0x00,//次 7040x04,0x84,0xE4,0x9C,0x84,0xC6,0x24,0xF0,0x28,0x27,0xF4,0x2C,0x24,0xF0,0x20,0x00,0x01,0x00,0x7F,0x20,0x20,0xBF,0x40,0x3F,0x09,0x09,0x7F,0x09,0x89,0xFF,0x00,0x00,//确 7360x40,0x42,0x44,0xCC,0x00,0x00,0x00,0x00,0xC0,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x90,0x48,0x30,0x0E,0x01,0x00,0x01,0x0E,0x30,0xC0,0x40,0x00,//认 7680x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x08,0x7F,0x88,0x0A,0x0C,0x08,0xC8,0x00,0x00,0x40,0x20,0x1F,0x00,0x08,0x10,0x0F,0x40,0x20,0x13,0x1C,0x24,0x43,0x80,0xF0,0x00,//成 8000x08,0x08,0x08,0xF8,0x0C,0x28,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0xF0,0x20,0x00,0x08,0x18,0x08,0x0F,0x84,0x44,0x20,0x1C,0x03,0x20,0x40,0x80,0x40,0x3F,0x00,0x00,//功 8320x00,0x00,0x00,0x00,0x00,0x00,0x08,0xF8,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x3F,0x20,0x00,0x00,0x00,0x00,0x00,0x00,//1 8640x00,0x00,0x00,0x00,0x30,0x38,0x0C,0x04,0x04,0x0C,0xF8,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x30,0x38,0x2C,0x26,0x23,0x21,0x38,0x00,0x00,0x00,0x00,//2 8960x00,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,//9280x00,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,//9600x00,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,//992};ucharcodestar[]={0x00,0x08,0x2A,0x1C,0x1C,0x2A,0x08,0x00,};//输入密码时显示的符号,而不显示真正的密码sbitCS1=P1^0;sbitCS2=P1^1;sbitRS=P1^2;sbitRW=P1^3;sbitE=P1^4;sbitbflag=P0^7;//**************************************************************************驱动函数voidLeft(){CS1=0;CS2=1;}voidRight(){CS1=1;CS2=0;}voidBusy_12864(){ do{E=0; RS=0; RW=1; PORT=0xff; E=1; E=0;}while(bflag);}voidWreg(ucharc){ Busy_12864(); RS=0; RW=0; PORT=c; E=1; E=0;}voidWdata(ucharc){ Busy_12864(); RS=1; RW=0; PORT=c; E=1; E=0;}voidPagefirst(ucharc){ uchari; i=c; c=i|0xb8; Busy_12864(); Wreg(c);}voidLinefirst(ucharc){ uchari; i=c; c=i|0x40; Busy_12864(); Wreg(c);}//********************************************************************voidReady_12864() //清屏函数{uinti,j;Left();Wreg(0x3f);Right();Wreg(0x3f);Left();for(i=0;i<8;i++){ Pagefirst(i); Linefirst(0x00); for(j=0;j<64;j++) { Wdata(0x00); }}Right();for(i=0;i<8;i++){ Pagefirst(i); Linefirst(0x00); for(j=0;j<64;j++) { Wdata(0x00); } }}//**********************************************************************************voidDisplay(uchar*s,ucharpage,ucharline) //16×16的汉字显示函数,下半排列取模{ uchari,j; Pagefirst(page); Linefirst(line); for(i=0;i<16;i++) {Wdata(*s); s++; } Pagefirst(page+1); Linefirst(line); for(j=0;j<16;j++) {Wdata(*s); s++; }}//********************************************************************************voidDisplay_32(uchar*s,ucharpage,ucharline) //24×24的汉字显示函数,下上排列取模{uchari,j;for(i=0;i<24;i++){for(j=0;j<3;j++) { Pagefirst(page+j); Linefirst(line+i); Wdata(*s); s++; } }}//*******************************************************************************voidstar_12864(uchar*s,ucharpage,ucharline) //com=10,18,26,,.在显示屏上写入星号,代表密码{uchari;Pagefirst(page);Linefirst(line);for(i=0;i<8;i++){Wdata(*s);s++;}}voidpoint_12864(ucharpage,ucharline) //在显示屏上画一条线{uchari;Pagefirst(page); Linefirst(line); for(i=0;i<56;i++) { Wdata(0x1e); }}voidInit_12864() //初始化,显示实验名称{ Ready_12864(); // Left(); Display_32(Num,0x00,16); Display_32(Num+72,0x00,40); point_12864(0x03,8); Display(Tab,0x04,16); Display(Tab+32,0x04,32); Display(Tab+64,0x04,48); Display(Tab+96,0x06,16); Display(Tab+128,0x06,32); Display(Tab+160,0x06,48); Right(); Display_32(Num+144,0x00,0); Display_32(Num+216,0x00,24); point_12864(0x03,0); Display(Tab+352,0x04,0); Display(Tab+928,0x04,4); Display(Tab+960,0x04,18); Display(Tab+992,0x04,30); Display(Tab+192,0x06,0); Display(Tab+224,0x06,16);}voidSystem() //在显示屏上显示初始字幕:请输入密码{Ready_12864();Left();Display(Tab+256,0x02,16);Display(Tab+288,0x02,32);Display(Tab+320,0x02,48);point_12864(0x04,8);Right();Display(Tab+160,0x02,0);Display(Tab+192,0x02,16);Display(Tab+352,0x02,32);point_12864(0x04,0);}voiderror() //密码错误,重新输入密码{Ready_12864();Left();Display(Tab+160,0x02,32);Display(Tab+192,0x02,48);Display(Tab+448,0x04,16);Display(Tab+480,0x04,32);Display(Tab+288,0x04,48);Right();Display(Tab+384,0x02,0);Display(Tab+416,0x02,16);Display(Tab+320,0x04,0);Display(Tab+160,0x04,16);Display(Tab+192,0x04,32);}voidtrue() //请选择1开锁2修改密码{Ready_12864();Left();Display(Tab+256,0x00,0);Display(Tab+512,0x00,16);Display(Tab+544,0x00,32);Display(Tab+352,0x00,48);Display(Tab+864,0x03,0);Display(Tab+576,0x03,16);Display(Tab+224,0x03,32);Display(Tab+896,0x06,0);Display(Tab+608,0x06,16);Display(Tab+640,0x06,32);Display(Tab+160,0x06,48);Right();Display(Tab+192,0x06,0);}voidunlock() //开锁画面{Ready_12864();Left();Display_32(Num+288,0x03,20);point_12864(0x02,8);point_12864(0x06,8);Right();Display_32(Num+360,0x03,20);point_12864(0x02,0);point_12864(0x06,0);}voidagain() //请再次输入密码{Ready_12864();Left();Display(Tab+256,0x00,0);Display(Tab+672,0x00,16);Display(Tab+704,0x00,32);Display(Tab+288,0x00,48);Right();Display(Tab+320,0x00,0);Display(Tab+160,0x00,16);Display(Tab+192,0x00,32);Display(Tab+352,0x00,48);}voidrepeat() //密码确认错
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 变电站检修作业安全防护设计
- 场地平整施工扬尘应急预案
- 钢结构焊接现场监理工作手册
- 初中八年级语文上册知识清单(甘肃中考方向)
- 初中数学九年级下册“解直角三角形”大单元教学设计
- CN118713107B 分布式光储协同的配电网两阶段电压控制方法及装置 (湖南大学)
- 九年级道德与法治学科核心素养导向的大单元复习导学案
- 高职医学检验技术专业:医学检验室污水处理方案教学设计
- 小学英语六年级上册Unit 1 The Kings New Clothes单元巩固与拓展教案
- 高性能树脂材料项目规划选址论证报告
- 醇胺法脱硫脱碳工艺技术及应用
- GB/T 24027-2026环境标志和声明产品种类规则的制定
- 融安县污水处理厂扩容改造项目水土保持方案报告表
- 心脏性猝死高危人群风险分层
- 2025-2026学年人教高一英语上学期期末必刷常考题之阅读理解
- 2026中国医疗建筑抗震设计标准与改造方案报告
- 2025年全国高考数学二卷真题解析及试题答案
- 2026年幕墙工程施工合同(外墙·质保版)
- 2026规范版离婚协议书
- 招行客户经理面试技巧与常见问题解答
- GB/T 26952-2025焊缝无损检测磁粉检测验收等级
评论
0/150
提交评论