首页 毕业论文 基于单片机的密码锁设计

毕业论文 基于单片机的密码锁设计

举报
开通vip

毕业论文 基于单片机的密码锁设计毕业论文 基于单片机的密码锁设计 摘要 摘 要 在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用数字密码代替钥匙的单片机控制的电子密码锁应运而生。 在这次毕业设计中我采用AT89C51单片机为核心4*4矩阵键盘作为输入器件,LCD160...

毕业论文 基于单片机的密码锁设计
毕业论文 基于单片机的密码锁设计 摘要 摘 要 在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用数字密码代替钥匙的单片机控制的电子密码锁应运而生。 在这次毕业设计中我采用AT89C51单片机为核心4*4矩阵键盘作为输入器件,LCD1602字符型液晶作为显示电路来制作基于单片机的电子密码锁。该密码锁具有可更改密码、密码掉电保护、输入密码错误报警、输入密码错误三次锁定键盘的功能。该密码锁具有操作人性化、低功耗、高保密性等一系列优点。本文详细地介绍了系统硬件与软件的设计,以及仿真调试的详细过程。 关键词:4*4矩阵键盘, AT89C51, 1602LCD显示器,密码锁 I 摘要 Abstract In our daily life, the security of house, company department, documents and finance forms, also some personal information always used the lock to protect them. If use the normal keys to lock out the door, we should taken many keys with us . That is so difficult to use. And if we lost the keys with careless, the security looks very easy to break out. As the developing of the technology people ask for high security machines. For satisfy this request, the cipher lock is appeared. The cipher has higher security, lower cost, lower power and easy to use. At the graduation design I AT89C51 microcontroller as the core 4 * 4 matrix as input devices, LCD1602 keyboard type LCD display circuit as a character based on single chip to make the electronic combination lock. This combination lock has may change your password, password off electricity protection, input password mistake alarm, input password mistake three times the function of lock the keypad. This combination lock have operation humanization, low power consumption, high confidentiality and so on a series of advantages. This paper introduced in detail the system hardware and software design, and the detailed process simulation debugging. Keywords: matrix keyboards, AT89C51, 1602LCD, combination lock II 目录 目录 第1章 概论 ......................................................... 1 1.1 设计意义 .................................................... 1 1.2背景知识介绍 ................................................. 1 1.3 本文主要工作以及内容安排 .................................... 2 第2章 系统总体 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 设计 ............................................. 3 2.1 总体方案设计 ................................................ 3 2.1.1 实现功能: ............................................ 3 2.1.2 4*4键盘 说明 关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书 .......................................... 4 2.2 AT89C51单片机介绍 .......................................... 4 2.3硬件设计 ..................................................... 6 2.3.1 时钟电路的设计 ........................................ 6 2.3.2 复位电路的设计 ........................................ 7 2.3.3 密码存储电路的设计 .................................... 8 2.3.4 键盘电路设计 .......................................... 9 2.3.5 显示电路的设计 ....................................... 11 2.3.6 报警电路 ............................................. 14 2.3.7 开锁电路 ............................................. 15 第3章 软件设计 ................................................... 16 3.1 编程工具介绍 ............................................... 16 3.2 编程语言介绍 ............................................... 17 3.3 软件编程 ................................................... 18 3.3.1软件设计原则 .......................................... 18 3.3.2 软件设计方案 ......................................... 18 3.3.3 4*4矩阵键盘的编程 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 ............................... 19 3.3.4液晶显示子程序 ........................................ 21 3.3.5 密码比较和报警程序 ................................... 22 3.3.6 密码重置程序设计 ..................................... 23 第4章 软件仿真以及调试 ........................................... 26 4.1 仿真软件简介 ............................................... 26 4.2 仿真程序基本工作界面 ....................................... 27 4.3 仿真过程 ................................................... 27 总结 ............................................................... 30 参考文献 ........................................................... 31 致谢 ............................................................... 32 附录A:程序主函数 .................................................. 33 附录B:总电路图 .................................................... 36 I 第1章概论 第1章 概论 1.1 设计意义 单片机的应用是具有高度现实意义的。单片机极高的可靠性,微型性和智能性,单片机已成为工业控制领域中普遍采用的智能化控制工具,已经深深地渗入到我们的日常生活当中。在这次基于单片机的电子密码锁毕业设计中,不仅使我加深对大学所学知识的理解,而且使我对单片机有了进一步的了解。在设计的过程中,不仅使我熟悉了AT89C51单片的基本结构和相关的参数,而且了解单片机最小系统的构成。在这次设计中所学到的相关知识也许会在将来的工作和学习中用到。 随着单片机在各个领域的广泛应用,许多用单片机做控制的密码锁系统也应运而产生,如用单片机控制LCD液晶的各种显示器显示数据,用单片机控制LED七段操作显示器等。本次设计用由AT89C51编程控制LCD1602液晶作显示的密码锁系统。该系统具有设定密码并储存密码、报警、输入密码错误锁定键盘等功能。它具有高保密性,操作方便、性能稳定等特点,可以广泛适合各类档案管理场所或者家庭室内财务保管处。通过本次基于AT89C51系列单片机密码锁的设计,可以了解、熟悉有关单片机开发设计的过程,并加深对单片机的理解和应用以及掌握单片机与外围接口的一些方法和技巧,这主要表现在以下一些方面: 1) 密码锁系统包含了8051系列单片机的最小应用系统的构成。 2) 可以了解到1602液晶的接口、工作原理以及这种显示器的接口实例与具体连接与编程方法。 3) 用AT24C02储存密码的原理和方法。 1.2背景知识介绍 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。 单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。单片机的优点是体积小、重量轻、抗干扰能力强, 1 第1章概论 价格低廉,可靠性高,灵活性好,开发较为容易。单片机以其一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统,数据采集系统、智能化仪器仪表,及通讯设备、日常消费类产品、玩具等。并且已经深入到工业生产的各个环节以及人民生活的各个层次中,如车间流水线控制、自动化系统等、智能型家用电器等。 ATMEL公司开发生产了新型的8位单片机——AT89系列单片机。它不但具有一般MCS-51单片机的所有特性,而且还拥有一些独特的优点,此次设计中所用到的AT89C51就是其中典型的代表。单片机内部也有和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机,排烟罩VCD等等的家电里面都可以看到它的身影。 1.3 本文主要工作以及内容安排 本文主要介绍电子密码锁需要实现的功能以及如何利用单片机来制作电子密码锁。在本文中详细地介绍了具体硬件设计和软件模块化编程以及设计中各个功能的实现方法和过程。具体内容有: 全文共分4章,结构安排如下: 第1章 绪论介绍了本次设计目的及意义以及单片机的发展现状、1602字符型液晶在电子密码锁系统中的应用以及主要实现的功能。 第2章 介绍了本次设计的硬件电路的设计思路以及元件的选择,详细的说明电路图中各个部分的功能和连线方式,为下一步的编程设计作好铺垫。 第3章 介绍了单片机编程软件和常用的编程语言,确定了编程的主题思路以及设计功能的具体实现方法。 第4章 介绍了如何在电脑上实现设计的软件仿真。 2 河南城建学院本科毕业设计(论文) 第2章系统总体方案设计 第2章 系统总体方案设计 2.1 总体方案设计 考虑各方面因素本设计采用的是用以AT89C51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加掉电存储、声光提示甚至添加遥控控制功能。其设计方案如图2.1所示。 键盘控制 24C02C掉电保护电路 89C51 单片机 串口显示电路 开锁电路 复位电路 图2.1 单片机控制方案 实现此方案硬件是基础,程序是关键。要充分利用仿真软件,不断调试程序,以使程序在满足各种功能的情况下最简。 2.1.1 实现功能: 密码锁初始密码为:000000. (1)开锁:插上电源后,程序自动调入初始密码,此时依次输入:000000,然后按[#](确认)键,此时锁会打开,可以看到显示open,密码锁打开。 (2)退出并关锁:按下[*](取消)键,此时锁关闭,所有输入清除。 (3) 修改密码:在开锁状态下,再次输入正确的密码并按下[#](确认)键, 3 河南城建学院本科毕业设计(论文) 第2章系统总体方案设计 此时听到两声提示,输入新的六位密码并按[D](重设)键,再重复输入一次新密码并按[D],会听到两声提示音,表示重设密码成功,内部保存新密码并存储到AT24C02。(如两次输入的新密码不一样,则重设密码失败)。 (4) 报警并锁定键盘:当输入密码错误后,报警并锁定键盘3秒,如3秒内 再启动。 又有按键,3秒后 当重置新密码时,新密码会保存于AT24C02存储器里.。 2.1.2 4*4键盘说明 采用4*4键盘输入,键盘对应名称如表2.1 表2.1 键盘名称分布 1 2 3 A 4 5 6 B 7 8 9 C * 0 # D 其中,[09]为数字输入键,用于输入相应的数字 [*]号键为取消当前操作 [#]号键为确认 [D]键为修改密码 其它键无功能及定义 2.2 AT89C51单片机介绍 AT89C51单片机包括:一个8位的微型处理器CPU;一个128K的片内数据存储器RAM;4K片内程序存储器ROM;四个8位并行的I/O接口P0P3,每个接口既可以输入,也可以输出;两个定时器/记数器;五个中断源的中断控制系统;一个全双工UART的串行I/O口;片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。最高允许振荡频率是12MHZ。以上各个部分通过内部总线相连接。下面简单介绍其主要部分的功能。 处理器:CPU是单片微型计算机内部的核心部件,由它读入用户程序,并 4 河南城建学院本科毕业设计(论文) 第2章系统总体方案设计 逐条执行指令,它是由8位算术逻辑运算部件(简称ALU)、定时,控制部件,若干寄存器A、B、PSW、SP以及16位程序计数器(PC)和数据指针寄存器(DPTR)等主要部件组成。算术逻辑单元的硬件结构与典型微型机相似。它具有对8位信息进行+、-、*、/ 四则运算和逻辑与、或、异或、取反、清“0”等运算,并具有判跳、转移、数据传送等功能,此外还提供存放中间结果及常用数据寄存器。控制器部件是由指令寄存器、译码器、定时与控制电路以及信息传送控制等部件组成的。指令寄存器中存放指令代码。在执行指令时,从程序存储器中取来经译码器译码后,根据不同指令由定时与控制电路发出相应的控制信号,送到存储器、运算器或I,O接口电路,完成指令功能。程序计数器PC用来存放下一条将要执行的指令地址,共16位(可对以64K字节的程序存储器直接寻址,指令执行结束后,PC计数器自动增加,指向下一条要执行的指令地址。CPU功能,总的来说是以不同的方式,执行各种指令。不同的指令其功能略异。有的指令涉及到寄存器之间的关系;有的指令涉及到单片机核心电路内部各功能部件的关系;有的则与外部芯片如外部程序存储器发生联系。事实上,CPU是通过复杂的时序电路完成不同的指令功能。所谓CPU的时序是指控制按照指令功能发出一系列在时间上有一定次序的信号,控制和启动一部分逻辑电路,完成某种操作。[3] 表 2.2. P3口的第二功能 引脚 第2功能 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(外部数据存储器读选通信号输出端,低电平有效) 输入/输出引脚P0口、P1口、P2口及P3口: P0口(22脚,39脚),P0.0,P0.7统称为P0口。当不接外部存储器与不扩展I/O接口时,它可作为准双向8位输入/输出接口。当接有外部程序存储器或扩展I/O口时,P0口为地址/数据分时复用口。它分时提供8位双向数据总线;P1口(1脚,8脚),P1.0,P1.7统称为P1口,可作为准双向I/O接口使用。对于EPROM编程和进行程序校验时,P0口 5 河南城建学院本科毕业设计(论文) 第2章系统总体方案设计 接收输入的低8位地址;P2口(21脚,28脚),P2.0,P2.7统称为P2口,一般可作为准双向I/O接口。当接有外部程序存储器或扩展I/O接口且寻址范围超过256个字节时,P2口用于高8位地址总线送出高8位地址。对于EPROM编程和进行程序校验时,P2口接收输入的8位地址; P3口(10脚,17脚), P3.0,P3.7统称为P3口。它为双功能口,可以作为一般的准双向I/O接口,也可以将每1位用于第2功能,而且P3口的每一条引脚均可独立定义为第1功能的输入输出或第2功能。P3口的第2功能见表2.2所示。 中断系统: AT89C51单片机有5个中断源,由两个中断优先级,每个中断源的优先级可以编程为高优先级或低优先级。中断允许受到CPU开中断和中断源开中断的两级控制。 AT89C51单片机有两个中断优先级,高优先级和低优先级,每个中断源都可以编程为高中断优先级和低中断优先级。这可以实现两级中断嵌套,嵌套的原则是:一个正在执行的中断服务程序可以被较高优先级的中断请求中断,而不能被同级或较低级的中断请求所中断。两极中断通过使用IP寄存器设置。 AT89C51的管脚有四十多个这里就不在一一列出,图2.2.为其管脚分布。 140P1.0VCC239P1.1P0.0383P1.2P0.1437P1.3P0.2536P1.4P0.3356P1.5P0.4734P1.6P0.5833P1.7P0.6932RST/VPDP0.71031RXD P3.0EA/VPP1130TXD P3.1ALE/PROG1229INT0 P3.2PSEN1328INT1 P3.3P2.71427T0 P3.4P2.68031 8051 87511526T1 P3.5P2.51625WR P3.6P2.42417P2.3RD P3.71823XTAL2P2.21922XTAL1P2.12021VSSP2.0 图2.2. 8051的管脚分布 2.3硬件设计 2.3.1 时钟电路的设计 时钟电路用于产生MCS-51单片机工作时所必需的时钟控制信号,MCS-51单片 6 河南城建学院本科毕业设计(论文) 第2章系统总体方案设计 机的内部电路在时钟信号的控制下,严格的按时序执行指令进行工作。 电路中的电容C1和C2典型值通常选择为30pF左右本设计采用20pF,电路图如2.3。对外接电容的值虽没有严格的要求,但电容的大小会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。晶振的振荡频率的范围通常是在 12MHZ之间,本设计采用12MHZ。晶振的频率越高,则系统的时钟频率也1.2MHZ- 就越高,单片机的运行速度也就越快。但反过来运行速度快对存储器的速度要求也就越高,对印制电路板的工艺要求也高,即要求线间的寄生电容要小;晶振和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证振荡器稳定、可靠地工作。为了提高温度稳定性,应采用温度稳定性良好的电容。[12] 图2.3 时钟电路 2.3.2 复位电路的设计 单片机复位是使CPU 和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作。单片机复位的条件是:必须单片机复位引脚加上持续两个机器周期(即24 个振荡周期)以上的高电平,单片机才进入复位状态(即程序从0000H地址开始执行)。复位后的状态:单片机复位后,片内RAM中低128的内容不会改变,但特殊功能寄存器被初始化。复位期间单片机的ALE和PSEN引脚输出高电平,复位后单片机的特殊功能寄存器状态除SP为07H,P0P3为FFH外其余都被复位为0。 AT89C51单片机的第9管脚RST(RESET缩写),当向RST管脚输入一个非常短暂的高电平时,单片机就会复位。复位管脚与计算机上的复位键功能很相似,当计算机正在进行或死机时,只要按一下复位键,计算机,就会重新启动。单片机 7 河南城建学院本科毕业设计(论文) 第2章系统总体方案设计 的复位和这个过程相似,无论单片机在执行什么程序,如果触发复位就会使其回到程序的开头重新开始执行程序。最简单的复位电路就是在RST端与Vcc之间连接一个10uF的电解电容。单片机上电瞬间,电容的正极电压瞬间变为Vcc,电解电容对于这个瞬间的电压突变相当于短路,于是Vcc(高电平)相当于直接加到了RST端上。正是这个加在RST上的瞬间高电平使单片机复位。很快,电解电容充满电,在电路中相当于断路,于是RST端电平由高转低,单片机随即开始执行程序. 有时,只使用一个电解电容的复位电路可靠性不高,故本设计采用如图2.4所示的复位电路,以防电源开关或电源插头分-合过程引起的抖动而影响复位。 图2.4 复位电路 2.3.3 密码存储电路的设计 外置的拨码开关来设定密码,操作既不方便,电路又复杂。本设计采用了E2PROM 来保存密码,它最大的优点就是掉电后,存储的内容不会丢失,这是一种十分理想的方案。密码写入ROM 后即使掉电也没关系,且可以随意读出、写入。真正改变了以往密码锁的密码由厂家固定,用户只有使用权,而没有更改权的缺点,真正实现了密码锁的保密性。密码存储电路如图2.5所示。 本设计采用的芯片是ATMEL 公司的AT24C02C, 内有512 字节的ROM,且支持在线读写。其SDA为数据传送线,接在单片机的P3.5 口。SCK为移位时钟线,接在单片机的P3.4 口。利用P3.4 和P3.5口模拟串口来实现单片机和ROM间的数据串行通讯。 AT24C02各管脚介绍:SCK为串行时钟输入管脚用于产生器件所有数据发送或接收的时钟这是一个输入管脚;SDA为串行数据用于器件所有数据的发送或接收, 8 河南城建学院本科毕业设计(论文) 第2章系统总体方案设计 是一个开漏输出管脚可与其它开漏输出或集电极开路输出进行线,A0、 A1、 A2为器件地址输入端这些输入脚用于多个器件级联时设置器件地址当这些脚悬空时默认值为0 ;WP为写保护,如果WP管脚连接到Vcc所有的内容都被写保护只能读,当WP管脚连接到Vss或悬空允许器件进行正常的读/写操作。 图2.5 存储电路 2.3.4 键盘电路设计 键盘是一组规则排列的开关元器件组合,是最常用的输入设备。操作人员可以通过键盘向计算机输入数据、地址、指令或其他的控制命令,实现简单的人机对话。 (1) 按键输入原理 在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据的。当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能,所以按键信息输入是与软件结构密切相关的过程。 对于一个键盘或一组键,总有一个接口电路与CPU相连。CPU可以采用查询或中断方式了解有无将键输入并检查是哪一个键按下,将该键编号送入累加器ACC,然后通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。 (2) 键盘的分类 键盘按照接口原理可分为编码键盘和非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法不同。编码键盘主要用硬件来实现对按键的识别,非编码键盘主要由软件来实现键盘的定义与识别,只简单地提供行和列的矩阵,其它工作均由软件完成,由于经济实用,所以较多地应用于单片机系统中。根据结构的不同,非编码键盘又可分为矩阵式键盘和独立式键盘。矩阵式键盘由行线和列线构成,按键位于行、列交叉点上,矩阵式键盘在按键较多时使用会节 9 河南城建学院本科毕业设计(论文) 第2章系统总体方案设计 省很多I/O口,但是,各按键间相互影响,因此,必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。 (3) 按键结构与特点 微机键盘通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。也就是说,它能提供标准的 TTL逻辑电平,以便与通用数字系统的逻辑电平相容。机械式按键在按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。其抖动过程如图2.6所示,抖动时间的长短与开关的机械特性有关,一般为5,10ms。在触点抖动期间检测按键的通与断状态,可能导致判断出错。即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动键按下 所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予以考虑。在键数较少时,可采用硬件去抖,而当按键数较多时,采用软件去抖。在检测到有按键按下时,执行一个10ms,20ms左右的延时程序后,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态;同理,在检测到该键释放后,也应采用相同的步骤进行确认,从而可消除抖动的影响。[12] 后沿抖动前沿抖动 闭合 稳定 图2.6 键盘抖动过程 表2.3. 键盘的连线方式 单片机连接管脚 按键号码 P1.0P1.3为行线 P1.3 1 2 3 A P1.2 4 5 6 B P1.1 7 8 9 C P1.0 * 0 # D P1.4 P1.5 P1.6 P1.7 P1.4—P1.7为列线 10 河南城建学院本科毕业设计(论文) 第2章系统总体方案设计 考虑到本次设计功能的要求以及软件编程和硬件电路连接,在本次设计所采用的是矩阵键盘,用4条I/O线作为行线,4条I/O线作为列线组的键盘,采用软件延时的办法来消除机械抖动。在行线和列线的每一个交叉点上,设置一个按键,键盘中按键的个数是4*4个=16个。这种行列式键盘结构能够有效地提高单片机系 口的利用率。 统中I/O 矩阵键盘和单片机管脚连接(表2.3.)和电路图(图2.7) P1.4--P1.7为行线,P1.0--P1.3为列线.[8] 图2..7 4*4矩阵键盘 2.3.5 显示电路的设计 显示器是最常用的输出设备,其种类繁多,但在单片机系统设计中最常用的是发光二极管显示器(LED)和液晶显示器(LCD)两种。由于这两种显示器结构简单,价格便宜,接口容易实现,因而得到了广泛的应用。发光二极管LED,组成的显示屏,每个点都是一个或多个发光二极管,通过控制电路控制二极管的亮与灭来控制点的发光,从而使整个大屏幕显示图案。 液晶显示器LCD1602,所谓1602是指显示的内容为16*2,即可以显示两行,每行16个字符。最常见的就是TFT类型的,它是由光源,液晶光栅,和控制芯片组成,他的光源是常亮的白色强光,当光线通过液晶光栅(液晶屏)的时候,通过电压改变液晶颗粒滤光方向,从而改变每个点的颜色和强度来显示图案。[6] 液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式 11 河南城建学院本科毕业设计(论文) 第2章系统总体方案设计 电脑、数字摄像机、PDA移动通信工具等众多领域。 液晶显示器分很多种类,按显示方式可分为段式,行点阵式和全点阵式。段式与数码管类似,行点阵式一般是英文字符,全点阵式可显示任何信息, 如汉字、图形、图表等。 两者之间的区别: (1)二极管本身发光, 液晶本身不发光,只是透射光。 (2)二极管体积大,图像质量一般,适合作室外大屏幕,价格较低。液晶成本较高,面积无法做得很大,但图像质量很好,适合做显示器。 (3)二极管耗电大,液晶耗电小。 (4)二极管图像刷新率低,液晶的高 。 二者的档次相差比较大,一般来讲在一些图像简单,对成本控制较严格的场合,用二极管,比如商场、银行等服务部门的电子提示窗,街道、百货公司外面的广告宣传窗;而液晶一般都是作计算机显示器、电视、手持设备等对图像质量要求高的场合,在本次计设中综合考虑各方面的因素,我选定1602作为显示电路。1602管脚的具体功能如表2.4。. 1602液晶的主要参数: 显示容量:16×2个字符 芯片工作电压:4.5,5.5V 工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V 1602的管脚示意图: 图2.8 1602管脚 12 河南城建学院本科毕业设计(论文) 第2章系统总体方案设计 图 2.9 1602实物图 1602一个很重要的端口VEE,为液晶显示器对比度调整端,接正电源时对比 度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一 个1K欧的电位器调整其显示的对比度。[11] 表2.4 1602液晶管脚主要功能 引脚 符号 功能说明 1 VSS 一般接地 2 VDD 接电源(+5V) 3 VEE 液晶显示器对比度调整端,接电源正极时对比度最弱,接地电 源时对比度最高 4 RS RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选 择指令寄存器 5 R/W R/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进 行写操作 6 E E(或EN)端为使能(enable)端,下降沿使能 7 DB0 低4位三态、 双向数据总线 0位(最低位) 8 DB1 低4位三态、 双向数据总线 1位 9 DB2 低4位三态、 双向数据总线 2位 10 DB3 低4位三态、 双向数据总线 3位 11 DB4 高4位三态、 双向数据总线 4位 12 DB5 高4位三态、 双向数据总线 5位 13 DB6 高4位三态、 双向数据总线 6位 14 DB7 高4位三态、 双向数据总线 7位(最高位)(也是busy flag) 15 BLA 背光电源正极 16 BLK 背光电源负极 13 河南城建学院本科毕业设计(论文) 第2章系统总体方案设计 在本次设计中采用了1602来作为显示元件,用液晶构成显示电路不仅扩大显示的范围,而且减少显示电路对单片机I/O端口的占用,同时减少单片机连线。单片机具体的连线方式:P0口作为数据输出口,RP1为P0口的上拉电阻,以提高其驱动力。P2口的P2.5、P2.6、P2.7作为1602液晶的控制口(LCD_RS连接P2.5; 可调电阻器用来LCD_RW连接P2.6; LCD_EN连接P2.7)。VEE连接1个精密1千欧 调节液晶显示器的亮度。详细的电路图(图2.10)。 图2.10 LCD显示电路 2.3.6 报警电路 蜂鸣器有两类3大品种。一类是压电式,一类是电磁式,电磁式又有两大品种,铁振膜式和动圈式,二者原理一样只是结构不同。所有蜂鸣器都有两种类型:纯蜂鸣器和带驱动的蜂鸣器,蜂鸣器都是用音频信号驱动的,都是交流驱动。报警器的种类很多,比如:扬声器,蜂鸣器等,电磁式蜂鸣器由振荡器、电磁线圈、磁铁、震动膜片以及外壳等组成。接通电源后,振荡器产生的音频信号通过电磁线圈,使得电磁线圈产生了一个磁场。本次设计采用的是压电式蜂鸣器作为报警器(图2.11)。蜂鸣器的一端接P2.1口,另一端接电源,当P2.1为低电平时,蜂鸣器报警,当P2.1为高电平时,蜂鸣器不作出反应[4] 图2.11 报警电路 14 河南城建学院本科毕业设计(论文) 第2章系统总体方案设计 2.3.7 开锁电路 在本次设计中,基于节省 材料 关于××同志的政审材料调查表环保先进个人材料国家普通话测试材料农民专业合作社注销四查四问剖析材料 、主次分明的原则,暂时用发光二极管代替电磁锁,发光管亮,表示开锁;灭,表示没有开锁。电路图如2.12所示。当P2.0口输出低电平时,二极管D1导通发光,表示开锁;当二极管输出高电平时,二极管不能导通也就是说二极管不发光,表示上锁。[1] 图2..12 开锁电路 15 河南城建学院本科毕业设计(论文) 第3章软件设计 第3章 软件设计 3.1 编程工具介绍 Kiel C51是美国Kiel Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,比较方便.Kiel C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势keil软件常与proteus仿真软件相配合使用单片机开发中除必要的硬件外,同样离不开软件。 图3.1 编程软件工作界面 我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发 单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了 16 河南城建学院本科毕业设计(论文) 第3章软件设计 包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的最好的选择之一,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调其试工具也会令你事半功倍。其工作界面如上图所示。 3.2 编程语言介绍 汇编语言的实质和机器语言是相同的,都是其直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序通常由三部分组成:指令、伪指令和宏指令。 汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。高级语言主要是相对于汇编语言,而相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行。 C语言是一种高级语言。C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。 C语言特点 (1)简洁紧凑、灵活方便 C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。 17 河南城建学院本科毕业设计(论文) 第3章软件设计 把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。 (2)运算符丰富 C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。 (3)数据类型丰富 C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。[10] 3.3 软件编程 3.3.1软件设计原则 所设计的软件不仅要满足密码锁:插上电源后,程序自动调入初始密码,此时依次输入 所000000,然后按[#](确认)键,此时锁会打开,可以看到显示open,密码锁打开;按下[*](取消)键,此时锁关闭,所有输入清除,在开锁状态下,再次输入正确的密码并按下[#](确认)键,此时听到两声提示,输入新的六位密码并按[D](重设)键,再重复输入一次新密码并按[D],会听到两声提示音,表示重设密码成功,内部保存新密码并存储到AT24C02;(如两次输入的新密码不一样,则重设密码失败)。当输入密码错误后,报警并锁定键盘3秒,如3秒内又有按键,3秒再启动;当重置新密码时,新密码会保存于AT24C02存储器里。而且 要使程序最简化,通俗易懂。 3.3.2 软件设计方案 本次设计中的软件部分设计采用模块化程序设计,分块逐个实现在本次设计中,在对每个单独进行程序修改时不影响全局,同时降低编程的工作量和调试的难度,主程序包括显示初始化预定义、主程序、4*4矩阵键盘扫描程序、1602显示子程序等组成。主程序流程图(图3.2) 18 河南城建学院本科毕业设计(论文) 第3章软件设计 开始 程序 LCD液晶初始化 LCD显示初始化 读24C02密码密码设定值 值 键盘扫描 键盘上被 选择的值 小于六 输入密码大于六位 位无效 六位 清零 屏幕显示全为* 密码验证 密码重置 图3.2 主程序流程图 3.3.3 4*4矩阵键盘的编程方法 (1)先读取键盘的状态,得到按键的特征编码。P1口高四位输入高电平,低四位输入低电平。当有按键按下时,可以从P1口的高四位读取端口低电平状态来 确定列数;在确定有按键按下后, P1口的高四位输入高电平,低四位输入3个高电平和1个电平,通过编程使3高1低在低四位端口中循环,当P1口的高四位中出现低电平时就可以确定行数。将行说和列数组合起来就可以得到当前按键的特征编码。使用上述方法我们得到16个键的特征编码。 (2)根据按键的特征编码,查表得到按键的编码。将用上述方法得到的16个 19 河南城建学院本科毕业设计(论文) 第3章软件设计 按键的特征编码按表3.1排列的顺序排成一张特征编码与顺序编码的对应关系表,然后用当前读得的特征编码来查表,当表中有该特征编码时,它所在的位置就是对应的顺序编码。 (3)根据矩阵键盘键值查找相对应程序的具体编程。 键盘扫描程序的主要功能有: 1)识别键盘有无按键按下,若无键按下返回 2)如果有键按下,找出具体的按键值(特征编码)。 表3.1 按键号和特征编码对应 按键号 特征编按键号 特征编按键特征编码 按键号 特征编 码 码 号 码 1 0x18 5 0x24 9 0x42 # 0x41 2 0x28 6 0x44 0 0x21 * 0x11 3 0x48 7 0x12 C 0x82 4 0x14 A 0x88 B 0x84 D 0x81 8 0x22 程序段如下 //=====================按键检测并返回按键值================== unsigned char keynum(void) { unsigned char row,col,i; P1=0xf0; if((P1&0xf0)!=0xf0) { Delay5Ms(); Delay5Ms(); if((P1&0xf0)!=0xf0) { row=P1^0xf0; //确定行线 i=0; P1=a[i]; //精确定位 while(i<4) { if((P1&0xf0)!=0xf0) { col=~(P1&0xff); //确定列线 break; //已定位后提前退出 } else { i++; P1=a[i]; 20 河南城建学院本科毕业设计(论文) 第3章软件设计 } } } else { return 0; } while((P1&0xf0)!=0xf0); return (row|col); //行线与列线组合后返回 } else return 0; //无键按下时返回0 } 3.3.4液晶显示子程序 1602液晶模块内部的字符发生存储器(CGROM)存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如‘A’。 在本次设计中P2口作为数据口,P0口作为控制端口,具体定义如下。 1602液晶控制端口的定义 //=======================================LCD1602====================== ============================== //============================================================= #define yi 0x80 //LCD第一行的初始位置 ,因为LCD1602字符地址首位D7恒定为1(100000000=80) #define er 0x80+0x40 //LCD第二行初始位置(因为第二行第一个字符位置地址是0x40) //----------------延时函数,后面经常调用---------------------- void delay(uint xms)//延时函数,有参函数 { uint x,y; for(x=xms;x>0;x--) for(y=110;y>0;y--); } //--------------------------写指令--------------------------- write_1602com(uchar com); //****液晶写入指令函数**** { lcd1602_rs=0; //数据/指令选择置为指令 lcd1602_rw=0; //读写选择置为写 21 河南城建学院本科毕业设计(论文) 第3章软件设计 P0=com; //送入数据 delay(1); lcd1602_en=1; //拉高使能端,为制造有效的下降沿做准备 delay(1); lcd1602_en=0; //en由高变低,产生下降沿,液晶执行命令 } //-------------------------写数据----------------------------- write_1602dat(uchar dat) //***液晶写入数据函数**** { lcd1602_rs=1; //数据/指令选择置为数据 lcd1602_rw=0; //读写选择置为写 P0=dat //送入数据 delay(1); //en置高电平,为制造下降沿做准备 lcd1602_en=1; delay(1); lcd1602_en=0; //en由高变低,产生下降沿,液晶执行命令 } //-------------------------初始化------------------------- void lcd_init(void) { write_1602com(0x38); //设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据 write_1602com(0x0c); //开显示不显示光标 write_1602com(0x06); // 整屏不移动,光标自动右移 write_1602com(0x01); //清显示 }//=========================================================== 3.3.5 密码比较和报警程序 密码比较和报警程序也是本次设计的重点,下图(图3.3)是此程序的详细设计流程图。 开始 比较第一位 清除显示 比较下一位 记录错误次数 六位比较完, 三次报警则锁定键盘 正确开锁 清零 图3.3 密码比较和报警程序设计 22 河南城建学院本科毕业设计(论文) 第3章软件设计 密码比较和报警程序如下 switch(NUM) { case ('A'): ; break; case ('B'): ; break; case ('C'): ; break; case ('D'): ResetPassword();break; //重新设置密码 case ('*'): Cancel(); break; //取消当前输入 case ('#'): Ensure(); break; //确认键, default: { DisplayListChar(0,1,Input); write_1602com(er); for(i=0;i<16;i++) { write_1602dat(Input[i]); } operation=0; if(N<6) //当输入的密码少于6位时,接受输入并保存,大于6位时则无效。 { OneAlam(); //按键提示音 //DisplayOneChar(6+N,1,'*'); for(j=0;j<=N;j++) { write_1602com(er+6+j); write_1602dat('*'); } InputData[N]=NUM; N++; } else //输入数据位数大于6后,忽略输入 { N=6; 3.3.6 密码重置程序设计 在开锁状态下,再次输入正确的密码并按下[#](确认)键,此时听到两声提示,输入新的六位密码并按[D](重设)键,再重复输入一次新密码并按[D],会听到两声提示音,表示重设密码成功,内部保存新密码并存储到AT24C02。(如两次输入的新密码不一样,则重设密码失败)。 23 河南城建学院本科毕业设计(论文) 第3章软件设计 其程序如下 //==========================确认键,并通过相应标志位执行相应功能 =============================== void Ensure(void) { unsigned char i,j; RdFromROM(CurrentPassword,0,6); //从24C02里读出存储密码 if(N==6) { if(ReInputEn==0) //重置密码功能未开启 { for(i=0;i<6;) { if(CurrentPassword[i]==InputData[i]) { i++; } else { ErrorCont++; if(ErrorCont==3)//错误输入计数达三次时,报警并锁定键盘 { write_1602com(er); for(i=0;i<16;i++) { write_1602dat(Error[i]); } do Alam_KeyUnable(); while(1); } else { TR0=1; //开启定时 key_disable=1; //锁定键盘 pass=0; break; } } } if(i==6) { CorrectCont++; 24 河南城建学院本科毕业设计(论文) 第3章软件设计 if(CorrectCont==1) //正确输入计数,当只有一次正确输入时,开锁, { //DisplayListChar(0,1,LockOpen); write_1602com(er); for(j=0;j<16;j++) { write_1602dat(LockOpen[j]); } TwoAlam(); //操作成功提示音 KEY=0; //开锁 pass=1; //置正确标志位 TR0=1; //开启定时 open_led=0; //开锁指示灯亮 for(j=0;j<6;j++) //将输入清除 { InputData[i]=0; } } else //当两次正确输入时,开启重置密码功能 { //DisplayListChar(0,1,SetNew); write_1602com(er); for(j=0;j<16;j++) { write_1602dat(SetNew[j]); } TwoAlam(); //操作成功提示 ReInputEn=1; //允许重置密码输入 CorrectCont=0; //正确计数器清零 } 25 河南城建学院本科毕业设计(论文) 第4章软件仿真及调试 第4章 软件仿真以及调试 4.1 仿真软件简介 Proteus软件是来自英国Labcenter electronics公司的EDA工具软件,Proteus软件有近20年的历史,在全球广泛使用,除了其具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,Proteus能够很容易的为用户建立了完备的电子设计开发环境。 Proteus 产品系列也包含了革命性的VSM技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。不愧为一款非常优秀的单片机仿真软件。 Proteus组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统。此系统受益于15年来的持续开发,被《电子世界》在其对PCB设计系统的比较文章中评为最好产品—“The Route to PCB CAD”。 Proteus 产品系列也包含了我们革命性的VSM技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。 其功能模块:是—个易用而又功能强大的ISIS原理布图工具;PROSPICE混合模型SPICE仿真; ARES PCB设计。 PROSPICE 仿真器的一个扩展PROTEUS VSM:便于包括所有相关的器件的基于微处理器设计的协同仿真。此外,还可以结合微控制器软件使用动态的键盘,开关,按钮,LED甚至LCD显示CPU模型。 Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。[6] 26 河南城建学院本科毕业设计(论文) 第4章软件仿真及调试 4.2 仿真程序基本工作界面 Proteus的基本界面如下图(图4.1)所示:可分为菜单栏,工具栏及快捷栏,元件选择区,图形仿真区。 图4.1 proteus的操作界面 4.3 仿真过程 1) 建立,保存设计文件并设置图纸的大小。 2) 单击菜单中“FILE-NEW DESIGN”.会弹出新建设计(CREATTE NEW DESIGN)对话框,选择默认模块(DEFAULT)就可以建立一个新的空白文件了。这里默认的图纸大小是A4。 3) 选取并放置元器件和电源,地终端。 单击选择元件按钮,再单击“P”按钮,则会跳出元器件选择框。 可在元器件列表中选择自己需要的原件。这个设计所需要的51单片机,LED显示器,蜂鸣器,键盘,晶振,电容等器件。 4) 设置元器件属性,这里主要是设置电容的数值大小。 5) 连接电路,根据电路的设计,连接好电路然后进行电气检测。 6) 向Proteus添加源程序文件。 单击ISIS菜单中的Source选项,弹出下拉菜单,再单击Add/Remove Source File(添加/删除源程序)选项,这时会弹出一个对话框,单击“Code Generation Tool”(目标生成工具)下方的按钮弹出下拉菜单,选择代码生成工具“ASEM51”(51系列机器兼容系列汇编器)。再单击“NEW”按钮,在弹出的对话框的文件名 27 河南城建学院本科毕业设计(论文) 第4章软件仿真及调试 框中写入源程序文件名,例如定位MIME.ASM.单击”按钮,再接着在弹出的对话框中单击“是”按钮,然后在弹出的提示框中单击“OK”按钮,新建的源程序文件就添加到“Source Code Filename”下拉方框中。同时在菜单Source中也出现了源程序文件MIMA.ASM。这时这个文件还是空文件。 7) 编写、编辑源程序。 单击菜单中的Source选项,单击菜单中的“MIMA.ASM”则会弹出文件名为MIMA的记事本,可在其中按照我们的目标及流程图编写源程序。 8) 汇编生成目标代码文件。 单击Source菜单中的Build all。则可对源程序进行汇编。若编译无误则生成目标代码文件MIMA。HEX.若出错可根据提示找出原因直到编译成功。 9) 加载目标代码文件。 在ISIS编辑区中双击AT89C51单片机,把MIMA.HEX文件放入Program File这一栏中,再单击“OK”就完成了目标代码的加载,这一步在实际中相当于单片机的程序烧写。装载界面见图4.2. 10) 仿真。 单击仿真按钮中的按键,启动仿真,可以实时操作密码锁,观察是否达到了设计要求,依次按下0、0、0、0、0、0,密码输入界面为图4.3。仿真结果如图4.4和图4.5。[8] 图4.2 装载hex文件界面 28 河南城建学院本科毕业设计(论文) 第4章软件仿真及调试 图4.3 密码输入界面 图4.4 密码输入正确显示器显示 图4.5 开锁电路指示 仿真结果与理论设想相吻合,说明本设计达到了预期目的。 29 河南城建学院本科毕业设计(论文) 总结 总结 本设计从经济实用的角度出发,核心采用美国Atmel公司的单片机AT89C51,结合4*4的键盘输入与1602字符型液晶来完成这次设计。这次毕业设计实现了密码位数显示、报警、设定新密码等功能,基本达到了预期的效果,实现毕业设计中所要求的功能。在这次毕业设计初期,我查阅大量和相关单片机的书籍,在互联网上收集了有关单片机构成的密码锁的论文,来确定自己的硬件电路设计和软件编程的方法。在参考别人经典的设计方法和仿真过程后,我选定了Keil uVision4和Proteus作为我这次毕业设计的编程软件和仿真软件。考虑到单片机汇编语言和高级语言各自的优缺点和自己编程能力,我最终选定了C语言做为单片机的编程语言,这为我在后期程序的修改带来极大的方便。在显示电路上我用LCD1602液晶代替LED数码管来实现显示的功能,这不仅显示更加清晰明了,而起最多能同时显示32个数据,同时还减少电路的连线。这次毕业设计达到预期的效果,但还有些地方需要改进,一:密码设定的位数少,现在只能设定六位。二:LCD1602字符型液晶不具有汉字显示的功能,应该用功能更强的LCD来作为显示电路。 经过不断的奋战与努力,我最终完成了本次毕业设计.所设计的电子密码锁的各项指标,均达到了设计要求,所以本次设计是成功的。 30 河南城建学院本科毕业设计(论文) 参考文献 参考文献 [1] 潘松,王国栋(VHDL实用教程[M](电子科技大学出版社(2001 [2] 李中发(数字电子计时第一版(中国水利水电出版社(2001 [3] 章忠全(电子技术基础实验与课程设计第一版( 中国电力出版社. 1997 [4] 康华光(电子技术基础(数字部分)(高等教育出版社. 2000 [5] 余孟尝(数字电子技术基础简明教程 第二版 北京:高等教育出版社,1999 [6] 何金茂(电子技术基础实验( 第二版 北京:高等教育出版社. [7] 电子及电子技术试验2003. 第一版 [8] 张文涛(PROTEUS仿真软件应用( 华中科技大学出版社( [9] 赵文博,刘文涛(单片机语言C51程序设计人民邮电出版社. 2005.10 [10] 杜树春(单片机C语言和汇编语言混合编程实例详解( 北京航空航天大学出版社. 2006.07 [11] Su Kai,Liu Qing-guo, Chen Guo-ping. Principle and design of MCS-51 Single-chip microprocessor.Metallurgical Industry Press,. 2003. [12] Keil Software. Cx51 Complier User‘s Guide. Keil Software. 2001 [13] Keil Software. Macro Assembler and Utilities User‘s Guide. Keil Software. 2001 31 河南城建学院本科毕业设计(论文) 致谢 致谢 本论文是在导师张洛花老师的亲切关怀和悉心指导下完成的。在过去的两年中,导师张洛花老师渊博的学识、严谨求实的科研态度、以及对于学科前沿动态的洞察力无不使我受益匪浅;更重要的是,导师以育人为本,从思维方式、处世态度等多方面对我进行启发引导,不断培养我的综合素质,这将使我终身受益。值此论文完成之际,我谨向导师张洛花老师致以最诚挚的谢意! 实验室张洛花老师在本课题研究中给予了很多理论指导,华鸿清同学对于设计的仿真倾注了大量的心血,使本人受益匪浅,在此对老师以及同学的关爱和帮助表示深深的感谢!最后我还要特别感谢我的父母在我成长过程中给予我的无微不至的关爱,感谢他们在我求学过程中给予我的精神鼓励及物质支持,使我在面对生活及学习中的困难时毫不畏惧。 在完成本论文期间,我还得到了很多老师、同学的帮助,因此我还要感谢所有在本论文写作期间给予过我帮助和支持的老师和同学。 32 河南城建学院本科毕业设计(论文) 附录A:程序主函数 附录A:程序主函数 ============================主函数========================== void main(void) { unsigned char KEY,NUM; unsigned char i,j; P1=0xFF; TMOD=0x11; TL0=0xB0; TH0=0x3C; EA=1; ET0=1; TR0=0; Delay400Ms(); //启动等待,等LCM讲入工作状态 lcd_init(); //LCD初始化 write_1602com(yi);//液晶显示固定符号从第一行第0个位置之后开始显示 for(i=0;i<16;i++) { write_1602dat(name[i]);//向液晶屏写数据显示的固定符号部分 } write_1602com(er);//时间显示固定符号写入位置,从第2个位置后开始显示 for(i=0;i<16;i++) { write_1602dat(start_line[i]);//写显示固定符号,两个冒号 } 设置光标位置 write_1602com(er+9); // write_1602com(0x0f); //设置光标为闪烁 Delay5Ms(); //延时片刻(可不要) // DisplayListChar(0, 0, name); // DisplayListChar(0, 1, start_line); N=0; //初始化数据输入位数 while(1) { if(key_disable==1) Alam_KeyUnable(); else ALAM=1; //关报警 KEY=keynum(); if(KEY!=0) { 33 河南城建学院本科毕业设计(论文) 附录A:程序主函数 if(key_disable==1) { second=0; } else { NUM=coding(KEY); { switch(NUM) { case ('A'): ; break; case ('B'): ; break; case ('C'): ; break; case ('D'): ResetPassword();break; //重新设置密码 case ('*'): Cancel(); break; //取消当前输入 case ('#'): Ensure(); break; //确认键, default: { //DisplayListChar(0,1,Input); write_1602com(er); for(i=0;i<16;i++) { write_1602dat(Input[i]); } operation=0; if(N<6) //当输入的密码少于6位时,接受输入并保存,大于6位时则无效。 { OneAlam(); //按键提示音 //DisplayOneChar(6+N,1,'*'); for(j=0;j<=N;j++) { write_1602com(er+6+j); write_1602dat('*'); } InputData[N]=NUM; N++; } else //输入数据位数大于6后,忽略输入 { N=6; break; } } 34 河南城建学院本科毕业设计(论文) 附录A:程序主函数 } } } } } } 35 河南城建学院本科毕业设计(论文) 附录B:总电路图 附录B:总电路图 36
本文档为【毕业论文 基于单片机的密码锁设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_281650
暂无简介~
格式:doc
大小:277KB
软件:Word
页数:0
分类:互联网
上传时间:2017-09-27
浏览量:34