收藏 分享(赏)

基于-STC89C52单片机毕业设计附 原理图 pcb图 源程序 仿真图.doc

上传人:春华秋实 文档编号:3631098 上传时间:2018-11-14 格式:DOC 页数:44 大小:956KB
下载 相关 举报
基于-STC89C52单片机毕业设计附 原理图 pcb图 源程序 仿真图.doc_第1页
第1页 / 共44页
基于-STC89C52单片机毕业设计附 原理图 pcb图 源程序 仿真图.doc_第2页
第2页 / 共44页
基于-STC89C52单片机毕业设计附 原理图 pcb图 源程序 仿真图.doc_第3页
第3页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、基于 STC89C52 单片机的电子密码锁摘 要随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事情屡见不鲜,电子密码锁具有安全性能高,成本低,功耗低,操作简单等优点使其作为防盗卫士的角色越来越重要。从经济实用角度出发,采用 51 系列单片机,设计一款可更改密码,LCD1602 显示,具有报警功能,该电子密码锁体积小,易于开发,成本较低,安全性高,能将其存储的现场历史数据及时上报给上位机系统,实现网络实时监控,方便管理人员及时分析和处理数据。其性能和安全性已大大超过了机械锁,特点有保密性好,编码量多,远远大于弹子锁,随机开锁成功率几乎为零;

2、密码可变, 用户可以经常更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降;误码输入保护。当输入密码多次错误时,报警系统自动启动;电子密码锁操作简单易行,受到广大用户的亲睐。关键词 单片机, 密码锁, 更改密码, LCD1602目 录摘要I1 绪论1.1 电子密码锁简介11.2 电子密码锁的发展趋势12 设计方案33 主要元器件43.1 主控芯片 STC89C5243.2 晶体振荡器83.3 LCD 显示密码模块的设计93.3.1 LCD1602 简介93.3.2 LCD1602 液晶显示模块与单片机连接电路114 硬件系统设计124.1 设计原理124.2 电源输入电路124

3、.3 矩阵键盘134.4 复位电路144.5 晶振电路144.6 报警电路154.7 显示电路154.8 开锁电路164.9 电路总体构成165 软件程序设计185.1 主程序流程介绍185.2 键盘模块流程图19 5.3 显示模块流程图215.4 修改密码流程图225.5 开锁和报警模块流程图236 电子密码锁的系统调试及仿真256.1 硬件电路调试及结果分析256.2 软件调试及功能分析256.2.1 调试过程256.2.2 仿真结果分266.3 仿真全图287 结论29参考文献30附录:3111 绪论1.1 电子密码锁简介电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开

4、关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁。其特点如下:1) 保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。2) 密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。3) 误码输入保护,当输入密码多次错误时,报警系统自动启动。4) 无活动零件,不会磨损,寿命长。5) 使用灵活性好,不像机械锁必须佩带钥匙才能开锁。6) 电子密码锁操作简单易行,一学即会。1.2 电子密码锁的发展趋势日常生活和工作

5、中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。目前门锁主要用弹子锁,其钥匙容易丢失;保险箱主要用机械密码锁,其结构较为复杂,制造精度要求高,成本高,且易出现故障,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。针对这些锁具给人们带来的不便若使用机械式钥匙开锁,为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。由于电子器件所限,以前开发的电子密码锁,其种类不多,保密性差,最基本的就是只依靠最简单的模拟电子开关来实现的,制作简单但很不安全,在后为多是基于 EDA 来实现的,其电路结构复杂,电子元件繁多,也有使用

6、早先的 20 引角的 2051 系列单片机来实现的,但密码简单,易破解。随着电子元件的进一步发展,电子密码锁也出现了很多的种类,功能日益强大,使用更加方2便,安全保密性更强,由以前的单密码输入发展到现在的,密码加感应元件,实现了真真的电子加密,用户只有密码或电子钥匙中的一样,是打不开锁的,随着电子元件的发展及人们对保密性需求的提高出现了越来越多的电子密码锁。出于安全、方便等方面的需要许多电子密码锁已相继问世。但这类产品的特点是针对特定有效卡、指纹或声音有效,且不能实现远程控制,只能适用于保密要求高且供个人使用的箱、柜、房间等。由于数字、字符、图形图像、人体生物特征和时间等要素均可成为钥匙的电子

