基于密码锁的单片机实验报告_第1页
基于密码锁的单片机实验报告_第2页
基于密码锁的单片机实验报告_第3页
基于密码锁的单片机实验报告_第4页
基于密码锁的单片机实验报告_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、编号: 单片机课程设计与制作报告题 目: 基于单片机的电子密码设计 院 (系): 电子信息与自动化学院 专 业: 自动化 学生姓名: 学 号: 201309011 指导教师单位: 电子信息与自动化学院 指导教师: 题目类型: 理论研究 实验研究 工程设计 工程技术研究 软件开发 2015年 12月 日 摘 要随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,安全性能低,无法满足人们的需要。针对这些锁具给人们带来的不便若使用机械式钥匙开锁,为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。本系统由单片机系统、矩阵键盘、LCD显示

2、和报警系统组成,控制系统以STC89C52为控制核心,通过读取矩阵键盘输入的密码与设定的密码做比较,在LCD中显示密码输入是否正确,若输入三次密码错误就报警,若输入正确就点亮led灯,解锁成功后用户可以重置密码,还有声光提示等功能,依据实际的情况还可以添加其他功能。本系统成本低廉,功能实用。关键词 :单片机 ;密码锁; 课程设计;报警 Abstract With improvement of people's living standards, how to realize the security of the family is especially prominent, trad

3、itional mechanical lock because its structure simple, low safety performance, is unable to meet the people's needs. For these locks to bring inconvenience if using mechanical key lock, in order to meet the requirements of people on the use of locks, increase the safety, replace the key with a pa

4、ssword lock came into being. This system consists of SCM system, matrix keyboard, LCD display and alarm system and control system based on STC89C52 as control core, through the reading of matrix keyboard input password and set the password do comparison, in the LCD display to enter the password is c

5、orrect, if you enter the wrong password three times to false alarm, if the input is correct is led lights lit, unlock success after users can reset the password, and Sound and light tips and other functions, according to the actual situation can also add other features. The system is low cost, funct

6、ional and practical.Key words: microcontroller; password lock; curriculum design; alarm 目录1 绪论- 3 -1.1课题背景和意义- 3 -1.2电子密码锁的现状及发展趋势 - 3 -1.3 设计内容- 5 -2 电子密码锁系统- 5 -2.1 系统设计任务与设计要求- 5 -2.1.1 系统设计任务- 5 -2.1.2 系统设计要求- 5 -2.2 主控部分的选择- 5 -2.3 密码输入方法的选择- 6 -2.4 系统总体设计方案- 7 -3 硬件电路设计- 7 -3.1 主要元器件简介- 7

7、 -3.1.1 主控芯片 单片机STC89C52- 7 -3.1.2 显示器件 LCD1602液晶显示器- 9 -3.2 硬件系统电路- 11 -3.2.1 电源电路- 11 -3.2.2 晶振电路- 11 -3.2.3 复位电路- 11 -3.2.4 矩阵键盘电路- 12 -3.2.5 1602LCD显示电路- 13 -3.2.6 光、声指示电路- 14 -4 系统软件设计- 14 -4.1 软件调试平台- 14 -4.2 软件开发- 15 -5 系统测试- 16 -5.1硬件测试- 16 -5.2 软件调试- 17 -6、总结- 17 -参考文献- 18 -附件一:- 19 -附件二:-

8、21 -1 绪论1.1课题背景和意义  在当今社会,安全防盗已成为社会问题,而锁自古以来就是防盗的重要工具,目前国内大部分人使用的还是传统的机械锁,然而,眼下假冒伪劣的机械锁互开率非常之高,此外,即使是一把质量过关的机械锁,通过急开锁,甚至可以在不损坏锁的前提下将锁打开。机械锁的这些弊端为一种新型的锁电子密码锁,提供了很大的发展空间。  本文从经济实用的角度出发,设计采用ATC89C52单片机为主控芯片,结合外围电路,组成电子密码控制系统,密码锁初始密码为6位密码,每位的取值范围为09,用户可以自行设定和修改密码,每个密码按键都有声提示。用户想要打开锁,必先通过提

