




已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
四川交通职业技术学院毕业设计题 目: 基于单片机的智能电子密码锁 专 业: 电子信息技术工程 学 生: 曾刚阳 学 号: 20131418 指导老师: 张老师 日期: 2015 年11 月5 日2基于单片机的智能密码锁设计摘 要电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁,特点如下: 1保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。 2密码可变。 用户可以经常更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。 3误码输入保护。当输入密码多次错误时,报警系统自动启动。 4. 电子密码锁操作简单易行,一学即会。关键字;单片机 LED数码管 矩阵键盘 密码锁AbstractElectronic Code Lock is a password input through the control circuit, or chip, thus controlling the closed mechanical switch to complete the lock, closed the task of electronic products. It is of many types, have a simple circuit products, but also the higher cost chip-based products. Now the widely used electronic code lock is a chip at the core, achieved through programming. Performance and safety have greatly exceeded the mechanical lock, the following features: 1. Privacy is good, coding quantity is far greater than the spring lock. Random unlocking success rate is almost zero. 2. Password variable. Users can always change the password, to prevent password theft, but also avoids the lock because of staff turnover Er Shi and drawing down. 3. Error input protection. When you enter your password wrong several times, the alarm system started automatically. 4. E-lock operation is simple, a school that will. Keywords; MCU LED digital tube matrix keypad lock 目 录1 概述11.1 引言11.2 电子密码锁的背景21.3 电子锁设计的意义和本设计的特点22 系统模块电路的设计42.1系统总设计结构图42.2 AT89C51单片机42.2.1 引脚介绍42.2.2最小系统82.3 键盘模块102.4 显示模块112.5 开锁模块122.6 报警模块133 系统的软件设计153.1 系统软件设计思路153.2系统软件设计流程图164 系统的仿真174.1 仿真软件介绍174.1.1 Proteus介绍174.1.2 Keil uvision4与Proteus联调184.2 仿真过程19整个软件设计的思路:19总 结23参考文献24致 谢25附录1 系统电路图26附录2 程序清单27main.c27io.c34func.c40timer.c42def.h441 概述1.1 引言随着社会物质财富的日益增长,如何实现家庭防盗这一问题也变的尤其的突出,而锁自古以来就是把守门户的铁将军,人们对它要求甚高,即要安全可靠地防盗,又要使用方便。目前普遍使用的机械锁结构简单、使用方便、价格便宜。但在使用过程中暴露了很多缺点:(1)机械锁是靠金属制成的钥匙上的不同齿形与锁芯的配合来工作的。所以很多钥匙可以互开,保密性差,安全性低。(2)钥匙一旦丢失,无论谁捡到都可以将锁打开。(3)机械锁的材料大多为黄铜,质地较软容易损坏。(4)机械锁钥匙易于复制,不适于诸如宾馆等公共场所使用。所以机械锁已难以满足当前社会和人们的要求。出于安全、方便的需要。随着人们生活水平的提高,电子密码防盗作为防盗卫士的作用日趋重要。电子密码锁用密码代替钥匙,不但省去了佩戴钥匙的烦恼,也从根本上解决了普通门锁保密性差的缺点。如果采用6位密码,则密码组合可达到,每增加1位,密码组合就增加10倍。从而提高了密码锁的安全系数。 密码锁被广泛应用保险柜、保险箱、文件柜、防磁防火柜、防盗门、银库门、仓库门、车门、民用门等。目前市场上普遍所见的电子密码锁的密码很容易被窥探和多次试探,而丢失密码,使密码锁失去其安全性。该电子密码锁利用单片机作为主控核心,单片机(AT89C51)所具有的特殊功能使得电子密码锁的保密性能大大加强,这样就可以有效的防止多次试探密码的可能性。随着单片机和其它智能芯片的进一步开发防盗锁将实现智能化,这将是锁的安全性能大大提高。本系统实现密码一次输入的提示功能,若密码输入不正确将发出“嘀嘀”的报警声,引起他人警觉。若密码输入正确将发出“叮咚”的门铃声。本系统使用的单片机所具有强大的功能能够实现智能控制用来完成密码的输入、判断和比较从而执行相应的开锁显示或报警等功能。电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁。其特点如下:(1)保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。(2)密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。(3)误码输入保护,当输入密码多次错误时,报警系统自动启动。(4)无活动零件,不会磨损,寿命长。(5)使用灵活性好,不像机械锁必须佩带钥匙才能开锁。(6)电子密码锁操作简单易行,一学即会。1.2 电子密码锁的背景随着社会科技的进步,锁已发展到了密码锁、磁性锁、电子锁、激光锁、声控锁等等。在传统钥匙的基础上,加了一组或多组密码,不同声音,不同磁场,不同声波,不同光束光波,不同图像。(如指纹、眼底视网膜等)来控制锁的开启。从而大大提高了锁的安全性,使不法之徒无从下手,人们也就能对自身财产安全有了更多的保障。当今安全信息系统应用越来越广泛,特别在保护机密、维护隐私和财产保护方面起到重大作用,而基于电子密码锁的安全系统是其中的组成部分,因此研究它具有重大的现实意义。1.3 电子锁设计的意义和本设计的特点单片机,亦称单片微电脑或单片微型计算机。它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口 (I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。 计算机的产生加快了人类改造世界的步伐,但是它毕竟体积大。微计算机(单片机)在这种情况下诞生了,它为我们改变了什么?纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC 卡、电子宠物等,这些都离不开单片机。以前没有单片机时,这些东西也能做,但是只能使用复杂的模拟电路,然而这样做出来的产品不仅体积大,而且成本高,并且由于长期使用,元器件不断老化,控制的精度自然也会达不到标准。在单片机产生后,我们就将控制这些东西变为智能化了,我们只需要在单片机外围接一点简单的接口电路,核心部分只是由人为的写入程序来完成。这样产品的体积变小了,成本也降低了,长期使用也不会担心精度达不到了,且容易升级改善。电子锁可以在日常生活和现代办公中,住宅与办公室的安全防范、单位的文件档案、财务报表以及一些个人资料的保存等多种场合使用。大大提高了主人物资的安全性,安全可以代替老式机械锁。目前使用的密码锁种类繁多,各具特色。本文从经济实用的角度出发,采用AT89C51单机,研制了一款具有防盗自动报警功能的电子密码锁。该密码锁设计方法合理,简单易行,成本低,符合住宅、办公室用锁要求,具有一定的推广价值。(1)系统设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。(2)密码由用户自己设定,在开锁状态下,用户可自行修改密码。(3)具有自动报警功能,若密码输入错误3次,由蜂鸣器发出报警声,保证了系统的安全性。系统工作时,用户通过按键输入6位密码,单片机将输入密码与设定密码进行比较,若密码正确,则发出开锁信号,将锁打开,系统不报警;若密码不正确,则有相应的指示灯闪动,并要求重新输入密码,重新输入密码的次数不能超过3次,若3次输入的密码都不正确,则发出报警信号。2 系统模块电路的设计2.1系统总设计结构图密码输入电路AT89C51显示电路密码修改电路开锁电路报警电路时钟电路图2.1系统结构图本设计以AT89C51为主控芯片,主要由以下几个部分组成:复位电路、时钟电路、键盘部分、显示部分、报警部分等组成,下面将对以上几个部分一一介绍。2.2 AT89C51单片机2.2.1 引脚介绍AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及AT80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89C51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,片内时钟振荡器。图2.2 AT89C51引脚此外,AT89C51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。其主要功能特性:兼容MCS-51指令系统 4k可反复擦写(1000次)Flash ROM32个双向I/O口 4.5-5.5V工作电压2个16位可编程定时/计数器 时钟频率0-33MHz全双工UART串行中断口线 128x8 bit内部RAM2个外部中断源 低功耗空闲和省电模式中断唤醒省电模式 3级加密软件设置空闲和省电功能 双数据寄存器指针可以看出AT89C51提供以下标准功能:4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个数据指针,两个16位定时器/计数器,一个5向量两级中断结构,一个全双工串行通信口,以及片内振荡器和时钟。同时, AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式时停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式是在RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到一个硬件复位。AT89C51引脚功能说明:VCC:电源电压GND:地P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口,作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端口。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号校验期间,P1接收低8位地址。P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流I。在访问位地址的外部数据存储器(如执行:MOVX Ri 指令)时,P2口线上的内(也即特殊功能寄存器,在整个访问期间不改变。Flash 编程或校验时,P2也接收高位地址和其它控制信号。P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端口时,被外部拉低的P3口将用上拉电阻输出电流I。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,P3口的第二功能如下表(表2.1)表2.1 P3口的第二功能端口功能第二功能端口引脚第二功能RXD(P3.0)串行输入口T0(P3.4)定时/计数器0外部输入TXD(P3.1)串行输出口T1(P3.5)定时/计数器1外部输入INT0(P3.2)外中断0WR(P3.6)外部数据存储器写选通INT1(P3.3)外中断1RD(P3.7)外部数据存储器读选通RST:复位输入。当振荡工作时,RST引脚出现两个机器周期上高电平将使单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不再访问外部存储器,ALE仍以时钟振荡频率的1/6输出的正脉冲信号,因此它可对外输出时钟或用于定时目地,要注意的是:当访问外部数据存储器时将跳过一个ALE脉冲。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置禁位后,只有一条MOVX 和MOVC指令ALE才会被激活。此外,该引脚伎被微弱拉高,单片机执行外部程序时,应设置ALE无效。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。当访问外部数据存储器,高有两次有效的PSEN信号。EA/VPP:外部访问允许。欲使CPU访问外部程序存储器(地址0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上12V的编程电压VPP。XTAL1:振荡器反相放大器及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。2.2.2最小系统图2.3单片机最小系统单片机的最小化系统或者称为最小应用系统是指单片机能正常工作所必须的外围元件,是用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路.我们采用的是AT89C51芯片,它内部自带4K的FLASH程序存储器,一般情况下,这4K的存储空间足够我们使用,所以我们将AT89C51芯片的第31脚固定接高电平(PCB画板时已经接死),所以我们只用芯片内部的4K程序存储器。单片机的时钟电路有一个12M的晶振和两个30P的小电容组成,它们决定了单片机的工作时间精度为1微秒。复位电路由22UF的电容和1K的电阻及IN4148二极管组成,以前教科书上常推荐用10UF电容和10K电阻组成复位电路,这里我们根据实际经验选用22UF的电容和1K的电阻,其好处是在满足单片机可靠复位的前提下降低了复位引脚的对地阻抗,可以显著增强单片机复位电路的抗干扰能力。二极管的作用是起快速泄放电容电量的功能,满足短时间多次复位都能成功晶体振荡器,简称晶振,其作用在于产生原始的时钟频率,这个频率经过频率发生器的放大或缩小后就成了电脑中各种不同的总线频率。以声卡为例,要实现对模拟信号44.1kHz或48kHz的采样,频率发生器就必须提供一个44.1kHz或48kHz的时钟频率。如果需要对这两种音频同时支持的话,声卡就需要有两颗晶振。但是现在的娱乐级声卡为了降低成本,通常都采用SCR将输出的采样频率固定在48kHz,但是SRC会对音质带来损害,而且现在的娱乐级声卡都没有很好地解决这个问题。现在应用最广泛的是石英晶体振荡器。石英晶体振荡器是一种高精度和高稳定度的振荡器,石英晶体振荡器也称石英晶体谐振器,它用来稳定频率和选择频率,是一种可以取代LC谐振回路的晶体谐振元件。石英晶体振荡器广泛的应用在电视机、影碟机、录像机、无线通讯设备、电子钟表、单片机、数字仪器仪表等电子设备中。石英晶体振荡器为数据处理设备产生时钟信号和为特定系统提供基准信号。在单片机中为其提供时钟频率。石英晶体振荡器是利用石英晶体(二氧化硅的结晶体)的压电效应制成的一种谐振器件,它的基本构成大致是:从一块石英晶体上按一定方位角切下薄片(简称为晶片,它可以是正方形、矩形或圆形等),在它的两个对应面上涂敷银层作为电极,在每个电极上各焊一根引线接到管脚上,再加上封装外壳就构成了石英晶体谐振器,简称为石英晶体或晶体、晶振。其产品一般用金属外壳封装,也有用玻璃壳、陶瓷或塑料封装的。只要在晶体振子板极上施加交变电压,就会使晶片产生机械变形振动,此现象即所谓逆压电效应。当外加电压频率等于晶体谐振器的固有频率时,就会发生压电谐振,从而导致机械变形的振幅突然增大。图2.4晶振电路原理图复位电路:由电容串联电阻构成,由图并结合电容电压不能突变的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C 取10u,R取8.2K.当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平.图2.5复位电路原理图2.3 键盘模块由于本设计所用到的按键数量较多而不适合用独立按键式键盘。采用的是矩阵式按键键盘,它由行线和列线组成,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多I/O口。本设计中使用的这个4*3键盘不但能完成密码的输入还能作特别功能键使用,比如清空显示功能等。键盘的每个按键功能在程序设计中设置 。当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描法;另一种是速度较快的线反转法。首先辨别键盘中有无按键按下,由单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。方法是:向列线输出全扫描字00H,把全部列线置为低电平,然后将行线的电平状态读入累加器A中。如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。图2.6按键键盘共计数字键10个,功能键2个,用43组成09数字键、确认键Enter及修改键CCC,10个数字键用来输入密码,另外2个功能键分别是:CCC、Enter.其中CCC键的功能是当输入密码错误的时候,清除前面已经输入的数据,重新输入。Enter键的功能是确认输入的密码。2.4 显示模块图2.7 七段数码管七段LED显示器由7个发光二极管组成,其中7个长条形的发光管排列成“日”字形,如上图所示,由七个发光二极管组成的七段显示器。如再加一个贺点形的发光管在显示器的右下角作为显示小数点用,则组成八段LED显示器。它能显示各种数字及部份英文字母。LED显示器有两种不同的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳LED显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴LED显示器。如图2.8所示:图2.8 LED数码显示器共阴和共阳结构的LED显示器各笔划段名和安排位置是相同的。当二极管导通时,相应的笔划段发亮,由发亮的笔划段组合而显示的各种字符。8个笔划段hgfedcba对应于一个字节(8位)的D7 D6 D5 D4 D3 D2 D1 D0,于是用8位二进制码就可以表示欲显示字符的字形代码。在单片机系统中,通常用LED数码显示器来显示各种数字或符号。由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。2.5 开锁模块本设计所用的开锁部分由电机(Motor)来实现,这种电机有两根引线,更换两根引线的极性,电机换向。该驱动电路要求能进行正反转和停止控制。 图2.9 开锁电路上电时由软件辅助完成初始化,使P1.0为低电平0,三极管不导通,若密码输入正确,P1.0输出高电平1,三极管导通,电机转动,锁打开。2.6 报警模块报警电平由P1.1控制,上电后同样是由软件完成初始化为0状态。在3次输入密码错误的情况下,由P1.1输出高电平,三极管Q1导通,由喇叭报警,蜂鸣器发出连续的响声,约30S。密码错误输入达3次后,由P1.0输出0,开锁信号封锁。同时定时器开始计时,30S后才能再次输入密码尝试开锁。图2.10 报警电路3 系统的软件设计3.1 系统软件设计思路密码锁的软件设计可分为以下几个部分:主程序、密码初始化子程序、键盘输入子程序、密码检查子程序、密码错误报警子程序、T0定时中断服务子程序和延时子程序组成。(1)密码锁设计的关键问题是实现密码的输入、清除、更改、开锁等功能:(2)密码输入功能:按下一个数字键,一个“”就显示在数码管上。(3)密码清除功能:当按下清除键时,清除前面输入的所有值,并清除所有显示。(4)密码更改功能:将输入的值作为新的密码。(5)开锁功能:当按下开锁键,系统将输入与密码进行检查核对,如果正确锁打开,否则不打开。主要的设计过程:第一步,用Proteus进行硬件电路的设计。第二步,用Keil软件进行电子密码锁的程序设计、仿真、软件调试。第三步,用PROTEUS进行模拟软、硬件调试,仿真。3.2系统软件设计流程图图3.1软件设计流程图 4 系统的仿真4.1 仿真软件介绍4.1.1 Proteus介绍由于计算机技术的飞速发展,许多领域都出现了仿真系统,明显促进了各领域科技事业的发展,仿真技术的出现与发展是科技发展的必然结果,是现代科技的关键技术之一,并逐渐成为科技人员的必备技术。Proteus是英国Labcenter公司研发的多功能EDA。Proteus是模拟电路、数字电路、模数混合电路的设计与仿真平台;更是单片机系统先进的设计与仿真平台。它真正实现了在计算机上完成从原理图与电路设计、电路分析与仿真、单片机代码级调试与仿真、系统测试与功能验证到形成PCB的完整的设计与仿真过程。它得到了越来越多的从事单片机事业的教师、工程技术人员以及众多的大学生和单片机技术爱好者的青睐。Proteus支持51、PIC、AVR、ARM7等多个系列的单片机芯片,集编辑、编译、仿真调试于一体。它的界面简洁友好,可利用该软件提供的数千种数字/模拟仿真元器件以及丰富的仿真设备,使得在程序调试、系统仿真时不仅能观察到程序执行过程中单片机寄存器和存储器等内容变化,还可从工程的角度直观地看到外围电路工作情况,非常接近工程应用。另外Proteus还能与第三方集成开发环境(如Keil的Vision)进行联合仿真调试,给予开发人员莫大便利。本设计以51单片机构成的99秒马表为例描述基于Proteus的硬件设计、基于Keil C的软件设计以及它们的联合仿真调试过程。该软件的特点是:(1)集原理图设计、仿真和PCB设计于一体,真正实现从概念到产品的完整开发工具。(2)具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真,是独一无二的支持处理器与外围电路的协同仿真电路设计软件。(3)具有全速、单步、设置断点等多种形式的调试功能。(4)具有各种信号源和电路分析所需的虚拟仪表、是电类教学实验与创新的最侍平台。(5)支持Keil C51 uVision4、MTLAB等第三方的软件编译和调试环境。(6)具有强大的原理图到PCB板设计功能,可输出多种格式的电路设计报表。4.1.2 Keil uvision4与Proteus联调随着嵌入式系统应用不断扩大,功能不断增强,为了对整个系统及其所操作的部件、装置等资源进行统一协调、指挥和有效控制,使开发人员只专注于应用程序设计,在嵌入式系统中引入操作系统是非常必要的。C/OSII是源码公开的实时多任务操作系统,具备足够的稳定性和安全性,特别适合用于中小型嵌入式系统中。C/OSII的具体介绍和移植过程请见参考文献1。Keil公司的Keil Vision4,是目前使用最为广泛的开发环境之一。这里介绍在Keil Vision4环境下基于C/OSII嵌入式操作系统的用户程序设计。设计两个任务: 任务1为数码管显示,调用系统延时函数实现;任务2为按键判断,属于中断级任务。数码管显示和按键判断任务之间用信号量实现通信;其中按键任务发出信号量,数码管显示任务负责接收信号量。系统联调:在Proteus硬件电路图和Keil C程序设计完成之后,接着进行联合仿真。此时需要对Proteus和Keil两个软件进行简单的配置,具体配置过程见参考文献9。同时打开电路仿真图和C工程文件,在Keil中启动调试“DebugStart/Stop Debug Session”,并运行DebugGo,此时Proteus仿真被Keil启动,在Keil和Proteus中都可以观察运行状态。程序运行后,可看到数码管显示情况,当按下按键,数码管显示作相应切换。 结语:基于Proteus电路设计、Keil程序设计以及它们联合仿真调试的方法,建立了单片机系统硬件设计、软件设计以及调试的全虚拟环境,使得全部的设计工作基于PC就能完成,显著提高了设计开发效率,降低开发风险,这对嵌入式方案设计无疑是一个很好的思路。4.2 仿真过程整个软件设计的思路:(1)开机,七段数码管数段转动,之后依次显示“HELLO”,然后依次显示“P_”(2)继(1),等待十秒后,数码管再次转动,重新显示“P_”(3)继(1),输入“1”,显示“E6_”,输入“666666#”,依次显示“EE P_”,输入三次错误后,显示“EE3”,然后转动n多次并由蜂鸣器报警,再后“HELLO P_”(4)继(1),输入“111111#”,后数码管显示“J”,之后便不断显示“8”(5)继(4),按“*”,“old”,输入“111111#”,显示“np1”,“222222#”,显示“np2”,“222222#” 提示“J”,继续显示“8”,修改密码成功(6)继(1),密码输入连续错误三次,蜂鸣器发出持续报警声,并锁定键盘。(7)开关在未正确输入密码时,不起作用,当已经“解锁”时,可以使其返回锁定状态(修改密码时,无提示,可以继续更改)(8)在输入过程中,如果输入一定长度密码后,按“*”,显示“cc”,转动;如果在输入密码时候密码长度为零,则显示“C”,转动。仿真过程如下:图 4.1开锁的瞬间开机,七段数码管数段转动,依次显示HELLO;图4.2 开机界面当数码管依次显示P-时(如图4.3),可以进行密码的输入,输入完毕按Enter键,若输入正确则锁打开,数码管显示J,之后显示闪烁的8此时按数字键无效,如下(图4.4),蜂鸣器发出滴答的鸣音:图4.3 密码输入提示若开机显示欢迎界面HELLO后,超过20秒而未进行密码的输入,则蜂鸣器发出滴滴滴滴的响声,同时数码管重新显示HELLO的欢迎界面,以此提示用户输入密码.图4.4(a) 密码正确的状态图4.4(b) 锁打开后数码管显示若输入密码错误,则锁不能打开,数码管显示E(表示error密码错误)如图4.5,,然后依次显示P-提示重新输入密码,并且蜂鸣器响,数码管的显示如下:图4.5(a)密码错误的状态图4.5(b)密码错误显示若密码输入连续三次错误,则蜂鸣器发出持续鸣音约30秒,数码管依次显示E3,然后数段不停的转动如下图(图4.6),此过程中密码锁锁定,不能进行密码输入。图4.6 数码管数段转动修改密码的过程:只有在输入密码正确的情况下才可以进行密码的修改,锁打开后,按CCC键,数码管依次显示OLd,表示要输入密码锁的原始密码,按Enter键,输入成功,数码管显示np1,然后输入所要修改的新密码并按Enter键,显示np2,再次输入新密码,无误,数码管显示正确,用一个符号J表示,密码修改完成。总 结在没有做毕业设计前觉得毕业设计只是对所学知识的单纯总结,但是通过这次做毕业设计发现自己的看法有点太片面。毕业设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。通过这次毕业设计使我明白了自己原来知识还比较欠缺。自己要学习的东西还太多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。通过这次课程设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。实践是检验真理的唯一标准,当然也是检验学习成果的标准。在经过一段时间的学习之后,我们需要了解自己的所学应该如何应用在实践中,因为任何知识都源于实践,归于实践,所以要将所学的知识在实践中来检验。不管学会的还是学不会的的确觉得困难比较多,真是万事开头难,不知道如何入手。最后终于做完了有种如释重负的感觉。此外,还得出一个结论:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。程序的设计思想的精巧的重要性,是不管怎么说都不为过的,好的设计可以让大家很快的明白你的思想,而且很方便的来实现它。良好的编程习惯,它可以使你的程序很方便的被别人阅读,也很方便的被更改,所以可以的话,尽可能多的写出注释,没有人会闲你写的太多。 在设计过程中,通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次毕业设计的最大收获和财富,使我终身受益。对我而言,知识上的收获重要,精神上的丰收更加可喜。让我知道了学无止境的道理。我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。挫折是一份财富,经历是一份拥有。参考文献参考文献1 李朝青.单片机原理及接口技术(简明修订版)M.北京:北京航空航天大学出版社,19982彭为. 单片机典型系统设计实例精讲.北京:电子工业出版社,2006.53公茂法. 单片机人机接口实例集M.北京:北京航空航天大学出版社,1998.24康华光. 电子技术基础数字部分M.北京:高等教育出版社,2004.15彭介华. 电子技术课程设计指导M.北京:高等教育出版社,2004.26窦振中.单片机外围器件实用手册存储器分册.北京:北京航空航天大学出版社,2004. 37Kundur P. Power System Stability and Control. New York: MC Graw-Hill, 1994 8 杨将新,李华军,刘到骏等.单片机程序设计及应用(从基础到实践)J电子工业出版社,20069 Steven F.Barrett.Daneil J.Pack.Embedded SystemM.北京:电子工业出版社,200610 黄智伟.全国大学生电子设计竞赛训练教程M.北京:电子工业出版社, 2005附录1 系统电路图基于单片机的智能密码锁设计附录2 程序清单main() init() changepassword() check() check2() close();主函数 初始化 修改密码 验证 验证新密码 关闭锁中断服务main.c#include #include def.h char passwordMAX_LENGTH=1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0;/保存密码char bufferMAX_LENGTH;/记录输入串char buffer2MAX_LENGTH;char keycode = 0;/当前输入键盘码char status = 0;/状态 0:关闭,1:开启 或者类型为sbitchar tmp , i , j ;/临时变量char time = 0;/记录密码次数void init();void changePassword();void check();void check2();extern void beep();extern void delay(unsigned int x);extern void display(char dis);extern char getch();extern char input(char *buf);extern char keyscan();extern void open();extern void roll(unsigned char x);extern void sayHello();/*/主函数void main()/P0 = DISPLAY_c;init();/初始化while(1)if(0 = status)/ 显示输入密码display(0xff);display(0xff);display(DISPLAY_P);tmp = input(buffer);if(tmp = 3)/ 显示超过输入次数display(DISPLAY_3);P1_1 = 1; roll(50);P1_1 = 0;sayHello();time = 0;elsedisplay(DISPLAY_8);keycode = keyscan();if(keycode = CCC)changePassword();/修改密码/*/初始化函数 开启中断void init(void)/TODO: 输入初始化密码P1_0 = 0;P1_1 = 0;EA = 0;/EX0 = 1;TMOD = 0x01;PT0 = 1;PX0 = 1;ET0 = 1;TR0 = 0;EA = 1;roll(3);sayHello();roll(1);/*/修改密码void changePassword()while(1)/ 显示输入密码 Pdisplay( DISPLAY_o);display( DISPLAY_L);display( DISPLAY_d);input(buffer);if(tmp = 0)/取消更改密码 或者超时return;check();if(tmp = 1)break;else/ 显示密码错误displ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025河南师范大学物理学院诚聘英才模拟试卷及答案详解(新)
- 2025广西钦州市灵山县宏丽投资集团有限公司招聘8名考前自测高频考点模拟试题及一套参考答案详解
- 2025年安徽白帝集团有限公司及所属子公司春季招聘8人模拟试卷及1套完整答案详解
- 2025湖南雪峰山高铁索道有限责任公司招聘考前自测高频考点模拟试题及答案详解(必刷)
- 2025湖南省儿童医院高层次人才公开招聘16人考前自测高频考点模拟试题及答案详解(全优)
- 2025湖南怀化市靖州苗族侗族自治县政务服务中心见习人员招聘1人考前自测高频考点模拟试题带答案详解
- 2025黑龙江双鸭山饶河县竞聘农场社区工作者笔试考前自测高频考点模拟试题及答案详解(新)
- 2025湖南湘潭市韶山学校公开招聘教师15人考前自测高频考点模拟试题附答案详解(完整版)
- 2025福建福州经济技术开发区市政工程中心第二季度招聘编外人员2人模拟试卷及答案详解(名校卷)
- 2025年湖南益阳市交通投资运营集团有限公司招聘(第一批)考前自测高频考点模拟试题及答案详解(各地真题)
- 饮品运输行业分析
- 白鹿原名著导读读书分享
- 定密理论与实务3定密的依据课件
- 同济大学信纸
- 交通运输工程施工安全监管台帐(参考)用表样表分享
- 建筑消能减震设计技术及工程实例讲解
- 电梯控制技术PPT完整全套教学课件
- 国开电大《工程数学(本)》形成性考核作业5答案
- LS/T 1201-2020磷化氢熏蒸技术规程
- HY/T 053-2001微孔滤膜
- GB/T 4798.5-2007电工电子产品应用环境条件第5部分:地面车辆使用
评论
0/150
提交评论