7、信息,组合使用这些信息能够使电子防盗锁获得高度的保密性,如防范森严的金库,需要使用复合信息密码的电子防盗锁,组合使用信息也能够使电子防盗锁获得无穷扩展的可能,使产品多样化,对用户而言是“千挑百选、自得其所” 。可以看出组合使用电子信息是电子密码锁以后发展的趋势。32 设计方案采用以单片机为核心的控制方案由于单片机种类繁多,各种型号都有其一定的应用环境,因此在选用时要多加比较,合理选择,以期获得最佳的性价比。一般来说在选取单片机时从下面几个方面考虑:性能、存储器、运行速度、I/O 口、定时/计数器、串行接口、模拟电路功能、工作电压、功耗、封装形式、抗干扰性、保密性,除了以上的一些的还有一些最基本

8、的比如:中断源的数量和优先级、工作温度范围、有没有低电压检测功能、单片机内有无时钟振荡器、有无上电复位功能等。在开发过程中单片机还受到:开发工具、编程器、开发成本、开发人员的适应性、技术支持和服务等等因素。基于以上因素本设计选用单片机 STC89C52 作为本设计的核心元件,利用单片机灵活的编程设计和丰富的 I/O 端口,及其控制的准确性,实现基本的密码锁功能。在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接 LCD1602 液晶显示屏用于显示作用。当用户需要开锁时,先按键盘开锁键之后按键盘的数字键 09 输入密码。密码输完后按下确认键,如果密码输入正确则开锁,不正确则重新输

9、入密码,当三次密码错误则发出报警;当用户需要修改密码时,先按下键盘设置键后输入原来的密码,只有当输入的原密码正确开锁后才能设置新密码。新密码输入无误后按确认键使新密码将得到存储,密码修改成功。43 主要元器件3.1 主控芯片 STC89C521)STC89C52 单片机的主要特性如下: Stc89c52 是一种带 8K 字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能 CMOS8 位微处理器,俗称单片机。该器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS-51

10、 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中,stc 的 stc89c52 是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案,stc89c52 芯片引脚图如图 3-1所示。图 3-1 stc89c52 芯片引脚图主要特性:与 MCS-51 兼容 58K 字节可编程闪烁存储器 寿命:1000 写/擦循环数据保留时间:10 年全静态工作:0Hz-24Hz三级程序存储器锁定128*8 位内部 RAM32 可编程 I/O 线两个 16 位定时器/计数器6 个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路 2)STC89C5

11、2RC 引脚功能说明:1、主电源引脚 VSS和 VSS STC89C52 芯片引脚图VSS(40 脚)接+5V 电压;VSS(20 脚)接地。 2、外接晶体引脚 XTAL1 和 XTAL2 XTAL1(19 脚)接外部晶体的一个引脚。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。当采用外部振荡器时,对 HMOS单片机,此引脚应接地;对 SHMOS 单片机,此引脚作为驱动端。 XTAL2(18 脚)接外晶体的另一端。在单片机内部,接至上述振荡器的反相放大器的输出端。采用外部振荡器时,对 HMOS 单片机,该引脚接外部振荡器的信号,即把外部振荡器的信号直接接到内部时钟发生器

12、的输入端;对XHMOS,此引脚应悬浮。 3、控制或与其它电源复用引脚 RST/VPD、ALE/PROG、PSEN 和 EA/VPP RST/VPD(9 脚)当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位。推荐在此引脚与 VSS 引脚之间连接一个约 8.2k 的下拉电阻,与 VSS引脚之间连接一个约 10F 的电容,以保证可靠地复位。 VSS掉电期间,此引脚可接上备用电源,以保证内部 RAM 的数据不丢失。当6VSS主电源下掉到低于规定的电平,而 VPD 在其规定的电压范围(50.5V)内,VPD 就向内部 RAM 提供备用电源。 ALE/PROG(30 脚):当访问外部存贮器时

13、,ALE(允许地址锁存)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE 端仍以不变的频率周期性地出现正脉冲信号,此频率为振荡器频率的 1/6。因此,它可用作对外输出的时钟,或用于定时目的。然而要注意的是,每当访问外部数据存储器时,将跳过一个 ALE 脉冲。ALE 端可以驱动(吸收或输出电流)8 个 LS 型的 TTL 输入电路。 对于 EPROM 单片机(如 8751) ,在 EPROM 编程期间,此引脚用于输入编程脉冲(PROG) 。 PSEN(29 脚):此脚的输出是外部程序存储器的读选通信号。在从外部程序存储器取指令(或常数)期间,每个机器周期两次 PSEN 有效。但在此期间