9、供的键盘输入正确的密码才可以,密码输入错误有提示,为了提高安全性,当密码输入错误三次将报警,六位密码同时输入正确,锁才能打开。其特点如下:  (1) 保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。  (2) 密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。  (3) 误码输入保护,当输入密码3次错误时,报警系统自动启动。  (4) 无活动零件,不会磨损,寿命长。  (5) 使用灵活性好,不像机械锁必须佩带钥匙才能开锁。 (6) &

10、#160;电子密码锁操作简单易行,一学即会。1.2电子密码锁的现状及发展趋势  在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。在安全技术防范领域,随着单片机的问世,出现了带微处理器的密码锁,它除具有电子密码锁的功能外,还引入了智能化、科技化等功能,从而使密码锁具有很高的安全性、可靠性。  最早的锁,是主人为防他人开启而设的简单的机关,应用于门上最简单的锁就是门栓了。我国古代有石锁,

11、并无钥匙,是以绳索或铁链束缚。商周时期出现了用钥匙才能开启的铜锁,铁锁,以钥匙的不同而匹配不同的锁。 随着科学技术的迅猛发展,机械锁也有了长足的发展。现代机械锁具已有了一百多年的历史,锁芯里加入了长短不一的弹子,要外线用相应齿形的钥匙来打开。以后,又发展到了密码锁、磁性锁、电子锁、激光锁、声控锁等等。在传统钥匙的基础上,加了一组或多组密码,不同声音,不同磁场,不同声波,不同光束光波,不同图像。如指纹、眼底视网膜等)来控制锁的开启。我国锁的发展已绵延了数千年,中国锁具的发展,大体经历了初创期,发展期和繁荣期三个阶段。初创期为新石器时代到夏商时期。在我国母系社会后期(相当于公元前5000

12、年-公元前2000年),因为当时社会生产力的提高,人类开始拥有个人的私有(少量)财产。后来,随着私有制的发展,私人财富越来越多,为了保护财产和生命 的安全,人类开始了对锁具的探索。在最初,人类只是简单地把个人贵重财物用兽皮包起来外面用绳索牢牢捆缚,最后在开启处,打上特殊的紧紧捆死的绳结,只能用一个叫“错”的工具才能挑开。错,又叫“肖”、“起子”。它用兽牙或兽骨制成,形状像把镰刀状的钩子,实际上绳结就是最早的锁具,“肖”就是最早的钥匙,这就是我国锁具的雏形,一直从商代沿用到汉代。到了距今5000年的仰韶文化时期,我们先民创造了装在木结构框架建筑上的木锁。这是世界上迄今为止最古老的锁具,可称得上是

13、“世界第一锁”。这种木锁一直在民间传承。发展期为春秋战国经秦汉、魏晋、南北朝,直到隋唐宋元时期。春秋时期进入铁器时代,考古证明,在这一时期人们大量的是使用铁锁、铜锁,还有银锁、鎏金锁等,其中有代表性的如西周的青铜锁、东汉的金属锁、唐代的虾尾银锁和宋代的方身锁等,都具有相当高的技术水平。繁荣期为明清时期特别是汉代的铁制三簧锁,在我国前后沿用了1000多年。各种材质的锁具同步发展,以铜锁、铁锁居多,工艺更加精巧,在开锁难度和外形制造上有很大的创新。  现代锁具,它的机械化生产,摆脱了过去我们用手工操作的束缚。它不仅是能批量生产,满足人民生活的需要;同时,也充分运用了现代科学,创造了磁控锁

14、、声控锁、遥控锁、远红外线锁、电子卡片锁、指纹锁、超声波锁、电磁波锁等绝妙精品,大大提高了防窃、防盗功能。 从目前的技术水平和市场认可程度看,使用最为广泛的是键盘式电子密码锁,该产品主要应用于保险箱、保险柜和取款机,由于人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。而且指纹识识别器在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等缺点,再加上其成本较高,一定程度上限制了这类产品的普及和推广。鉴于目前的技术水平与市场的接受程度,键盘式电子密码锁是这类电子防盗

15、产品的主流。在科学技术不断发展的今天,电子密码防盗锁作为防盗卫士的作用也日趋重要。电子密码锁是集计算机技术、电子技术、数字密码技术为一体的机电一体化高科技产品,具有安全性高,使用方便等优点。1.3 设计内容 (1)矩阵键盘输入模块及矩阵扫描程序。  (2)声音模块。 (3)1602LCD显示模块及程序。  (4)单片机最小系统。2 电子密码锁系统2.1 系统设计任务与设计要求2.1.1 系统设计任务(1) 熟悉51单片机集成开发环境,运用C语言编写工程文件;(2)熟练应用所选用单片机的内部结构、资源,以及软硬件调试设备的基本方法;(3)自行构建基于单片机的最小系统,完成相关

