版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课 程 设 计 报 告lcd显示电子密码锁设计(the design of lcd electronic password-lock)学院 电气与控制工程 专业 测控技术与仪器 班级 0803班 成员 学号 日期 2011-7-15 摘 要单片机技术是智能化检测与控制领域应用非常普及并且具有很大潜力的技术。论文阐述一个基于单片机的液晶显示电子密码锁的设计与实现。系统采用美国atmel公司的at89c52单片机作为系统核心,液晶显示器lcd1602作为输出设备显示系统提示信息,时钟芯片ds12c887,温度显示器18b20,4*4矩阵薄膜键盘作为输入设备,cmos串行e2prom存储器at24c
2、02作为数据存储器,无线通信装置,配合蜂鸣器、继电器等电路构成整个系统硬件;系统软件采用汇编语言编写。设计的系统液晶显示,密码修改方便,具有报警、锁定等功能,使用便捷简单,符合住宅、办公等用锁需求,具有一定的实用价值。一设计背景: 锁具是源流千古的社会性用品,主要用于日常生活和工作中,住宅与部门的安全防范。当前门锁的主流是弹子锁,其保密性不强,钥匙容易被仿制和意外丢失;且持有者需随时携带钥匙,使用不方便。保存贵重物件的保险箱主要用机械密码锁,其结构较为复杂,制造精度要求高,成本高昂,且易出现故障。随着科技、经济和社会的发展,当今社会公共安全防范系统对锁具的保密性、牢固性、可靠性、耐用性以及安装
3、使用等提出了新的更高的要求。针对原有锁具的特点和缺陷,为满足人们对锁的使用需求,增加其安全性,用密码代替钥匙的电子密码锁应运而生。早期开发的电子密码锁由于电子器件所限,种类不多,保密性差,最基本的就是只依靠最简单的模拟电子开关来实现的,制作简单但不安全。后来多是基于eda实现,其电路结构复杂,电子元件繁多,也有使用早先2051系列单片机来实现的,但密码简单,容易破解。随着电子元件的进一步发展,电子密码锁也出现了很多的种类,功能日益强大,使用更加方便,保密安全性更强;由以前的单密码输入发展到现在密码加感应元件,实现了真正的电子加密。电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械
4、开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。电子密码锁的出现给人们带来了极大的方便,有很广阔的市场前景。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。本系统采用stc89c52单片机,应用液晶显示器1602作为输出显示系统提示信息的电子密码锁的设计与实现。实现功能:1,电源保护功能,能够实现电池供电与市电供电相互切换;2,具有小型万年历功能且时钟数据能在掉电后存入2402保持数据不变;3,具有密码锁功能,并且具有限定时间内输入密码并给予三次机会然后进入初始密码程序,如果四次密码出错,就进入报警否则密码锁打开;4,密码锁代
5、开后能够更改密码,防止密码被盗。5.另外,实现无线控制密码锁,远程控制效果良好。二系统方案设计:1 主控部分的选择方案:采用以单片机为核心的控制方案选用单片机作为系统的核心部件,实现控制与处理的功能。单片机具有资源丰富、速度快、编程容易等优点。利用单片机内部的随机存储器(ram)和只读存储器(rom)及其引脚资源,外接液晶显示(lcd),键盘输入等实现数据的处理传输和显示功能,基本上能实现设计指标,因此综合考虑,本系统采用本方案。2 密码输入方式的选择方案:矩阵键盘输入识别 由各按键组成的矩阵键盘每条行线和列线都对应一条i/o口线,键位设在行线和列线的交叉点,当一个键按下就会有某一条行线与某一
6、条列线接触,只要确定接触的是哪两条线,即哪两个i/o口线,就可以确定哪一个键被触动。 行线设计成上拉口线,初始时被置高电位,列线悬空,初始置低。通过不断读行线口线,或者中断方式触发键位扫描。当发现有键按下,将列线逐一置低,其他列线置高,读行线口线。当某条列线置低时,某条行线也被拉低,则确定这两条线的交点处的按钮被按下。每个按键都可通过程序赋予功能,从而完成密码识别8。本方案简单易行,故采用。三系统总体设计:本设计主要由单片机、矩阵键盘、液晶显示器和密码存储等部分组成。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存
7、的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警,实际使用时只要将单片机的负载由继电器换成电子密码锁的电磁铁吸合线圈即可。系统整体框图如图所示。键盘输入模块 开锁电路密码存储模块 晶振电路 s t c 8 9 c 5 2 led显示电路lcd显示模块蜂鸣器报警电路 无线通信模块 复位电路 各模块功能如下:1键盘输入模块:分为密码输入按键与几个功能按键,用于完成密码锁输入功能。2密码存储模块:用于完成掉电存储功能,使修改的密码断电后仍能保存。3蜂鸣器报警电路:用于完成输错密码时候的警报功能。4. 晶振电路:用于单片机的起振。5复位电路:完成系统
8、的复位。6显示模块:用于完成对系统状态显示及操作提示功能。7. 无线通信模块:实现无线控制密码锁。8. led显示模块:用于辅助报警与输入提示。9开锁电路:应用继电器及发光二极管模拟开锁,完成开锁及开锁提示。四所用芯片介绍:1 . stc89c52stc89c52单片机是一个低功耗,高性能cmos 8位单片机,片内含8k bytes isp(in-system programmable)的可反复擦写1000次的flash只读程序存储器,器件采用atmel公司的高密度、非易失性存储技术制造,兼容标准mcs-51指令系统及80c51引脚结构,芯片内集成了通用8位中央处理器和isp flash存储单
9、元,功能强大的微型计算机的stc89c52可为许多嵌入式控制应用系统提供高性价比的解决方案10。stc89c52具有以下标准功能: 8k字节flash,256字节ram,32 位i/o 口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,at89s52可降至0hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,cpu停止工作,允许ram、定时器/计数器、串口、中断继续工作。掉电保护方式下,ram内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。at89s52的管脚分布如图3-2所示。 p0口
10、为一个8位漏级开路双向i/o口,每脚可吸收8ttl门电流。当p0口的管脚第一次写1时,被定义为高阻输入。p0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。p1口是一个内部提供上拉电阻的8位双向i/o口,p1口缓冲器能接收输出4ttl门电流。p1口管脚写入1后,被内部上拉为高,可用作输入,p1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。p2口为一个内部上拉电阻的8位双向i/o口,p2口缓冲器可接收,输出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入 stc89c52芯片管脚此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部
11、上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p3口作为stc89c52的一些特殊功能管脚备选功能,p3.0 rxd(串行输入口)p3.1 txd(串行输出口)p3.2 /int0(外部中断0)p3.3 /int1(外部中断1)p3.4 t0(记时器0外部输入)p3.5 t1(记时器1外部输入)p3.6 /wr(外部数据存储器写选通) p3.7 /rd(外部数据存储器读选通)stc89c52主要特性如表所示。 stc89c52主要
12、特性兼容mcs-51指令系统8k可反复擦写(1000次)isp flash rom32个双向i/o口4.5-5.5v工作电压3个16位可编程定时/计数器时钟频率0-33mhz全双工uart串行中断口线256x8bit内部ram2个外部中断源低功耗空闲和省电模式中断唤醒省电模式3级加密位看门狗(wdt)电路软件设置空闲和省电功能灵活的isp字节和分页编程双数据寄存器指针2. 存储芯片at24c02 at24c02是美国atmel公司的低功耗cmos型eprom,内含2568位存储空间,具有工作电压宽(2.55.5 v)、擦写次数多(大于10000次)、写入速度快(小于10 ms)、抗干扰能力强、
13、数据不易丢失、体积小等特点。而且他是采用了ic总线式进行数据读写的串行器件,占用很少的资源和i/o线,并且支持在线编程,进行数据实时的存取十分方便。at24c02中带有的片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。i2c总线是一种用于ic器件之间连接的二线制总线。他通过sda(串行数据线)及scl(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件。 at24c02正是运用了ic规程,使用主/从机双向通信,主机(通常为单片机)和从机(at
14、24c02)均可工作于接收器和发送器状态。主机产生串行时钟信号(通过scl引脚)并发出控制字,控制总线的传送方向,并产生开始和停止的条件。无论是主机还是从机,接收到一个字节后必须发出一个确认信号ack。at24c02的控制字由8位二进制数构成,在开始信号发出以后,主机便会发出控制字,以选择从机并控制总线传送的方向。管脚描述: scl 为串行时钟: 串行时钟输入管脚用于产生器件所有数据发送或接收的时钟这是一个输入管脚。 sdl 为串行数据/地址:双向串行数据/地址管脚用于器件所有数据的发送或接收sdl,是一个开漏输出管脚可与其它开漏输出或集电极开路输出进行线。 a0、a1、a2 为器件地址输入端
15、:当使用24c02 时最大可级联8个器件,如果只有一个24c02被总线寻址,这三个地址输入脚a0、a1、a2可悬空或连接到vss。wp为写保护:如果wp 管脚连接到vcc 所有的内容都被写保护只能读当wp, 管脚连接到vss 或悬空,允许器件进行正常的读/写操作12。管脚图如图所示。 at24c02引脚3. lcd1602显示器现在的字符型液晶模块已经是单片机应用设计中最常用的信息显示器件了。1602型lcd显示模块具有体积小,功耗低,显示内容丰富等特点。1602型lcd可以显示2行16个字符,有8位数据总线d0d7和rs,r/w,en三个控制端口,工作电压为5v,并且具有字符对比度调节和背光
16、功能。1) lcd器件引脚图如下: 2) 显示地址如下: 3) 接口信号说明:1602型lcd的接口信号说明如表所示。 1602型lcd的接口信号说明第1脚vss 电源地第9脚d2双向数据线第2脚vdd +5v电源第10脚d3双向数据线第3脚vee 液晶显示偏压信号第11脚d4双向数据线第4脚rs 数据/命令选择端第12脚d5双向数据线第5脚r/ w 读/写 选择端第13脚d6双向数据线第6脚e 使能端第14脚d7双向数据线第7脚d0双向数据线第15脚bla 背光源正极第8脚d1 双向数据线第16脚blk 背光源负极 4) 主要技术参数:1602型lcd的主要技术参数如表所示。 1602型lc
17、d的主要技术参数显示容量162个字符芯片工作电压4.55.5v工作电流2.0ma(5.0v)模块最佳工作电压5.0v字符尺寸2.954.35(wxh)mm5) 基本操作程序:读状态:令rs=l,rw=l, e=h 输出:d0d7=状态字读数据:令rs=h,rw=h, e=h 输出:无写指令:令rs=l,rw=l,d0d7=指令码,e=高脉冲 输出:d0d7=数据写数据:令rs=h,rw=l, d0d7=数据, e=高脉冲 输出:无密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多i/o口。本设计中使用的这个44键盘不但能完成密码的输入还能作特别功能键使用。键盘的每个按键功能在程序设计
18、中设置。它与单片机的连接如图所示。 键盘输入模块4. 时钟芯片ds12c8871)器件特性ds12c887 实时时钟芯片功能丰富,可以用来直接代替ibm pc 上的时钟日历芯片。同时,它的管脚也和mc146818b、ds12887 相兼容。由于ds12c887 能够自动产生世纪、年、月、日、时、分、秒等时间信息,其内部又增加了世纪寄存器,从而利用硬件电路解决子“千年”问题;ds12c887 中自带有锂电池,外部掉电时,其内部时间信息还能够保持10 年之久;对于一天内的时间记录,有12小时制和24 小时制两种模式。在12 小时制模式中,用am和pm 区分上午和下午;时间的表示方法也有两种,一种用
19、二进制数表示,一种是用bcd 码表示;ds12c887 中带有128 字节ram,其中有11 字节ram用来存储时间信息,4 字节ram用来存储ds12c887的控制信息,称为控制寄存器,113 字节通用ram 使用户使用;此外用户还可对ds12c887进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽。2 引脚功能ds12c887 的引脚排列如图1 所示,各管脚的功能说明如下:gnd、vcc:直流电源,其中vcc 接+5v 输入,gnd 接地,当vcc 输入为+5v 时,用户可以访问ds12c887 内ram 中的数据,并可对其进行读、写操作;当vcc 的输入小于+4.25v
20、 时,禁止用户对内部ram 进行读、写操作,此时用户不能正确获取芯片内的时间信息;当vcc 的输入小于+3v 时,ds12c887 会自动将电源发换到内部自带的锂电池上,以保证内部的电路能够正常工作。mot:模式选择脚,da12c887 有两种工作模式,即motorola 模式和intel 模式,当mot接vcc 时,选用的工作模式是motorola 模式,当mot 接gnd 时,选用的是intel 模式。本文主要讨论intel 模式。sqw:方波输出脚,当供电电压vcc 大于4.25v 时,sqw脚可进行方波输出,此时用。 5. ds18b20数字温度计ds18b20基本知识 ds18b20
21、数字温度计是dallas公司生产的1wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。 1)ds18b20产品的特点 (1)只要求一个端口即可实现通信。 (2)在ds18b20中的每个器件上都有独一无二的序列号。 (3)实际应用中不需要外部任何元器件即可实现测温。 (4)测量温度范围在55。c到125。c之间。 (5)数字温度计的分辨率用户可以从9位到12位选择。 (6)内部有温度上、下限告警设置。 2)ds18b20的引脚介绍 to92封装的ds18b20的引脚排列见图1,其引脚功能描述见表: d
22、s18b20详细引脚功能描述 引脚功能描述:1gnd :地信号。2dq :数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3. vdd:可选择的vdd引脚。当工作于寄生电源时,此引脚必须接地。3 ds18b20的使用方法 由于ds18b20采用的是1wire总线协议方式,即在一根数据线实现数据的双向传输,而对at89s51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对ds18b20芯片的访问。 由于ds18b20是在一根i/o线上读写数据,因此,对读写的数据位有着严格的时序要求。ds18b20有严格的通信协议
23、来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。 3)ds18b20的复位时序 (1)ds18b20的读时序 对于ds18b20的读时序分为读0时序和读1时序两个过程。 对于ds18b20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让ds18b20把数据传输到单总线上。ds18b20在完成一个读时序过程,至少需要60us才能
24、完成。 (2)ds18b20的写时序 对于ds18b20的写时序仍然分为写0时序和写1时序两个过程。 对于ds18b20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证ds18b20能够在15us到45us之间能够正确地采样io总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。五系统电路:1. 密码存储模块图所示at24c02的1、2、3脚是三条地址线,用于确定芯片的硬件地址。在at89s51试验开发板上它们都接地,第5脚和第8脚分别为正、负电源。第8脚sdl为串行数据输入/输出,数据通过这条双向ic总线串行传送,在at89c52
25、试验开发板上和单片机的p3.6连接。第6脚scl为串行时钟输入线,在at89c52试验开发板上和单片机的p3.7连接。sdl和scl都需要和正电源间各接一个5.1k的电阻上拉。第6脚接p3.5。at24c02中带有片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。密码存储电路2. 复位部分 单片机复位是使cpu和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作。该电路在最简单的复位电路下增加了手动复位按键,在接通电源瞬间,电容c1上的电压很小,复位
26、下拉电阻上的电压接近电源电压,即rst为高电平,在电容充电的过程中rst端电压逐渐下降,当rst端的电压小于某一数值后,cpu脱离复位状态,由于电容c1足够大,可以保证rst高电平有效时间大于24个振荡周期,cpu能够可靠复位。增加手动复位按键是为了避免死机时无法可靠复位。当复位按键按下后电容c1通过r5放电。当电容c1放电结束后,rst端的电位由r5与r6分压比决定。由于r5r6 因此rst为高电平,cpu处于复位状态,松手后,电容c1充电,rst端电位下降,cpu脱离复位状态。r5的作用在于限制按键按下瞬间电容c1的放电电流,避免产生火花,以保护按键触电。其电路如图所示。复位电路3.晶振部
27、分 at89s52引脚xtal1和xtal2与晶体振荡器及电容c2、c3按图所示方式连接。晶振、电容c2c3及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容c2、c3的容量有关,但主要由晶振频率决定,范围在033mhz之间,电容c2、c3取值范围在530pf之间。根据实际情况,本设计中采用12mhz作为系统的外部晶振。电容取值为10pf。其电路图如图所示。 晶振电路4. 显示模块显示部分由液晶显示器lcd1602取代普通的数码管完成。开锁时,按下键盘上的开锁按键后,利用键盘上的数字键09输入密码,每按下一个数字键后在显示器上显示一个*,输入多少位就显示多少
28、个*。当密码输入完成时,按下确认键,如果输入的密码正确的话, lcd显示“door open”,单片机其中p2.0引脚会输出低电平,使三极管t2导通,电磁铁吸合,继电器开关跳转,电子密码锁被打开,如果密码不正确,lcd显示屏会显示“code wrong”,p2.0输出的是高电平,电子密码锁不能打开。通过lcd显示屏,可以清楚地判断出密码锁所处的状态。电路图如图所示。 显示电路5. 报警部分 报警部分由陶瓷压电发声装置及外围电路组成,加电后不发声,当有键按下时,“叮”声,每按一下,发声一次,密码正确时,不发声直接开锁,当密码输入错误时,单片机的p2.1引脚为低电平,三极管t3导通蜂鸣器发出噪声报
29、警。如图4-7所示。 报警电路6. 开锁部分开锁控制电路的功能是当输入正确的密码后将锁打开。系统使用单片机其中一引脚线发出信号,经三极管放大后,由继电器驱动电磁阀动作将锁打开。用户通过键盘任意设置密码,并储存在e2prom中作为锁码指令。只有用户操作键盘时,单片机的电源端才能得到3v电源,否则,单片机处于节电工作方式。开锁步骤如下:首先按下键盘上的开锁按键,然后利用键盘上的数字键09输入密码,最后按下确认键。当用户输入密码后,单片机自动识别密码,如果密码不符,则报警。只有当密码正确,单片机才能使继电器处于开锁状态。具体电路如图所示。开锁电路7. 电源部分220v市电通过变压器降压成12v的交流
30、电,再经过整流桥整流,7805稳压到5v送往电子切换电路,由于本电路功耗较少,所以选用10w的小型变压器。为了防止停电情况的发生,本电路后备了ups电源,它包括市电供电电路,停电检测电路,电子开关切换电路,蓄电池充电电路和蓄电池组成。主要有继电器控制。市电通电正常状态下继电器常开导通,常闭断开,由市电供电。当市电断开,继电器常闭导通,常开断开。实现了市电与电池之间的切换。当市电接通时本电路还有电池充电功能,六系统程序流程:1系统主程序在keil c51中设置)。如果有错误则无法连接,但可在生成的.obj文件中找到代码错误的地方,便于修改。当然也可以直接在keil中编码。生成的hex文件是记录文
31、本行的ascii文本文件,在hex文件中,每一行是一个hex记录,由十六进制数组成的机器码或者数据常量。hex文件经常被用于将程序或数据传输存储到rom、eprom,大多数编程器和模拟器使用hex文件。 系统的主程序如图5-1所示。由于用户在使用系统的过程中,可能在任何时刻按下任何按键,而程序都必须对此作出正确响应。 开始初始化密码正确 输入旧密码出错报警开锁原密码相同设新密码 返回开锁修改y ny n2.初始化及按键识别 如图,系统的初始化包括堆栈起始地址的设定,两个定时/计数器的设定,液晶显示模式的设定,密码缓冲区的初始化,一些自定义数据空间的初始化,蜂鸣器初始化发声等操作。 果at24c
32、02里没有存储密码,或者读取at24c02失败,则载入系统初始化密码;如果at24c02里有掉电存储的密码,则会读出该密码。系统初始化并读取密码完成后,液晶显示the password: is,提示用户可以输入密码。此时程序即不断测试按键,检查是否有按键被按下。如果有,则进行按键识别;行列扫描法识别出的键位与对应buff的值如所示。如果没有按键按下,或者按下的按键没有被识别,kevyal赋值0ffh,并跳转至按键测试。实际程序运行时,绝大部分时间都在测试按键,等待用户输入。 初始化及按键识别流程图有按键按下?否是按键测试子程序按键识别子程序按键重定位延时0.5s否识别成功?是开始系统初始化读取
33、密码提示输入密码读取成功?否是载入初始密码3.开锁处理首先lcd初始化,输入密码,密码正确则使开锁电路动作,继电器得电,开锁指示灯亮。开锁程序流程图如图5-3所示。开锁lcd初始化按开锁键输入密码确认程序n输入密码正确?报警程序开锁成功返回y 开锁流程图4.改密处理 如图可以看出,改密键的处理流程跟开锁键类似,都需检查密码是否正确,错误的话,提示重新输入,只有输入密码正确才可以进行改密。然后再按更改键,密码更改程序被调用,进而更改密码,此过程,lcd都会显示信息。输入密码再次输入新密码重新输入密码错误开始密码正确两次输入对比相同ny 更改成功提示输入新密码 改密流程图开始清显示写指令入ir字符
34、地址入dptr字符=00h?否是字符代码送入p0口写数据入dr地址+1返回写结束 液晶显示子程序流程图5液晶显示子程序液晶显示子程序在每次更新显示内容时都会被调用,其流程如图所示。每次更新显示内容前,需清显示清空lcd原先的显示内容,清屏指令的指令码为01h,即将p0口赋值01h,然后写入指令寄存器ir。lcd1602要显示的内容是根据其控制器内置的字符码表,事先列出要显示的ascii字符串。每次送一个字符的ascii码入p0口,然后写入数据寄存器dr,最后将字符地址加一,lcd1602会将写入的ascii码对应的字符依次显示出来。由于显示字符串的长度不尽相同,约定每串字符以00h结尾;程序检
35、测到字符码为00h时,即停止写入,返回。lcd显示的内容在下次更新前会一直保持。6 .at24c02子程序at24c02的子程序包括从at24c02中读取信息和将信息写入at24c02,首先介绍at24c02的读程序。如图所示,单片机作为主器件,发送起始信号和要寻址的从器件的地址;因为此时即随后的发送读取地址操作都是单片机往at24c02写入控制信息,所以r/w要置0。本设计中只用一个at24c02,从器件地址为0,对应代码为0a0h。at24c02接收到信号后,发送应答信号。单片机接收到应答信号后,再发送要读取信息在从器件上的地址;本设计中从0地址开始读,则送00h。再次接收到从器件的应答信
36、号后,单片机重新发送起始信号和读模式信号,将r/w位置1,对应代码为0a1h,正式开始读取信息。本设计中需要连续读取16字节的信息,所以选择连续读方式;即是单片机每接收到一字节的信息后,存入正确密码缓冲区(at1at16),然后产生一个应答信号,告知at24c02要求更多的数据。当单片机不发送应答信号而发送停止信号时表示读取结束。读at24c02子程序流程图发送读取地址接收应答信号成功?是否开始发送起始信号发送从器件地址写模式接收应答信号成功?是否发送起始信号发送读模式信号接收应答信号成功?否是读一字节数据发送应答信号地址+1读完成?否是提示读取失败不发送应答信号发送停止信号提示读取成功返回写
37、入at24c02的子程序。单片机发送起始信号,接着发送从器件at24c02所在地址(0a0h)。这里与读at24c02子程序不同的是,从开始到结束都是单片机控制at24c02写入信息,所以r/w置1无需更改。对应地址上的从器件at24c02接收到地址信号后发送应答信号。主器件在接收到应答信号后,发送要写入信息欲保存在从器件上的地址,本设计中从0地址开始保存,故地址为00h。单片机再次接收到从器件的应答信号后即可开始写入信息。本设计中采用字节写模式,即at24c02在每接收一个8位字节之后响应一个应答信号,单片机在接收到应答信号后认为该字节成功写入,便准备下一字节的数据。直到所有数据发送完毕,单
38、片机发送停止信号,结束写操作。七系统调试与测试:系统的软硬件设计都完成后,还不能直接上电运行;需要对系统进行详细的调试,以消除在设计过程中出现的各种错误。单片机系统的硬件调试和软件调试是不能分开的,很多硬件错误是在软件调试中被发现和纠正的。但通常是先排除明显的硬件故障以后,再和软件结合起来调试以进一步排除故障。所以硬件的调试是基础,如果硬件调试不通过,软件设计则是无从做起。当硬件设计从布线到焊接安装完成之后,就开始进入硬件调试阶段。首先应该确认电源电压是否正常,用电压表测量接地引脚跟电源引脚之间的电压,看是否是电源电压。接下来就是检查复位引脚电压是否正常。分别测量按下复位按钮和放开复位按钮的电
39、压值,看是否正确。然后再检查晶振是否起振了,一般用示波器来看晶振引脚的波形,注意应该使用示波器探头的“x10”档。另一个办法是测量复位状态下的io口电平,按住复位键不放,然后测量io口(没接外部上拉的p0口除外)的电压,看是否是高电平,如果不是高电平,则多半是因为晶振没有起振。另外还要注意的地方是,如果使用片内rom的话,一定要将ea引脚拉高,否则会出现程序乱跑的情况。如果系统运行不稳定的话,有时是因为电源滤波不好导致的。在单片机的电源引脚跟地引脚之间接上一个0.1uf的电容会有所改善。如果电源没有滤波电容的话,则需要再接一个更大滤波电容,例如220uf的。遇到系统不稳定时,就可以并上电容,越靠近芯片越好。系统的键盘输入电路,蜂鸣器发声电路,at24c02密码存储电路,继电器开锁电路,液晶显示电路,这几个部分在检查硬件无误后,需要结合软件调试。可编写单独控制某一部分的程序,运行看是否可以正确控制。如蜂鸣器发声电路,可编写程序控制单片机p3.6口电平,上电运行看是否正常发声。一些无法直接观测出运行效果的电路,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论