14、,每当访问外部数据存储器时,这两次有效的 PSEN 信号将不出现。PSEN 同样可以驱动(吸收或输出)8 个 LS 型的 TTL 输入。 EA/V PP( 引脚):当 EA 端保持高电平时,访问内部程序存储器,但在PS(程序计数器)值超过 0FFFH(对 851/8751/80S51)或 1FFFH(对 8052)时,将自动转向执行外部程序存储器内的程序。当 EA 保持低电平时,则只访问外部程序存储器,不管是否有内部程序存储器。对于常用的 8031 来说,无内部程序存储器,所以 EA 脚须常接地,这样才能只选择外部程序存储器。 对于 EPROM 型的单片机(如 8751) ,在 EPROM 编

15、程期间,此引脚也用于施加 21V 的编程电源(V PP) 。4控制或与其它电源复用引脚 RST/Vpd,ALE/PROG,PSEN 和 EA/Vpp。RST/Vpd 当振荡器运行时。在此引脚上出现两个机器同期的高电平(由低到高跳变) ,将使单片机复位。在 VSS 掉电期间,此引脚可接上备用电源,由 Vpd 向内部 RAM 提供备用电源,以保持内部 RAM 中的数据。ALE/PROG 正常操作时为 ALE 功能(允许地址钱存) ,提供把地址的低字节锁存到外部锁存器。ALE 引脚以不变的频率(振荡周期的 1/6)周期性地发出正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。但要注意,每当访

16、问外部数据存储器时,将跳过一个 ALE 脉冲。 ALE 端可以驱动(吸收或输7出电流)八个 LSTTL 电路。对于 EPROM 型单片机,在 EPROM 编程期间,此引脚接收编程脉冲(PROG功能) 。PSEN 外部程序存储器读选通信号输出端。在从外部程序存储器取指令(或数据)期间;PSEN 在每个机器周期内两次有效。 PSEN 同样可以驱动八个LSTTL 输入。EAVpp EA 为内部程序存储器和外部程序存储器选择端。当 EA 为高电平时,访问内部程序存储器(PS 值小于 4K) 。当 EA 为低电平时,则访问外部程序存储器。对于 EPROM 型单片机,在 EPROM 编程期间,此引脚上加

17、21VEPROM 编程电源(Vpp) 。5、输入/输出(I/O)引脚 P0、P1、P2、P3(共 32 根) P0 口(39 脚至 32 脚):是双向 8 位三态 I/O 口,在外接存储器时,与地址总线的低 8 位及数据总线复用,能以吸收电流的方式驱动 8 个 LS 型的 TTL负载。 P1 口(1 脚至 8 脚):是准双向 8 位 I/O 口。由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向 I/O 口。P1 口能驱动(吸收或输出电流)4 个 LS 型的 TTL 负载。对 8052、8032,P1.0 引脚的第二功能为 T2 定时/计数器的外部输入,P1.1 引脚的第二功能为

18、T2EX 捕捉、重装触发,即 T2外部控制端。对 EPROM 编程和程序验证时,它接收低 8 位地址。 P2 口(21 脚至 28 脚):是准双向 8 位 I/O 口。在访问外部存储器时,它可以作为扩展电路高 8 位地址总线送出高 8 位地址。在对 EPROM 编程和程序验证期间,它接收高 8 位地址。P2 可以驱动(吸收或输出电流)4 个 LS 型的TTL 负载。 P3 口(10 脚至 17 脚):是准双向 8 位 I/O 口,在 MSS-51 中,这 8 个引脚还用于专门功能,是复用双功能口。P3 能驱动(吸收或输出电流)4 个 LS 型的 TTL 负载。 作为第一功能使用时,就作为普通

19、I/O 口用,功能和操作方法与 P1 口相同。作为第二功能使用时,各引脚的定义如表所示。 值得强调的是,P3 口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。如表 3-1。8表 3-1 P3 口管脚备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断 0)P3.3 /INT1(外部中断 1)P3.4 T0(记时器 0 外部输入)P3.5 T1(记时器 1 外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)3.2 晶体振荡器晶体振荡器,简称晶振,其作用在于产生原始的时钟频率,这个频率经过频率发生器的放