16、硬件电路的设计实现;(4)了解LCD1602显示、矩阵键盘扫描的原理和实现方法。2.1.2 系统设计要求 (1)完成单片机最小系统设计; (2)完成外围应用电路(包括系统供电单元、4x4矩阵键盘单元、LCD显示单元)的设计和实现; (3)完成软件对硬件检测和调试工作; (4)查阅国内外的研究动态和发展前沿信息,阅读相关外文文献。2.2 主控部分的选择方案一:采用数字电路控制,用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输

17、入密码的时间超过10秒(一般情况下,用户不会超过10秒,若用户觉得不便,还可以修改)电路将报警20秒,若电路连续报警三次,电路将锁定键盘2分钟,防止他人的非法操作。采用数字电路设计的方案好处就是设计简单但控制的准确性和灵活性差。故不采用。方案二:采用以单片机为核心的控制方案,由于单片机种类繁多,各种型号都有其一定的应用环境,因此在选用时要多加比较,合理选择,以期获得最佳的性价比。一般来说在选取单片机时从下面几个方面考虑:性能、存储器、运行速度、I/O口、定时/计数器、串行接口、模拟电路功能、工作电压、功耗、封装形式、抗干扰性、保密性,除了以上的一些的还有一些最基本的比如:中断源的数量和优先级、

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

19、密码,当三次密码错误则发出报警;当用户需要修改密码时,先按下键盘设置键后可以设置新密码。新密码输入无误后按确认键使新密码将得到存储,密码修改成功。 可以看出方案二控制灵活准确性好且保密性强还具有扩展功能,根据现实生活的需要此次设计采用此方案。2.3 密码输入方法的选择方案一:采用指纹输入识别 ,指纹识别技术主要涉及四个功能:读取指纹图像、提取特征、保存数据和比对。通过指纹读取设备读取到人体指纹的图像,然后要对原始图像进行初步的处理,使之更清晰,再通过指纹辨识软件建立指纹的特征数据。软件从指纹上找到被称为“节点”(minutiae)的数据点,即指纹纹路的分叉、终止或打圈处的坐标位置,这

20、些点同时具有七种以上的唯一性特征。通常手指上平均具有70个节点,所以这种方法会产生大约490个数据。这些数据,通常称为模板。通过计算机模糊比较的方法,把两个指纹的模板进行比较,计算出它们的相似程度,最终得到两个指纹的匹配结果,从而判断输入结果的正确与否。考虑到本方案软硬件太过复杂,而且成本也高,故不采用。 方案二:采用矩阵键盘输入识别 ,由各按键组成的矩阵键盘每条行线和列线都对应一条I/O口线,键位设在行线和列线的交叉点,当一个键按下就会有某一条行线与某一条列线接触,只要确定接触的是哪两条线,即哪两个I/O口线,就可以确定哪一个键被触动。行线设计成上拉口线,初始时被置高电位

21、,列线悬空,初始置低。通过不断读行线口线,或者中断方式触发键位扫描。当发现有键按下,将列线逐一置低,其他列线置高,读行线口线。当某条列线置低时,某条行线也被拉低,则确定这两条线的交点处的按钮被按下。每个按键都可通过程序赋予功能,从而完成密码识别本方案简单易行,故采用。2.4 系统总体设计方案本设计采用STC89C52单片机为主控芯片,结合外围电路矩阵键盘、液晶显示器LCD1602等部分组成。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报

22、警电路控制开锁还是报警,组成的电子密码锁系统,能够实现: 1 完全正确输入密码的前提下,有开锁提示。 2 错误输入3次密码情况下,蜂鸣器报警。3每次有按键按下有提示音。4. 密码每输入一个数在LCD1602上显示一个“*”,重置密码时可以显示输入的密码值。5. 密码输入成功后,LCD1602上有显示,并且对应的led灯被点亮。6在成功解锁后用户可以自行修改密码。系统整体设计框图如图2-1所示:STC89C52键盘输入复位电路晶振电路显示电路报警电路开锁电路 图2-1 系统整体设计框图3 硬件电路设计3.1 主要元器件简介3.1.1 主控芯片 单片机STC

