资源描述
基于AT89C51单片机密码锁设计摘 要随着科技的日益发展,电子密码控制系统已越来越符合人们的要求。本文介绍了基于单片机和串行EEPROM的智能密码控制系统,对系统硬件设计和软件实现进行了详细的描述。该系统采用AT89C51单片机和AT24C01串行EEPROM,通过AT89C51模拟I2C总线和AT24C01通讯,实现密码控制的功能。本文从经济实用的角度出发,采用美国Atmel公司的单片机AT89C51作为主控芯片与数据存储器单元,结合外围的矩阵键盘输入、LCD液晶显示、报警、开锁等,用C语言编写主控芯片的控制程序与EEPROM读写程序相结合,设计了一款可以多次更改密码,具有报警功能的电子密码控制系统。这种电路设计具有防试探按键输入、智能控制上锁、开锁、报警、修改密码等多种功能。密码长度可变、保密性强、灵活性高。经实验证明,该密码控制系统具有设计方法合理,简单易行,成本低,安全使用等特点,符合车辆、办公室用锁要求,具有推广价值。关键词: 密码控制;单片机;EEPROM读写程序;报警ABSTRACTAs the development of science and technology day by day, the key control system is more in line with the requirements of people. The paper presents a cryptographic smart password control based on MCU and serial EEPROM, describes hardware structure and software design of the system. It adopts AT89C51 and AT24C01, realizes the function of cryptographic smart password control. AT89C51 communicates with AT24C01 by I2C bus to achieve the password control function.This article from the economical and practical point of view, the use of the United States Atmel Corporation AT89C51 microcontroller as a master chip and the data memory unit, combined with the external matrix keyboard input, LED digital display, alarm, unlock and so on, dominated by the C programming language chip EEPROM of the control procedures and the combination of reading and writing program designed to change a password many times, the police function with the electronic the password control. This circuit design with anti-test button input, intelligent control lock, unlock, alarm, multiple functions, such as Change Password. Password length can be changed, even more secret and flexible than others.Experiments show that the password control system is characterized by its reasonable designing methods, simple operation, low cost and property of safety and practicalityBesides,the password control can be used in the office and has great potential for commercial developmentKey Words:Password control; Single-chip; EEPROM read and write procedures; Alarm目 录1 引言11.1 选题背景11.2 电子密码控制简介11.3 电子密码控制的发展趋势11.4 本设计所要实现的目标22 设计方案的选择32.1 方案一:采用数字电路控制32.2 方案二:采用以单片机为核心的控制方案33 主要元器件介绍及I2C总线说明43.1 主控芯片AT89C5143.1.1 AT89C51性能简介43.1.2 AT89C51引脚功能说明53.1.3 AT89C51芯片内部结构73.2 LCD1602显示器83.2.1 接口信号说明83.2.2 主要技术参数93.2.3 基本操作程序93.3 晶体振荡器93.4 AT24C01串行EEPROM103.5 I2C总线说明114 系统硬件构成154.1 设计原理154.2 电路总图构成154.3 电源输入部分164.4 键盘输入部分164.5 复位部分174.6 晶振部分184.7 显示部分184.8 报警部分195 系统软件设计205.1 主程序流程图205.2 按键功能流程图215.3 密码设置流程图215.4 开锁流程图22结 论24参考文献25致 谢26附录一:总原理图27附录二: 程序29附录三: 翻译44天津工程师范学院2009届本科生毕业设计1 引言1.1 选题背景在安全技术防范领域,具有防盗报警功能的电子密码控制系统逐渐代替传统的机械式密码控制系统,克服了机械式密码控制的密码量少、安全性能差的缺点,使电子密码控制系统无论在技术上还是在性能上都大大提高了一步。随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码控制系统,它除具有传统电子密码控制系统的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码控制系统具有很高的安全性、可靠性,应用日益广泛。1.2 电子密码控制简介电子密码控制是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。电子密码控制不论性能还是安全性都已大大超过了机械类。其特点如下:1) 保密性好,编码量多,远远大于机械控制。随机开锁成功率几乎为零。2) 密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使控制的保密性下降。3) 误码输入保护,当输入密码多次错误时,报警系统自动启动。4) 无活动零件,不会磨损,寿命长。5) 使用灵活性好,不像机械锁必须佩带钥匙才能开锁。6) 电子密码控制系统具有操作简单易行,一学即会的特点。1.3 电子密码控制的发展趋势由于电子器件所限,以前开发的电子密码控制系统,其种类不多,保密性差,最基本的就是只依靠最简单的模拟电子开关来实现的,制作简单但很不安全,后来便是基于EDA来实现的,其电路结构复杂,电子元件繁多,也有使用早先的20引脚的2051系列单片机来实现的,但密码简单,易破解。随着电子元件的进一步发展,电子密码控制系统也出现了很多的种类,功能日益强大,使用更加方便,安全保密性更强,由以前的单密码输入发展到现在的,密码加感应元件,实现了更为真正的电子加密,用户只有密码或电子钥匙中的一样,是打不开锁的,随着电子元件的发展及人们对保密性需求的提高出现了越来越多的电子密码控制系统 。由于数字、字符、图形图像、人体生物特征和时间等要素均可成为电子信息,组合使用这些信息能够使电子防盗密码控制获得更高的保密性,如防范森严的金库,需要使用复合信息密码的电子防盗密码控制系统。组合使用信息也能够使电子防盗密码控制系统获得无穷扩展的可能。可以看出组合使用电子信息是电子密码控制系统今后发展的趋势 。1.4 本设计所要实现的目标本设计采用单片机为主控芯片,结合外围电路,组成电子密码控制系统,用户想要打开锁,必先通过提供的键盘输入正确的密码才可以,密码输入错误有提示,为了提高安全性,当密码输入错误三次将报警。密码可以由用户自己修改设定,锁打开后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。62天津工程师范学院2009届本科生毕业设计2 设计方案的选择2.1 方案一:采用数字电路控制用以74LS112双JK触发器构成的数字逻辑电路作为密码控制系统的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过10秒(一般情况下,用户不会超过10秒,若用户觉得不便,还可以修改)电路将报警20秒,若电路连续报警三次,电路将锁定键盘2分钟,防止他人的非法操作 。采用数字电路设计方案时设计虽然简单,但控制的准确性和灵活性差。故不采用。2.2 方案二:采用以单片机为核心的控制方案由于单片机种类繁多,各种型号都有其一定的应用环境,因此在选用时要多加比较,合理选择,以期获得最佳的性价比。一般来说在选取单片机时从下面几个方面考虑:性能、存储器、运行速度、I/O口、定时/计数器、串行接口、模拟电路功能、工作电压、功耗、封装形式、抗干扰性、保密性,除了以上的一些还有一些最基本的,比如:中断源的数量和优先级、工作温度范围、有没有低电压检测功能、单片机内有无时钟振荡器、有无上电复位功能等。在开发过程中单片机还受到:开发工具、编程器、开发成本、开发人员的适应性、技术支持和服务等等因素 。基于以上因素本设计选用单片机AT89C51作为本设计的核心元件,利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码控制功能。在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接LCD1602显示器用于显示作用。当用户需要开锁时,先按键盘开锁键之后按键盘的数字键09、AF输入密码。密码输完后按下确认键,如果密码输入正确则开锁,不正确显示密码错误重新输入密码,当三次密码错误则发出报警;当用户需要修改密码时,先按下键盘设置键后输入原来的密码,只有当输入的原密码正确后才能设置新密码。新密码输入无误后按确认键使新密码将得到存储,密码修改成功。可以看出方案二的控制灵活,准确性好,且保密性强还具有扩展功能,根据现实生活的需要此次设计采用此方案。天津工程师范学院2009届本科生毕业设计3 主要元器件介绍及I2C总线说明3.1 主控芯片AT89C51AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及AT80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案。3.1.1 AT89C51性能简介 AT89C51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,片内时钟振荡器。此外,AT89C51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。 图3-1 AT89C51芯片引脚图其主要功能特性: 兼容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中的内容,但振荡器停止工作并禁止其它所有部件工作直到一个硬件复位。3.1.2 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口的第二功能如下表3-2。表3-2 为 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:振荡器反相放大器的输出端。3.1.3 AT89C51芯片内部结构特殊功能寄存器:特殊功能寄存器的片内空间分布如下图3-3所示。这些地址并没有全部占用,没有占用的地址不可使用,读这些地址将得到一个随意的数值。而写这些地址单元将不能得到预期的结果。中断寄存器:各中断允许控制位于IE寄存器,5个中断源的中断优先级控制位于IP寄存器。表3-3为 AUXR辅助寄存器。ARXR 地址=8EH 复位状态=XXX00XX0B Not BitAddressable WDIDLEDISRTO DISALEBit 7 6 5 4 32 10 保留为将来扩展用途位DISALE ALE禁止/使用 DISALE 操作模式 0 ALE 输出1/6震荡时钟频率脉冲 1 ALE 仅在执行MOVX或MOVC指令期间输出脉冲DISRTO 禁止/使能复位输出 DISRTO 0 复位引脚在WET溢出时变高1 复位引脚仅为输入WDIDLE 禁止/使能IDLE模式的WDTWDIDLE 0 IDLE模式WDT继续计数1 IDLE模式WDT停止计数双时钟指针寄存器:为方便地访问内部和外部数据存储器,提供了两个16位数据指针寄存储器:PD0位于SFR区块中的地址82H、83H和DP1位于地址84H、85H,当SFR中的位DPS=0时选择DP0,而DPS=1时选择DP1。在使用前初始化DPS。表3-4 双时钟指针寄存器AUXR1 地址=A2H不可寻址位 复位状态=XXXXXXX0B DPS Bit 7 6 5 4 3 2 1 0 保留为今后扩展用途DPS 数据指针选择位 DPS 0 选择DPTR寄存器DP0L.DP0H 1 选择DPTR寄存器DP1L.DP1H电源空闲标志:电源空闲标志(POF)在特殊功能寄存储器SFR中PCON的第4位(PCON.4),电源打开时POF置“1”,它可由软件设置睡眠状态并不为复位所影响。存储器结构:MCS-51单片机内核采用程序存储器和数据存储器空间分开的结构,均具有64KB外部程序和数据的寻址空间。程序存储器:如果EA引脚接地(GND),全部程序均执行外部存储器。在AT89S51,假如接至VCC(电源),程序首先执行从地址0000H0FFFH(4KB)内部程序存储器,再执行地址为1000HFFFFH(60KB)的外部程序存储器。数据存储器:在AT89C51的具有128字节的内部RAM,这128字节可利用直接或间接寻址方式访问,堆栈操作可利用间接寻址方式进行,128字节均可设置为堆栈区空间。3.2 LCD1602显示器现在的字符型液晶模块已经是单片机应用设计中最常用的信息显示器件了。1602型LCD显示模块具有体积小,功耗低,显示内容丰富等特点。1602型LCD可以显示2行16个字符,有8位数据总线D0-D7和RS,R/W,EN三个控制端口,工作电压为5V,并且具有字符对比度调节和背光功能。 3.2.1 接口信号说明1602型LCD的接口信号说明如表3-5所示:表3-5为 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背光源负极 3.2.2 主要技术参数 1602型LCD的主要技术参数如表3-6所示:表3-6为 1602型LCD的主要技术参数显示容量芯片工作电压工作电流模块最佳工作电压字符尺寸16X2个字符4.55.5V2.0mA(5.0V)5.0V2.95X4.35(WXH)mm 3.2.3 基本操作程序 读状态:输入:RS=L,RW=L,E=H 输出:D0-D7=状态字读数据:输入:RS=H,RW=H,E=H 输出:无写指令:输入:RS=L,RW=L,D0-D7=指令码,E=高脉冲 输出:D0-D7=数据写数据:输入:RS=H,RW=L,D0-D7=数据,E=高脉冲 输出:无3.3 晶体振荡器 晶体振荡器,简称晶振,其作用在于产生原始的时钟频率,这个频率经过频率发生器的放大或缩小后就成了电脑中各种不同的总线频率。以声卡为例,要实现对模拟信号44.1kHz或48kHz的采样,频率发生器就必须提供一个44.1kHz或48kHz的时钟频率。如果需要对这两种音频同时支持的话,声卡就需要有两颗晶振。但是现在的娱乐级声卡为了降低成本,通常都采用SCR将输出的采样频率固定在48kHz,但是SRC会对音质带来损害,而且现在的娱乐级声卡都没有很好地解决这个问题。现在应用最广泛的是石英晶体振荡器。 石英晶体振荡器是一种高精度和高稳定度的振荡器,石英晶体振荡器也称石英晶体谐振器,它用来稳定频率和选择频率,是一种可以取代LC谐振回路的晶体谐振元件。石英晶体振荡器广泛地应用在电视机、影碟机、录像机、无线通讯设备、电子钟表、单片机、数字仪器仪表等电子设备中。为数据处理设备产生时钟信号和为特定系统提供基准信号。在单片机中为其提供时钟频率。石英晶体振荡器是利用石英晶体(二氧化硅的结晶体)的压电效应制成的一种谐振器件,它的基本构成大致是:从一块石英晶体上按一定方位角切下薄片(简称为晶片,它可以是正方形、矩形或圆形等),在它的两个对应面上涂敷上银层用作电极使用,在每个电极上各焊一根引线接到管脚上,再加上封装外壳就构成了石英晶体谐振器,简称为石英晶体或晶体、晶振。其产品一般用金属外壳封装,也有用玻璃壳、陶瓷或塑料封装的。只要在晶体振子板极上施加交变电压,就会使晶片产生机械变形振动,此现象即所谓逆压电效应。当外加电压频率等于晶体谐振器的固有频率时,就会发生压电谐振,从而导致机械变形的振幅突然增大。本设计中采用12MHZ做系统的外部晶振。电容取值为20pF。3.4 AT24C01串行EEPROM 如图3-2为AT24C01的芯片引脚图。图3-2 AT24C01的芯片引脚图 特点:低压和标准电压运行模式 2.7 (VCC = 2.7V to 5.5V) 1.8 (VCC = 1.8V to 5.5V)内建128x8存储序列2线制串行接口双向数据传送协议100kHz(1.8V,2.5V,2.7V) 和400kHz(5V)兼容写同步时钟(最大10ms)高可靠性-极限:1M写时钟周期-数据保存:100年不断推进的芯片等级扩大了设备的可用温度范围8脚PDIP,8脚JEDEC SOIC和8脚TSSOP封装描述:AT24C01提供电可擦除的串行1024位存储或可编程只读存储器(EEPROM)128字(8位/字)。芯片在低压的工业与商业应用中进行了最优化。AT24C01的封装为8脚PDIP、8脚JEDECSOIC、8脚TSSOP,通过2线制串行接口进行数据传输。另外,整个系列有2.7V(2.7V至5.5V)和1.8V (1.8V至5.5V)两个版本。设备操作:C L O C K 和 D A T A 变化:SDA管脚通常外部要拉高。SDA管脚上的数据只能在SCL低期间改变。数据在SCL高期间改变定义为一个开始或停止信号。开始状态:在任何操作之前必须有一个开始信号-在SCL为高时SDA上产生一个下降沿。停止状态: SCL为高时SDA产生一个上升沿是停止信号,停止信号后将停止所有通信。在一个读的序列之后,停止信号将让EEPROM进入备用电源模式。3.5 I2C总线说明I2C(InterIntegrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。1 I2C总线的硬件结构I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。为了避免总线信号的混乱,要求各设备连接到总线的输出端时必须是开漏输出或集电极开路输出。设备上的串行数据线SDA接口电路应该是双向的,输出电路用于向总线上发送数据,输入电路用于接收总线上的数据。而串行时钟线也应是双向的,作为控制总线数据传送的主机,一方面要通过SCL输出电路发送时钟信号,另一方面还要检测总线上的SCL电平,以决定什么时候发送下一个时钟脉冲电平;作为接受主机命令的从机,要按总线上的SCL信号发出或接收SDA上的信号,也可以向SCL线发出低电平信号以延长总线时钟信号周期。总线空闲时,因各设备都是开漏输出,上拉电阻RP使SDA和SCL线都保持高电平。任一设备输出的低电平都将使相应的总线信号线变低,也就是说:各设备的SDA是“与”关系,SCL也是“与”关系。 总线对设备接口电路的制造工艺和电平都没有特殊的要求(NMOS、CMOS都可以兼容)。在I2C总线上的数据传送率可高达每秒十万位,高速方式时在每秒四十万位以上。另外,总线上允许连接的设备数以其电容量不超过400pF为限。 总线的运行(数据传输)由主机控制。所谓主机是指启动数据的传送(发出启动信号)、发出时钟信号以及传送结束时发出停止信号的设备,通常主机都是微处理器。被主机寻访的设备称为从机。为了进行通讯,每个接到I2C总线的设备都有一个唯一的地址,以便于主机寻访。主机和从机的数据传送,可以由主机发送数据到从机,也可以由从机发到主机。凡是发送数据到总线的设备称为发送器,从总线上接收数据的设备被称为接受器。I2C总线上允许连接多个微处理器以及各种外围设备,如存储器、LED及LCD驱动器、A/D及D/A转换器等。为了保证数据可靠地传送,任一时刻总线只能由某一台主机控制,各微处理器应该在总线空闲时发送启动数据,为了妥善解决多台微处理器同时发送启动数据的传送(总线控制权)冲突,以及决定由哪一台微处理器控制总线的问题,I2C总线允许连接不同传送速率的设备。多台设备之间时钟信号的同步过程称为同步化。2 I2C总线工作原理:2.1 总线的构成及信号类型:I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。I2C总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。 应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。如图3-3所示:SDASCL开始结束图3-3 开始、结束信号图目前有很多半导体集成电路上都集成了I2C接口。带有I2C接口的单片机有:CYGNAL的 C8051F0XX系列,PHILIPSP87LPC7XX系列,MICROCHIP的PIC16C6XX系列等。很多外围器件如存储器、监控芯片等也提供I2C接口。3 总线基本操作:I2C规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件都可以工作于接收和发送状态。 总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。1) 控制字节:在起始条件之后,必须是器件的控制字节,其中高四位为器件类型识别符(不同的芯片类型有不同的定义,EEPROM一般应为1010),接着三位为片选,最后一位为读写位,当为1时为读操作,为0时为写操作。2)写操作:写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不同有所不同。3) 读操作:读操作有三种基本操作:当前地址读、随机读和顺序读。图4给出的是顺序读的时序图。应当注意的是:最后一个读操作的第9个时钟周期不是“不关心”。为了结束读操作,主机必须在第9个周期时发出停止条件或者在第9个时钟周期内保持SDA为高电平、然后发出停止条件。在I2C总线的应用中应注意的事项总结为以下几点 : a) 严格按照时序图的要求进行操作, b) 若与口线上带内部上拉电阻的单片机接口连接,可以不外加上拉电阻。 c) 程序中为配合相应的传输速率,在对口线操作的指令后可用NOP指令加一定的延时。d) 为了减少意外的干扰信号将EEPROM内的数据改写可用外部写保护引脚(如果有),或者在EEPROM内部没有用的空间写入标志字,每次上电时或复位时做一次检测,判断EEPROM是否被意外改写。 添加:I2C 总线:在现代电子系统中,有为数众多的IC 需要进行相互之间以及与外界的通信。为了提供硬件的效率和简化电路的设计,PHILIPS 开发了一种用于内部IC 控制的简单的双向两线串行总线I2C(inter IC 总线)。I2C 总线支持任何一种IC 制造工艺,并且PHILIPS 和其他厂商提供了种类非常丰富的I2C 兼容芯片。作为一个专利的控制总线,I2C 已经成为世界性的工业标准。每个I2C 器件都有一个唯一的地址,而且可以是单接收的器件(例如:LCD 驱动器)或者可以接收也可以发送的器件(例如:存储器)。发送器或接收器可以在主模式或从模式下操作,这取决于芯片是否必须启动数据的传输还是仅仅被寻址。I2C 是一个多主总线,即它可以由多个连接的器件控制。早期的I2C 总线数据传输速率最高为100Kbits/s,采用7 位寻址。但是由于数据传输速率和应用功能的迅速增加,I2C 总线也增强为快速模式(400Kbits/s)和10 位寻址以满足更高速度和更大寻址空间的需求。I2C 总线始终和先进技术保持同步,但仍然保持其向下兼容性。并且最近还增加了高速模式,其速度可达3.4Mbits/s。它使得I2C 总线能够支持现有以及将来的高速串行传输应用,例如EEPROM 和Flash 存储器。天津工程师范学院2009届本科生毕业设计4 系统硬件构成4.1 设计原理本设计主要由单片机、矩阵键盘、液晶显示器和密码存储等部分组成。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警。本系统共有两部分构成,即硬件部分与软件部分。其中硬件部分由电源输入部分、键盘输入部分、复位部分、晶振部分、显示部分、报警部分组成,软件部分对应的由主程序、初始化程序、LCD显示程序、键盘扫描程序、启动程序、关闭程序、键功能程序、密码设置程序、EEPROM读写程序和延时程序等组成。其原理框图如图4-1所示。AT89C51键盘输入复位电路晶振电路电源输入显示电路报警电路开锁电路 图4-1 电子密码锁原理框图4.2 电路总图构成在确定了选用什么型号的单片机后,就要确定在外围电路,其外围电路包括电源输入部分、键盘输入部分、复位部分、晶振部分、显示部分、报警部分组成,根据实际情况键盘输入部分选择4*4矩阵键盘,显示部分选择字符型液晶显示LCD1602。其原理图如图4-2所示:图4-2 电路总图4.3 电源输入部分 密码锁主要控制部分电源需要用5V直流电源供电,其电路如图4-3所示,而5V电源输入时往往伴有杂波,所以加一个2.2uF的电容滤波。这样输出的电压一般能满足要求。 图4-3 电源输入电路原理图4.4 键盘输入部分 由于本设计所用到的按键数量较多而不适合用独立按键式键盘。采用的是矩阵式按键键盘,它由行线和列线组成,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多I/O口。本设计中使用的这个4*4键盘不但能完成密码的输入还能作特别功能键使用,比如清空显示功能等。键盘的每个按键功能在程序设计中设置 。其大体功能(看键盘按键上的标记)及与单片机引脚接法如图4-4所示: 图4-4 键盘输入原理图 4.5 复位部分 单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC0000H,使单片机从第个单元取指令。无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。在复位期间(即RST为高电平期间),P0口为高组态,P1P3口输出高电平;外部程序存储器读选通信号PSEN无效。地址锁存信号ALE也为高电平。根据实际情况选择如图4-5所示的复位电路。该电路在最简单的复位电路下增加了手动复位按键,在接通电源瞬间,电容C1上的电压很小,复位下拉电阻上的电压接近电源电压,即RST为高电平,在电容充电的过程中RST端电压逐渐下降,当RST端的电压小于某一数值后,CPU脱离复位状态,由于电容C1足够大,可以保证RST高电平有效时间大于24个振荡周期,CPU能够可靠复位。增加手动复位按键是为了避免死机时无法可靠复位。当复位按键按下后电容C1通过R5放电。当电容C1放电结束后,RST端的电位由R5与R6分压比决定。由于R53?报警程序NYNY返回确认程序再次输新密码两次新密码输入相同?NY设置程序图5-3 密码设置流程图5.4 开锁流程图如图5-4为开锁流程图,开始时按开锁键,输入密码,如果输入正确,则开锁成功。如果输入错误累计达到三次,则执行报警程序。初始化按开锁键输入密码确认程序所输入密码正确?Y开锁成功开锁程序输入次数加1次数3?报警程序返回NYN图5-4开锁流程图天津工程师范学院2009届本科生毕业设计结 论以上为毕业期间所设计的电子密码控制系统的电路,它经过多次修改和整理,可以满足设计的基本要求。输入密码时,如三次输入错误,则进行报警,在输入时,LCD显示为“*”,在修改密码时,则显示数字。次设计还具有防盗功能,如对密码控制系统进行破坏,有报警功能。但因为我的水平有限,此电路中也存在一定的问题。譬如说电路的密码不能遗忘,一旦遗忘,就很难打开,这可以通过增加电路解决,但由于过于复杂,本设计并未加入;电路密码只有16种可供修改,但由于他人不知道密码的位数,而且还要求在规定的时间内按一定的顺序开锁,所以他人开锁的几率很小。由于使用的是单片机作为核心的控制元件,配合其它器件,使本密码控制系统具有功能强、性能可靠、电路简单、成本低的特点,加上经过优化的程序,使其有很高的智能化水平。天津工程师范学院2009届本科生毕业设计参考文献1 石文轩,宋薇.基于单片机MCS-51的智能密码锁设计M.武汉工程职业技术学院学报,2004,(01);2 祖龙起,刘仁杰.一种新型可编程密码锁J.大连轻工业学院学报,2002,(01);3 叶启明.单片机制作的新型安全密码锁J.家庭电子,2005,(10);4 李明喜.新型电子密码锁的设计J.机电产品开发与创新,2004,(03);5 董继成.一种新型安全的单片机密码锁J.电子技术,2004,(03);6 杨茂涛.一种电子密码锁的实现J.福建电脑,2004,(08);7 瞿贵荣.实用电子密码锁J.家庭电子,2000,(07);8 ATmega.ATmega8L-8AC,2006,(01);9 Wireless World,1998,vol、84,No、1509,p69;10 王千.实用电子电路大全M,电子工业出版社,2001,p101;11 何立民.单片机应用技术选编M,北京:北京航空大学出版社,1998;12 李华.MCS-51系列单片机使用接口技术M,北京航空航天大学出版社,1993;13 彭为.单片机典型系统设计实例精讲M,北京:电子工业出版社,2006;14 潘永雄.新编单片机原理与应用M,西安:西安电子科技大学出版社,2003;15 童诗白,华成英,模拟电子技术基础M,北京:高等教育出版社,2000;16 阎石主.数字电子技术基础M,北京:高等教育出版社,1998;27 樊昌信,曹丽娜.通信原理M,北京:国防工业出版社,2007;28 李瀚荪.电路分析基础M,北京:高等教育出版社1991;19 郭海英.基于单片机的电子安全密码锁的设计M.现代电子技术,2005,(13);20 何希才,杜煜.实用电子电路设计M.北京:电子工业出版社,199821 康华光.电子技术基础(第四版)M.北京:高等教育出版社,1998天津工程师范学院2009届本科生毕业设计致 谢四年的大学生活不知不觉中就要结束了,在这段难忘的生活中,我有许多美好的回忆。在这份大学的最后一页里,我要感谢的人很多,首先要感谢我的学校,感谢在这四年中教给我的做人的道理,让我从一个懵懂得高中生变成一个成熟的青年。还要感谢我的论文指导老师,在他的指导下我完成了论文,老师多次询问研究进程,并为我指点迷津。当然,还要感谢寝室的兄弟们在我完成论文的过程中给予我的帮助和鼓励,也是他们陪我度过了这四年的生活,最后要感谢的就是我的父母,对于他们我更是有千言万语,还是汇聚成一句话:感谢你们一直都伴随着我。现在即将挥别我的学校、老师、同学,还有我四年的大学生活,虽然依依不舍,但是对未来的路,我充满了信心。最后,感谢在大学期间认识我和我认识的所有人,有你们的伴随,才有我大学生活的丰富多彩,绚丽多姿!谢谢!天津工程师范学院2009届本科生毕业设计附录一:总原理图附录二: 程序#include #include #include #include lcd.h#include key.huchar key_buf16=0;uchar old_key16=0;uchar key_index=0;uchar string_buf17=0;uchar key;uchar key_statu=0;uchar clear
展开阅读全文