20、大或缩小后就成了电脑中各种不同的总线频率。以声卡为例,要实现对模拟信号 44.1kHz 或 48kHz 的采样,频率发生器就必须提供一个44.1kHz 或 48kHz 的时钟频率。如果需要对这两种音频同时支持的话,声卡就需要有两颗晶振。但是现在的娱乐级声卡为了降低成本,通常都采用 SCR 将输出的采样频率固定在 48kHz,但是 SRC 会对音质带来损害,而且现在的娱乐级声卡都没有很好地解决这个问题。现在应用最广泛的是石英晶体振荡器。石英晶体振荡器是一种高精度和高稳定度的振荡器,石英晶体振荡器也称石英晶体谐振器,它用来稳定频率和选择频率,是一种可以取代 LC 谐振回路的晶体谐振元件。石英晶体振

21、荡器广泛地应用在电视机、影碟机、录像机、无线通讯设备、电子钟表、单片机、数字仪器仪表等电子设备中。为数据处理设备产生时钟信号和为特定系统提供基准信号。在单片机中为其提供时钟频率。石英晶体振荡器是利用石英晶体(二氧化硅的结晶体)的压电效应制成的一种谐振器件,它的基本构成大致是:从一块石英晶体上按一定方位角切下薄片(简称为晶片,它可以是正方形、矩形或圆形等) ,在它的两个对应面上涂敷银层作为电极,在每个电极上各焊一根引线接到管脚上,再加上封装外壳就构成了石英晶体谐振器,简称为石英晶体或晶体、晶振。其产品一般用金属外壳封装,也有用玻璃壳、陶瓷或塑料封装的。只要在晶体振子板极上施加交变电9压,就会使晶

22、片产生机械变形振动,此现象即所谓逆压电效应。当外加电压频率等于晶体谐振器的固有频率时,就会发生压电谐振,从而导致机械变形的振幅突然增大。时钟信号用来提供单片机片内的各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。MCS-51 单片机内部有一个用于构成振荡器的高增益反向放大器,引脚 XTAL1 和 XTAL2 分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式,外接晶体振荡器(简称晶振)或陶瓷谐振器就构成了内部振荡方式,片内高增益反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生

23、振荡时钟脉冲。外接晶体以及电容 C2和 C3 构成并联谐振电路,它们起稳定振荡频率、快速起振的作用,其值为30pF 左右,晶振频率选 11.0592MHz 3.3 LCD 显示密码模块的设计显示模块主要由 LCD1602 显示屏组成,他显示的是键盘输入的密码,以及密码正确与错误的提示。当输入密码时,出于安全性的考虑,显示的密码是有*号代替,为暗密。当输入六位密码后按下确认键,系统会与存于 ROM 的密码对比, 若密码错误,显示屏会显示 Error,若密码正确,显示屏会显示 Right。3.3.1 LCD1602 简介1) 1602 功能介绍1602 液晶也叫 1602 字符型液晶它是一种专门用

24、来显示字母、数字、符号等的点阵型液晶模块它有若干个 5X7 或者 5X11 等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形。1602LCD 是指显示的内容为 16X2,即可以显示两行,每行 16 个字符液晶模块(显示字符和数字) 。 2) 1602LCD 采用标准的 14 脚(无背光)或 16 脚(带背光)接口,各引脚接口说明如下表 3-2 所示: 10表 3-2 引脚功能说明编号 符号 引脚说明 编号 符号 引脚说明1 VSS 电源地 9 D2 数据2 VDD 电源正极 10 D3 数据3

25、 VL 液晶显示偏压 11 D4 数据4 RS 数据/命令选择 12 D5 数据5 R/W 读/写选择 13 D6 数据6 E 使能信号 14 D7 数据7 D0 数据 15 BLA 背光源正极8 D1 数据 16 BLK 背光源负极其引脚图如下图 3-2 所示:图 3-2 LCD1602 引脚图3) LCD 寄存器的选择表 3-3 LCD 寄存器的选择E R/W RS 功能说明1 1 0 写入命令寄存器1 1 1 写入数据寄存器1 1 0 读取忙碌标志及 RAM 地址1 1 1 读取 RAM 数据0 X 1 不动作113.3.2 LCD1602 液晶显示模块与单片机连接电路图 3-3 LCD