23、89C521、宏基公司生产的STC89系列单片机,高速、低功耗、新增在系统在应用可编程(ISP,IAP)功能。2、特点:40个引脚,8k Bytes Flash片内程序存储器,512 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,片内时钟振荡器。STC89C52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。STC8

24、9C52芯片引脚图如图3-1所示 图3-1 STC89C52芯片引脚图 3、STC89C52引脚功能说明:Vcc:电源电压GND:地P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口,作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端口。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻

25、辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号校验期间,P1接收低8位地址。P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流I。在访问位地址的外部数据存储器(如执行:MOVX Ri 指令)时,P2口线上的内(也即特殊功能寄存器,在整个访问期间不改变。Flash 编程或校验时,P2也接收高位地址和其它控制信号。P3口:

26、P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端口时,被外部拉低的P3口将用上拉电阻输出电流I。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能。RST:复位输入。当振荡工作时,RST引脚出现两个机器周期上高电平将使单片机复位。WDT益出将使该引脚输出高电平,设置SFR AUXR 的 DISRTO 位(地址8EH)可打开或关闭该功能。DISRTO 位缺省为RESET输出高电平打开状态。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁

27、存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出的正脉冲信号,因此它可对外输出时钟或用于定时目地,要注意的是:第当访问外部数据存储器时将跳过一个ALE脉冲。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位禁位后,只有一条MOVX 和MOVC指令ALE才会被激活。此外,该引脚伎被微弱拉高,单片机执行外部程序时,应设置ALE无效。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当STC89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。当访问外

28、部数据存储器,高有两次有效的PSEN信号。EA/VPP:外部访问允许。欲使CPU公访问外部程序存储器(地址0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上12V的编程电压Vpp。XTAL1:振荡器反相放大器及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。3.1.2 显示器件 LCD1602液晶显示器现在的字符型液晶模块已经是单片机应用设计中最常用的信息显示器件了。1602型LCD显示模块具有体积小,功耗低,显

29、示内容丰富等特点。1602型LCD可以显示2行16个字符,有8位数据总线D0D7和RS,R/W,EN三个控制端口,工作电压为5V,并且具有字符对比度调节和背光功能。1602型LCD的接口信号说明编号符号引脚说明编号符号引脚说明1VSS电源地9D2Data I/O2VDD电源正极10D3Data I/O3V0液晶显示偏压信号11D4Data I/O4RS数据/命令选择端(H/L)12D5Data I/O5R/W读写选择端(H/L)13D6Data I/O6E使能信号14D7Data I/O7D0Data I/O15BLA背光源正极8D1Data I/O16BLK背光源负极1602型LCD的主要技

30、术参数如下表所示: 1602型LCD的主要技术参数显示容量16X2个字符芯片工作电压4.55.5V工作电流2.0mA(5.0V)模块最佳工作电压5.0V字符尺寸2.95X4.35(WXH)mm基本操作程序:读状态:输入:RS=L,RW=L, E=H 输出:D0D7=状态字读数据:输入:RS=H,RW=H, E=H 输出:无写指令:输入:RS=L,RW=L, D0D7=指令码,E=高脉冲 输出:D0D7=数据写数据:输入:RS=H,RW=L, D0D7=数据, E=高脉冲 输出:无3.2 硬件系统电路 3.2.1 电源电路密码锁主控制部分电源需要用5V直流电源供电,本设计直接留出电源端提供外置电

31、源输入接口,可以使用外置5V稳压直流电源供电,亦可以使用电脑USB接口供电。3.2.2 晶振电路在STC89S52单片机上内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。在1和XTAL2引脚上外接定时元件,内部振荡器就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。从XTAL1接入,如图3.2所示。由于外部时钟信号经过二分频触发后作为外部时钟电路输入的,所以对外部时钟信号的占空比没有要求。本设计选用的是12MHZ无源晶振、2个22pF电容,使得一个机器周期是1s。晶振的作用是为系统提供基

32、本的时钟信号,而两个电容则是起到并联谐振的作用,如果没电容,振荡电路会因为没有回路而停振,电路不能正常工作。 图3-2 晶振电路3.2.3 复位电路单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC0000H,使单片机从第个单元取指令。无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。在复位期间(即RST为高电平期间),P0口为高组态,P1P3口输出高电平;外部程序存储器读选通信号PSEN无效。地址锁存信号ALE也为高电平。根据实际情况选择如图4-6所示的复位电路。该电路在最简单的复位电路下增加了手动复位按键,在接通电源瞬间

33、,电容C1上的电压很小,复位下拉电阻 上的电压接近电源电压,即RST为高电平,在电容充电的过程中RST端电压逐渐下降,当RST端的电压小于某一数值后,CPU脱离复位状态,由于电容C1足够大,可以保证RST高电平有效时间大于24个振荡周期,CPU能够可靠复位。增加手动复位按键是为了避免死机时无法可靠复位。当复位按键按下后电容C1通过R放电。当电容C1放电结束后,RST端的电位为高电平。由于RST为高电平,CPU处于复位状态,松手后,电容C1充电,RST端电位下降,CPU脱离复位状态。R5的作用在于限制按键按下瞬间电容C1的放电电流,避免产生火花,以保护按键触电。图3-3 复位电路3.2.4 矩阵

34、键盘电路矩阵式键盘又叫行列式键盘。用I/O接口线组成行、列结构,键位设置在行、列的交点上。例如本设计(图3-4)4*4的行、列结构可组成16个键盘,比一个键位用一根I/O口线的独立式键盘少了一半的I/O接口线。而且键位越多,情况越明显。因此,在按键比较多时,往往采用矩阵式键盘。矩阵式键盘的按键识别方法有“行扫描法”。行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,介绍过程如下。  (1)判断键盘中有无键按下 将全部行线key1-key3置低电平,列为高电平然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与

35、4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。(2)判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。 图3-4 矩阵键盘电路3.2.5 1602LCD显示电路 为了提高密码锁的密码显示效果能力。本设计的显示部分由液晶显示器LCD1602取代普通的数码管来完成。只有接通电源后,显示器才处于开启状态。否则显示器将一直处于初始状态,当需要对密码锁进行

36、开锁时,按下键盘上的数字键09输入密码,每按下一个数字键后在显示器上显示一个*,输入多少位就显示多少个*。当密码输入完成时,按下确认OK键,然后用LCD显示相关的提示信息。1602LCD显示电路接线图如图3-5所示。 图3-5 1602LCD显示电路3.2.6 光、声指示电路 此处利用声光模拟密码锁电路得控制效果,当密码输入正确时,灯被点亮,每次按键输入都有提示音,连续输入3次错误则蜂鸣器鸣叫报警,报警的声音比按键提示音长。在实际应用中通过PNP三极管驱动蜂鸣器。光、声电路如图3-6所示。 图3-6 光、声指示电路4 系统软件设计4.1 软件调试平台 Keil for C51是美国Keil S

37、oftware公司出品的C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil for C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil for C51开发系统各部分功能和使用。 C51开发中除必要的硬件外,同样离不开软件,我们写的源程序要变为C51可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,

38、目前已极少使用手工汇编的方法了。随着C51开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件除了致力于单片机的编程开发平台外,还针对目前最流行C51开发项目出品了Keil for 51软件平台以及支持在线调试的串口烧写。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境将这些部份组合在一起。如图4-1为uVision4的界面。 图4-1 uVision4的界面4.2 软件开发 通过上述原理,已对密码锁整体运行环境有了充分认识,绘制主程序和子程序流程图,利用Keil软件,对单

39、片机进行编程,C语言程序流程图如下图:开始参数设置是否重置密码成功显示“OK!”是否三次输入密码显示“*”OK键按下后替换旧密码 计数新密码可显示可删除的密码显示“input wrong”输入新密码Ok键按下后密码比较否报警LED灯亮 New键按下是 结束 图4-2 程序流程图5 系统测试5.1硬件测试 按照之前设计好的电子密码锁原理图,详细计算系统中各个元件的参数,在Altium Designer软件中完成原理图的设计和PCB图的设置并制作出实际电路板。然后选取万用表的200欧姆档来测试电路板。用红、黑表笔来测试电路板上每条走线,如果测量的电阻值非常小时,证明走线没有断开,当其电阻值很大时,

40、证明该条走线断了,应该重新把线接上,使电路板在电气上得到正确地连接。5.2 软件调试 把也写好的C语言程序的载入软件调试工具,检查软件是否有设法错误,再根据软件提示对本程序进行修改,直到没有错误再生成单片机能运行的机器码,再用51开发板或其它单怎机写入工具把机器码写入单片机进行实际的程序调试,根据实际情况再对程序的不足加以修改,直到满足设计要求。6、总结 本设计从经济实用的角度出发,采用宏基公司生产的STC89系列STC89C52单片机与低功耗CMOS型E2PROM AT24C02作为主控芯片与数据存储器单元,结合外围的键盘输入、显示、报警、开锁等电路并用C语言编写主控芯片的控制程序,设计了一

41、款可以多次更改密码具有报警功能的电子密码锁。设计基本可行可以达到设计目地。使用单片机制作的电子密码锁具有软硬件设计简单,易于开发,成本较低,安全可靠,操作方便等特点,可应用于住宅、办公室的保险箱及档案柜等需要防盗的场所,有一定的实用性。该电路设计还具有按键有效提示,输入错误提示,控制开锁电平,控制报警电路,修改密码等多种功能。由于设计此电路的时间较仓促,其中还有些许未考虑周全的因素,还需要继续的改进和完善。 参考文献1 王长涛.单片机原理及应用-C语言程序设计与实现M.人民邮电出版社2014.1;2 谭浩强.C程序设计(第三版)M.北京:清华大学出版社,2005,7.;3 李明喜.新型电子密码

42、锁的设计J.机电产品开发与创新,2004,(03);4 杨茂涛.一种电子密码锁的实现J.福建电脑,2004,(08);5 何立民.单片机应用技术选编M,北京:北京航空大学出版社,1998;6 李华.MCS-51系列单片机使用接口技术M,北京航空航天大学出版社,1993;7 彭为.单片机典型系统设计实例精讲M,北京:电子工业出版社,2006;8 潘永雄.新编单片机原理与应用M,西安:西安电子科技大学出版社,2003;9 童诗白,华成英,模拟电子技术基础M,北京:高等教育出版社,2000;10 阎石主.数字电子技术基础M,北京:高等教育出版社,1998;附件一: 附图1 电路原理图 附图2 PCB

43、图 附图3作品实物图附件二:程序清单#include <reg52.h>#define uchar unsigned char #define uint unsigned intsbit lcden = P27;sbit lcdrw = P24;sbit lcdrs = P26;sbit bee = P21;sbit deng = P25;uchar num1=0,shu=0,i=0,temp=0,ok=0,mima=123456,i2=1,new=0,i3=0,shunew=0,num1new=0,err=0,res=0,i4=1,bb=0;uchar code table2=&

44、quot;successful!"uchar code table = "Please input :"uchar code table1="input wrong 1"uchar code table3="input wrong 2"uchar code table4="input wrong 3"uchar code table5="ok!"uchar code table6="input new mima!"uchar code key = 0xb7,0x7e

45、,0xbe,0xde, 0x7d,0xbd,0xdd,0x7b, 0xbb,0xdb,0x77,0xd7, 0xe7,0xeb,0xed,0xee;void delay( uint z )uint x,y;for( x=z; x>0; x- )for( y=100;y>0;y- );void write_com( uchar com )lcdrs = 0;lcdrw = 0;P0 = com;delay(5);lcden = 1;delay(5);lcden = 0;delay(5);lcdrw = 1;void write_data( uchar date )lcdrw = 0;

46、lcdrs = 1;P0 = date;delay(5);lcden = 1;delay(5);lcden = 0;delay(5);lcdrw = 1;void init() lcdrw = 1;lcden = 0;write_com(0x38); write_com(0x0e); write_com(0x04); write_com(0x01); write_com(0x80); void play(uchar *j,uchar k) uchar i; for(i=0;i<k;i+) write_data(*(j+i); delay(20); void tui() /Ê&#

47、228;´íÍ˸ñ num1-; write_com(0x80+0x40+num1); write_data(' '); shu=shu/10; write_com(0x80+0x40+num1);void diy( int a, uchar c ) /¼ÇÊýÃÜÂë²¢ÏÔʾshu = shu*10 + a;write_data(c);num1+;void shuru()

48、/Í£ÏÂɨÃèÃÜÂëÊäÈëP1=0xf0;if(P1!=0xf0)delay(20);if(P1!=0xf0)temp=P1;P1=0x0f;temp=temp|P1;while(P1!=0x0f);for(i=0;i<16;i+)if(keyi=temp)break;switch(i)case 0:diy(0,'*');bee=0;delay(20);bee=1;break;case 1:diy(1,&#

49、39;*');bee=0;delay(20);bee=1;break;case 2:diy(2,'*');bee=0;delay(20);bee=1;break;case 3:diy(3,'*');bee=0;delay(20);bee=1;break;case 4:diy(4,'*');bee=0;delay(20);bee=1;break;case 5:diy(5,'*');bee=0;delay(20);bee=1;break;case 6:diy(6,'*');bee=0;delay(20);bee

50、=1;break;case 7:diy(7,'*');bee=0;delay(20);bee=1;break;case 8:diy(8,'*');bee=0;delay(20);bee=1;break;case 9:diy(9,'*');bee=0;delay(20);bee=1;break;case 10:bb=0;tui();bee=0;delay(20);bee=1;break;case 11:ok=1;bee=0;delay(20);bee=1;break;case 13:res+;bee=0;delay(20);bee=1;deng=1

51、;/Í˳öwrite_com(0x01); /ÇåÆÁ write_com(0x80); play(table,12);write_com(0x80+0x40); /ÉèÖÃÊý¾ÝÖ¸ÕëµØÖbreak;default:break;void shuru2() /Í£ÏÂɨÃènew

52、¼ü°´ÏÂP1=0xf0;if(P1!=0xf0)delay(20);if(P1!=0xf0)temp=P1;P1=0x0f;temp=temp|P1;while(P1!=0x0f);for(i=0;i<16;i+)if(keyi=temp)break;switch(i)case 12:new+;bee=0;delay(20);bee=1;write_com(0x01);write_com(0x80);play(table6,15);break;void tuinew() /ÐÂÃÜ&#

53、194;ëÊä´íÍ˸ñnum1new-;write_com(0x80+0x40+num1new);write_data(' ');shunew=shunew/10;write_com(0x80+0x40+num1new);void diynew( int a, uchar c ) /ÐÂÃÜÂë¼ÇÊý²¢ÏÔʾshunew

54、= shunew*10 + a;write_data(c);num1new+;void shurunew() /ÊäÈëÐÂÃÜÂëP1=0xf0;if(P1!=0xf0)delay(20);if(P1!=0xf0)temp=P1;P1=0x0f;temp=temp|P1;while(P1!=0x0f);for(i=0;i<16;i+)if(keyi=temp)break;switch(i)case 0:diynew(0,'0');bee=0;delay(20);bee=1

55、;break;case 1:diynew(1,'1');bee=0;delay(20);bee=1;break;case 2:diynew(2,'2');bee=0;delay(20);bee=1;break;case 3:diynew(3,'3');bee=0;delay(20);bee=1;break;case 4:diynew(4,'4');bee=0;delay(20);bee=1;break;case 5:diynew(5,'5');bee=0;delay(20);bee=1;break;case 6:d

56、iynew(6,'6');bee=0;delay(20);bee=1;break;case 7:diynew(7,'7');bee=0;delay(20);bee=1;break;case 8:diynew(8,'8');bee=0;delay(20);bee=1;break;case 9:diynew(9,'9');bee=0;delay(20);bee=1;break;case 10:tuinew();bee=0;delay(20);bee=1;break; /ÍËÒ»²

57、89;case 11:ok=1;bee=0;delay(20);bee=1;break; /È·¶¨¼ücase 13:res+;bee=0;delay(20);bee=1;deng=1;/Í˳öwrite_com(0x01); /ÇåÆÁ write_com(0x80); play(table,12);write_com(0x80+0x40); /ÉèÖÃÊý¾ÝÖ

58、;¸ÕëµØÖ break;default:break;void reset() /µÈ´ýÊäÈ븴λ¼üP1=0xf0;if(P1!=0xf0)delay(20);if(P1!=0xf0)temp=P1;P1=0x0f;temp=temp|P1;while(P1!=0x0f);for(i=0;i<16;i+)if(keyi=temp)break;switch(i) case 13:res+;be

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论