基于单片机数字密码锁的设计说明_第1页
基于单片机数字密码锁的设计说明_第2页
基于单片机数字密码锁的设计说明_第3页
基于单片机数字密码锁的设计说明_第4页
基于单片机数字密码锁的设计说明_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

..摘要随着科技和人们的生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统机械锁由于构造简单,被撬事件屡见不鲜;电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐。单片机也被称微控器,是因为它最早被用在工业控制领域。单片机是靠程序运行的,并且可以修改。本设计系统主机采用8052单片机,MCS-51单片机的程序存储器和数据存储器的地址空间是相互独立的,而且程序存储器一般为ROM或EPROM,只能读出不能写入。扩展用的程序存储器芯片大多采用EPROM芯片,最大可扩展到64K字节。该设计使用矩阵键盘输入。LED数码管显示输入密码,用74HC245驱动数码管发光显示数码,LCD1602控制显示。密码正确,二极管发光。输入密码错误次数超过三次系统报警,蜂鸣器发出报警音。关键词:单片机软件电路硬件电路..目录设计要求........................................................................................1第二章系统组成及工作原理....................................................................2第三章硬件电路设计................................................................................33.1STC89C52单片机的介绍.................................................................33.2单片机最小系统.........................................................................53.3键盘电路设计............................................................................63.4LCD1602显示电路.............................................................................83.5开锁电路..........................................................................................113.6报警电路..........................................................................................113.7仿真效果图..........................................................................................12第四章软件设计......................................................................................134.1PROTEUS仿真软件.......................................................................134.2KEIL编译设计................................................................................154.3普中ISP自动下载软件.................................................................164.4程序流程图.........................................................................18设计、调试和测试结果与分析....................................................19设计小结.....................................................................................23参考文献...................................................................................................24附录...........................................................................................................25..第一章设计要求采用单片机、LCD等芯片,设计电子密码锁,能随时修改密码,具有防多次试探功能,连续输入密码达到一定次数,发出光声报警密码输入错误时有报警功能,连续输入3次错误,键盘自锁,等待管理解锁;开锁后或修改密码后可以选择退出,返回开锁前状态。掌握Proteus软件的基本应用,用于设计与仿真,需要用PROTEUS软件绘制电路原理图及局部原理图;掌握单片机编程语言,可选用汇编语言或C语言;本次课程设计是要设计一个数字密码锁,设计要求如下:1、设计一个数字式密码锁。2、密码由4–6位数字组成。3、密码相符开锁,三次不符报警。4、密码可以更新。第二章系统组成及工作原理复位电路复位电路键盘控制电路开锁电路超次报警电路LCD显示电路STC89C52图2.1系统总设计图该电子密码锁采用4*4键盘作为输入信号,输入到作为主机STC89C52单片机,通过软件编程的程序,做出判断,结果再经1602LCD液晶显示器作为输出显示。晶振电路提供单片机运行脉冲。STC89C52单片机:STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。具有以下标准功能:8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构〔兼容传统51的5向量2级中断结构,全双工串行口。复位电路:复位电路,就是利用它把电路恢复到起始状态。就像计算器的清零按钮的作用一样,以便回到原始状态,重新进行计算。使CPU及系统各部件处于确定的初始状态。键盘控制电路:在此次的设计中,输入密码,修改密码等都需要通过键盘来实现,键盘采用矩阵键盘,这样可以减少I/O口的使用。LCD显示电路:本次实验采用的是LCD1602液晶显示,好处是相比于LED数码管显示方便许多,也比较符合消费者的要求。超次报警电路:密码箱最重要的是保护消费者的财产及隐私,若非本人操作很难一下子输对密码,本次设计是三次输入密码不正确蜂鸣器会响,模拟报警的装置。开门电路:输对密码之后,继电器吸合,小灯点亮,模拟开保险箱的动作。硬件电路设计3.1STC89C52单片机的介绍STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。图3.1STC89C52功能引脚图VCC:电源GND:地P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写"1"时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写"1"时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流〔IIL。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入〔P1.0/T2和时器/计数器2的触发输入〔P1.1/T2EX,在flash编程和校验时,P1口接收低8位地址字节。P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写"1"时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流〔IIL。在访问外部程序存储器或用16位地址读取外部数据存储器〔例如执行MOVXDPTR时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上发送1。在使用8位地址〔如MOVXRI访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P3端口写"1"时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流〔IIL。P3口亦作为STC89C52特殊功能〔第二功能使用,如表3-1所示。在flash编程和校验时,P3口也接收一些控制信号。表3-1P3口的第二功能表P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7RXDTXDINT0INT1T0T1WRRDRST:复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。ALE/PROG:地址锁存控制信号〔ALE是访问外部程序存储器时,锁存低8位地址的输出脉冲。在flash编程时,此引脚〔PROG也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。PSEN:外部程序存储器选通信号〔PSEN是外部程序存储器选通信号。当STC89C52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应接VCC。在flash编程期间,EA也接12伏VPP电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。3.2单片机最小系统的设计单片机的最小系统是由组成单片机系统必需的一些元件构成的,除了单片机之外,还需要包括电源供电电路、时钟电路、复位电路。1、时钟电路单片机工作时,从取指令到译码再进行微操作,必须在时钟信号控制下才能有序地进行,时钟电路就是为单片机工作提供基本时钟的。单片机的时钟信号通常有两种产生方式:内部时钟方式和外部时钟方式。内部时钟方式的原理电路如图2-8所示。在单片机XTAL1和XTAL2引脚上跨接上一个晶振和两个稳频电容,可以与单片机片内的电路构成一个稳定的自激振荡器。晶振的取值范围一般为0~24MHz,常用的晶振频率有6MHz、12MHz、11.0592MHz、24MHz等。一些新型的单片机还可以选择更高的频率。外接电容的作用是对振荡器进行频率微调,使振荡信号频率与晶振频率一致,同时起到稳定频率的作用,一般选用20~30pF的瓷片电容。2、复位电路无论是在单片机刚开始接上电源时,还是运行过程中发生故障都需要复位。复位电路用于将单片机内部各电路的状态恢复到一个确定的初始值,并从这个状态开始工作。单片机的复位条件:必须使其RST引脚上持续出现两个<或以上>机器周期的高电平。单片机的复位形式:上电复位、按键复位。图3.2单片机最小系统3.3键盘电路设计按键工作处于两种状态:按下与释放。一般按下为接通,释放为断开,这两种状态要被CPU识别,通常将两种状态转换为与之对应的低电平或高电平。CPU通过按键信号电平的高低来判断按键的状态。使用矩阵键盘,所以本设计采用行列式键盘,可减少键盘与单片机接口是所占用的I/O线的数目,按键比较多时,通常采用这种方法。矩阵式键盘又叫行列式键盘。用I/O接口线组成行、列结构,键位设置在行、列的交点上。例如本设计<图4-4>4*4的行、列结构可组成16个键盘,比一个键位用一根I/O口线的独立式键盘少了一半的I/O接口线。而且键位越多,情况越明显。因此,在按键比较多时,往往采用矩阵式键盘。矩阵式键盘的按键识别方法有"行扫描法"。行扫描法又称为逐行〔或列扫描查询法,是一种最常用的按键识别方法,介绍过程如下。<1>判断键盘中有无键按下将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。<2>判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。图3.3键盘扫描电路图每一条行线和列线交叉处通过一个按键来连接,利用这种行列式矩阵结构只需要N条行线和M条列线就可组成N*M个按键。在这种行列式矩阵键盘非键盘编码的单片机中,键盘处理程序先执行等待按键并确认有无键盘按下的程序段。确认有键盘按下后,下一步执行识别哪一个键按下。对照4*4键盘,首先识别键盘中有无键盘按下,由单片机I/O口向键盘送全扫描字00H,把全部的列线置为低电平,然后把列线的电平状态读入累加器A中,如有键按下,总会有一根线电平为低使行线不全为1。判断键盘中哪一个键被按下,使通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后检查行输入状态来实现。如果全为1,则所按下键不在此列,如果不全为1则按下的键必在此列。而且是与零电平线相交的交点上的键。按键列表如下:147SET2580369OK理想的按键信号是一个标准脉冲,但键的按下和释放都需要一个过程来实现,在这一过程中是处于高低电平之间一种不稳定状态,称为抖动。抖动时间的长短,频率的高低与按键机械特征有关,一般在5到10ms之间。这就有可能造成CPU对一次按键过程进行多次处理。为了避免这种情况应采取措施消除抖动。消抖常见有两种方法,硬件消抖:如用滤波器,双稳态电路等。另一种用软件来实现,即当发现有键按下时,间隔10ms以上时间,才能进行下一次查询,这样就让过了抖动过程,键的释放进行同样处理。本设计为减少电路复杂程度,减少成本。采用软件消抖的方法。3.4LCD1602显示电路字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面以XX太阳人电子的1602字符型液晶显示器为例,介绍其用法。一般1602字符型液晶显示器实物如图3.4.图3.4LCD1602字符型液晶显示器实物图LCD1602液晶显示器是一种字符点阵式LCD显示器模块。它不仅能够显示阿拉伯数字,而且还能够显示特殊的符号,以及英文字母〔即英文语句提示信息,因此其用途比较灵活,应用比较广泛,当然价格也较高。单片机STC89C52从接收器得到的数据运算程序后,结果传送给1602LCD数据端并在液晶屏上显示出。显示电路如图3.4所示。LCD1602采用标准的14脚〔无背光或16脚〔带背光接口,各引脚接口说明如表3-2所示:表3-2LCD功能引脚表编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极在仿真的过程中,PROTEUS里面找不到LCD1602这个液晶显示的芯片,但找到了LM016L液晶显示模块。通过查找资料这两款液晶显示的芯片功能差不多,仅有少数引脚与LCD1602有差别,但是功能却一样。所以在仿真的过程中并不影响整个设计的效果。P0.0--P0.7用作LCD1602的数据输入,P2.5,P2.6,P2.7用作LCD的控制端。LCD1602与STC89C52单片机的仿真连线如图3.5所示。图3.5LCD1602显示电路3.5开锁电路的设计本设计中,发光二极管亮就表示开锁,用继电器来控制发光二极管亮或灭,输入密码正确,继电器动作,发光二极管点亮,输入密码错误,发光二极管保持灭的状态。为更好的驱动继电器需要接一个三极管。开锁电路与单片机的连线如图3.6。图3.6开锁电路3.6报警电路报警电路由蜂鸣器和单片机组成。选择一只压电式蜂鸣器,压电式蜂鸣器工作时需要约100mA的驱动电流。蜂鸣器电路如图所示。当STC89C52的P3.0口输出为低电平时,蜂鸣器产生蜂鸣音。STC89C52输出为高电平时,蜂鸣器不发音。然而在PROTEUS仿真的过程中,电脑里放置的元器件并没有报警,为了更清楚的显示现象所以在这里的仿真仅仅是用一个发光二极管代替,三次没有输对密码之后,发光二极管点亮,代表报警。图3.7报警电路3.7仿真效果图系统电路总图是将单片机最小系统〔包括晶振以及复位电路和报警电路,开锁电路以及LCD1602显示电路组合在一起,由单片机的引脚控制各个模块的功能实现。具体的引脚控制以及模块的放置如图3.8仿真效果图。3.8仿真效果图软件设计4.1PROTEUS仿真软件Proteus软件是英国LabCenterElectronics公司出版的EDA工具软件<该软件中国总代理为XX风标电子技术>。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具<仿真软件>,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,20XX又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MATLAB等多种编译器。图4.1PROTEUS进入画面图4.2PROTEUS功能布局PROTEUS有丰富的器件库:超过27000种元器件,可方便地创建新元件;智能的器件搜索:通过模糊搜索可以快速定位所需要的器件;智能化的连线功能:自动连线功能使连接导线简单快捷,大大缩短绘图时间;支持总线结构:使用总线器件和总线布线使电路设计简明清晰;可输出高质量图纸:通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供WORD、POWERPOINT等多种文档使用。完善的电路仿真功能ProSPICE混合仿真:基于工业标准SPICE3F5,实现数字/模拟电路的混合仿真;超过27000个仿真器件:可以通过内部原型或使用厂家的SPICE文件自行设计仿真器件,Labcenter也在不断地发布新的仿真器件,还可导入第三方发布的仿真器件;多样的激励源:包括直流、正弦、脉冲、分段线性脉冲、音频〔使用wav文件、指数信号、单频FM、数字时钟和码流,还支持文件形式的信号输入;丰富的虚拟仪器:13种虚拟仪器,面板操作逼真,如示波器、逻辑分析仪、信号发生器、直流电压/电流表、交流电压/电流表、数字图案发生器、频率计/计数器、逻辑探头、虚拟终端、SPI调试器、I2C调试器等;生动的仿真显示:用色点显示引脚的数字电平,导线以不同颜色表示其对地电压大小,结合动态器件〔如电机、显示器件、按钮的使用可以使仿真更加直观、生动;高级图形仿真功能〔ASF:基于图标的分析可以精确分析电路的多项指标,包括工作点、瞬态特性、频率特性、传输特性、噪声、失真、傅立叶频谱分析等,还可以进行一致性分析;4.2KEIL编译软件KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境〔μVision将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。图4.3KEILuVision4进入画面20XX2月发布KeilμVision4,KeilμVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。C51工具包的整体结构,μVision与Ishell分别是C51forWindows和forDos的集成开发环境<IDE,可以完成编辑、编译、连接、调试、仿真等整个开发流程。然后分别由C51及C51编译器编译生成目标文件〔.obj。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件<.abs。abs文件由OH51转换成标准的hex文件。图4.4KEILuVision4功能页面4.3普中ISP自动下载软件编译好程序之后,要生成.HEX的文件,通过这个软件下载到单片机开发板上,这个软件有以下优点:1.接收从串口进来的数据并在窗口显示2、所接收到的数据数据显示方式可以选择为字符方式或者HEX方式3、中文显示无乱码,且不影响速度4、串口波特率可以选择为110bps-115200bps5、可以选择"5、6、7、8"四种数据长度6、可以选择为"1、1.5、2"三种停止位<1.5停止位需要硬件支持>7、第9位数据可以选择为"无、奇校验、偶校验、1、0"四种方式8、串口设置和字符串操作等设置在程序关闭时自动保存,打开时自动载入9、可以选择在发送窗口按键即发送该键值10、可以在字符串输入框输入您想发送的字符串,并发送11、可以在字符串输入框输入您想发送的HEX数据串,数据的值从00到FF,没有任何限制12、可以定时重复发送数据,并可以设置发送时间间隔13、可以在发送字符串时选择发送新行,即自动加上回车换行14、可以自由控制当前串口的DTR、RTS信号线的输出状态15、可以打开一个文本文件或者一个二进制文件预览其内容,查看方式可以是文本方式16、可以打开一个文本文件或者一个二进制文件并以当前波特率发送到串口17、可以保存窗口内容到一个文本文件18、可以即时显示发送的字节数和接收到的字节数,按清除窗口将会清零19、带有常用MCU设备ISP上载功能20、这是个绿色软件,单个文件即可执行,不会给您的机器增加任何负担当把单片机开发板串口连接到电脑上之后,要选择芯片类型,在本次的设计中使用的是STC89C52,串口号是电脑自动帮你选择哪个串口,波特率使用110默认值就行,但是下载速度较慢。然后就是点打开文件,找到编译好的.HEX的文件点击下载程序就行了。图4.5普中ISP下载页面4.4程序流程图返回返回报警关门按下?保存新密码修改密码SET按下?开门次数=3?次数+1LCD初始化键盘扫描开始输入密码密码正确NYYNNY设计、调试和测试结果与分析本次的课程设计,开始是完全没有头绪,完全不知道怎么写,因为平常都是上课学到的一些短程序实现比较单一功能的程序,这次却要写一个大程序实现这么多的功能,确实是个不小的挑战。然后先把流程图试着画出来,对着流程图试着写程序,因为考虑到用C语言比用汇编写要思路更清楚,写好了一些程序,然后运行没有错误,连好线之后,下载到单片机开发板上出现了以下的问题:输入密码之后程序返回不正确,例如:输对密码应该显示OK,但是却会跳到显示inputpassword去。三次输错密码之后,应该蜂鸣器工作模仿报警的功能的,蜂鸣器却没有响。3、模仿关门的动作按键按下之后,板子没有响应。经过对程序和连线的排查,发现有问题的是程序问题,连线严格按照程序连接是正确的。经过自己和班上其他软件方面比较好的同学一起探讨,发现程序的返回不正确。修改了程序之后,蜂鸣器还是坏的,换了别人的板子把自己的程序下载进去发现并没有什么问题,由此判定是板子的蜂鸣器坏了,然后把板子的蜂鸣器卸了重新焊接了一个蜂鸣器上去,然后继续检测已经能基本实现全部功能。测试结果即为在前面实物图展示之后描述的那样,程序的返回确实影响了整个实物展示的效果,所以这也是在画流程图时没有注意到,应该在每个细节都特别的慎重和小心。实物及功能展示本次的课程设计可以在单片机开发板上就能实现其全部功能,所以不需要自己焊接其他电路,上面展示开发板上的效果即要求所需要的全部功能。当把程序下载到单片机开发版之后,开始运行程序,可以看到的是LCD1602显示的是"inputpassword"的字符,提示输入密码,密码错误,则显示"errorinputagain"提示再次输入密码,此时由软件建立一个标志位,次数达到三次即使蜂鸣器工作,产生报警。图中不能显示报警的工作,但是老师检查确实是工作了。然后在输对密码之后,显示的是"welcome",表示密码箱的锁已经打开,另外,在输对密码,箱子打开的同时,可以进行修改密码,显示的是"changepassword",代表可以进行修改密码,修改密码之后将记住新的密码,特别的方便。还有在显示"welcome"的时候,有一个模仿完成操作之后关密码箱门的按键,按下之后将返回到输入密码的的阶段,即显示"inputpassword"。但是这个设计还不是很完美的,存在一些些问题,例如,它没有掉电保护。即使是在开锁的时候修改好了密码,但是在掉电之后修改后的密码就没用了,上电芯片工作密码还是恢复了初始的密码。图5.1提示输入密码图5.2输入密码正确图5.3输入密码错误图5.4修改密码图5.5修改密码成功设计小结此次的课设让我们在无论在理论还是动手能力上都有了一个比较大的提升。而且还锻炼我们从分块设计到整体设计及排除故障的能力。单片机电子密码锁主要应用矩阵键盘扫描技术、单片机、LCD显示器等方面的知识,寻找了大量的文献资料,硬件和软件相结合,制作出实物模型,并且产生了很好的效果。本设计主要应用于防盗的场所,虽然这只是一个简单的系统,但对以后关于LCD显示和键盘扫描进一步研究提供了重要的入门准备。特别是加深对硬件的调试的认识。通过本次毕业设计,让我对单片机C语言的有了更高的理性认识,对单片机的C语言编程和LCD有了更深入的了解,提高了自己的实践动手综合能力。本次单片机设计经过三周的查资料、整理材料、做实验,到现在已经把课设完成。此次的课设较好的检测了自身的理论学习水平,实践动手能力及理论结合实际的能力。通过这次的课程设计提高了自身的分析处理问题能力和自学能力,更进一步地增强自身的动手能力。在课堂上学的东西要是没有真正的去做出来的话是没有办法说明那个知识已经被吸收了。而在动手中从发现问题到解决问题,在这个过程中,正是在提升自己。我们学了单片机的知识,有了这些理论,可以做出很多有趣的东西,这也是电子的魅力。刚好学校也提供了这样的环境,我想要多锻炼一下自己的动手能力,更好的理解课堂上的学到的知识。参考文献[1]谭浩强.C语言设计.北京:清华大学出版社,1991.10.[2]孙涵芳.MCS-51/96系列单片机原理及应用.北京:北京航空航天大学出版社,1996.9.[3]徐惠民,安德宁.单片微型计算机原理接口与应用.北京:北京邮电大学出版社,1996.7.[4]王福瑞.单片微机测控系统设计大全.北京:北京航空航天大学出版社,1997.5.[5]夏继强.单片机实验与实践教程.北京:北京航空航天大学出版社,2001.12.[6]周航慈.单片机程序设计基础.北京:北京航天航空大学出版社,2004.3.[7]王效华,张咏梅.单片机原理与应用.北京:北京交通大学出版社,2007.1[8]郭天祥.51单片机C语言教程.北京:电子工业出版社,2008.8.附录电路原理图程序代码:#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharsbitbuzzer=P3^2;sbitrs=P2^6;//1602的数据/指令选择控制线sbitrw=P2^5;//1602的读写控制线sbiten=P2^7;//1602的使能控制线sbitkey0=P3^7;sbitkai=P3^1;uchartable[10];ucharkeycmp[4];ucharkeyword[4]={2,9,3,8};ucharnum=0,flg=0,key=0,ala=0,in=0;voidclose<>{ kai=1;}voidkaisuo<>{ kai=0;}voiddelay<uintx>{ uinti,j; for<i=x;i>0;i--> for<j=110;j>0;j-->;}voidalarm<>{ num=0; buzzer=0; delay<10000>; buzzer=1;}voidlcd_wcom<ucharcom>//1602写命令函数{rs=0;//选择指令寄存器rw=0;//选择写P0=com;//把命令字送入P0delay<5>;//延时一小会儿,让1602准备接收数据en=1;//使能线电平变化,命令送入1602的8位数据口en=0;}voidlcd_wdat<uchardat>//1602写数据函数{rs=1;//选择数据寄存器rw=0;//选择写P0=dat;//把要显示的数据送入P0delay<5>;//延时一小会儿,让1602准备接收数据en=1;//使能线电平变化,数据送入1602的8位数据口en=0;}voidlcd_init<>//1602初始化函数{lcd_wcom<0x38>;//8位数据,双列,5*7字形lcd_wcom<0x0c>;//开启显示屏,关光标,光标不闪烁lcd_wcom<0x06>;//显示地址递增,即写一个数据后,显示位置右移一位lcd_wcom<0x01>;//清屏}voiddisplay<>{ uchari,j; j=num+0x46; lcd_wcom<0x80+j>; i=keycmp[num]; i=i+0x30; table[0]=i; lcd_wdat<table[0]>;}voidright<>{ ucharn=0; ucharcodetable1[]="welcome"; lcd_wcom<0x01>; //清屏 lcd_wcom<0x84>; //显示地址 for<n=0;n<7;n++> { lcd_wdat<table1[n]>; delay<200>; } num=0; flg=2; in=1; kaisuo<>;}voidindisplay<>{ ucharn=0; ucharcodetable5[]="inputpassword"; lcd_wcom<0x01>; lcd_wcom<0x80>; for<n=0;n<14;n++> { lcd_wdat<table5[n]>; delay<200>; }}voidsetdisplay<>{ ucharn=0; ucharcodetable2[]="changepassword"; lcd_wcom<0x01>; lcd_wcom<0x80>; for<n=0;n<15;n++> { lcd_wdat<table2[n]>; delay<200>; }}voiderror<>{ ucharn,m; ucharcodetable3[]="ERROR!"; ucharcodetable4[]="inputagain"; lcd_wcom<0x01>; lcd_wcom<0x85>; for<n=0;n<6;n++> { lcd_wdat<table3[n]>; delay<100>; } lcd_wcom<0x80+0x42>; for<m=0;m<11;m++> { lcd_wdat<table4[m]>; delay<100>; } ala=ala+1; num=0; flg=2; if<ala==3> { alarm<>; ala=0; delay<1000>; }}voidset<>{ if<in==1> { num=0; flg=1; setdisplay<>; } elseerror<>; }voidokdisplay<>{ ucharn; ucharcodetable6[]="OK"; lcd_wcom<0x01>; lcd_wcom<0x87>; for<n=0;n<2;n++> { lcd_wdat<table6[n]>; delay<100>; }}voidok<>{ uchari=0; if<flg==0> { for<i=0;i<4;i++> if<keyword[i]!=keycmp[i]> { error<>; return; } if<num==4> { right<>; return; } } if<flg==1> { if<num==4> { num=0; for<i=0;i<4;i++> keyword[i]=keycmp[i]; okdisplay<>; flg=2; return; } elseerror<>; return; } if<flg==2> { ucharaa,bb; while<1> { P1=0xfb;//检测第3列 aa=P1; if<aa!=0xfb> { delay<5>;//去抖 bb=P1; if<bb==0xbb> {break;} } } indisplay<>; num=0; flg=0; return; }}voidkeyscan<>{ uchartemp1,temp2,temp3; P1=0xfe;//令第一行为低电平,检测第1行 temp1=P1; if<temp1!=0xfe> { delay<5>;//去抖 temp2=P1; if<temp1==temp2> { switch<temp2> { case0xf6: if<num<4> { key=1; keycmp[num]=key; display<>; num++; } elseerror<>; break; case0xee: if<num<4> { key=4; keycmp[num]=key; display<>; num++; } elseerror<>; break; case0xde: if<num<4> { key=7; keycmp[num]=key; display<>; num++; } elseerror<>; break; case0xbe: set<>; break; }

温馨提示

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

评论

0/150

提交评论