26、1602 液晶显示模块与单片机连接电路124 硬件系统设计4.1 设计原理本设计主要由单片机、矩阵键盘、液晶显示器和密码存储等部分组成。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警,实际使用时只要将单片机的负载由继电器换成电子密码锁的电磁铁吸合线圈即可,当然也可以用继电器的常开触点去控制电磁铁吸合线圈。本系统共有两部分构成,即硬件部分与软件部分。其中硬件部分由电源输入部分、键盘输入部分、密码存储部分、复位部分、晶

27、振部分、显示部分、报警部分、开锁部分组成,软件部分对应的由主程序、初始化程序、LCD 显示程序、键盘扫描程序、启动程序、关闭程序、建功能程序、密码设置程序、EEPROM 读写程序和延时程序等组成。复位电路振荡电路键盘电路开锁电路STC89C52单片机显示电路报警电路图 4-1 组成原理4.2 电源输入电路三端集成稳压器 LM7805 和 LM7905 是作为固定输出电压的典型应用。正常13工作时,输入、输出电压差为 2-3V。电容 C 为输入稳定电容,其作用是减小纹波,消振、抑制高频和脉冲干扰,它一般为 0.1-1uF。电容 C 为输出稳定电容,其作用是改善负载的瞬态响应,它一般为 1uF。使

28、用三端稳压器时要根据输出电流的大小选择加散热器,否则会由于过热而无法工作到额定电流。图 4-2 电源输入电路4.3 矩阵键盘由于本设计所用到的按键数量较多而不适合用独立按键式键盘。采用的是矩阵式按键键盘,它由行线和列线组成,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多I/O 口。本设计中使用的这个 4*4 键盘不但能完成密码的输入还能作特别功能键使用,比如清空显示功能等。键盘的每个按键功能在程序设计中设置 。其大体功能(看键盘按键上的标记)及与单片机引脚接法。图 4-3 矩阵键盘144.4 复位电路单片机复位是使 CPU 和系统中的其他功

29、能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后 PC0000H,使单片机从第个单元取指令。无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。在复位期间(即 RST 为高电平期间) ,P0 口为高组态,P1P3 口输出高电平;外部程序存储器读选通信号 PSEN 无效。地址锁存信号 ALE 也为高电平。根据实际情况选择如图 2-8 所示的复位电路。该电路在最简单的复位电路下增加了手动复位按键,在接通电源瞬间,电容 C1 上的电压很小,复位下拉电阻上的电压接近电源电压,即 RST 为高电平,在电容充电的过程中 RST 端电压逐渐下降,当 RST 端的电压小于某一数值

30、后,CPU 脱离复位状态,由于电容 C1 足够大,可以保证 RST 高电平有效时间大于 24 个振荡周期,CPU 能够可靠复位。增加手动复位按键是为了避免死机时无法可靠复位。当复位按键按下后电容 C1 通过 R5放电。当电容 C1 放电结束后,RST 端的电位由 R11 与 R15 分压比决定。由于R113?报警程序修改程序YNNY图 5-1 主程序流程5.2 键盘模块流程图键盘输入模块主要包含键盘的扫描、延时去抖、找到键值以及返回键值。键盘扫描时循环的,程序编写是会使其进入是循环,这样可以检验出是否有按键按下,如果无按键按下就会进入等待有按键按下的状态,如果有按键按下的话就进入延时去抖的步骤

31、,这样可以肯定的确定扫描到的按键是否被按下。经过去抖之后就是确定按键的位置即是第几行和第几列,找到按键后,就是确定键值并返回按键值,每一次扫描到有键按下后,最后都要有释放闭合按键的步骤,这是为了避免影响下一次键盘的扫描和按键值的读取。流程图如图 5-2 所示20键盘扫描返回键值闭合键释放计算键值找到闭合键延时去抖有键闭合?YN图 5-2 键盘模块流程按键的消抖子程序所示:if(press_on!=0XF0)/-按键消抖- (时间自定)delay(50);press_on=KEY_IO;确定键值的子程序如下所示:switch(row)case 0xe0:row=0;break;case 0xd0

