1、傅孽多能保德绪功九年於孝火承毕业论文(设计)如导师:机电工程学/*.电气自动化*川,05学号:饶佛宝姓名:PLC控制交通灯教务处制停止状态:SCL为高时SDA产生一个上升沿是停止信号,停止信号后将停止 所有通信。在一个读的序列之后,停止信号将让EEPROM进入备用电源模式。2.3 LCD1602 显示器液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子 表与很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。1602 型LCD显示模块具有体积小,功耗低,显示容丰富等特点。1602型LCD可以显示 2行16个字符,有8位数据总线DO-D7和RS,R/W,EN三个控制端
2、口,工作电压为 5V,并且具有字符比照度调节和背光功能。接口信号说明:1602型LCD的接口信号说明如表2. 2所示:1602型LCD主要技术参数:显示容量:16X2个字符芯片工作电压:4.55. 5V工作电流:2.0mA(5. 0V)模块最正确工作电压:5. 0V字符尺寸:2. 95X4. 35(WXH)mm1602型LCD基本操作程序如下表所示:表2. 3 LCD1602基本操作程序RS=L, R/W=H, E=H读状态输出DOD7二状态表2.2 LCD1602接口信号说明编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4R
3、S数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极81)1数据16BLK背光源负极字写指令输入RS=L, R/W=L, DOD7=指令码,E= 高脉冲输出无读数据输入RS=H, R/W=H, E=H输出DOD7二数据写数据输入RS、H, R/W=L, DOD7=数据,E二高脉 冲输出无2.4 晶体振荡器晶体振荡器,简称晶振,其作用在于产生原始的时钟频率,这个频率经过频 率发生器的放大或缩小后就成了电脑中各种不同的总线频率。以声卡为例,要实 现对模拟信号44. 1kHz或48kHz的采样,频率发生器就必须提供一个44. 1kHz或 4
4、8kHz的时钟频率。如果需要对这两种音频同时支持的话,声卡就需要有两颗晶振。 但是现在的娱乐级声卡为了降低本钱,通常都采用SCR将输出的采样频率固定在 48kHz,但是SRC会对音质带来损害,而且现在的娱乐级声卡都没有很好地解决这 个问题。石英晶体振荡器是一种高精度和高稳定度的振荡器,石英晶体振荡器也称石英晶 体谐振器,它用来稳定频率和选择频率,是一种可以取代LC谐振回路的晶体谐振 元件。石英晶体振荡器广泛地应用在电视机、影碟机、录像机、无线通讯设备、 电子钟表、单片机、数字仪器仪表等电子设备中。为数据处理设备产生时钟信号 和为特定系统提供基准信号。在单片机中为其提供时钟频率。石英晶体振荡器是
5、利用石英晶体(二氧化硅的结晶体)的压电效应制成的一 种谐振器件,它的基本构成大致是:从一块石英晶体上按一定方位角切下薄片(简 称为晶片,它可以是正方形、矩形或圆形等),在它的两个对应面上涂敷银层作为 电极,在每个电极上各焊一根引线接到管脚上,再加上封装外壳就构成了石英晶 体谐振器,简称为石英晶体或晶体、晶振。其产品一般用金属外壳封装,也有用 玻璃壳、瓷或塑料封装的。只要在晶体振子板极上施加交变电压,就会使晶片产 生机械变形振动,此现象即所谓逆压电效应。当外加电压频率等于晶体谐振器的 固有频率时,就会发生压电谐振,从而导致机械变形的振幅突然增大。3硬件系统设计3.1设计原理本设计主要由单片机、矩
6、阵键盘、液晶显示器和密码存储等局部组成。其中 矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩 阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行比照, 从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控 制开锁还是报警,实际使用时只要将单片机的负载由继电器换成电子密码锁的电 磁铁吸合线圈即可,当然也可以用继电器的常开触点去控制电磁铁吸合线圈。本系统共有两局部构成,即硬件局部与软件局部。其中硬件局部由电源输入 局部、键盘输入局部、密码存储局部、复位局部、晶振局部、显示局部、报警部 分、开锁局部组成,软件局部对应的由主程序、初始化程序、LC
7、D显示程序、键盘 扫描程序、启动程序、关闭程序、建功能程序、密码设置程序、EEPROM读写程序 和延时程序等组成。图3.1电子密码锁原理框图1.1 2电路总体构成在确定了选用什么型号的单片机后,就要确定在外围电路,其外围电路包括 电源输入局部、键盘输入局部、密码存储局部、复位局部、晶振局部、显示局部、报警局部、开锁局部组成,根据实际情况键盘输入局部选择4*4矩阵键盘,显示 局部选择字符型液晶显示LCD1602,密码存储局部选用AT24co2芯片来完成。其原 理图如图3. 2所示:AT89S51 %图3.2电路总体结构图3电源输入电路密码锁主要控制局部电源需要用5V直流电源供电,其电路如图3.
8、3所示,而 5V电源输入时往往伴有杂波,所以加一个2.2uF的电容滤波。这样输出的电压一 般能满足要求。图3.3电源输入电路原理图1.4 键盘输入电路由于本设计所用到的按键数量较多而不适合用独立按键式键盘。采用的是矩 阵式按键键盘,它由行线和列线组成,也称行列式键盘,按键位于行列的交叉点 上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多I/O 口。 本设计中使用的这个4*4键盘不但能完成密码的输入还能作特别功能键使用,比如清空显示功能等。键盘的每个按键功能在程序设计中设置。其大体功能(看键盘按键上的标记)与与单片机引脚接法如图3.4所示:密码存储电路AT24co2是ATMEL公
9、司的2KB字节的电可擦除存储芯片,采用两线串行的总线 和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V), 芯片的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用 方便。其电路如图3. 5所示:图3.5密码存储电路图图中1、2、3脚是三条地址线,用于确定芯片的硬件地址,在AT89s51上它 们都能接地,第5脚和第8脚分别为正、负电源。AT24co2中带有片地址寄存器, 每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个储存单元 的读写,所有字节均以单一操作方式读取复位电路单片机复位是使CPU和系统中的其他功能部件都处在一个确定
10、的初始状态, 并从这个状态开始工作,例如复位后PC=OOOOH,使单片机从第一个单元取指令。 无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。在复 位期间(即RST为高电平期间),P0 口为高组态,P1P3 口输出高电平;外部程 序存储器读选通信号PSEN无效。地址锁存信号ALE也为高电平。根据实际情况选 择如图3. 6所示的复位电路。该电路在最简单的复位电路下增加了手动复位按键, 在接通电源瞬间,电容C1上的电压很小,复位下拉电阻上的电压接近电源电压, 即RST为高电平,在电容充电的过程中RST端电压逐渐下降,当RST端的电压小 于某一数值后,CPU脱离复位状态,由于电容C
11、1足够大,可以保证RST高电平有 效时间大于24个振荡周期,CPU能够可靠复位。增加手动复位按键是为了防止死 机时无法可靠复位。当复位按键按下后电容C1通过R5放电。当电容C1放电结束 后,RST端的电位由R11与R15分压比决定。由于R11R15因此RST为高电平, CPU处于复位状态,松手后,电容C1充电,RST端电位下降,CPU脱离复位状态。 R11的作用在于限制按键按下瞬间电容C1的放电电流,防止产生火花,以保护按 键触电。7晶振电路AT89C51引脚XTAL1和XTAL2与晶体振荡器与电容C2、C1按图3. 7所示方式 连接。晶振、电容C2/C3与片与非门(作为反应、放大元件)构成了
12、电容三点式 振荡器,振荡信号频率与晶振频率与电容Cl、C2的容量有关,但主要由晶振频率 决定,围在033MHz之间,电容C2、C3取值围在530pF之间根据实际情况,本设计中采用12MHz做系统的外部晶振。电容取值为33pF。.CRYSTAL图3.7晶振电路原理图3. 8显示电路为了提高密码锁的密码显示效果能力。本设计的显示局部由液晶显示器 LCD1602取代普通的数码管来完成。只有按下键盘上的开启按键后,显示器才处于 开启状态。同理只有按下关闭按键后显示器才处于关闭状态。否那么显示器将一直 处于初始状态,当需要对密码锁进行开锁时,按下键盘上的开锁按键后利用键盘 上的数字键09输入密码,每按下
13、一个数字键后在显示器上显示一个*,输入多 少位就显示多少个*。当密码输入完成时,按下确认键,如果输入的密码正确的话, LCD上显示“OPENOK”,单片机其中P2.0引角会输出低电平,使三极管T2导通, 电磁铁吸合,电子密码锁被翻开,如果密码不正确,LCD显示屏会显示“ERROR”, P2.0输出的是高电平,电子密码锁不能被翻开。通过LCD显示屏,可以清楚的判 断出密码锁所处的状态。其显示局部引脚接口如图3.8所示:LCD1602s 0山 (Z Q LUco OlCNCO q 1091 CK CE LU QQQQQQQQ图3.8显示电路原理图3.9报警电路报警局部由瓷压电发声装置与外围电路组成
14、,加电后不发声,当有键按下时, “叮”声,每按一下,发声一次,密码正确时,不发声直接开锁,当密码输入错 误时,单片机的P2. 1引脚为低电平,三极管T3导喇叭发出噪鸣声报警。如图3.9 所示:Q2BUZ1工BUZZER图3. 9报警电路原理图3. 10开锁电路通过单片机开锁执行机构,电路驱动电磁锁吸合,从而到达开锁的目的。其 原理如图3. 10所示:图3. 10密码锁开锁机构示意图当用户输入的密码正确时,单片机便输出开门信号,送到开锁驱动电路,然 后驱动电磁锁,到达开门的目的。其实际电路如图3. 11所示。电路由驱动和开锁两级组成。由DI、R12、Q1组成驱动电路,其中Q1可以选 择普通的小功
15、率三极管如8050、9018都可以满足要求。D1是开锁指示灯;由D2、 C5组成开锁。其中1)2、C5是为了消除电磁锁可能产生的反向高电压以与可能产生 的电磁干扰。电磁锁的选用要视情况而定,但是吸合力要足够且有一定的余量。在设计中,暂时用发光二极管代替电磁锁,发光管亮,表示开锁;灭,表示 没有开锁。j 23图3. 11开锁电路原理图批注gi:三号,黑体摘要 在日常的生活和工作中,住宅与部门的平安防、单位的文件档案、财务报表 以与一些个人资料的保存多以加锁的方法来解决。假设使用传统的机械式钥匙开锁, 人们常需携带多把钥匙,使用极不方便,且钥匙丧失后平安性即大打折扣。在安 全技术防领域,具有防盗报
16、警功能的电子密码锁逐渐代替了传统的机械式密码锁, 电子密码锁具有平安性高、本钱低、功耗低、易操作等优点。批注g2:正文宋体小四本文从经济实用的角度出发,采用美国Atmel公司的单片机AT89s51作为主 控芯片与数据存储器单元,结合外围的矩阵键盘输入、LCD液晶显示、报警、开锁 等,用C语言编写的主控芯片控制程序与EEPROM AT24co2读写程序相结合,并用 Keil软件进行编译,设计了一款可以屡次更改密码,具有报警功能的电子密码控 制系统。这种密码锁的电路设计具有防试探按键输入、智能控制上锁、开锁、报警、 修改密码等多种功能。密码长度可变、性强、灵活性高、应用日益广泛。批注匡3:黑体小四
17、关键词:密码锁,单片机,报警,LCD显示4软件程序设计本系统软件设计由主程序、初始化程序、LCD显示程序、键盘扫描程序、键功 能程序、密码设置程序、EEPROM读写程序和延时程序等组成。4.1 主程序流程图如图4.1为主程序流程图,开始接上电源,程序进行初始化设置,然后在键 盘上输入密码,此系统进行键盘扫描,密码正确,开锁成功,密码错误3次出错 报警,选择是否修改密码,假设要修改密码,先输入旧密码,密码正确后设置新密 码,错误时报警,需要两次确认新密码,确认后,密码修改成功,否那么结束最终 返回。然后启动程序,进行保护,再次在键盘上输入密码,系统进行扫描,如果 和之前一样,那么执行一样程序,如
18、不是,那么执行另一种程序。图4. 1主程序流程图4.2 按键软件设计如图4.2按键功能流程图,在按键当中,有与输入、开锁、清除、设置、确 认的程序相对应的按键,并按顺序与输入的数相比拟,当输入正确时,进入密码 程序,错误时进行清除,输入两次新密码正确时,可进行重新设置密码,最后确 认程序。图4.2按键功能流程图4.3 密码设置软件设计如图4.3为密码设置流程图,开始按下设置键,输入旧密码,如果错误累计 三次,进行报警程序。如果输入正确,可以修改密码,确认后再次输入新密码, 如果两次输入一样,那么输入成功。如果两次输入的新密码不一样,那么修改密码失 败,重新返回设置新密码。按下设置输入旧密码图4
19、. 3密码设置流程图开锁软件设计如图4.4开锁流程图,开始时按开锁键,输入密码,如果输入正确,那么开锁 成功。如果输入错误累计到达三次,那么执行报警程序。图4. 4开锁流程图5调试与实现5. 1硬件调试单片机应用系统的硬件调试和软件调试是分不开的.许多硬件故障只有通过 软、硬件联调才能发现,但一般是先排除系统中比拟明显的硬件故障后才和软件一 起联调。常见的硬件故障:逻辑错误硬件的逻辑错误是由于设计错误和焊接过程中的工艺错误而造成的,包括错线、开 路、短路等,其中最常见的是短路故障。元器件错误元器件错误的原因有器件损坏或性能不符合要求,电解电容、二极管的极性接反或 集成块装反等。电源故障电源故障
20、包括:电压值不符合设计要求、电源功率缺乏、负载能力差、纹波 太重等。硬件调试方法:脱机调试是在加电前,先用万用表等工具,按图纸仔细核对线路是 否正确,并对元器件的安装、型号、规格等进行仔细检查,特别焊接时有无走线之 间相互短路等。5.2软件调试程序在KEIL C51上调试,采用模块程序设计技术,那么逐个模块调好后再进行 系统程序总调。对于模块结构程序.要一个个子程序分别调试。调试时,一定要符合入口条件和出 口条件,调试可用单步运行和断点运行方式,通过检查用者系统的CPU现场情况、 RAM的容和I/O 的状态,检测程序执行结果是否符合设计要求,有无循环错误、 有无机器码错误以与转移地址的错误,同
21、时,还可以发现系统中存在的硬件设计错 误和软件算法错误。各程序模块通过后,那么可以把相关功能块连在一起进行总调。这个阶段假设有故障, 可以考虑各子程序运行时是否破坏了现场,缓冲单元、工作寄存器是否发生冲突, 标志位的建立和清除是否有误,堆栈区是否有溢出,输入设备的状态是否正常等等, 假设用者系统是在开发机的监控程序下运行时,还要考虑用者缓冲单元是否和监控程序的工作单元发生冲突。单步和断点调试后,还应进行连续调试,用以确定定时精度、CPU的实时响应等问 题。当全部调试和修改完成后,将程序固化到AT89s51中。进行整机调试。各功 能实现那么调试完成。5. 3 Proteus 仿真在硬件和软件都能
22、实现的条件下,利用Proteus进行仿真,通过不停的调试 与改正,最后终于实现了密码锁的功能,仿真结果如图4.1, 4. 2, 4. 3所示。当连好各个模块电路的导线后,导入芯片程序,运行该密码锁仿真电路,通 过按键可以进行密码锁的开锁,修改密码,错误密码3次以上报警的操作,LCD显 示屏显示相应的操作现象,密码正确可以开锁,进而可以修改密码,密码错误三 次以上由喇叭发出报警声,如果系统出现错误还可以通过复位电路进行复位。总之,在原有的理论基础上,通过Proteus能够成功的进行密码锁基本操作 的仿真,实现了相关的功能。r flaa 32.-flpoEepoE 鼻E密康 fsds6119B上候
23、产. , P2T r ,-Ip?FZ2F3图4.1仿真结果(开锁成功)ss n:3”。 cd图4.2仿真结果(密码错误)AT80S51E7龄图4. 3仿真结果(修改密码)结论以上为毕业期间所作的毕业论文-基于PROTEUS的电子密码锁设计,它经过 屡次修改和整理,可以满足设计的基本要求。输入密码时,如三次输入错误,那么 进行报警,在输入时,LCD显示为,同时还能修改密码。另外该设计还具有 防盗功能,如对密码控制系统进行破坏,有报警功能。通过对该课题的研究,加深对所学知识的理解,提高对课外知识的学习能力, 增强知识的应用能力,提高解决实际问题的能力,培养自我创新意识。积累实践 经验,为以后的开展
24、打下基础,也为以后我们自己在这方面的开展打下基础,并 能够在这方面培养自己的兴趣。在设计中我们必须首先熟悉和掌握单片机的结构与工作原理,单片机的接口 技术与相关外围芯片的外特性,控制方法。以单片机核心的电路设计的基本方法 和技术了解开关电路参数的计算方法。单片机不是完成某一个逻辑功能的芯片,而 是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。 它的体积小、质量轻、价格廉价、为学习、应用和开发提供了便利条件。同时, 学习使用单片机了解计算机原理与结构的最正确选择。目前单片机渗透到我们生活 的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导航装置,飞机上各种 仪表的控制,
25、计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据 处理,广泛使用的各种智能IC卡,民用豪华轿车的平安保障系统,录像机、摄像 机、全自动洗衣机的控制,以与程控玩具、电子宠物等等,这些都离不开单片机。 更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、 开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。随着单片机 的广泛应用,将大大促进各领域的技术更新,向自动化、小型化、智能化方向迈 进。而对于我们来说,我们这代人的目标和任务是把这些高科技产品更升一个层 次。通过这次毕业设计,无论从选题到定稿,从理论到实践都使我学到了很多东 西,它不仅可以巩固了以前所学过
26、的知识,而且学到了很多在书本上所没有学到 过的知识。同时也明白了理论与实践相结合的重要性,只有理论知识是远远不够 的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为 社会服务,从而提高自己的实际动手能力和独立思考的能力。批注g8:黑体三号致四年的大学生活不知不觉就要结束了,在这段难忘的生活中,有许多美好的 回忆,在毕业论文设计之中,我的老师和我的同学都细心的指导我,我需要感的 人太多太多,首先要感我的学校,感在这四年中让我领悟到老实做人,踏实做事, 扎实做学问的深刻道理,让我从一个懵懂得高中生变成一个成熟的大学生,其次 我要感的是我的导师英。虽然老师平日里工作繁多,但在我做
27、毕业设计的每个阶 段,她都给予我悉心的指导和帮助,关心我们每个阶段所做的工作,当然,还要 感寝室的兄弟们在我完成论文的过程中给予我的帮助和鼓励,也是他们陪我度过 了这四年的生活,感能有这段美好的记忆。批注但9:宋体 小四I现在即将挥别我的学校、老师、同学,还有我四年的大学生活,虽然依依不 舍,但是对未来的路,我充满了信心。最后,感在大学期间认识我和我认识的所 有人,有你们的陪伴,才有我大学生活的绚丽多彩。批注gio:黑体三号参考文献I1康华光,大钦.电子技术基础模拟局部M.:高等教育,2005.批注gll:宋体小四段间距20磅2容修,数字电子技术基础.:理工大学,20073谭浩强.C程序设计M
28、.:清华大学,20054志海,黄玉清,连鑫.单片机原理与应用.:电子工业,20095明喜.新型电子密码锁的设计J.机电产品开发与创新,2005;6董继成.一种新型平安的单片码锁J.电子技术,2004;7祖龙起,仁杰,乃凌.一种新颖的电子密码锁J.电子世界,2001;8明喜.新型电子密码锁的设计J.机电产品开发与创新,2004;9徐爱钧,秀华.单片机高级语言C51应用程序设计M,航空航天大学, 2006.10曾一江.单片微机原理与接口技术M.:科技,2009, 12.11康华光.电子技术基础(模拟局部)M.:高等教育,2004,12Nishino S F,Paoli G C,Spain J C.
29、 Aerobic degradation of dinitroto-luenesand pathway for bacterial degradation of 2,6-dinitrotoluene Volume 66,2006.13Kennes C,W M Wu,L Bhatnagar et al. Anaerobic dechlorination and mineralization of PCP and 2,4,6-trichlorophenol by the methanogenic PCP-degrading granules Volume 44,2004.14Philips. Pr
30、oduct Specification. COMS single-chip 8-bitmicrocontroller.批注g4:黑体三号目录正文宋体小四 段间距固定值20磅目录摘要IAbstract错误!未定义书签。1绪论11.1 1电子密码锁简介11.2 电子密码锁的开展趋势11.3 本设计所要实现的目标21.4 设计方案简介22主要元器件31.2 1主控芯片AT89s5132.2 存储芯片AT24co262.3 LCD16022 显示器 72.4 晶体振荡器83硬件系统设计103. 1设计原理101.3 2电路总体构成101.4 电源输入电路111.5 键盘输入电路111.6 密码存储电路
31、121.7 复位电路131.8 晶振电路131.9 8显示电路141.10 报警电路151.11 10开锁电路155. 3 Proteus 仿真 22结论24致25参考文献26附录A:总程序27附录B:总电路图40附录A:总程序#include#include#include#define uchar unsigned char#define uint unsigned int#defineLCD10P0批注g12:黑体三号批注gl3:字体 times new roman 小四 间距固定值20磅#define delay4us () _nop_() ; _nop_ () ; _nop_ ()
32、; _nop_();uchar buffer6=0;sbit sda=P3 4;sbit scl=P3 3;sbit beep二P7;bit aa;用户蹲渊义定时溢出标志位uchar DSY BUFFER16=M”;uchar DSY BUFFER116=”;uchar Userpassword6=0;uchar Userpasswordl6=0;/*对 比用 密码寄存*uchar Userpassword26=0;sbit rs=P6;sbit rd=Pl 5;sbit lcden=PP4;sbit led=Pl 1;sbit ledred=Pl 2;sbit clk=Pl 0;uchar
33、code table2 = n123456;uchar code table口=“Your Password. . . n;uint flag=0;void delayms (uint z) uint x,y;for (x=z;x0;x-)for(y=110;y0;y );void delay() 短延时,两个机器周期,做总线的延时用 ;void write (uchar ) rs=0;rd=0;lcden=0;PO 二;delayms (3);lcden=l;delayms (3);lcden=0;)void write_date (uchar date) (rs=l;rd=0;lcden=
34、0; PO=date; delayms(3); lcden=l; delayms(3); lcden=0;)void Display_String(uchar *p,uchar ) uchar i;write_();for(i=0;i16;i+) write_date(pi);)void init_lcd() lcden=0;write_(0x38);write (OxOc);write_(0x06);write_(0x01);write (0x80);Display String (table,0x80);,OxcO);Display String(nLock OK!)void start
35、()sda=l;scl=l;delay4us ();sda=0;delay4us ();scl=0;)void stop()sda=0;scl=l;delay4us ();sda二1;delay4us ();scl=0;)void init () 初始化(sda=l;delay ();scl=l ; delay ();void ack()sda二0;scl=l;delay4us ();scl=0; sda=l;)void noack ()sda=l;scl=l;delay4us ();scl=0;sda=0;uchar recbyte ()(uchar i,rd;rd=0x00;sda=l;f
36、or(i=0;i8;i+)(scl=l;rd=l; rd|二sda; delay4us (); scl=0;delay4us (); )scl=0;delay4us ();return rd;)uchar sendbyte (uchar wd)uchar i;bit ackO;for(i=O;i8;i+)(sda=(bit)(wd&0x80);_nop_();_nop_();scl=l;delay4us ();scl=0; wd=l;)delay4us ();sda=l;scl=l;delay4us ();ackO=!sda;scl=0;delay4us ();return ackO; )uc
37、har Recstring(uchar slave,uchar subaddr,uchar *buffer,uchar n) (uchar i;start ();if (!sendbyte(slave) return 0;if (!sendbyte(subaddr) return 0;start ();if (!sendbyte(slave+1) return 0;for (i=0;in-l;i+)(buffer i=recbyte ();ack();)buffern-l=recbyte();noack ();stopO ;return 1;uchar Sendstring(uchar sla
38、ve,uchar subaddr,uchar *buffer,uchar n)uchar i;start ();if (!sendbyte(slave) return 0;if (!sendbyte(subaddr) return 0;for(i=0;in;i+)(if (!sendbyte(bufferi) return 0;stopO ; return 1;bit compare_string(uchar *stringl,uchar *string2) uchar counter;for(counter=0;counter6;counter+)if(stringlcounter!=str
39、ing2counter) return(0); )return(1);void clear_password ()(uchar i;for (i=0;i6;i+)(Userpasswordi=,;)for (i=0;i16;i+)(DSY_BUFFERi=,)uchar Keys_Scan()(uchar temp,keynum;P2=0x0F;delayms(5);temp=P20x0F;switch (temp)(case 1:keynum=0;break; case 2:keynum=l;break; case 4:keynum=2;break; case 8:keynum=3;brea
40、k; break;)P2=0xF0;delayms(5); temp=P24 OxOF;switch(temp)case 1:keynum+=0;break;case 2:keynum+=4;break;case 4:keynum+=8;break;case 8:keynum+=12;break;break;)delayms(600);return keynum;)void main () uint count=0;uchar temp,m=0,i=0,j=0,k=0; /*uchar IS_valid_user=0;bit a=l;/int b=0;flag=0;beep二1;init ()
41、;init_lcd(); delayms(5);delayms(5);aa二Recstring(OxaO,1,buffer,6);delayms(10);P2=0x0f;clk=l;/shangsuo; PNP低电平开锁,高电平上锁;ledred=0; /red;while(l)(if(P2!=0x0f)temp=Keys_Scan();beep=0; delayms (100) ;beep=l;按键音switch (temp)(case 4:case 4:case 0: case 1: case 2: case 3case 5: case 6: case 7: case 8: case 9:
42、Userpasswordm=temp; m+; Userpasswordi=temp; if(i=5) DSY_BUFFERi =*;Display String(DSY BUFFER,OxcO); i+;)break;case 10: 按A键开锁 flag=0; for(k=0;km;k+) if (bufferk=(Userpasswordk+48) flag+;else flag=0; )if (flag=6) (flag=0; i=0; m=0; edred=l;/miehongdeng clk=0;/kaisuoled=0; /点亮 LEDDisplay_String(nOPEN O
43、K! n,OxcO);IS_valid_user = 1; J=0; elseflag=0;j+;ledred=0;/red; clk=l;/shangsuoled= 1; 关闭 LEDclear_password ();D i sp1ay_Str i ng (M ERROR! I lave tryn,OxcO);write_(Oxcf); write date(0x30+j);IS valid user=0; ) / i=0; m=0; break;case 11: 按B键上锁 led=l;flag=0; ledred=0;/red clk=l;/clear_password ();Disp
44、lay String(table,0x80);Display_String(MLock OK!n,OxcO);i=0;m=0;IS valid user=0; break;case 12: 按C键设置新密码 如果是合法用户那么提示输入新密 码if ( !IS_valid_user) i=0;Display_String(HNo rights !0,OxcO);delayms(1000);Display_String(nYour Password. M,0x80); Display_String(MLock OK!n,OxcO);) elsei=0; clear_password () ; ni
45、=0;批注g5:黑体三号批注g5:黑体三号1绪论批注g6:黑体小三号1.1 电子密码锁简介I批注国7:正文宋体小四I电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开 关的闭合,完成开I锁一闭锁任务的电子产品。它的种类很多,有简易的电路产品, 也有基于芯片的性价比拟高的产品。现在应用较广的电子密码锁是以芯片为核心, 通过编程来实现的。其性能和平安性已大大超过了机械锁。其特点如下:性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。密码可变,用户可以随时更改密码,防止密码被盗,同时也可以防止因人 元的更替而使锁的密级下降。误码输入保护,当输入密码屡次错误时,报 警系统自动启动。无活动零件,不会磨损,寿命长。 使用灵活性好,不像机械锁必须佩带钥匙才能开锁。(6)电子密码锁操作简单易行,一学即会。1.2 电子密码锁的开展趋势日常生活和工作中,住宅与部门的平安防、单位的文件档案、财务报表以与