应用电子技术毕业设计-基于51单片机报警器.docx
长沙航空职业技术学院2022届毕业设计(论文)(2022届)基于单片机的保险箱报警器的设计与制作学院、系:航空电子电气工程系专业:应用电子技术学生姓名:XXXX班级:电子X学号XXXXXX指导教师名:XXXX职称摘要随着人民生活水平日益提高科学技术的不断发展,人们对财产以及资料的安全保密要求也在不断的提高,设计出一款拥有较高的安全性能的保险箱已成从事电子行业人员的一项重要任务,保险箱的设计应该改进以往的设计思路,增加多项功能使其更安全更人性化,为满足人们对保险箱的使用要求,增加其安全性,用密码代替钥匙,并且增加报警功能的保险箱应运而生。电子密码装置无论在技术上还是在性能上都有了大大的提高,从而使保险装置的安全性、可靠性得到大幅度的提高、应用日益广泛,人民对保险装置的需求得到满足。核心处理模块是电子密码锁工作的核心,它不仅要对密码锁的信息进行处理,还要负责调度各种程序稳定的运行并控制其他模块,其模块主要由单片机,键盘,存储器,显示电路组成。其中,单片机是核心处理模块的核心部分,其主要任务是配合软件来完成信息处理和记录、控制调度其他部分正常工作、电器的控制、密码校对和修改等工作。从电子密码锁功能的需要、性价比、程序的数据量和接口电路等多方面综合考虑,本文选用ATMEL公司的AT89S51单片机作为控制器的核心。键盘电路的设计采用4X4行列键盘的形式,直接由T89S52的接口的高、低字节构成。电子保险箱报警器采用AT89C51单片机控制、AT24C02存储、1602液晶显示,4×4矩阵键盘输入密码。该保险箱报警器由于是由AT89S51芯片作为CPU因此可以采用编写程序的方法使得该报警器具有智能化、人性化、再具体设计各个功能单元、CPU模块、检测模块、报警模块、过程大概如下检测环境亮度、当环境亮度变化时继续检测密码输入的情况、如果没有输入正确的密码而此时报警电路发出报警声提示有被盗危险、由于考虑到实际情况的复杂还加有震动报警模块防止盗贼用暴力的方式开启保险箱、当CPU检测到超过一定强度的震动就立即发出报警提示、从该装置的设计与制作过程完全符合分析、该保险箱报警器具有安全性高、成本低、功耗低、易操作等优点。关键字:AT89S51LCD1602检测模块报警模块Abstractspeople*slivingstandardsareimprovingthecontinuousdevelopmentofscienceandtechnology,people*Spropertyandthesecurityandconfidentialityofinformationrequirementsarealsoconstantlyimprove,designedwithahighersafetyperformancesafehasbecomeengagedintheelectronicsindustryprofessionalsisanimportanttask,safedesignshouldbeimprovedthepreviousdesignthinking,increasethenumberoffunctiontomakeitsaferandmorehumane,tomeetpeopleonthesafeuseofrequirements,increaseitssecurity,passwordinsteadofkeys,andincreasethesafeemergeasthetimesrequirealarmfunction.Electroniccipherdevicebothintechnicalorperformancehasbeengreatlyimproved,sothatthesafetydevicesafety,reliabilityisgreatlyimproved,applicationisincreasinglywide,peopleontheinsurancedeviceneedsaremet.Thecoreprocessingmoduleisthecoreofelectroniccipherlock,itnotonlytothelocksoftheinformationprocessing,butalsoisresponsibleforschedulingvariousproceduresforstableoperationandcontroloftheothermodule,themoduleiscomposedofasingle-chipmicrocomputer,keyboard,memory,displaycircuit.One,singlechipisthecoreprocessingmoduleisthecorepart,itsmaintaskistocooperatewithsoftwaretoperformtheinformationprocessingandrecording,controlothernormaloperation,electricalcontrol,passwordcheckandmodificationwork.Fromtheelectronicpasswordlockfunctionneeds,cost-effective,programdataandinterfacecircuitandotheraspectsintoconsideration,thispaperchoosesATMELcompanyAT89S51MCUasthecoreofthecontroller.Keyboardcircuitdesignusing4x4ranksintheformofakeyboard,directlyfromtheAT89S51interfaceofhigh,lowbyte.ElectronicsafealarmcontrolledbyAT89C51,AT24C02storage,1602LCD,4x4matrixkeyboardinputpassword.ThesafealarmasitisfromAT89S51chipasCPUsowecanuseprogrammingmethodmakesthealarmhastheintelligent,humane,andthespecificdesignofeachfunctionunit,CPUmodule,detectionmodule,alarmmodule,itfollowsthedetectionenvironment,whentheenvironmentbrightnessbrightnesschangecontinuestodetectthepasswordinputcase,ifnottoenterthecorrectpasswordandthealarmcircuittosendoutalarmsoundpromptstheriskoftheft,consideringtheactualsituationofthecomplicatedwithshockalarmmoduletopreventthievesusingviolentmeanstoopenthesafe,whenCPUdetectsmorethanacertainstrengthoftheshockimmediatelyissuedawarning,fromwhichthedevicedesignandproductionprocesswiththeanalysis,thesafealarmhashighsafety,lowcost,lowpowerconsumption,easytooperate.Keyword:AT89S51>LCDl602>detectionmodule>aIarmmodule目录第一章、系统的硬件设计-7-1.1 硬件系统的总体结构图-7-1.2 AT89S51的介绍-7-1.3 硬件系统组成-7-1.1 4微处理器模块:-8-1.5 记忆模块:-8-1.6 声光提示模块:-8-1. 7显示模块:-8-1.8键盘模块:-8-第二章、单元模块电路-8-2. 14X4矩阵键盘-8-2.2 复位电路-9-2.3 振荡电路-10-2.4 发光二极管LED电路-10-2.5 报警电路-11-2.6 电源输入电路-11-2.7 AT24C02存储电路-12-2.8 1.CDI2864显示电路-13-2.9 检测电路14-2.10 震动模块:-15-2.11 电路板的绘制于生产-17-第三章、软件程序设计-17-2.12 件总设计流程图-18-2.13 4X4矩阵键盘扫描程序-18-3. 3显示子程序-20-4. 4密码修改子程序-20-5. 5读/写AT24C02子程序-20-附录1PCB原理图-23-附录2PCB板图-26-附录3PCB3D效果图-28-附录3产品实物图-28-附录4元件清单-30-结论-30-致谢-31-25 -参考文献第一章系统的硬件设计1.1 硬件系统的总体结构图该保险箱报警器的硬件组成部分可分为CPU模块、电源模块、键盘输入模块、及检测模块、具体组成如下图所示:电源输入部图IT硬件系统的总体结构图1.2 AT89S51的介绍AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemPrOgranImabIe)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlaSh存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。1.3 硬件系统组成如图1所示,本系统的硬件部分主要由单片机AT89S51、存储芯片AT24C02、4X4矩阵键盘、LCDl602报警电路和检测电路组成;其中检测电路是用光敏电阻、lm741、电阻电位器组成,而报警电路使用蜂鸣器。1.4 微处理器模块CPU是采用AT89S51单片机,因为本系统要实现密码检测、密码设定、环境变化检测、声光提示等功能,要求微处理器必须能提供很多I/O口,而且由于系统体积限制,很难扩展I/O和使用外部程序存储器,所以选用AT89S51单片机。1.5 记忆模块:AT24C02芯片作为记忆模块的核心部分,作用是存储用户设置的有效开锁密码。由于一片AT24C02拥有256字节存储空间,而本设计中只需要存储8个字节的数据,所以只需要一片AT24C02就已足够了。并且AT24C02是一种非易失性存储器,掉电后数据不会掉失,而且该存储器内数据保存寿命可以保证达到100年以上,功耗低,十分适合本设计使用。1.6 声光提示模块:由发光二极管LED和蜂鸣器组成,由单片机控制。发光二极管LED有两种状态,LED亮表示密码输入正确并且解除报警;输入密码错误时LCDI602会有相应的提示。蜂鸣器采用5V驱动蜂鸣器,作为报警电路。当输入密码错误次数超过3次后就发出声音警报。1 -7显ZF模块:拷虑到友好的人机界面,采用LCDI602液晶显示。显示模块的作用主要是显示提示信息和输入的密码,以方便用户使用。1.8键盘模块:键盘模块的作用是让用户输入密码和修改密码。考虑到本系统需要用到大量的按键,键盘模块采用4义4的16按键矩阵键盘模式。第二章、单元模块电路2 .14X4矩阵键盘如图2-1所示,本系统采用4X4矩阵键盘。当LCDI602为时钟界面显示时,S2为时设置键,S3为分设置键,S4为切换键;当切换到密码锁界面显示时,16个按键分为输入数字键和功能键。按键也有相应的标识S14为取消键,S15为确定键,S16为密码重设键。2.2复位电路为确保系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。如图2-2所示,时钟电路工作后,在RST管脚上加两个机器周期的高电平,芯片内部开始进行初始复位。图2-2复位电路2.3振荡电路图2-3所示为单片机晶体振荡电路。在本系统设计中晶振选择频率为11.0592MHZ,其中两个电容叫晶振的负载电容,分别接在晶振的两个脚上和对地,一般在几十皮法,它会影响到晶振的谐振频率和输出幅度。多数情况下电容取值在15pF-30PF左右,在本系统中取电容为15pFo图2-3振荡电路2.4发光二极管LED电路图2-4所示为发光二极管LED电路,单片机I/O口(FMQ)引脚为高电平时三极管处于截止状态发光二极管熄灭。当输入密码正确后,该I/O口由高电平变为低电平,三极管处于导通状态发光二极管点亮,表示驱动了开锁电路;当输入密码错误时,LED连接的I/O口任为高电平,发光二极管处于熄灭状态。其中R2为发光二极管LED的保护电阻,阻值为1K。图2-4发光二极管LED电路2.5报警电路本系统中的报警电路采用蜂鸣器,如图2-5所示。当连续3次输入错误密码后,FMQ引脚有高电平变为低电平从而三极管处于导通状态就会驱动报警电路,二极管点亮、蜂鸣器不停地响,以示警报。其中,R2阻值为lkQ。三极管为8550。8550是PNP型中功率高频三极管,最大耗散功率为700mW,在此电路中起功率放大作用。2.6电源输入电路电源输入电路如图2-6所示,由于目前那种5V输出的直流电源普遍使用因此本系统采用这种供电方式当接入该电源后再经过一个大电容滤波使输入电流更加平稳,该电源的设计方便,易用,可重复利用。图2-7电源实物图2.7AT24C02存储电路按Fc总线电气标准,AT24C02与硬件接口如图2-8所示。SDA与SCL线接IOK的上拉电阻接到5V的电源VCC,三根地址线均接地。2.8LCD1602显示电路1.CD1602液晶显示模块基本技术:1)、主要功能A、40通道点阵LCD驱动;B、可选择当作行驱动或列驱动;C、输入/输出信号:输出,能产生20义2个LCD驱动波形;输入,接受控制器送出的串行数据和控制信号,偏压(VlSV6);D、通过单片机控制将所测的频率信号读数显示出来2)、技术参数1VSS电源地2VDD电源正极3VL液晶显示偏压4RS数据/命令选择5R/W读/写选择6E使能信号7-14DOD7数据15BLA背光源正极16BLK背光源负极表2-9LCDl602弓脚接口说明表该报警器的显示模块是采用LCD1602液晶显示,LCD_01-1.CD_08接到单片机的PO口,RS、RW、EN接到P2.2-P2.0引脚、Rl为痼节LCD1602的背光亮度。具体如下图所示:图2-10LCD1602的外接电路2. 9检测电路为了使该装置具有更高的安全性能、根据环境的变化设计了在没有密码的情况下使用暴力手段破坏保险箱,在这种情况下,一直处在黑暗的光敏电阻受到强光照射阻值会变小由LM741比较器输出低电平、检测到LM741输出端口电平变化就发出报警信号、若是在正常输入密码而且正确的情况下就解除发出报警信号、电路如下图:图2-11亮度检测电路(2)LM741引脚图管脚图通用型集成单运放LM741。LM741的管脚图如2-12所示,其特点是电压适应范围较宽,可在±5±18V范围内选用;具有很高的输入共模、差模电压,电压范围分别为±15V和±30V;内含频率补偿和过载、短路保护电路;可通过外接电位器进行调零,如附图2-12所示。图2-12LM741管脚图图2-13震动传感器模块一、长尺寸:prefix=stlns=z,urn:SChemaS-IniCrOSOft-COm:office:smarttagszzIOmmX宽30mmX高20mm二、主要芯片:LM393、振动检测探头三、工作电压:直流3-5V四、特点:1、具有信号输出指示;2、单路信号输出;3、输出有效信号为低电平,指示灯亮;4、带安装孔,安装方便,灵活;5、可用于检测振动的场合等;6、电路板输出开关量,传感器发生振动时,传感器会输出TTL电平信号,产品灵敏度高;2.11电路板的绘制于生产采用ProtelDXP2004软件绘制原理图和PCB板。使用湿膜制版工艺制版具体过程如下图:图2-14PCB板制作过程图第三章软件程序设计3.1软件总设计流程图该保险箱报警器的软件总设计流程图如图3-1所示。3.24X4矩阵键盘扫描程序当键盘中按键数量较多时,为了减少对I/O口的占用,通常将按键排列成矩阵形式,也称为行列键盘,这是一种常见的连接方式。矩阵式键盘接口见图3-2所示,它由行线和列线组成,按键位于行、列的交叉点上。当键被按下时,其交点的行线和列线接通,相应的行线或列线上的电平发生变化,MCU通过检测行或列线上的电平变化可以图3-24X4矩阵键盘图3-2为一个4X4行列结构,可以构成16个键的键盘。很明显,在按键数量多的场合,矩阵键盘与独立式按键键盘相比可以节省很多的I/O口线。矩阵键盘不仅在连接上比单独式按键复杂,它的按键识别方法也比单独式按键复杂。在矩阵键盘的软件接口程序中,常使用的按键识别方法有行扫描法和线反转法。这两种方法的基本思路是采用循环查循的方法,反复查询按键的状态,因此会大量占用MCU的时间,所以较好的方式是采用状态机的方法来设计,尽量减少键盘查询过程对MCU的占用时间。图3-2中,JPO5、JPo6、JPO7、JP08为4根列线,作为键盘的输入口(工作于输入方式)。JP01、JPO2、JPo3、JP04为4根行线,工作于输出方式,由MeU(扫描)控制其输出的电平值。行扫描法也称为逐行扫描查询法,其按键识别的过程如下:(1)将全部行线JP01-JP04置低电平输出,然后读JP05-JP08四根输入列线中有无低电平出现。只要有低电平出现,则说明有键按下(实际编程时,还要考虑按键的消抖)。如读到的都是高电平,则表示无键按下。(2)在确认有键按下后,需要进入确定具体哪一个键闭合的过程。其思路是:依次将行线置为低电平,并检测列线的输入(扫描),进而确认具体的按键位置。如当JP05输出低电平时(JP05=0JP06=lJP07=KJP08=l),测到JP02的输入为低电平(JPOl=KJP02二0、JP03=lJP04=l),则可确认按键S3处于闭合状态。通过以上分析可以看出,MCU对矩阵键盘的按键识别,是采用扫描方式控制行线的输出和检测列线输入的信号相配合实现的。(3)矩阵按键的识别仅仅是确认和定位了行和列的交叉点上的按键,接下来还要考虑键盘的编码,即对各个按键进行编号。在软件中常通过计算的方法或查表的方法对按键进行具体的定义和编号。3. 3显示子程序本系统使用LCD1602实现显示,只要参照LCD1602的使用手册进行初始化和程序编写就可以显示,即在程序编写中添加LCD1602的驱动程序。这里的驱动程序主要包括:初始化函数、设置显示坐标、写字符函数及写字符串函数。在时钟界面时显示时间的运行,在密码锁界面时主要显示提示信息和输入的密码,当然,当输入密码数字时,输出不是显示数字,而是用显示代替。3. 4密码修改子程序修改密码时,先输入旧密码,如果输入的密码正确,再输入新密码,否则返回;输入新密码后要求再次输入新密码,当两次输入的新密码一致时,然后存储到AT24C02中,否则重新输入新密码。修改密码时,如果连续二次输入的旧密码都不正确,报警电路响应。修改密码程序流程图如图3-4所示。3. 5读/写AT24C02子程序当对AT24C02操作时,在总线空闲状态下发送起始信号后,主器件向总线传送第一个字节始器件的写地址,第二个字节是要操作的器件内部RAM地址,如果是写操作,则在第三个字节传送开始数据,最后是停止信号;如果是主器件向从器件的读操作,第三个字节写入从器件的地址,然后等待读数据,最后是停止信号。每传送一个字节信号后,接收器将使SDA拉低,以产生应答信号管脚配置DIP封装(P)SOlC封装(J,NC11PVccNcdFrBVCCNC27WPNcdI27PWPNC36SCLNClI36SCLVSSqLJSDAVSSqL3PSDA管脚描述管脚名称功能SDA串行数据/地址SCL串行时钟WP写保护Vcc+1.8V6.0V电源Vss地图3-3AT24C02管脚功能图3.6密码修改流程图该保险箱报警器的密码修改流程如下图所示:结论通过本次的基于单片机的保险箱报警器的设计与制作的毕业设计,使我明白,许多功能模块与单片机系统结合起来,设计了一种基于单片机的保险箱报警器。该装置精度高,电路简单,操作灵活,具有良好的应用前景。单片机控制的报警器符合电力电子新技术产品向“四化”方向发展的要求,即应用技术的高频化、硬件结构的模块化、软件控制的数字化、产品性能的绿色化。另外,该报警器采用单片机控制,可以在软件算法上不断地进行优化,改进报警器的安全性;在硬件上也可以进行扩展,扩大它的应用领域。在利用单片机设计简易报警器的整个设计过程中,从电路的设计,元器件的采购,电路的调试,程序的编写以及最后的电路板的制作亲自参与了设计与制作,这对我对于理论和实际相结合有了新的认识。单片机目标系统装完之后,应该首先认真细致地检查一遍:根据硬件电路原理图和装配图仔细检查线路的正确性,并检查元器件安装是否正确。常常要注意的是芯片及放大器和光敏电阻的特性性、电容器的耐压和极性、电阻的阻值和功率是否与设计图纸相符,重点检查系统总线间或总线与其它信号线间是否存在短路;总之,一个毕业课题的设计,让我明白了,如果没有足够的理论知识,那么在完成这个课设的过程中是有很大困难的,还有就是不懂了就要问,勤学好问才能让我们越学越多,最后感谢辅导我的老师和同学们,他们让我深切的明白了团结才是力量!致谢首先我要向我的指导老师表示感谢,本设计在彭老师的精心指导下顺利完成。在设计与制作的过程中有许许多多的困难,通过老师的知道与上网查资料,多次的实践才最终把这个设计完成,通过本次的设计使我学到了很多的知识,学到在书本上学不到的知识,我再次感谢我的知道老师,同时也对曾经教导过我的所有老师表示衷心的感谢。论文得以顺利完成,要感谢的人实在太多了。首先要衷心地感谢我的指导老师彭小平老师,您严谨的治学态度,开阔的思维,循循善诱的指导一直给我很大的帮助。当我对论文的思路感到迷茫时,您为我理清思路,指导我往一条比较清晰的思路上进行修改。在论文的不断修改中,我也努力做到及时积极地跟胡老师交流,因为我觉得这样可以使得我的论文更加完善。在这里还要深深的对您说上一句抱歉,因为我的懒散和懈怠,令您费尽苦心并且几近失望。论文的最终完成,也是一波三折。在不断完善和修改的过程中,也让我更加懂得“一分耕耘才有一分收获”的道理。再次对您表示感谢,师恩伟大,无以回报。然后还要感谢所有在大学期间传授我知识的老师,每一位老师的悉心教导都是我完成这篇论文的基础。特别是何老师一直以来对我的鼓励和支持,跟我一起讨论我们共同的兴趣爱好,并在我陷入困境的时候给予我最中肯的指点,大学里有这两位恩师的存在让我少走了很多弯路。何老师,虽然学生没有能力和胆量去实践自己心中的梦想,但是您对我的寄语会一直在我的脑海里永存,有理想就有希望,有希望就能看到理想实现的那一天。人生是那么的不确定,学生绝对不会甘于平庸和妥协最后,我要向百忙之中抽时间对本文进行审阅,评议和参与本人论文答辩的各位老师表示感谢。参考文献1单片机应用于实践项目化教程王文海,彭可,周欢喜、北京化学工业出版社。2电子产品设计与制作过程分析欧阳红,李仲秋、长沙航空职业技术学院。3c语言程序设计向华杨焰杨霞、清华大学出版社。4MS51单片机设计张毅刚彭喜元姜守达、哈尔冰工业大学出版。5新概念51单片机C语言教程、入门、提高、开发、拓展郭天祥、电子工业出版社。7;e辞NTX2TT%MFK11H1.U方力力为打打不力VCC册。*:.心:WAD,?:七:::工UZEe5:e3n<!2«A:j力”:,甘三三=f-._=-打二;二:,:-÷-÷-÷*oy司。司。OGJ-£4D7C3VIC2OIESra®KpHlHaH3H*HmH。:IMHFHEHr毕业设计-保险箱报警器电子Q9Q-53H附录图2名称参数数量备注电容15pF2电容1042电容电容10VIOuF2电容电容16V22uF1电阻4K73电阻2K3电阻5K13电阻5102排阻1031电位器IOK1VR4封装发光二极管5红1排针2P1跳线帽插座8P1插座4P2插座2P3液晶插座16P1三极管85503单片机芯片AT89S521芯片座EEPROM芯片24C021芯片座晶振11.0595MHz1按键*1继电器*1蜂鸣器*1ttinclude<reg52.h>#defineucharunsignedcharWdefineuintunsignedintucharcodetabi口二PleaSeinputpassword:,;ucharcodetabl口=“Succes”;ucharcodetab001口二FailUre;uchartab26;uchartab36;uchartab46;ucharmimazu,pdgm;uchartishi,okflag;ucharBJflag,xiugaimima;sbitscl=Pll;sbitSda=PlC0;sbitWP=Plz'2;sbiten=P27;sbitrw=P26;sbitrs=P25;sbitFMQ=P21;sbitKS=P5;/*延时函数*/voiddelay(inti)(while(i);)*开始信号函数*/voidstart()(sda=l;delay(4);scl=l;delay(4);Sda=O;delay(4);/*停止信号函数*/voidstop()sda=0;delay(4);scl=l;delay(4);sda=l;delay(4);)/*应答信号函数*/voidying()(sda=0;delay(5);scl=l;delay(4);SCl=0;delay(4);*数据与时钟线初始化*/voidinit()(sda=l;delay(4);scl=l;delay(4);)/*写一个字节函数*/voidxie_zijie(uchardate)(uchari,temp;temp=date;for(i=0;i<8;i+)(temp=temp<<l;scl=0;delay(4);sda=CY;delay(4);scl=l;delay(4);)scl=O;delay(4);sda=l;delay(4);)/*读一个字节函数*/uchardu_zijie(void)(uchari,k;scl=0;delay(4);sda=l;delay(4);for(i=0;i<8;i+)(scl=l;delay(4);k=(k«l)Isda;scl=0;delay(4);)returnk;)/*存密码入24C02*/voidxiejin(ucharshu,uchardizhi)(init();start();xie_ziJie(OxaO);ying();xie_zijie(dizhi);yingO;xie_zijie(shu);ying();stop();delay(200);I/*从24C02读出密码*/ucharduchu(uchardizhi)(ucharshu;init();start();xie_zijie(OxaO);ying();xie_zijie(dizhi);yingO;start();xie_zijie(Oxal);yingO;shu=du-zijie();stopO;delay(200);returnshu;)/*1602写命令*/voidwrite_com(ucharcom)(rs=0;rw=0;P0=com;en=l;delay(10);en=0;)/*1602写数据*/voidwrite_dat(uchardat)(rs=l;rw=0;PO=dat;en=l;delay(10);en=0;)/*初始化1602*/voidlint_1602(void)(write_com(0x38);delay(15);write_com(0x38);delay(15);write_com(0x38);delay(15);write_com(OxOc);delay(15);write_com(0x80);delay(15);_/*显示函数*/voidxianshi(void)(uchari;write_com(0x80);for(i=0;i<25;i+)(writedat(tabii);delay(5);if(i=15)(write_com(0xc0+0);)write_com(0xc0+9);for(i=0;i<6;i+)write_dat(tab3i);delay(2);/*屏幕初始化*/voidchushi(void)(uchari;for(i=0;i<6;i+)tab3i='delay(2);)xianshi();_/*提示语显示函数*/voiddisplayl(void)(uinti;write_com(OxOl);delay(150);write_com(0xc0+5);for(i=0;i<6;i+)write_dat(tabli);delay(5);for(i=0;i<15;i+)delay(5000);chushi();)voiddisplay2(void)(uinti;write_com(0x01);delay(150);write_com(0xc0+5);for(i=0;i<7;i÷+)write-dat(tab001i);delay(5);for(i=0;i<15;i÷+)delay(5000);chushi();)/*开锁函数*/ucharkaisuo(void)uinti,num;pdgm+÷if(pdgm<2)(if(xiugaimima!=l)pdgm=O;tishi=O;for(i=O;i<6;i+÷)(num=0;if(mimazu=l)mimazu=0;num=0xl0;tab4i=duchu(i+num);if(tab2i!=tab4i)BJflag+;display2();tishi=O;returnO;)KS=O;displayl();BJflag=O;tishi=l;return1;)/*密码修改函数*/voidxiugai(void)(uinti;if(okflagl)(okflag=0;kaisuo();if(1"(tishi&(pdgm>l)(for(i=0;i<6;i+)xiejin(tab2Li,i);tishi=O;Xiugaimima=O;PdgIn=O;)/*取消键*/voidquxiao(void)(uintk;for(k=5;k>=0;k一)(tab2k=20;)chushi();/Pl=0x80;)/*亮度检测*/voidjianguan(void)(if(0xc0!二(Pl&OxcO)&&(KS=1)BJflag=IO;)/*按键检测函数*/voidjiance(void)(uchark=0,k2;ucharkeynum,keynuml,keynum2;P3=0x0f;keynuml=P3;P3=0xf0;keynum2=P3;keynum=(keynmlkeynum2);if(Oxff!=keynum)(delay(15000);if(Oxff!=keynum)(delay(15000);switch(keynum)case0x77:case0x7b:case0x7d:case0xb7:caseOxbb:ca