




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
洛阳理工学院毕业设计(论文)摘 要在proteus模拟仿真软件上,以at89c51单片机为核心器件,结合按键电路、led数码管显示电路、报警指示电路设计了一款保密性好、编码量多、随机开锁成功率几乎为零的电子密码。利用单片机灵活的编程设计和丰富的i/o端口,及其控制的准确性通过软件程序来控制整个系统实现电子密码锁的基本功能。系统能实现密码的输入、清除、显示、密码正确开锁,密码错误报警,系统设定初始密码。同时也显示了proteus软件在硬件设计和软件调试方面的高效性。关键词:计算机应用,电子密码锁,at89c51单片机,proteus软件,系统仿真abstractabstract: by using at89c51 microcontroller, an advanced electronic password lock circuit is designed. the hardware circuit diagram and some software flowchart are given in this paper. as the software of proteus has the function of simulation, the function of 0-9 number keys, confirmation keys and the delete keys are realized by a 43 array. and the circuit composed of tips is displayed by 8-bit digital tube. when a password is entered, only“-”can be displayed. after the entering of password-digit, press the confirm key, and compare the entered password to the set password. if the password is correct, then the lock to open. here a second light-emitting diode led is used as a reminder; if the password is not correct, then the action of pressing the key is prohibited. at the same time, the alarm function of electronic locks works with the “tick” sound.key words: computer application, electronic password, at89c51 microcontroller, proteus software, system simulation5目录前言1第1章 单片机31.1 单片机简介31.2 单片机的硬件特性31.3 单片机的特点31.4 单片机的应用范围4第2章 电子密码锁的设计62.1 设计方案的选择62.1.1 采用数字电路控制62.1.2 采用以单片机为核心的控制62.2 本设计所要实现的目标72.3 电子密码锁的程序设计7第3章 主要元器介绍93.1 主控芯片at89c51简介93.2 at89c51的主要性能93.3 at89c51引脚功能说明103.4 at89c51的振荡器与时钟电路123.5 at89c51的复位方式133.5.1复位原理133.5.2常用复位电路143.6 at89c51的程序执行方式143.7 at89c51的省电方式143.8 at89c51的芯片擦除153.9 锁存器74ls245153.10 43矩阵键盘16第4章 用proteus模拟电子密码锁184.1 proteus简介184.2 proteus仿真过程184.2.1 启动proteus isis 编辑环境184.2.2 选取放置仿真元件194.2.3 布线214.2.4 在proteus isis中进行软件编程224.3 系统调试354.3.1 将目标代码添加到电路354.3.2 电路调试36第5章 调试过程与分析39结论40谢 辞41参考文献42前言在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的电子密码锁应运而生。电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁。其特点如下:1、保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。2、误码输入保护,当输入密码多次错误时,报警系统自动启动。3、无活动零件,不会磨损,寿命长。4、使用灵活性好,不像机械锁必须佩带钥匙才能开锁。5、电子密码锁操作简单易行,一学即会。基于以上思路,本次设计使用atmel公司的at89c51实现基于单片机的电子密码锁的设计,其主要具有如下功能:1、设置6位密码,密码通过键盘输入,若密码正确,则锁开。2、报警、锁定键盘功能。密码输入错误,禁止按键输入3秒,同时发出“滴、滴”报警声。3、密码可由程序初始设定。电子密码锁设计的关键问题是实现密码的输入、清除、开锁等功能。1、密码输入功能:按下一个数字键,数码管就显示一个“-”,同时将先前输入的所有“-”向左移动一位。2、密码清除功能:当按下“crtl”键时,清除前面刚才输入的错误的数字。3、开锁功能:当按下“enter”键,系统将输入的数字与密码进行检查核对,如果正确则锁打开,否则则打不开。由于科技的发展以及人们对保密程度的提高,许多电子密码锁已相继问世。但这类产品的特点是针对特定有效卡、指纹或声音有效,且不能实现远程控制,只能适用于保密要求高且供个人使用的箱、柜、房间等。因为数字、字符、图形图像、人体生物特征和时间等要素均可成为钥匙的电子信息,组合使用这些信息将能够使电子防盗锁获得高度的保密性,如防范森严的金库。组合使用信息也能够使电子防盗锁获得无穷扩展的可能,使产品多样化,对用户而言是“千挑百选、自得其所”。可以看出组合使用电子信息是电子密码锁以后发展的趋势。本次设计的主要任务是在proteus中用编程语言把电子密码锁的运行过程模拟出来。 第1章 单片机1.1 单片机简介单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器cpu随机存储器ram、只读存储器rom、多种i/o口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、a/d转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。单片机系统结构示意图如图1-1所示:图1-1 单片机系统结构示意图1.2 单片机的硬件特性1、单片机集成度高。单片机包括cpu、4kb容量的rom(8031无)、128 b容量的ram、2个16位定时/计数器、4个8位并行口、全双工串口行口。2、系统结构简单,使用方便,实现模块化。3、单片机可靠性高,可工作到106107小时无故障。4、处理功能强,速度快。1.3 单片机的特点单片机的特点主要有:高集成度,体积小,高可靠性;控制功能强;低电压,低功耗,便于生产便携式产品;易扩展;优异的性能价格比。单片机是以工业测控对象、环境、接口特点出发向着增强控制功能,提高工业环境下的可靠性方向发展。主要特点如下:1、种类多,型号全。很多单片机厂家逐年扩大适应各种需要,有针对性地推出一系列型号产品,使系统开发工程师有很大的选择余地。大部分产品有较好的兼容性,保证了已开发产品能顺利移植,较容易地使产品进行升级换代。2、提高性能,扩大容量,性能价格比高。集成度已经达到300万个晶体管以上,总线速度达到数十微妙到几百纳秒,指令执行周期已经达到几微妙到数十纳秒,以往片外xram现已在物理上存入片内,rom容量已经扩充达32k,64k,128k以致更大的空间。价格从几百到几元不等。3、增加控制功能,向真正意义上的“单片”机发展。把原本是外围接口芯片的功能集成到一块芯片内,在一片芯片中构造了一个完整的功能强大的微处理应用系统。4、低功耗。现在新型单片机的功耗越来越小,供电电压从5v降低到了3.2v,甚至1v,工作电流从ma降到a级,gz2频率从十几兆可编程到几十千赫兹。特别是很多单片机都设置了多种工作方式,这些工作方式包括等待,暂停,睡眠,空闲,节电等。5、c语言开发环境,友好的人机互交环境。大多数单片机都提供基于c语言开发平台,并提供大量的函数供使用,这使产品的开发周期、代码可读性、可移植性都大为提高。1.4 单片机的应用范围1、在智能仪表中的应用这是单片机应用最多最活跃的领域之一。在各类仪器仪表中引入单片机,使仪器仪表智能化,提高测试的自动化程度和精度,简化仪器仪表的硬件结构,提高其性能价格比。2、在机电一体化中的应用机电一体化产品是指集机械技术,微电子技术,计算机技术于一体,使其产品具有智能化特征的电子产品。它是机械工业发展的方向。3、在实时控制系统中的应用单片机广泛用于各种实时过程控制系统中,例如工业过程控制、过程监测、航空航天、间断武器、机器人系统等各种实时控制系统。用单片机进行实时系统数据处理和控制,保证系统工作在最佳状态,有利于提高系统的工作效率和产品的质量。4、在人们生活中的应用目前国内外各种家具已经普遍用单片机代替传统的控制电路,例如,洗衣机、电冰箱、空调机、微波炉、电饭煲、收音机、音像、电风扇及许多高级电子玩具都配上了单片机。5、在其他方面的应用单片机还广泛应用于办公自动化领域、商业营销领域、安全防卫、汽车及通信系统、计算机外部设备、模糊控制等领域。第2章 电子密码锁的设计2.1 设计方案的选择2.1.1 采用数字电路控制用以74ls112双jk触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过10秒(一般情况下,用户不会超过10秒,若用户觉得不便,还可以修改)电路将报警20秒,若电路连续报警三次,电路将锁定键盘2分钟,防止他人的非法操作。采用数字电路设计的方案好处就是设计简单但控制的准确性和灵活性差。故不采用。2.1.2 采用以单片机为核心的控制由于单片机种类繁多,各种型号都有其一定的应用环境,因此在选用时要多加比较,合理选择,以期获得最佳的性价比。一般来说在选取单片机时从下面几个方面考虑:性能、存储器、运行速度、i/o口、定时/计数器、串行接口、模拟电路功能、工作电压、功耗、封装形式、抗干扰性、保密性,除了以上的一些的还有一些最基本的比如:中断源的数量和优先级、工作温度范围、有没有低电压检测功能、单片机内有无时钟振荡器、有无上电复位功能等。在开发过程中单片机还受到:开发工具、编程器、开发成本、开发人员的适应性、技术支持和服务等等因素。基于以上因素本设计选用单片机at89c51作为本设计的核心元件,利用单片机灵活的编程设计和丰富的i/o端口,及其控制的准确性,实现基本的密码锁功能。在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接7seg-mpx8-cc-blue显示器用于显示作用。当用户需要开锁时,先按键盘开锁键之后按键盘的数字键09输入密码。当数字输入超过6个时,给出报警信息。在密码输入过程中,若输入错误,可以利用“clr”键删除刚才输入的错误的数字。可以看出方案二控制灵活准确性好且保密性强还具有扩展功能,根据现实生活的需要此次设计采用此方案。2.2 本设计所要实现的目标用43组成09数字键及确认键、删除键;用8位数码管组成显示电路提示信息,当输入密码时,只显示“-”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则锁开,此处用led发光二极管亮一秒钟作为提示;若密码不正确,禁止按键输入3秒,同时发出“滴、滴”报警声。2.3 电子密码锁的程序设计程序流程图设计如图2-1所示:图2-1程序流程图软件流程图设计如图2-2所示:图2-2软件流程图8第3章 主要元器介绍3.1 主控芯片at89c51简介at89c51是一种带4k字节flash存储器(fperomflash programmable and erasable read only memory)的低电压、高性能cmos 8位微处理器,俗称单片机。at89c2051是一种带2k字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用atmel高密度非易失存储器制造技术制造,与工业标准的mcs-51指令集和输出管脚相兼容。由于将多功能8位cpu和闪烁存储器组合在单个芯片中,atmel的at89c51是一种高效微控制器,at89c2051是它的一种精简版本。at89c单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。3.2 at89c51的主要性能1、与mcs-51 兼容2、4k字节可编程flash存储器3、寿命:1000写/擦循环4、数据保留时间:10年5、全静态工作:0hz-24mhz6、三级程序存储器锁定7、1288位内部ram8、32可编程i/o线9、两个16位定时器/计数器10、5个中断源11、可编程串行通道12、低功耗的闲置和掉电模式13、片内振荡器和时钟电路3.3 at89c51引脚功能说明图3-1at89c51芯片引脚图vcc:供电电压。gnd:接地。p0口:p0口为一个8位漏级开路双向i/o口,每脚可吸收8ttl门电流。当p0口的管脚第一次写1时,被定义为高阻输入。p0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在fiash编程时,p0 口作为原码输入口,当fiash进行校验时,p0输出原码,此时p0外部必须被拉高。p1口:p1口是一个内部提供上拉电阻的8位双向i/o口,p1口缓冲器能接收输出4ttl门电流。p1口管脚写入1后,被内部上拉为高,可用作输入,p1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校验时,p1口作为第八位地址接收。p2口:p2口为一个内部上拉电阻的8位双向i/o口,p2口缓冲器可接收,输出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地址信号和控制信号。p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。p3口也可作为at89c51的一些特殊功能口,如表3-1所示:表3-1 p3口的一些特殊功能引脚第二功能功 能 说 明p3.0rxd串行数据输入端p3.1txd串行数据输出端p3.2int0外部中断0中断请求信号输入端p3.3int1外部中断1中断请求信号输入端p3.4t0定时/计数器0外部计数脉冲输入端p3.5t1定时/计数器1外部计数脉冲输入端p3.6wr片外ram写选通信号输出端p3.7rd片外ram读选通信号输出端p3口同时为闪烁编程和编程校验接收一些控制信号。rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时, ale只有在执行movx,movc指令是ale才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale禁止,置位无效。/psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。/ea/vpp:当/ea保持低电平时,则在此期间外部程序存储器(0000h-ffffh),不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为reset;当/ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引脚也用于施加12v编程电源(vpp)。xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。xtal2:来自反向振荡器的输出。3.4 at89c51的振荡器与时钟电路单片机内各部件之间有条不紊的协调工作,其控制信号是在一种基本节拍的指挥下按一定时间顺序发出的,这些控制信号在时间上的相互关系就是cpu时序。而产生这种基本节拍的电路就是振荡器和时钟电路。at89c51单片机内部有一个用于构成振荡器的单级反相放大器,如图3-2所示。图3-2at89c51内部振荡器电路图引脚xtal1为反相器输入端,xtal2为反相器输出端。当在放大器两个引脚上外接一个晶体(或陶瓷振荡器)和电容组成的并联谐振电路作为反馈元件时,便构成一个自激振荡器。单片机也可采用外部振荡器向内部时钟电路输入一固定频率的时钟源信号。此时,外部信号接至xtal1端,输入给内部时钟电路,而xtal2端浮空即可。3.5 at89c51的复位方式单片机在开机时或在工作中因干扰而使程序失控或工作中程序处于某种死循环状态等情况下都需要复位。复位的作用是使中央处理器cpu以及其他功能部件都恢复到一个确定的初始状态,并从这个状态开始工作。3.5.1复位原理at89c51单片机的复位靠外部电路实现,信号由reset(rst)引脚输入,高电平有效,在振荡器工作时,只要保持rst引脚高电平两个机器周期,单片机即复位。复位后,pc程序计数器的内容为0000h,其他特殊功能寄存器的复位状态如表3-2所示。片内ram中内容不变。表3-2特殊寄存器的复位状态sfr符号地址复位值功能名称*acc0e0h00000000b累加器*b0f0h00000000bb寄存器*psw0d0h00000000b程序状态字sp81h00000111b堆栈指针dpl82h00000000b数据寄存器指针(低8位)dph83h00000000b数据寄存器指针(高8位)*p080h11111111bp0口锁存器*p190h11111111bp1口锁存器*p20a0h11111111bp2口锁存器*p30b0h11111111bp3口锁存器*ip0b8hxxx00000b中断优先级控制寄存器3.5.2常用复位电路一般有上电复位、手动开关复位和自动复位电路三种,如图3-3所示:图3-3单片机复位电路图(a)上电复位电路;(b)手动复位电路;(c)自动复位电路3.6 at89c51的程序执行方式程序执行方式是单片机的基本工作方式,即执行用户编写好并存放在rom中的程序。3.7 at89c51的省电方式at89系列单片机有两种省电运行方式,即空闲方式和掉电方式。省电方式可使单片机功耗最小。单片机正常工作时消耗1020 ma电流,空闲方式工作时消耗1.75 ma电流,掉电方式工作时消耗550 a电流。在空闲和掉电方式下,单片机内部硬件控制电路如图3-4所示:3-4 空闲和掉电方式内部电路图3.8 at89c51的芯片擦除整个perom阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ale管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,at89c51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,cpu停止工作。但ram,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存ram的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。3.9 锁存器74ls245图3-574ls245引脚图74ls245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。74ls245还具有双向三态功能,既可以输出,也可以输入数据。当8051单片机的p0口总线负载达到或超过p0最大负载能力时,必须接入74ls245等总线驱动器。当片选端/ce低电平有效时,dir=“0”,信号由 b 向 a 传输;(接收)dir=“1”,信号由 a 向 b 传输;(发送)当ce为高电平时,a、b均为高阻态。由于p2口始终输出地址的高8位,接口时74ls245的三态控制端1g和2g接地,p2口与驱动器输入线对应相连。p0口与74ls245输入端相连,e端接地,保证数据线畅通。8051的/rd和/psen相与后接dir,使得rd且psen有效时,74ls245输入(p0.1d1),其它时间处于输出(p0.1d1)。3.10 43矩阵键盘如图3-6所示,本系统采用43矩阵键盘,12个按键分为输入数字键:0、1、2、3、4、5、6、7、8、9;功能键crl、enter矩阵键盘。图3-6 43矩阵键盘第4章 用proteus模拟电子密码锁4.1 proteus简介proteus软件是英国labcenter electronics公司出版的eda工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它eda工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。proteus是世界上著名的eda工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到pcb设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、pcb设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、hc11、pic10/12/16/18/24/30/-dspic33、avr、arm、8086和msp430等,2010年即将增加cortex和dsp系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持iar、keil和mplab等多种编译器。4.2 proteus仿真过程4.2.1 启动proteus isis 编辑环境点击“开始”菜单,选择“proteus 7 professional”程序,在出现的子菜单中选择“isis 7 professional”选项,系统启动界面如图4-1所示。图4-1 启动界面运行结果如图4-2所示:图4-2 运行结果4.2.2 选取放置仿真元件按照需要的元件清单如表4-1所示添加元件表4-1 元件清单元件名称所属类所属子类at89c51microprcessor ics8051 familycapcapacitorsgenericcapcapacitorsgenericcrystalmiscellaneousresresistorsgeneric7seg-mpx8-cc-blueoptoelectronics6-segment displays74ls245ttl74ls seriestransceiversbuttonswitches & relaysswitchessounderspeakers & soundersled-yellowoptoelectronicsleds在器件选择按钮中单击“p”按钮,或是执行菜单命令“library”-“pick device/symbol”,分别添加at89c51、74ls245、7seg-mpx8-cc-blue、button、led-yellow、res、sounder器件,如图4-3所示:图4-3 添加元件在isis原理编辑窗口中放置元件,再单击工具箱中的“元件终端图标”,在对象选择器中单击“power”和“ground”放置电源和地,如图4-4所示:图4-4放置电源和地4.2.3 布线放置好元件后,点击总线图标,先布总线,再连接其他各线。左键双击各元件。设置相应元件参数,完成电路图设计,如图4-5所示:图4-5 电路图4.2.4 在proteus isis中进行软件编程1、在proteus isis中创建源代码文件选用sourceadd/remove source files 命令,如图4-6所示:图4-6选用sourceadd/remove source files 命令将弹出如图4-7所示的add/remove source code fils对话框图4-7add/remove source code fils对话框点击code generation tool 下方的下拉式菜单,将列出系统提供的代码生成工具,如图4-7所示。在本例中微处理器为80c51,因此选择“asem51”代码生成工具。点选“new”按钮,将出现图4-8所示的新的源文件建立对话框。在文件名一栏中为源代码键入文件名“at89c51”,并在文件类型中指定新建源文件的类型为“asm51 source files (*.asm),如图4-8所示:图4-8 新的源文件建立对话框点击打开按钮,将出现如图4-9所示的对话框,点选“是(y)”按钮,即可完成新源文件的创建和添加,如图4-10所示。点击“ok”按钮关闭源代码文件创建对话框。图4-9新建源文件对话框图 4-10源代码文件创建完成2、在proteus isis 中编辑源代码在proteus isis 编辑环境中按动alt-s键,打开source菜单,如图4-11所示。点选“1.at89c51.asm”,即可打开源文件编辑窗口,如图4-12所示,在编辑环境中键入程序,并保存。图4-11打开source菜单图4-12源文件编辑窗口控制电路软件源程序如下:;*;以下8个字节存放8位数码管的段码led_bit_1 equ 30h led_bit_2 equ 31hled_bit_3 equ 32hled_bit_4 equ 33hled_bit_5 equ 34hled_bit_6 equ 35hled_bit_7 equ 36hled_bit_8 equ 37h;以下6个字节存放初始密码word_1 equ 38hword_2 equ 39hword_3 equ 3ahword_4 equ 3bhword_5 equ 3chword_6 equ 3dh;以下6个字节存放用户输入的6位密码key_1 equ 3ehkey_2 equ 3fhkey_3 equ 40hkey_4 equ 41hkey_5 equ 42hkey_6 equ 43h;*cnt_a equ 44hcnt_b equ 45hkey_cnt equ 46h ;已输出的密码位数line equ 47h ;按键行号row equ 48h ;按键列号val equ 49h ;键值;*;以下为初始化程序,包括数据存储空间初始化,设置初始密码org00hsjmpstartorg0bhljmp int_t0start: mov cnt_a,#00h ;程序初始化mov cnt_b,#00hmov key_cnt,#00hmov line,#00hmov row,#00hmov val,#00hsetb p1.0mov led_bit_1,#00h ;段码存储区清0mov led_bit_2,#00hmov led_bit_3,#00hmov led_bit_4,#00hmov led_bit_5,#00hmov led_bit_6,#00hmov led_bit_7,#79hmov led_bit_8,#73hmov key_1,#00h ;输入密码存储区清0mov key_2,#00hmov key_3,#00hmov key_4,#00hmov key_5,#00hmov key_6,#00hmov word_1,#6 ;设置初始密码”123456”mov word_2,#5mov word_3,#4mov word_4,#3movword_5,#2mov word_6,#1mov tmod,#01hmov th0,#(65536-700)/256mov tl0,#(65536-700)mod 256 mov ie,#82ha0: lcall disp;*;以下为键盘扫描程序,计算键值并存入vallscan: mov p3,#0f0h ;扫描行码l1: jnb p3.0,l2lcall dly_sjnb p3.0,l2mov line,#00hljmp rscanl2: jnb p3.1,l3lcall dly_sjnb p3.1,l3mov line,#01hljmp rscanl3: jnb p3.2,l4lcall dly_sjnb p3.2,l4mov line,#02hljmp rscanl4: jnb p3.3,a0lcall dly_sjnb p3.3,a0mov line,#03hrscan: mov p3,#0fh ;扫描列码c1: jnb p3.4,c2mov row,#00hljmp calcuc2: jnb p3.5,c3mov row,#01hljmp calcuc3: jnb p3.6,c1mov row,#02hcalcu:mova,line ;计算键值movb,#03hmul abadd a,rowmov val,a;*;以下为按键处理程序,对不同的按键作出响应 cjne a,#0ah,j1 ;是否为clr键mov r1,key_cntcjne r1,#00h,j2lcall alarm_1ljmp startj2: lcall shiftrdec key_cntw00:lcall disp ;等待按键抬起mov a,p3cjne a,#0fh,w01ljmp a0w01:mov a,p3cjne a,#0f0h,w02ljmp a0w02:sjmp w00 j1: mov a,valcjne a,#0bh,j3;判断是否为enter键mov r1,key_cntcjne r1,#06h,j4mov a,word_1 ;比较密码cjne a,3eh,j5mov a,word_2cjne a,3fh,j5mov a,word_3cjne a,40h,j5mov a,word_4jne a,41h,j5mov a,word_5cjne a,42h,j5mov a,word_6cjne a,43h,j5clr p1.0lcall dly_lljmp finij5: lcall alarm_2ljmp startj4: lcall alarm_1ljmp startj3: inc key_cnt ;按下数字键mov a,key_cntcjne a,#07h,k1lcall alarm_1w10:lcall disp ;等待按键抬起mov a,p3cjne a,#0fh,w11ljmpstartw11:mov a,p3cjne a,#0f0h,w12ljmp startw12:sjmp w10 ljmp startljmp startk1: lcall shiftlw20:lcall disp ;等待按键抬起mov a,p3cjne a,#0fh,w21ljmp a0w21:mov a,p3cjne a,#0f0h,w22ljmp a0w22:sjmp w20 ljmp a0alarm_1:setb tr0 ;操作错误报警jb tr0,$retalarm_2:setb tr0 ;密码错误报警jb tr0,$lcall dly_lret;*;定时器中断服务程序,用于声音报警int_t0: cpl p1.7mov th0,#100mov tl0,#253inc cnt_amov r1,cnt_acjne r1,#30,retunemov cnt_a,#00hinc cnt_bmov r1,cnt_bcjne r1,#20,retunemov cnt_a,#00hmov cnt_b,#00hclr tr0retune: reti;*;段码,输入密码左移子程序shiftl: mov led_bit_6,led_bit_5mov led_bit_5,led_bit_4mov led_bit_4,led_bit_3mov led_bit_2,led_bit_1mov led_bit_1,#40hmov key_6,key_5mov key_5,key_4mov key_4,key_3mov key_3,key_2mov key_2,key_1mov key_1,valret;*;段码,输入密码右移子程序shiftr: mov led_bit_1,led_bit_2mov led_bit_2,led_bit_3mov led_bit_3,led_bit_4mov led_bit_4,led_bit_5mov led_bit_5,led_bit_6mov led_bit_6,#00hmov key_1,key_2mov key_2,key_3mov key_3,key_4mov key_4,key_5mov key_5,key_6mov key_6,#00hret;*;以下为数码显示子程序disp: clr p2.7mov p0,led_bit_8lcall dly_ssetb p2.7clr p2.6mov p0,led_bit_7lcall dly_ssetb p2.6clr p2.5mov p0,led_bit_6lcall dly_ssetb p2.5clr p2.4mov p0,led_bit_5lcall dly_ssetb p2.4clr p2.3mov p0,led_bit_4lcall dly_ssetb p2.3clr p2.2mov p0,led_bit_3lcall dly_ssetbp2.2clr p2.1mov p0,led_bit_2setb p2.1clr p2.0mov p0,led_bit_1lcall dly_ssetb p2.0ret;*dly_s: mov r6,#10d1: mov r7,#250djnz r7,$djnz r6,d1retdly_l: mov r5,#100d2: mov r6,#100d3: mov r7,#248djnz r7,$djnz r6,d3djnz r5,d2retfini: nopend编辑完成后,点选filesave按钮,如图4-12所示。在源程序编辑窗口,按动alt-tab键切换回isis编辑环境。3、在proteus isis 中将源代码文件生成目标代码选择sourcebuild all 命令,如图4-13所示。图4-13 选择sourcebuild all 命令执行这一命令后,isis将会运行相应的代码生成工具,对所有源文件进行编译、连接,生成目标代码,同时弹出build log 窗口,如图4-14所示。图4-14 build log窗口这一创建信息给出了关于源代码的编译信息。本例中的源代码没有语法错误,并且proteus isis 将源代码生成了目标代码4.3 系统调试4.3.1 将目标代码添加到电路在proteus isis 编辑环境中,用鼠标左键双击at89c51,将弹出如图4-15所示的at89c51元件属性编辑对话框。点击program file 文本框中的打开按钮,弹出文件浏览窗口。选择“at89c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园重阳节特色主题策划方案
- 甲状腺手术护理常规课件
- 元宵节教学课件
- 《永远的丰碑》教学课件
- 用电安全知识培训课件新闻稿
- 用iPad进行课件编辑
- 2025年考研英语(一)阅读理解历2025年真题 深度解析与模拟试卷
- 2025年电气工程师考试试卷:电气工程设计规范应用专项训练
- 2025至2030中国糖尿病足溃疡的治疗行业项目调研及市场前景预测评估报告
- 2025至2030中国礼品行业发展分析及行业发展前景与战略报告
- 施工组织设计施工总体部署完整版
- TUPSW微机控制电力专用不间断电源(UPS)系统使用说明书
- 骨质疏松诊治与中医药
- LY/T 2383-2014结构用木材强度等级
- GB/T 528-2009硫化橡胶或热塑性橡胶拉伸应力应变性能的测定
- 中日关系历史
- GB/T 15171-1994软包装件密封性能试验方法
- 2023年江苏省中学生生物学竞赛(奥赛)初赛试题和答案
- 信息系统运维服务方案
- 化工试生产总结报告
- DB32-T 3129-2016适合机械化作业的单体钢架塑料大棚 技术规范-(高清现行)
评论
0/150
提交评论