32、:row=1;break;case 0xb0:row=2;break;case 0x70:row=3;break;switch(col)case 0x07:col=0;break;case 0x0b:col=1;break;case 0x0d:col=2;break;case 0x0e:col=3;break;recieve=key_valuerowcol; 215.3 显示模块流程图LCD 显示模块的软件设计主要包含开始、初始化 LCD、清除 LCD、写 LCD 四个过程。其中写包含写数据和写字符。写数据的部分程序:/写数 (5 位数据)void printf_data(uchar row,

33、uchar col,uchar count,uint dat)uchar sh1,sh2,sh3,sh4,sh5;sh5=dat/10000;sh4=dat%10000/1000;sh3=dat%1000/100;sh2=dat%100/10;sh1=dat%10;write_adr(0x0c);switch(row)case 1:row=0x80;break;case 2:row=0xc0;break;default:break;write_adr(row+col-1);delay(500);if(count=5)write_data(sh5+48);if(count=4) write_da

34、ta(sh4+48);if(count=3)write_data(sh3+48);if(count=2) write_data(sh2+48);if(count=1)write_data(sh1+48);写字符的小程序为:/写一段字符void printf_char(uchar row,uchar col,uchar Inbuffer31)uchar i;write_adr(0x0c);switch(row)22case 1:row=0x80;break;流程图 5-3 如下:初始化 LCD开始清除 LCD写 LCD结束图 5-3 显示模块流程图5.4 修改密码流程图修改密码模块主要是在输入密

35、码正确之后,按下 14 键即是修改密码键就能进入修改密码界面,其流程分为四个步骤,分别为按下 14 键并启动定时、输入修改的密码、按下确认键 11 键、LCD 的显示。修改密码的部分程序如下:/改密码void ch_word(void)unsigned char recieve=0xff,b10,j=0;LCD_CLR();printf_char(1,1,“new_password%d“);while(recieve!=11)recieve=keypad();delay(10000);if(recieve=0)bj=recieve;printf_data(2,j+1,1,recieve);j+

36、;else if(recieve=12)23if(j!=0) aj=0;printf_char(2,j,“ %d“); j-; 流程图如图 5-4 所示:按下 14键启动定时输入密码存入缓冲按下确认1111 键比较密码调用 LED调用显示图 5-4 修改密码流程图5.5 开锁和报警模块流程图开锁和报警模块主要任务是把从键盘输入到单片机的密码和本身保存在单片机中的密码进行对比,如果正确就开锁,如果错误的话就进行计数并显示在LCD 液晶显示屏上,当输入密码的错误次数达到 3 次就进入报警模式,启动蜂鸣器报警。其流程图如图 5-5 所示。24图 5-5 报警流程图256 电子密码锁的系统调试及仿真6

37、.1 硬件电路调试及结果分析硬件调试首先检查电路板焊接是否有误,检查有是否出现虚焊、漏焊、线路短接、元器件引脚是否错误焊接等等问题,然后检查电路中某些元器件是否起作用,最后利用一些小程序测试 LCD1602 是否完好无损。检测单片机是否工作可通过观察示波器显示的波形是否衰减,或者利用万用表测一下 18,19 脚的电压,应该有个 2-3V 就说明起振了,另外,ALE 如果有信号或者有电压也说明单片机工作了。我采用利用万用表侧 18、19 脚的电压,其结果显示为 2.3V。检测电路有无虚焊可用万用表的二极管档来检测,当把万用表的红黑两表笔接触在焊接线路的两端后,万用表发出声音,则说明没有虚焊。检查

38、电路是否短路也是利用同一原理。6.2 软件调试及功能分析软件调试即是把已经写好的 C 语言程序载入到软件调试工具,检查软件是否有设法错误,再根据软件提示对本程序进行修改,直到没有错误再生成单片机能运行的机器码,再用 51 开发板或其它单片机写入工具把机器码写入单片机进行实际的程序调试,根据实际情况再对程序的不足加以修改,直到满足设计要求。本设计采用 Proteus 和 KEIL 软件进行仿真、调试,首先在在 Proteus 软件上进行硬件电路的描绘,其次在 KEIL 软件编写电子密码锁的源程序,源程序经过汇编后产生 Hex 文件,最后将生成的目标文件添加到单片机中仿真调试。6.2.1 调试过程首先打开 KEIL C51 主程序,新建工程,新建文本框写入程序,保存,检查是否有语法错误,经反复检查无误后汇编,生成 51 单片机可执行的 HEX 文件。然后用与 51 开发板相匹配的写入软件把 HEX 文件写入单片机。26图 6-1 KEIL c51 调试介面图 6-2 程序写入界面6.2.2 仿真结果分析当系统通电进入初始化状态后,LCD 显示屏会显示 Welcome,结果如图 6-3所示。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 学术论文 > 大学论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报