已阅读5页,还剩50页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学号:02206069使用飞思卡尔MC9S08LL8的经验一:低功耗(原创) 2010-9-21 7:40:00 | By: 飞翔 本次项目产品(电动汽车仪表)开发使用的单片机是MC9S08LL8(以下简称LL8),这个芯片的性能还是非常的棒!开发产品主要是考虑成本(在满足性能指标的前提下),并且尽可能有效利用单片机内部的资源,例如:产品需要用到A/D,RTC,液晶驱动,EEPROM数据存储等,在选型的时候看是否有满足所有条件的,不过全部满足一般都很难,取最主要的。言归正传,开发完产品后,体会到MC9S08LL8的妙处,我用到了它的flash模拟EEPROM、RTC、A/D和液晶驱动等功能。产品最终的功耗做得很小,在STOP3模式下功耗小于1uA,并且此时TOD是工作的(32.768kHz处于低功耗工作模式),25左右环境,3.0V工作电源。现总结如下:一、 低功耗处理:众所周知,对于电池设备来说,功耗是个重要的技术参数,如何让MCU运行的功耗最低,需要在设计电路是仔细考虑MCU的每一个引脚。对于MCU来说,其功耗主要和电源电压及工作总线频率有关。电源电压越低,功耗越低(功耗与电压是成平方关系);总线频率越低,功耗越低,当然MCU运行速度(指令执行的快慢)也变慢了,所以需要折中考虑。LL8的低功耗主要从以下4个方面考虑:1)选择停止模式:本次开发的产品有2个电源供电,外部供电和电池CR2032供电。在外部供电的情况下可以基本上不考虑单片机功耗,但是在外部断电的情况下,要尽可能降低它的功耗。从LL8的封装和电气说明PDF手册上查到(飞思卡尔的芯片手册分为2个pdf文档,一个是芯片内部资源的详细说明,一个是封装和电气特性说明),如图1.1所示:图1.1 停止模式的电流特性LL8有2种停止模式,STOP2和STOP3。虽然STOP3在停止模式下(同等温度、电源电压条件下)功耗比STOP2略高一点,但是STOP3的唤醒启动速率快,手册上说6us!,并从图1.2上可以看出,STOP2情况下flash电也断了,唤醒的程序将相当于重启。并且产品有个实时时钟,也就是说在外部供电停止的情况下,实时时钟需要继续运行,将由电池供电。因此,如果产品设计在停止模式下外部32.768kHz晶振需要继续运行的话,建议用STOP3模式。坦白说,STOP2模式基本用不着,因为进入STOP2模式,只是RAM有电,并且单片机不做任何的事情,也就用不着电池供电,所以可以直接让单片机上电重启,不需要唤醒。 图1.2 模式选择2)单片机外围I/O电路的设计 这个部分其实很关键,需要对单片机每一个引脚的精雕细琢,因为其中一个引脚处理不当,可能就是几十个uA以上。我在调试的过程中,也吃过不少苦头。其实处理单片机的引脚可以按照以下几种方式:(原则只有一个:让单片机的每个引脚都有确定的电平,并让每个引脚的压差为0,即无任何电流包括不可预知的电流和通过I/O口倒流的电流) 悬空引脚:单片机某个引脚未接任何电路,相当于这个引脚的电平是处于不定状态,需要通过程序给他一个固定的电平,一般采取内部上拉并输出1即可(或者输出0),这样既保证了引脚压差为0,又保证了引脚有个确定的电平。有外部上拉的输入或输出:这种情况是指:掉电情况下仍是外部上拉,因为必须注意到产品是否有2路电源供电,若是电池供电,则掉电情况下仍然属于外部上拉,如果是外部供电,则掉电后就不再是外部上拉了,这个情况需要分开处理。在有外部上拉的情况下,则让此I/O输出高电平1可以实现理论上的0电流。对于外部电源供电的上拉,可以通过一个整流硅二极管后再上拉,如图1.3:图1.3 I/O口处理这样可以通过程序将此I/O口设置为输出,并输出0,可以实现0电流。输出(无外部上拉): 单片机本来就是做输出功能的引脚,可以直接设置为输出并且输出0。输入(无外部上拉): 单片机可以设置成输出,并输出0。以上4情况可以总结为:大部分I/O口可以直接设置为输出,并输出0,只有有外部上拉的情况下,才需要特殊考虑。3)单片机电源的处理: 主要针对双电源供电,一般来说需要用整流二极管反向实现,如图1.4图1.4 电源供电如果需要考虑几个uA功耗的话,D200必须用硅二极管,如IN4148,不可用1N5819。由于IN4148的压降近似0.7V,所以电源采用3.6V,这样单片机的工作电源就只有2.9V左右了,也将导致电池电压降到2.9V左右功耗将小于1uA。我开始用的电源是3.3V的,D200用的是IN5819,结果在STOP3模式下常温的功耗有8uA左右,而我拔掉这个IN5819就小于1uA。经查手册发现,一般肖特基二极管的反向最大漏电流有几十个uA,甚至mA级别(和反向电压和温度有关)。所以这里我选择了1N4148,一般硅二极管的最大漏电流也只有0.1uA。 对于电池经过1N5819后到单片机电源,很多资料说二极管压降太大,采用三极管或者其他方案,这个容易误导大家,因为二极管的压降也和其流过的电流有关,在电流为几个uA的情况下,压降几乎为0。我也试过飞思卡尔官网上关于电表方案对电池部分的处理,为了不要有0.3V左右的压降(二极管的压降),它就是采用三极管电路,但我经过试验发现,这个电路不是很合理,因为在掉电的情况下有二十几个uA,电流出现倒流了,此电路可能需要进一步的改进。4)关掉不用的外设: 这个对于降低功耗也很关键,其中也包括单片机运行时的功耗。每一款单片机可能不一样,像AVR系列的ATMEGA88PA其模拟比较器是默认打开的,而如果电路里面没有用到的话,则可以通过软件将其关闭,以减小功耗。所以,软件里面需要考虑到哪些模块是默认打开的,默认打开的模块有没有用到,若没有用到就通关软件设置将其关闭,以减少没必要的功耗。LL8里面的LVD功能默认在停止模式下是继续工作的,而这个功能在停止模式下消耗的电流在100uA以上,所以停止模式必须将其关闭,以节省功耗。2010 届本科生毕业论文(设计)题 目: 液晶显示电子密码锁设计学院(系):信 息 工 程 学 院专业年级:计算机科学与技术2006级学生姓名:指导教师:完成日期:2010-6-10- 45 -液晶显示电子密码锁设计摘 要单片机技术是智能化检测与控制领域应用非常普及并且具有很大潜力的技术。论文阐述一个基于单片机的液晶显示电子密码锁的设计与实现。系统采用美国Atmel公司的AT89S52单片机作为系统核心,液晶显示器LCD1602作为输出设备显示系统提示信息,4*4矩阵薄膜键盘作为输入设备,CMOS串行E2PROM存储器AT24C02作为数据存储器,配合蜂鸣器、继电器等电路构成整个系统硬件;系统软件采用汇编语言编写。设计的系统液晶显示,密码修改方便,具有报警、锁定等功能,使用便捷简单,符合住宅、办公用锁需求,具有一定的实用价值。关键词:密码锁;单片机;AT89S52;LCD1602;AT24C02The Design of LCD Electronic Password-LockAbstractSCM technology is very popular and has great potential in application of intelligent detection and control field. This thesis describes the design and implementation of LCD electronic password-lock system based on SCM. The system uses the product of America Atmel corporation AT89S52 as the core of system, liquid crystal monitor 1602 as the output device displaying the prompt information of system, 4*4 matrix membrane keyboard as the input device, serial E2PROM memory AT24C02 as the data storage, with buzzer, relay, and other circuits together constitute the system hardware. The software of the system is written in assembly language. The designed system display in LCD, change password easily, has the function of alarming, locking, and so on. This system is simple and easy to use, meets the demand of residential, office lock needs, has some practical value.Key words: Password-Lock; SCM; AT89S52; LCD1602; AT24C02目 录1 引言- 1 -2 系统设计- 1 -2.1 功能设计- 1 -2.2 结构设计- 2 -3 硬件设计- 3 -3.1 AT89S52简介- 3 -3.2 液晶显示电路- 5 -3.2.1 LCD1602简介- 5 -3.2.2 LCD1602电路- 9 -3.3 发声电路- 9 -3.4 开锁控制电路- 10 -3.5 密码存储电路- 11 -3.5.1 AT24C02简介- 11 -3.5.2 AT24C02电路- 14 -3.6 键盘输入电路- 14 -3.7 手动复位电路- 14 -3.8 晶振电路- 15 -4 软件设计- 16 -4.1 系统主程序- 16 -4.1.1 初始化及按键识别- 16 -4.1.2 按键重定位- 17 -4.1.3 保存密码- 19 -4.1.4 确认键处理- 19 -4.1.5 开锁键处理- 20 -4.1.6 改密键处理- 21 -4.1.7 校验新密码- 21 -4.2 系统相关子程序- 22 -4.2.1 按键识别子程序- 22 -4.2.2 液晶显示子程序- 23 -4.2.3 AT24C02子程序- 23 -5 系统调试与测试- 25 -6 结论- 26 -附 录- 29 -1 引言1 引言 锁具是源流千古的社会性用品,主要用于日常生活和工作中,住宅与部门的安全防范。当前门锁的主流是弹子锁,其保密性不强,钥匙容易被仿制和意外丢失;且持有者需随时携带钥匙,使用不方便。保存贵重物件的保险箱主要用机械密码锁,其结构较为复杂,制造精度要求高,成本高昂,且易出现故障。随着科技、经济和社会的发展,当今社会公共安全防范系统对锁具的保密性、牢固性、可靠性、耐用性以及安装使用等提出了新的更高的要求。针对原有锁具的特点和缺陷,为满足人们对锁的使用需求,增加其安全性,用密码代替钥匙的电子密码锁应运而生。早期开发的电子密码锁由于电子器件所限,种类不多,保密性差,最基本的就是只依靠最简单的模拟电子开关来实现的,制作简单但不安全。后来多是基于EDA实现,其电路结构复杂,电子元件繁多,也有使用早先2051系列单片机来实现的,但密码简单,容易破解。随着电子元件的进一步发展,电子密码锁也出现了很多的种类,功能日益强大,使用更加方便,保密安全性更强;由以前的单密码输入发展到现在密码加感应元件,实现了真正的电子加密。电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。电子密码锁的出现给人们带来了极大的方便,有很广阔的市场前景。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁,特点有:l 保密性好,编码量多。l 随机开锁成功率几乎为零。l 密码可变。用户可以经常更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。l 误码输入保护。当输入密码多次错误时,报警系统自动启动。l 操作简单易行,一学即会。2 系统设计 论文阐述基于美国Atmel公司的AT89S52单片机,采用液晶显示器1602作为输出显示系统提示信息的电子密码锁的设计与实现。2 系统设计2.1 功能设计本系统拟采用单片机为主控芯片,由于单片机种类繁多,各种型号都有其各自特点,应用于不同的环境,因此在选用时要多加比较。一般来说,在选取单片机时从下面几个方面考虑:性能、存储器、运行速度、I/O口、定时/计数器、串行/并行接口、模拟电路功能、工作电压、功耗、封装形式、抗干扰性、保密性等等。基于以上因素本设计选用单片机AT89S52作为本设计的核心元件,利用该单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。在单片机I/O接口上外接输入键盘用于输入和一些功能的控制。考虑到密码的存在形式一般为数字或字母形式,而字母数量众多,并且排列不规则,不能使用矩阵式键盘排列字母;并且按键过多会大大增加系统的体积,对适用性极为不利,故只使用数字作为密码。阿拉伯数字不仅便于用户记忆,而且通用性极强,是作为密码的首选。10个数字需要1个不同的按键,故选用为4*4矩阵键盘;除去10个数字键,还剩6个按键可设置不同的功能。用户使用电子密码锁开锁的步骤为:用户输入数字密码,输入完毕后按确认键。如果密码正确,再按开锁键,即可开锁。如果密码错误则报警,如果密码错误多次,还会锁定键盘。这里需要蜂鸣器提示用户按键已按下,开锁需要继电器开关。液晶显示器则直观显示系统当前状态和提示用户需要做的操作。用户修改密码步骤为:首先输入旧密码,输入完毕后按确认键。如果密码正确再按改密键。输入两次新密码并确认。如果两次密码输入长度一致,则密码修改成功。如果两次输入不一致,则密码修改失败。失败后只能重新输入旧密码才能继续改密。为防止系统发生异常,还应提供复位开关,在系统无法正常运转时手动复位。2.2 结构设计单片机密码存储开锁部分液晶显示发声部分电源键盘复位晶振图2-1 系统结构图如图2-1所示,整个系统以单片机为核心,辅以若干外围电路。其中密码存储部分是输入输出双向结构,保证密码可以掉电保存,上电后读出。其余都是单向输入或输出。电源部分为整个系统供电,采用5V直流电源。键盘输入部分采用4*4矩阵行列键盘,需不断扫描检查有无按键按下。复位部分提供手动复位功能,当系统发生异常或未知错误时可以由用户手动复位单片机。晶振部分是提供外部石英晶体谐振器。系统输出有:液晶显示部分,为用户显示字符提示当前操作状态。蜂鸣器发声,提示用户按键已按下,以及密码正确的提示音,错误的警告音等。开锁电路部分是控制继电器,只有密码正确并选择开锁后,继电器内部的电磁铁才会吸合,发光二极管电路连通后发光,表示锁已打开。3 硬件设计3 硬件设计图3-1 系统原理电路图根据上面的结构设计思路,具体设计中选用一块20cm*10cm的通用PCB板做为系统焊接板。单片机为Atmel公司的AT89S52,电源部分为直流4.5V,3节5号电池供电,实验时也可以用直流5V电源供电。键盘输入部分为4*4矩阵薄膜键盘,不需上拉电阻,但扫描时需先给行线或列线供电。液晶显示器选用1602,可以显示两行,每行16个字符。蜂鸣器为有源5V。继电器为5脚5V。密码存储选用串行AT24C02芯片,256B空间,足够存储密码,采用串行传输可以极大减少连线数目。系统原理电路图如图3-1所示。下面按系统的结构具体介绍一些电路及其所用的芯片。3.1 AT89S52简介AT89S52是一款低功耗、高性能CMOS8位微控制器,具有8K可编程 Flash存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业 80C51 产品指令和引脚完全兼容。AT89S52具有以下标准功能:8K字节Flash, 256字节RAM,32 位 I/O 口线,看门狗定时器,2 个数据指针,三个 16 位定时器/计数器,一个6向量 2级中断结构,全双工串行口,片内晶振及时钟电路。其引脚如图3-2所示,下面简要介绍其引脚功能:图3-2 AT89S52引脚图VCC:电源。本设计中接电源正极。GND:地。本设计中接电源负极。P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写1时,引脚用作高阻抗输入。 P1口:P1口是一个具有内部上拉电阻的8 位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。对 P1 端口写1时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写1时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲器能驱动4个TTL逻辑电平。对P3端口写1时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。RST:复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。EA/VPP:访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。本设计中不需要外部程序存储器,因此需接高电平。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。以上是AT89S52的引脚功能介绍,下面简要介绍AT89S52的存储器结构。AT89S52有单独的程序存储器和数据存储器,外部程序存储器和数据存储器都可以64K寻址。程序存储器:如果EA引脚接地,程序读取只从外部存储器开始。对于AT89S52,如果EA接VCC,程序读写先从内部存储器(地址为0000H1FFFH)开始,接着从外部寻址,寻址地址为:2000HFFFFH。数据存储器:AT89S52有256字节片内数据存储器。高128字节与特殊功能寄存器重叠。也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。当一条指令访问高于7FH的地址时,寻址方式决定CPU访问高128字节RAM还是特殊功能寄存器空间。3.2 液晶显示电路3.2.1 LCD1602简介字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,市面上字符液晶绝大多数是基于HD44780液晶芯片,HD44780是带西文字库的液晶显示控制器,用户只需要向HD44780送ASCII的字符码,HD44780就按照内置的ROM点阵发生器自动在LCD液晶显示器上显示出来。所以,HD44780主要适用于显示西文ASCII字符内容的液晶显示。图3-3 LCD1602引脚图1602字符型LCD能够同时显示16*2即32个字符(16列2行)。其内置192种字符(160个5*7点阵字符和32个5*10点阵字符),具有64个字节的自定义字符RAM,可自定义8个5*8点阵字符或4个5*11点阵字符。1602通常有14条引脚线或16条引脚线两种,多出来的2条线是背光电源线和地线,带背光的比不带背光的略厚,控制原理与14脚的LCD完全一样,是否带背光在应用中并无差别。本设计中采用带背光16引脚线的。其主要技术参数为:显示容量:162个字符。芯片工作电压:4.5-5.5V。工作电流:2.0mA(5.0V)。模块最佳工作电压:5.0V。字符尺寸:2.954.35(WH)mm。LCD1602的16个引脚可参照图3-3,其引脚功能分别为:VSS:电源地(GND)。VCC:电源电压(5V)。V0:LCD驱动电压,液晶显示器对比度调整端。使用时可以通过一个10K的电位器调整对比度,接正电源时对比度最弱,接地电源时对比度最高。图3-4 LCD1602写时序RS:寄存器选择输入端,选择模块内部寄存器类型信号。RS=0,进行写模块操作时指向指令寄存器,进行读模块操作时指向地址计数器。RS=1,无论进行读操作还是写操作均指向数据寄存器。R/W:读写控制输入端,选择读/写模块操作信号。R/W=0,读操作;R/W=1,写操作。本设计中只需往LCD里写数据即可,写时序见图3-4。E:使能信号输入端。读操作时,高电平有效;写操作时,下降沿有效DB0DB7:数据输入/输出口,单片机与模块之间的数据传送通道。选择4位方式通讯时,不使用DB0DB3。BLA:背光的正端+5V。BLK:背光的负端0V。1602模块内部主要由LCD显示屏、控制器、列驱动器和偏压产生电路构成。控制器接受来自MPU的指令和数据,控制着整个模块的工作。主要由显示数据缓冲区DDRAM,字符发生器CGROM,字符发生器CGRAM,指令寄存器IR,地址寄存器DR,忙标志BF,地址计数器AC以及时序发生电路组成。模块通过数据总线DB0DB7和E、R/W、RS三个输入控制端与MPU接口。这三根控制线按照规定的时序相互协调作用,使控制器通过数据总线接受MPU发来的数据和指令,从CGROM中找到欲显示字符的字符码,送入DDRAM,在LCD显示屏上与DDRAM存储单元对应的规定位置显示出该字符。控制器还可以根据MPU的指令,实现字符的显示,闪烁和移位等显示效果。CGROM内提供的是内置字符码,CGRAM则是供用户存储自定义的点阵图形字符。模块字符在LCD显示屏上的显示位置与该字符的字符代码在显示缓冲区DDRAM内的存储地址一一对应。LCD1602模块内部具有两个8位寄存器:指令寄存器IR和地址寄存器DR,用户可以通过RS和R/W输入信号的组合选择指定的寄存器,进行相应的操作。表3-1中列出了组合选择方式:表3-1 寄存器选择组合RSR/W操 作00将DB0DB7的指令代码写入指令寄存器IR中01分别将状态标志BF和地址计数器AC内容读到DB7和DB6DB010将DB0DB7的数据写入数据寄存器中,模块的内部操作将数据写到DDRAM或者CGRAM中的数据送入数据寄存器中11将数据寄存器内的数据读到DB0DB7,模块的内部操作自动将DDRAM或者CGRAM中的数据送入数据寄存器中1602提供了较为丰富的指令设置,通过选择相应的指令设置,用户可以实现多种字符显示样式。下面仅简要介绍本次设计中需要用到的一些指令设置。l 清屏指令 Clear display清显示指令将空位字符码20H送入全部DDRAM地址中,时DDRAM中的内容全部清除,显示消失,地址计数器AC=0,自动增一模式。显示归位,光标闪烁回到原点(显示屏左上角),但不改变移位设置模式。清屏指令码见表3-2。表3-2 清屏指令码RSR/WDB7DB6DB5DB4DB3DB2DB1DB00000000001l 进入模式设置指令 Entry mode set 见表3-3,进入模式设置指令用于设定光标移动方向和整体显示是否移动。表3-3 模式设置指令码RSR/WDB7DB6DB5DB4DB3DB2DB1DB000000001I/DS I/D:字符码写入或者读出DDRAM后DDRAM地址指针AC变化方向标志。I/D=1,完成一个字符码传送后,AC自动加1。I/D=0,完成一个字符码传送后,AC自动减1。 S:显示移位标志。S=1,完成一个字符码传送后显示屏整体向右(I/D=0)或向左(I/D=1)移位。S=0,完成一个字符码传送后显示屏不移动。l 显示开关控制指令 Display on/off control 指令码见表3-4,该指令功能为控制整体显示开关,光标显示开关和光标闪烁开关。表3-4 显示开关控制指令码RSR/WDB7DB6DB5DB4DB3DB2DB1DB00000001DCB D:显示开/关标志。D=1,开显示;D=0,关显示。关显示后,显示数据仍保持在DDRAM中,开显示即可再现。 C:光标显示控制标志。C=1,光标显示;C=0,光标不显示。不显示光标并不影响模块其他显示功能。显示5*8点阵字体时,光标在第八行显示;显示5*10点阵字符时,光标在第11行显示。 B:闪烁显示控制标志。B=1,光标所在位置会交替显示全黑点阵和显示字符,产生闪烁效果;B=0,光标不闪烁。l 功能设置指令 Function set 功能设置指令用于设置接口数据位数,显示行数以及字形。指令码见表3-5。表3-5 功能设置指令码RSR/WDB7DB6DB5DB4DB3DB2DB1DB000001DLNF* DL:数据接口宽度标志。DL=1,8位数据总线DB7DB0;DL=0,4位数据总线DB7DB4,DB3DB0不使用,此方式传送数据需分两次进行。 N:显示行数标志。N=0,显示一行;N=1,显示两行。F:显示字符点阵字体标志。F=0,显示5*7点阵字符;F=1,显示5*10点阵字符。1602模块内部设有上电自动复位电路,当外加电源电压超过+4.5V时,自动对模块进行初始化操作,将模块设置为默认的显示工作状态。初始化大约持续10ms左右。初始化进行的指令操作为:l 清显示l 功能显示DL=1:8位数据接口。N=0:显示一行。F=0:显示5*8点阵字符字体。l 显示开/关控制D=0:关显示。C=0:不显示光标。B=0:光标不闪烁。l 输入模式设置I/D=1:AC自动增一。S=0:显示不移位。 但是需要特别注意的是,倘若供电电源达不到要求,模块内部复位电路无法正常工作,上电复位初始化就会失败。因此,最好在系统初始化时通过指令设置对模块进行手动初始化。3.2.2 LCD1602电路图3-5 液晶显示电路图如图3-5,AT89S52的P0口接1602的8位数据线,通过输出数据控制1602显示不同的提示字符。1602本身内置各种字符,还可以自定义显示字符。本设计中根据不同场合1602会显示各种提示字符,显示内容对应含义见表3-6。P3.0P3.2接1602控制端,其中P3.0接使能端E,写操作时,使能端下降沿有效。P3.1接读写控制端R/W,R/W=0,读操作;R/W=1,写操作。P3.2接寄存器选择端RS,RS=0,写操作时指向指令寄存器,读操作时指向地址寄存器;RS=1,无论读操作还是写操作都指向数据寄存器。LCD1602的VSS为电源地,需接地;VDD为电源电压;V0为LCD驱动电压,接电位器,通过调节电位器控制显示的亮度,使LCD显示清晰而无黑影。背光电源线LCD正负两端分别接电源和地即可。3.3 发声电路图3-6 发声电路图发声部分的电路如图3-6,就是用P2.1口控制一个有源蜂鸣器发声,作为提示音或报警音。程序设定为每当识别到有一位按键被按下时,蜂鸣器发声0.1S;开锁时停顿2S发声2S,发声3次;密码错误时每次停顿0.5S发声1S,错误5次以内时错N次发N声,错误5次及以上发声10次。蜂鸣器有两个引脚,其中长脚为正极,短脚为负极。其发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它。由于单片机I/O引脚输出的电流较小,基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路,一般使用三极管来放大电流就可以了。本设计中使用三极管9012,P2.1口高电平时三极管截至,蜂鸣器不发声;P2.1口低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制P2.1脚的电平来使蜂鸣器发出声音和关闭。图3-7 开锁控制电路图3.4 开锁控制电路开锁控制电路如图3-7,电路的功能就是在输入正确的密码后开锁。系统使用单片机P2.0引脚发出信号,经三极管放大之后,由继电器驱动电磁阀将锁打开。设计中用一个发光二极管模拟表现锁的开关,只有锁打开之后,继电器吸合至常开触电,发光二极管才会亮起;实际应用中用继电器控制开锁电路的开关。在现代自动控制设备中,都存在电子电路(弱电)与电气电路(强电)的相互连接问题,一方面要使电子电路的控制信号能够控制电气电路的执行元件(如电动机、电磁铁、电灯等),另一方面又要为电子线路的电气电路提供良好的电隔离,以保护电子电路和工作人员的人身的安全。继电器便能完成这一桥梁作用。继电器实际上是用较小的电流去控制较大电流的一种“自动开关”,在电路中起着自动调节、安全保护、转换电路等作用。在大多数情况下,继电器就是一个电磁铁,这个电磁铁的衔铁可以闭合或断开一个、数个触点。当电磁铁的绕组中有电流通过时,衔铁被电磁铁吸引,因而就改变了触点的状态。继电器也是感性器件,所以不能用单片机的I/O口直接控制,而且必须在三极管等控制器件上加反相保护电路。本设计中单片机通过P2.0引脚连接一只作为电子开关的PNP型三极管9012来驱动继电器,继电器的开、关完全由三极管的基极电平进行控制。当P2.0为高电平时,PNP型三极管截止,继电器不工作;反之P2.0为低电平时,三极管导通,继电器得电吸合。图3-8 松川833H引脚图设计中使用的继电器型号是松川833H,线圈工作电压直流5V,有5个引脚,如图3-8。其中1、3引脚是线圈两端,一端接三极管,另一端接地,不分正负。4是常闭触点,不工作时导通。5是常开触点,继电器吸合后才导通,接发光二极管正极。2是继电器两个触点的公共极点,接个小电阻后连高电平。3.5 密码存储电路3.5.1 AT24C02简介AT24C02是美国Atmel公司的低功耗CMOS型E2PROM,内含256*8位存储空间,具有工作电压宽(2.5V5.5V),擦写次数多(大于10000次),写入速度快(小于10ms),抗干扰能力强,数据不易丢失,体积小等特点。并且它是采用I2C总线式进行数据读写的串行操作,只占用很少的资源和I/O线。AT24C02有一个16字节页写缓冲器,该器件通过I2C总线接口进行操作,还有一个专门的写保护功能。AT24C02的引脚如图3-9,各引脚功能如下:SCL:串行时钟输入管脚,用于产生器件所有数据发送或接收的时钟。SDA:双向串行数据/地址管脚,用于器件所有数据的发送或接收。A0、A1、A2:器件地址输入端。这些输入脚用于多个器件级联时设置器件地址,当这些脚悬空时默认值为0。使用AT24C02最大可级联8个器件,如果只有一个24C02被总线寻址,这三个地址输入脚A0、A1、A2可悬空或连接到VSS。图3-9 AT24C02引脚图WP:写保护。如果WP管脚连接到Vcc,所有的内容都被写保护,只能读。当WP管脚连接到Vss或悬空,允许器件进行正常的读/写操作。VSS:电源地(GND)。VCC:电源电压(5V)。AT24C02支持I2C总线数据传送协议,I2C总线协议规定:任何将数据传送到总线的器件作为发送器,任何从总线接收数据的器件为接收器。数据传送是由产生串行时钟和所有起始停止信号的主器件控制的,主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据发送或接收的模式。I2C总线协议定义如下:l 只有在总线空闲时才允许启动数据传送。l 在数据传送过程中,当时钟线为高电平时,数据线必须保持稳定状态,不允许有跳变,时钟线为高电平时,数据线的任何电平变化将被看作总线的起始或停止信号。图3-10 AT24C02起始/停止时序如图3-10所示,时钟线保持高电平期间,数据线电平从高到低的跳变作为I2C总线的起始信号。时钟线保持高电平期间,数据线电平从低到高的跳变作为I2C总线的停止信号。主器件通过发送一个起始信号启动发送过程,然后发送它所要寻址的从器件的地址。8位从器件地址的高4位固定为1010(见表3-7),接下来的3位A2、A1、A0为器件的地址位,用来定义哪个器件以及器件的哪个部分被主器件访问。从器件8位地址的最低位作为读写控制位。1表示对从器件进行读操作,0表示对从器件进行写操作。在主器件发送起始信号和从器件地址字节后,AT24C02监视总线并当其地址与发送的从地址相符时响应一个应答信号。通过SDA线AT24C02再根据读写控制位R/W的状态进行读或写操作。表3-7 AT24C02控制字1010A2A1A0R/WI2C总线数据传送时,每成功地传送一个字节数据后,接收器都必须产生一个应答信号(见图3-11)。应答的器件在第9个时钟周期时将SDA线拉低,表示其已收到一个8位数据。AT24C02在接收到起始信号和从器件地址之后响应一个应答信号,如果器件已选择了写操作,则在每接收一个8位字节之后响应一个应答信号。当AT24C02工作于读模式时,在发送一个8位数据后释放SDA线并监视一个应答信号。一旦接收到应答信号,AT24C02继续发送数据,如主器件没有发送应答信号,器件停止传送数据且等待一个停止信号。 AT24C02的写模式有字节写和页写两种。本设计中选择字节写模式,其时序见图3-12。该模式下,主器件发送起始命令和从器件地址信息(R/W位置零)给从器件。在从器件产生应答信号后,主器件发送AT24C02的字节地址,主器件在收到从器件的另一个应答信号后,再发送数据到被寻址的存储单元。AT24C02再次应答,并在主器件产生图3-13 AT24C02连续读时序图3-12 AT24C02字节写时序停止信号后开始内部数据的擦写。在内部擦写过程中AT24C02不再应答主器件的任何请求。图3-11 AT24C02应答时序对AT24C02读操作的初始化方式和写操作时一样,仅把R/W位置为1。有三种不同的读操作方式:立即地址读、选择读和连续读。设计中需要一次性读出16字节的密码,故用连续读方式。连续读操作可通过立即读或选择性读操作启动,在AT24C02发送完一个8位字节数据后,主器件产生一个应答信号来响应,告知AT24C02主器件要求更多的数据。对应每个主机产生的应答信号,AT24C02将发送一个8位数据字节;当主器件不发送应答信号而发送停止位时结束此操作。连续读操作的时序可见图3-13。图3-14 密码存储电路图3.5.2 AT24C02电路如图3-14所示,该部分电路的作用就是使用AT24C02保存密码,使密码在单片机掉电之后仍能保存。AT24C02只需要串行时钟SCL引脚接P3.5,串行数据/地址SDA引脚接P3.6,即可完成数据和指令的传送,比起并行传输节省I/O口资源。SCL和SDA各需接一个5.1K的上拉电阻。写保护WP接地,使AT24C02可进行正常读写。系统初始化时,从AT24C02中读出密码信息存储到单片机中,用户修改密码后再将新密码写入AT24C02。这样即便单片机掉电,重启后仍能读取用户密码,从而达到掉电存储的目的。3.6 键盘输入电路图3-15 键盘输入电路图本设计中采用的4*4矩阵键盘共有16个键位,4根行线连P1口低四位,4根列线连P1口高四位(见图3-15所示)。在按键未被按下时,每一条行线与线列线的交叉处互不相通,当某个按键被按下后,该按键所在的行线和列线连通。这样在P1口的高4位和低4位中各有一位互相连通。通过行列扫描检测出这两位,即可识别出被按下的键。具体识别方式和按键功能完全由软件自定义。系统具体使用的键盘是一体式薄膜键盘,更轻薄更便捷,有印刷字符,无需连接上拉电阻。但键盘内部无电流通过,行扫描之前需给4根行线赋高电平,如果某行和某列相通,则高电平变低,可知该行有按键被按下。然后进行列扫描,同理可识别出按键所在列。确认行和列按键即被识别出来。3.7 手动复位电路为确保系统中电路稳定可靠工作,复位电路是必不可少的一部分。无论是哪种类型的单片机,用户在使用时都必须设计复位电路,以提高单片机在强磁场、电源尖峰等强干扰环境下的工作稳定性或实现从误操作中正确恢复初试状态。如果复位电路可靠性较差,将直接影响到整个单片机系统工作的稳定性,造成系统调试成功后出现死机或“程序跑飞”等现象。图3-16 手动复位电路图单片机复位是使CPU和系统的其他功能部件都处在一个确定的初试状态,并从这个状态开始工作,无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。完成复位操作共需24个状态周期,复位结束后,单片机从地址0000H开始执行程序。0000H0002H是系统的启动单元,而0003H002AH是程序存储器中的特殊保留单元,所以一般在启动单元中存放一条无条件转移指令,以便直接转去执行指定的应用程序。 复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防止复位开关闭合过程中引起的抖动而影响复位。图3-16所示的复位电路可以基本实现上述功能,该电路在最基本的复位电路基础上增加了一个手动复位开关,当人为按下按钮时,则Vcc的高电平就会直接加到RST端。由于人的动作再快也会使按钮保持接通达数十毫秒,所以完全能够满足复位的时间要求。3.8 晶振电路图3-17 晶振电路图单片机本身是一个复杂的同步时序电路,为保证同步工作方式的实现,必须提供时钟信号,以使其系统在时钟信号的控制下按时序协调工作。单片机的时钟电路由振荡电路和分频电路组成,其中振荡电路由反向器以及其并联外接的石英晶体和电容构成,用于产生振荡脉冲。而分频电路则用于把振荡脉冲分频,以得到所需要的时钟信号。晶振是晶体振荡器的简称,它用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十,高级的精度更高。电路中的晶振即石英晶体振荡器,它与电容构成振荡回路,为片内放大器提供正反馈和振荡所需的相移条件,从而构成一个稳定的自激振荡器。如图3-17所示,AT89S52芯片中的高增益反向放大器输入端为引脚XTAL1,输出端引脚为XTAL2。通过这两个引脚在芯片外并接石英晶体振荡器和两只电容(一般取30pF)。这两个电容叫晶振的负载电容,它是根据晶振厂家提供的晶振要求负载电容选值的;换句话说,晶振的频率就是在它提供的负载电容下测得的,能最大限度的保证频率值的误差,也能保证温漂等误差。4 软件设计4 软件设计系统的软件设计采用汇编语言编码。设计方法是先用文本编辑器编写源码,然后用软件Keil C51编译,如果没有错误,可连接生成.HEX格式的文件(需事先在Keil C51中设置)。如果有错误则无法连接,但可在生成的.OBJ文件中找到代码错误的地方,便于修改。当然也可以直接在Keil中编码。生成的HEX文件是记录文本行的ASCII文本文件,在HEX文件中,每一行是一个HEX记录,由十六进制数组成的机器码或者数据常量。HEX文件经常被用于将程序或数据传输存储到ROM、EPROM,大多数编程器和模拟器使用HEX文件。在Keil中生成的HEX文件需要烧写到单片机ROM中,系统上电运行后才能看出程序运行的实际效果。烧写需要的设备是烧写器和配套软件Superpro280,将单片机引脚放入烧写器并卡紧,打开烧写器,打开软件,选定单片机的型号,AT89S52。烧写之前需擦除ROM内原有的内容,然后载入上面生成的.HEX文件,选择文件格式为Intel,然后写入。完成后校验,无误后即可关掉烧写器,取下单片机。4.1 系统主程序系统的主程序如图4-1所示。由于用户在使用系统的过程中,可能在任何时刻按下任何按键,而程序都必须对此作出正确响应。所以主程序流程的主要思路是是根据按键的不同进行不同的程序处理,下面具体介绍主程序的流程。图4-1 主程序流程图按键识别按键重定位对应按键处理程序开始初始化按键测试按键按下?否是4.1.1 初始化及按键识别如图4-2,系统的初始化包括堆栈起始地址的设定,两个定时/计数器的设定,液晶显示模式的设定,密码缓冲区的初始化,一些自定义数据空间的初始化,蜂鸣器初始化发声等操作。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年南昌客运驾驶从业资格证模拟考试
- 混合动力汽车发动机构造与维修 教案 项目四任务2教案(参考)
- 全国职业院校技能大赛民族器乐弹拨组各环节样题
- 北京市五十六中学2024-2025学年七年级上学期期中数学试题
- 广东省肇庆市封开县封川中学2024-2025学年八年级上学期11月期中生物试题
- 沪教版五年级下册美术教案教学教材
- 2022年食品安全监管人员专业知识综合练习试卷A卷-含答案
- 装饰装修招投标操作规程
- 零售企业安防工程安装合同
- 环卫设施压桩施工协议
- 光学相干断层成像(OCT)在冠状动脉介入诊断与治疗中的应用课件
- 模拟法庭案例脚本:校园欺凌侵权案 社会法治
- 四年级上册美术教案-14漂亮的房间 |苏少版
- 05 03 第五章第三节 投身崇德向善的道德实践
- 安徽省合肥市第四十五中学2022-2023学年九年级上学期数学期中考试卷
- 桩基础工程施工组织方案
- 供水运营管理实施方案(4篇)
- 水土保持工程质量评定表
- 水电站基本构造原理与类型ppt版(共67)
- 秦朝统一PPT课件教学
- 译林版(三起)五年级上册英语课件:Unit6 My e-friend Cartoon time(共24张PPT)
评论
0/150
提交评论