基于51单片机的密码锁设计-毕业设计_第1页
基于51单片机的密码锁设计-毕业设计_第2页
基于51单片机的密码锁设计-毕业设计_第3页
基于51单片机的密码锁设计-毕业设计_第4页
基于51单片机的密码锁设计-毕业设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

苏州大学本科生毕业设计(论文)i基于AT89S51与AT24C02密码锁的设计(苏州大学应用技术学院)目录前言 IC总线说明第2.1节主控芯片AT89S52AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4kbytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。2.1.1.主要性能参数与MCS-51产品指令系统完全兼容4k字节在系统编程(ISP)Flash闪速存储器1000次擦写周期4.0-5.5V的工作电压范围全静态工作模式:0Hz-33MHz三级程序加密锁128×8字节内部RAM32个可编程I/O口线2个16位定时/计数器6个中断源全双工串行UART通道低功耗空闲和掉电模式中断可从空闲模唤醒系统看门狗(WDT)及双数据指针掉电标识和快速编程特性灵活的在系统编程(ISP字节或页写模式)2.1.2.功能特性概述AT89S51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。2.1.3.引脚功能说明P0口:P0口是一组8位漏极开路型双向I/0口,也即地址/数据总线复用口。作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“l”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在F1ash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口:Pl是一个带内部上拉电阻的8位双向I/O口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。Flash编程和程序校验期间,Pl接收低8位地址。端口引脚第二功能:P1.5MOSI(用于ISP犏程)P1.6MISO(用于ISP犏程)P1.7SCK(用于ISP犏程)P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。Flash编程或校验时,P2亦接收高位地址和其它控制信号。P3口:P3口是一组带有内部上拉电阻的8位双向I/0口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“l”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的P3口将用上拉电阻输出电流。P3口除了作为一般的I/0口线外,更重要的用途是它的第二功能,如下表所示:P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。端口引脚的第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外中断0)P3.3INT1(外中断1)P3.4T0(定时/计数器0外部输入)P3.5T1(定时/计数器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRT0位(地址8EH)可打开或关闭该功能。DISRT0位缺省为RESET输出高电平打开状态。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对F1ash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条M0VX和M0VC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的PSEN信号。EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。F1ash存储器编程时,该引脚加上+12V的编程电压Vpp。XTALl:振荡器反相放大器及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。2.1.4.特殊功能寄存器这些地址并没有全部占用,没有占用的地址亦不可使用,读这些地址将得到一个随意的数值。而写这些地址单元将不能得到预期的结果。不要软件访问这些未定义的单元,这些单元是留作以后产品扩展用途的,复位后这些新的位将为0。中断寄存器:各中断允许控制位于IE寄存器,5个中断源的中断优先级控制位于IP寄存器。双时钟指针寄存器:为更方便地访问内部和外部数据存储器,提供了两个16位数据指针寄存器:DP0位于SFR(特殊功能寄存器)区块中的地址82H、83H和DP1位于地址84H、85H,当SFR中的位DPS=0选择DP0,而DPS=1则选择DP1。用户应在访问相应的数据指针寄存器前初始化DPS位。电源空闲标志:电源空闲标志(POF)在特殊功能寄存器SFR中PCON的第4位(PCON.4),电源打开时POF置“1",它可由软件设置睡眠状态并不为复位所影响。存储器结构:MCS-51单片机内核采用程序存储器和数据存储器空间分开的结构,均具有64KB外部程序和数据的寻址空间。程序存储器:如果EA引脚接地(GND),全部程序均执行外部存储器。在AT89S51,假如EA接至Vcc(电源+),程序首先执行地址从0000H-0FFFH(4KB)内部程序存储器,再执行地址为1000H-FFFFH(60KB)的外部程序存储器。数据存储器:AT89S51的具有128字节的内部RAM,这128字节可利用直接或间接寻址方式访问,堆栈操作可利用间接寻址方式进行,128字节均可设置为堆栈区空间。看门狗定时器(WDT):WDT是为了解决CPU程序运行时可能进入混乱或死循环而设置,它由一个14bit计数器和看门狗复位SFR(WDTRST)构成。外部复位时,WDT默认为关闭状态,要打开WDT,用户必须按顺序将01EH和0E1H写到WDTRST寄存器(SFR地址为0A6H),当启动了WDT,它会随晶体振荡器在每个机器周期计数,除硬件复位或WDT溢出复位外没有其它方法关闭WDT,当WDT溢出,将使RST引脚输出高电平的复位脉冲。使用看门狗(WDT):打开WDT需按次序写01EH和0E1H到WDTRST寄存器(SFR的地址为0A6H),当WDT打开后,需在一定的时候01EH和0E1H到WDTRST寄存器以避免WDT计数溢出。14位WDT计数器计数达到16383(3FFFH),WDT将溢出并使器件复位。WDT打开时,它会随晶体振荡器在每个机器周期计数,这意味着用户必须在小于每个16383机器周期内复位WDT,也即写01EH和0E1H到WDTRST寄存器,WDTRST为只写寄存器。WDT计数器既不可读也不可写,当WDT溢出时,通常将使RST引脚输出高电平的复位脉冲。复位脉冲持续时间为98×Tosc,而Tosc=1/Fosc(晶体振荡频率)。为使WDT工作最优化,必须在合适的程序代码时间段周期地复位WDT防止WDT溢出。掉电和空闲状态时的WDT:掉电时期,晶体振荡停止,WDT也停止。掉电模式下,用户不能再复位WDT。有两种方法可退出掉电模式:硬件复位或通过激活外部中断。当硬件复位退出掉电模式时,处理WDT可象通常的上电复位一样。当由中断退出掉电模式则有所不同,中断低电平状态持续到晶体振荡稳定,当中断电平变为高即响应中断服务。为防止中断误复位,当器件复位,中断引脚持续为低时,WDT并未开始计数,直到中断引脚被拉高为止。这为在掉电模式下的中断执行中断服务程序而设置。为保证WDT在退出掉电模式时极端情况下不溢出,最好在进入掉电模式前复位WDT。在进入空闲模式前,WDT打开时,WDT是否继续计数由SFR中的AUXR的WDIDLE位决定,在IDLE期间(位WDIDLE=0)默认状态是继续计数。为防止AT89S51从空闲模式中复位,用户应周期性地设置定时器,重新进入空闲模式。当位WDIDLE被置位,在空闲模式中WDT将停止计数,直到从空闲(IDLE)模式中退出重新开始计数。中断:AT89S51共有5个中断向量:2个外中断(INT0和INT1),2个定时中断(Timer0和Timer1)和一个串行中断。这些中断源各自的禁止和使能位参见特殊功能寄存器的IE。IE也包含总中断控制位EA,EA清0,将关闭所有中断。定时器0和定时器1的中断标志TF0和TF1,它是定时器溢出时的S5P2时序周期被置位,该标志保留至下个时序周期。晶体振荡器特性:AT89S51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。外接石英晶体(或陶瓷谐振器)及电容Cl、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容Cl、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐电容使用30pF±10pF,而如使用陶瓷谐振器建议选择40pF±10F。用户也可以采用外部时钟。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。空闲节电模式:在空闲工作模式状态,CPU保持睡眠状态而所有片内的外设仍保持激活状态,这种方式由软件产生。此时,片内RAM和所有特殊功能寄存器的内容保持不变。空闲模式可由任何允许的中断请求或硬件复位终止。需要注意的是,当由硬件复位来终止空闲工作模式时,CPU通常是从激活空闲模式那条指令的下一条指令开始继续执行程序的,要完成内部复位操作,硬件复位脉冲要保持两个机器周期(24个时钟周期)有效,在这种情况下,内部禁止CPU访问片内RAM,而允许访问其它端口。为了避免在复位结束时可能对端口产生意外写入,激活空闲模式的那条指令后一条指令不应是一条对端口或外部存储器的写入指令。掉电模式:在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM和特殊功能寄存器的内容在终止掉电模式前被冻结。退出掉电模式的方法是硬件复位或由处于使能状态的外中断INT0和INT1激活。复位后将重新定义全部特殊功能寄存器但不改变RAM中的内容,在Vcc恢复到正常工作电平前,复位应无效,且必须保持一定时间以使振荡器重启动并稳定工作。Flash闪速存储器的并行编程:AT89s51单片机内部有4k字节的可快速编程的Flash存储阵列。编程方法可通过传统的EPROM编程器使用高电压(+12V)和协调的控制信号进行编程。AT89S51的代码是逐一字节进行编程的。数据查询:AT89S5l单片机用数据查询方式来检测一个写周期是否结束,在一个写周期中,如需读取最后写入的那个字节,则读出的数据的最高位(P0.7)是原来写入字节最高位的反码。写周期完成后,有效的数据就会出现在所有输出端上,此时,可进入下一个字节的写周期,写周期开始后,可在任意时刻进行数据查询。Ready/Busy:字节编程的进度可通过“RDY/BSY”输出信号监测,编程期间,ALE变为高电平“H”后P3.0端电平被拉低,表示正在编程状态(忙状态)。编程完成后,P3.0变为高电平表示准备就绪状态。程序校验:如果加密位LB1、LB2没有进行编程,则代码数据可通过地址和数据线读回原编写的数据,各加密位也可通过直接回读进行校验。读片内签名字节:AT89S51单片机内有3个签名字节,地址为000H、100H和200H。用于声明该器件的厂商和型号等信息,读签名字节的过程和正常校验相仿,只需将P3.6和P3.7保持低电平。芯片擦除:在并行编程模式,利用控制信号的正确组合并保持ALE/PROG引脚200ns-500ns的低电平脉冲宽度即可完成擦除操作。在串行编程模式,芯片擦除操作是利用擦除指令进行。在这种方式,擦除周期是自身定时的,大约为500ms。擦除期间,用串行方式读任何地址数据,返回值均为00H。Flash闪速存储器的串行编程:将RST接至Vcc,程序代码存储阵列可通过串行ISP接口进行编程,串行接口包含SCK线、MOSI(输入)和MISO(输出)线。将RST拉高后,在其它操作前必须发出编程使能指令,编程前需将芯片擦除。芯片擦除则将存储代码阵列全写为FFH。外部系统时钟信号需接至XTAL1端或在XTALl和XTAL2接上晶体振荡器。最高的串行时钟(SCK)不超过l/16晶体时钟,当晶体为33MHz时,最大SCK频率为2MHz。数据校验:数据校验也可在串行模式下进行,在这个模式,在一个写周期中,通过输出引脚MISO串行回读一个字节数据的最高位将为最后写入字节的反码。第2.2节AT24C02AT24C02支持I2C总线数据传送协议,I2C总线协议规定:任何将数据传送到总线的器件作为发送器,任何从总线接收数据的器件为接收器。数据传送是由产生串行时钟和所有起始停止信号的主器件控制的,AT24C02作为从器件。虽然主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据发送或接收的模式。2.2.1.性能与400KHzI2C总线兼容1.8到6.0伏工作电压范围低功耗CMOS技术写保护功能当WP为高电平时进入写保护状态页写缓冲器自定时擦写周期1,000,000编程/擦除周期可保存数据100年8脚DIPSOIC或TSSOP封装温度范围商业级工业级和汽车级2.2.2.引脚功能描述VCC+1.8V6.0V工作电压VSS地SCL串行时钟:串行时钟输入管脚用于产生器件所有数据发送或接收的时钟,这是一个输入管脚。SDA串行数据/地址:双向串行数据/地址管脚用于器件所有数据的发送或接收,SDA一个开漏输出管脚,可与其它开漏输出或集电极开路输出进行线或wire-OR。A0A1A2器件地址输入端:这些输入脚用于多个器件级联时设置器件地址,当这些脚悬空时默认值为0,24WC01当使用24WC01或24WC02时最大可级联8个器件,如果只有一个24WC02被总线寻址这三个地址输入脚A0A1A2可悬空或连接到Vss,如果只有一个24WC01被总线寻址这三个地址输入脚A0A1A2必须连接到Vss。当使用24WC04时最多可连接4个器件该器件仅使用A1A2地址管脚A0管脚未用可以连接到Vss或悬空,如果只有一个24WC04被总线寻址,A1和A2地址管脚可悬空或连接到Vss。当使用24WC08时最多可连接2个器件且仅使用地址管脚A2A0,A1管脚未用可以连接到Vss或悬空,如果只有一个24WC08被总线寻址A2管脚可悬空或连接到Vss。当使用24WC16时最多只可连接1个器件所有地址管脚A0A1A2都未用管脚可以连接到Vss或悬空。WP写保护:如果WP管脚连接到Vcc,所有的内容都被写保护只能读。当WP管脚连接到Vss或悬空,允许器件进行正常的读/写操作。第2.3节LCD1602现在的字符型液品模块已经是单片机应用设计中最常用的信息显示器件了。1602型LCD显示模块具有体积小,功耗低,显示内容丰富等特点。1602型LCD可以显示2行16个字符,有8位数据总线D0—D7和Rs,R/W,EN三个控制端口,工作电压为5V,并且具有字符对比度调节和背光功能。 2.3.1.接口信号说明1602型LCD的接口信号说明如表2-1所示:表2-11602型LCD的接口信号说明编号符号引脚说明编号符号引脚说明1VSS电源地9D2DataI/O2VDD电源正极10D3DataI/O3VO液晶显示偏压信号11D4DataI/O4RS数据/命令选择端(H/L)12D5DataI/O5R/W读写选择端(H/L)13D6DataI/O6E使能信号14D7DataI/O7D0DataI/O15BLA背光源正极8D1DataI/O16BLK背光源负极1602型LCD的主要技术参数如表2-2所示:表2-21602型LCD的主要技术参数显示容量芯片上作电压工作电流模块最佳工作电压字符尺寸16X2个字符4.5~5.5V2.0mA(5.0V)5.0V2.95X4.35基本操作程序读状态:输入:RS=L,RW=L,E=H输出:DO-D7=状态字读数据:输入:RS=H,RW=H,E=H输出:无写指令:输入:RS=L,RW=L,D0-D7=指令码,E=高脉冲输出:D0-D7=数据写数据:输入:RS=H,RW=L,D0-D7=数据,E=高脉冲输出:无第2.4节晶振振荡器晶体振荡器,简称晶振,其作用在于产生原始的时钟频率,这个频率经过频率发生器的放大或缩小后就成了电脑中各种不同的总线频率。以声卡为例,要实现对模拟信号44.1kHz或48kHz的采样,频率发生器就必须提供一个44.1kHz或48kHz的时钟频率。如果需要对这两种音频同时支持的话,声卡就需要有两颗晶振。但是现在的娱乐级声卡为了降低成本,通常都采用SCR将输出的采样频率固定在48kHz,但是SRC会对音质带来损害,而且现在的娱乐级声卡都没有很好地解决这个问题。现在应用最广泛的是石英晶体振荡器。石英晶体振荡器是一种高精度和高稳定度的振荡器,石英晶体振荡器也称石英晶体谐振器,它用来稳定频率和选择频率,是一种可以取代LC谐振回路的晶体谐振元件。石英晶体振荡器广泛地应用在电视机、影碟机、录像机、无线通讯设备、电子钟表、单片机、数字仪器仪表等电子设备中。为数据处理设备产生时钟信号和为特定系统提供基准信号。在单片机中为其提供时钟频率。石英晶体振荡器是利用石英晶体(二氧化硅的结晶体)的压电效应制成的一种谐振器件,它的基本构成大致是:从一块石英晶体上按一定方位角切下薄片(简称为晶片,它可以是正方形、矩形或圆形等),在它的两个对应面上涂敷上银层用作电极使用,在每个电极上各焊一根引线接到管脚上,再加上封装外壳就构成了石英晶体谐振器,简称为石英晶体或晶体、晶振。其产品一般用金属外壳封装,也有用玻璃壳、陶瓷或塑料封装的。只要在晶体振子板极上施加交变电压,就会使晶片产生机械变形振动,此现象即所谓逆压电效应。当外加电压频率等于晶体谐振器的固有频率时,就会发生压电谐振,从而导致机械变形的振幅突然增大。本设计中采用12MHz做系统的外部晶振。电容取值为30pF。第3章系统硬件构成第3.1节设计原理本设计采用AT89S52为主控芯片,通过IIC总线协议与AT24C02进行通信。电路的辅助模块有复位电路、矩阵按键电路、继电器电路、报警电路。在进行keilc编程的时候,首先在程序中设置初始密码。在进行开锁的时候,用户需要进行根据提示进行使用按键输入密码,在输入密码的同时主控芯片单片机会根据程序的设定和输入的密码进行比较,如果输入每个密码都正确的情况下,则液晶会提示用户进行相应的操作,如进行修改密码。报警与开锁电路实际是在在密码已经进行比对以后,主控芯片通过判断的结果给出相应的操作,即相应的I/O端口会出现高低电平的变化,从而实现开锁与报警的功能。系统框图如图3-1所示图3-1系统框图第3.2节电路总图构成在确定了选用什么型号的单片机后,就要确定在外围电路,其外围电路包括电源输入部分、存储部分、键盘输入部分、复位部分、晶振部分、显示部分、报警部分、开锁部分组成,根据实际情况键盘输入部分选择4*4矩阵键盘,显示部分选择字符型液晶显示LCDl602。电路总图如图3-2所示:图3-2电路总原理图3.2.1.报警部分当密码输入两次的数值与所设定的参数值不同时,单片机AT89C51便通过P2.7口控制三极管来驱动扬声器报警,当输出低电平时三极管截止,当输出高电平时三极管导通扬声器报警。如图3-3所示图3-3报警电路原理图3.2.2.AT24C02存储部分掉电存储单元的作用是在电源断开的时候,存储当前设定的单价信息。AT24C02是ATMEL公司开发的可擦除存储芯片,AT24C02是一个2K位串行CMOSE2PROM,内部含有256个8位字节,AT24C02有一个16字节页写缓冲器。该器件通过IIC总线接口进行操作,有一个专门的写保护功能。采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用方便。如图3-4所示图3-42AT24C02原理图电路3.2.3.显示部分为了提高密码锁的密码显示效果能力。本设计的显示部分由液晶显示器LCDl602取代普通的数码管来完成。只有按下键盘上的开启按键后,显示器才处于开启状态。同理只有按下关闭按键后显示器才处于关闭状态。否则显示器将一直处于初始状态,当需要对密码锁进行开锁时,按下键盘上的开锁按键后利用键盘上的数字键0-9输入密码,每按下一个数字键后在显示器上显示一个“*”,输入多少位就显示多少个“*”。当密码输入完成时,按下确认键,如果输入的密码正确的话,LCD子显示“RIGHT”,单片机其中P2.0引脚会输出低电平,使三极管T2导通,电磁铁吸合,电子密码锁被打开,如果密码不正确,LCD显示屏会显示“ERROR”,P2.0输出的是高电平,电子密码锁不能被打开。通过LCD显示屏,可以清楚的判断出密码锁所处的状态。其显示部分引脚接口如图3-5所示:图3-5液晶显示电路和上拉电阻驱动3.2.4.复位电路复位电路(图3-12是单片机复位电路)具有上电自动复位和手动复位的双重功能。单片机的RST引脚是复位信号的输入端,复位信号是高电平的时候才有效,其有效时间应持续24个震荡脉冲周期(即2个机器周期)以上;通常为了保证应用系统能够准确地复位,复位电路应使引脚RST脚保持10ms以上的高电平状态。只要RST保持高电平,单片机就会自动循环复位。当RST引脚从高电平状态转为低电平状态时,单片机退出复位状态,从程序存储器的0000H地址开始执行用户程序。电容C3和电阻R5组成上电复位电路。上电瞬间RST引脚获得高电平,随着电容C11的充电,RST引脚的高电平逐渐下降。只要高电平保持足够的时间,单片机就能完成复位。手动复位如图3-6所示图3-6复位电路3.2.5.晶振部分AT89S52引脚XTAL1和XTAL2与晶体振荡器及电容C2、C3按图4-6所示方式连接。晶振、电容C2/C3及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容C2、C3的容量有关,但主要由晶振频率决定,范围在0~33MHz之间,电容C2、C3取值范围在20~40pF之间。根据实际情况,本设计中采用12MHz做系统的外部晶振。电容取值为30pF。电路如图3-7图3-7晶振电路3.2.6.开锁电路开锁电路的功能是当输入正确的密码后密码锁将被锁定,既开锁。当单片机P2.6引脚发出信号经三极管放大后,触动电磁阀即会把锁打开。一旦输入密码,单片机便会与初始密码进行比对,如果密码输入两次都与原始密码不相符即会报警。电路如图3-8所示图3-8开锁电路3.2.7.键盘输入模块键盘是单片机十分重要的输入设备,是实现人机对话的纽带。键盘是由一组规则排列的按键组成,一个按键实际上就是一个开关元件,即键盘是一组规则排列的开关。根据按键与单片机的连接方式不同,按键主要分为独立式按键和矩阵式按键,有了这些按键,对单片机的控制就方便多了。本设计按键数量较多,所以采用矩阵式按键以节省I/O口线。将16个按键分为4排4列排列好,如图3-9矩阵键盘硬件结构。当有一个键按下时,通过某一边引脚赋低电平,扫描全部引脚看是否与最初的赋值一样,不一样则根据相应的算法(通过改变后的值与初始值相或,根据结果赋值)确定是哪个键按下。键盘为4×4形式,按键包括阿拉伯数字0~9,以及锁定、更改和改密三个应用按键。当用户需要输入密码或修改密码时,按下相应按键即会与单片机产生信号,并会执行相应的程序。电路如图3-9所示图3-9矩阵键盘电路第4章仿真设计第4.1节Protues仿真软件概述Protues是目前使用比较广泛的单片机类的仿真系统的软件之一,它可以实现的功能比较多,可以实现程序与原理图的连调,也可以单独作为绘制原理图的工具使用,与Protel有着过之不及的功能,于此同时还可以进行PCB版图的生成,在方法中与Protel类似。此款软件及绘制原理图、PCB版图和仿真于一身。Protues此款软件的使用比较简单。在运行环境搭载好的前提下,打开ISIS直接进入到主界面,在左边栏框中有一个快捷键P(从库中选取),点击后出现一个对话框然后输入想要查找的元器件即可。之后在单击确定按键所选器件就会显示在界面左上角的小框中此时点击鼠标左键就会放到图层中,然后直接把鼠标放到接头处就会显示一个画笔的标志此时按住鼠标左键就可进行连线了。如图4-1所示为绘图界面。图4-1绘图界面第4.2节Protues与Keil的连调在进行连调之前必须确保程序是完整的,原理图也是没有错误的。还要在正确的运行平台下进行操作。检查没有错误后,打开原理图,点击单片机就会出现一个对话框如图5-2所示,然后把生成的.hex文件添加到里面即可实现。在这里比较重要的就是.hex文件的生成过程。首先把已编写好的程序加载到Keil软件下进行编译如果没有遇到任何错误后,选择相应的选项就可以生成.hex文件了。之后再按照生成的的路径去寻找这个文件。找到之后加载到之前点开的对话框上即可。在此后点击运行按键就会进行仿真了,按照设计的功能去调试就可以了。加载hex如图4-2所示图4-2加载.hex文件第4.3节Protues与Keil的连调的仿真结果系统仿真运行环境下的结果如图4-3所示图4-3系统仿真图开锁仿真图如5-4所示图4-3开锁仿真图第5章系统软件设计本系统软件设计由主程序、初始化程序、LCD显示程序、键盘扫描程序、键功能程序、密码设置程序、EEPROM读写程序和延时程序等组成。第5.1节主程序流程图图5-1所示为主程序流程图,开始接上电源,程序进行初始化设置,然后在键盘上输入密码,此系统进行键盘扫描,然后启动程序,进行保护,再次在键盘上输入密码,系统进行扫描,如和之前一样,则执行程序,如不是,则执行另一种程序,最后结束。图5-1主程序流程图第5.2节按键功能流程图图5-2为按键功能流程图,在按键当中,有与输入、开锁、清除、设置、确认的程序相对应的按键,并按顺序与输入的数相比较,当输入正确时,进入密码程序,错误时进行清除,输入两次正确的,可进行重新设置,最后确认程序。图5-2按键功能流程第5.3节密码设置流程图如图5-3为密码设置流程图,开始按下设置键,输入旧密码,如果错误,累计三次错误,进行报警程序。如输入正确,可以改密码,确认后再次输入更改后密码,如两次输入一样,则更改成功。图5-3密码设置流程图第5.4节开锁流程图图5-4为开锁流程图,开始时按开锁键,输入密码,如果输入正确,则开锁成功。如果输入错误累计三次,则执行报警程序。图5-4开锁流程图结论此次毕业设计我之所以选择基于AT89S52与AT24C02的密码锁的设计,是因为我对于单片机与芯片之间的数据传输还存在着一定的问题。此次通过本次毕业设计,我查阅了大量的资料,具体了解AT89S52芯片、存储器芯片的读写操作、编程程序的简化与规范。在进行总体的设计以后,我使用了keilc软件编写了程序并且进行了protues软件的仿真。在仿真成功了以后。我才开始进行开始制作硬件电路。硬件电路包括,复位电路、晶振电路、矩阵按键电路、LCD1602液晶显示电路、报警指示电路、开锁电路和AT24C02存储器电路!在进行硬件电路制作的时候,我花了大量的时间,因为既要设计的美观又要考虑实际的电路布线规则,所以还是感觉制作起来极其困难。电路制作好了以后,我使用下载器把程序下载进去以后,发现并没有我想象的那么的成功,然后我只能逐一的调试各个模块,最后发现还是存在许多的问题的,如业绩显示模块在使用主控单片机的P0模块是,还是要需要使用上拉电阻的。在进行矩阵电路的制作时,电路很容易发生短路,因此必须使用万用表逐个的测量使用短路的现象!从策划开始,我开始查找和收集大量的资料,进行程序编程的时候,我又要把各个软件仔细的熟悉了一下,再到仿真成功,硬件调试成功。在这个复杂的过程中我真的学到了很多。我学会以了系统的看待了一个问题,也必须细心的对待每一个问题,因为一个整体无论在哪一个小的方面出了问题,都会造成整个系统的出错。参考文献刘昌华,易逵.《8051单片机的C语言应用程序设计与实践》[M].国防工业出版社.2007.5魏立峰,王宝兴.单片机原理与应用技术[M].北京:北京大学出版社,2010:34-65.王为青,邱文勋.《51单片机应用开发案例精选》[M].人民邮电出版社.2007.1谭浩强.C程序设计(第三版)[M].北京:高等教育出版社,2005:113.陈雪丽.单片机原理及接口技术[M].北京:化学工业出版社,2005.王少伟,巫丹.89C51单片机USB接口的设计与实现.科技创新导报,2009(28).李明喜.新型电子密码锁的设计[J].机电产品开发与创新,2004,(03);董继成.一种新型安全的单片机密码锁[J].电子技术,2004,(03);杨茂涛.一种电子密码锁的实现[J].福建电脑,2004,(08);瞿贵荣.实用电子密码锁[J].家庭电子,2000,(07);赵亮,跟我学51单片机系列教程第(十一)—I2C总线[J],《电子制作》2011年第11期.刘静,王计元.24C系列串行EEPROM与单片机的接口设计及应用[J],《上海电力学院学报》2011年第4期.致谢时光飞逝,一转眼大学四年的时光就过去了,我所学的专业是电子信息工程与技术,我很喜欢这门专业,因此我的专业课成绩也不是很差。在本次毕业设计中,我的论文指导老师真的帮了我很多的忙,指导了我很多。在此次论文的选题到最后论文定稿,老师给了我很多的建议。还有就是我在做硬件的时候,我的同学给了我很多的建议,我的同学专业学的很好,尤其在做硬件方面,我在几个比较难以解决的问题都是她帮我解决的。在我做论文的时候给了我很多的鼓励与帮助。最后还要感谢我的父母,这么含辛茹苦的给了我这么个学习的机会。总之,感谢你们一直伴随着我成长。真的到了离别的时候了,真的非常不舍得我美丽的母校,我敬爱的老师,但是百舸争流,勇者不必勇敢向前。不管前面遇到什么苦难,我相信大学四年,我已经学会了如何去思考我所遇到的问题,学会如何去解决我所遇到的问题。最后,感谢在大学期间认识我和我认识的所有朋友,因为你们的陪伴,我的大学生活才丰富多彩!谢谢!附录附录1:实物照片图1实物图2输入密码图3密码正确提示图4修改密码附录2:部分源程序#include<reg52.h>//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include"keyboard.h"#include"delay.h"#defineKeyPortP1unsignedcharKeyScan(void)//键盘扫描函数,使用行列反转扫描法{unsignedcharcord_h,cord_l;//行列值中间变量KeyPort=0x0f;//行线输出全为0cord_h=KeyPort&0x0f;//读入列线值if(cord_h!=0x0f)//先检测有无按键按下{DelayMs(10);//去抖if((KeyPort&0x0f)!=0x0f){cord_h=KeyPort&0x0f;//读入列线值KeyPort=cord_h|0xf0;//输出当前列线值cord_l=KeyPort&0xf0;//读入行线值while((KeyPort&0xf0)!=0xf0);//等待松开并输出return(cord_h+cord_l);//键盘最后组合码值}}return(0xff);//返回该值}unsignedcharKeyPro(void)//按键值处理函数,返回扫键值{switch(KeyScan()){case0x7e:return0;break;//0按下相应的键显示相对应的码值case0x7d:return1;break;//1case0x7b:return2;break;//2case0x77:return3;break;//3case0xbe:return4;break;//4case0xbd:return5;break;//5case0xbb:return6;break;//6case0xb7:return7;break;//7case0xde:return8;break;//8case0xdd:return9;break;//9case0xdb:return10;break;//a确认键case0xd7:return11;break;//b 设置键case0xee:return12;break;//c 保存键default:return0xff;break;}}#include<reg52.h>//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include<stdio.h>#include"1602.h"#include"delay.h"#include"keyboard.h"#defineucharunsignedchar#defineuintunsignedint#define OP_READ 0xa1 //器件地址以及读取操作#define OP_WRITE0xa0 //器件地址以及写入操作#define MAX_ADDR0x7f //AT24C02最大地址sbitSET=P3^0;sbitSDA=P3^7;sbitSCL=P3^6;sbitJDJ=P3^5;sbitAlarm=P2^1;bitSetPasswordFlag=0;bitSetPasswordFlag1=0;bitInputPasswordFlag=1;unsignedcharcodepassword[6]={1,2,3,4,5,6};//可以更改此密码做多组测试voidstart();voidstop();unsignedcharshin();bitshout(unsignedcharwrite_data);unsignedcharread_random(unsignedcharrandom_addr);voidwrite_byte(unsignedcharaddr,unsignedcharwrite_data);voidfill_byte(unsignedcharfill_data);main(){unsignedcharnum,i,j,k;unsignedchartemp[9],temp1[9],setpassword[8];unsignedcharinputtimes;//密码输入错误次数bitFlag;LCD_Init();//初始化液晶屏DelayMs(10);//延时用于稳定,可以去掉LCD_Clear();//清屏LCD_Write_String(0,0,"xujinshuai");DelayMs(1000);DelayMs(1000);DelayMs(1000);DelayMs(1000);DelayMs(1000);DelayMs(1000);DelayMs(1000);DelayMs(1000);LCD_Write_String(0,0,"InputPassword");if(SET==0){for(i=0;i<6;i++) //循环将设置的密码保存到AT24C02中{write_byte(i,password[i]);}i=0;}基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推进电机监测系统基于单片机网络的振动信号的采集系统基于单片机的大容量数据存储技术的应用研究基于单片机的叠图机研究与教学方法实践基于单片机嵌入式Web服务器技术的研究及实现基于AT89S52单片机的通用数据采集系统基于单片机的多道脉冲幅度分析仪研究机器人旋转电弧传感角焊缝跟踪单片机控制系统基于单片机的控制系统在PLC虚拟教学实验中的应用研究基于单片机系统的网络通信研究与应用基于PIC16F877单片机的莫尔斯码自动译码系统设计与研究基于单片机的模糊控制器在工业电阻炉上的应用研究基于双单片机冲床数控系统的研究与开发基于Cygnal单片机的μC/OS-Ⅱ的研究HYPERLINK"/detail.htm?3

温馨提示

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

最新文档

评论

0/150

提交评论