存包系统完整设计资料下载:
密码锁资料.rar
(2.05 MB, 下载次数: 688)
-----以下是部分内容预览-------------------------------------
一、引言
课题设计的目的以及主要内容社会在不断发展、物质生活水平在不断的提高,人们对自己的生活水平也提出了更高的要求,尤其是在安全隐私方面。因此洗安全易用的密码锁又显得极其重要,而且它已经成为人们日常生活的重要组成部分。 本系统设计了一款性价比较高的基于LCD1602和单片机为控制核心的电子密码锁系统。 本课题设计功能主要包括如下几个方面: 1. 按下“存包”按键生成随机的四位数密码; 2. 按下“取包”按键后,进行密码输入并自动校验; 3. 密码校验时对错与否,通过不同的LED指示灯来指示; 4. LCD实时显示相关信息; 5. 用protues仿真软件实现上述功能。 二、系统硬件设计
2.1、系统硬件总体设计 为了达到系统要求,硬件应该包括如下部分: 单片机最小系统,最小系统主要包括时钟电路和复位电路; LCD电路,为了能直观的看到生成的密码,以及用户输入的密码,就需要一个显示设备,而在单片机系统中,比较常见的显示设备就是LED和LCD,相比较于LED来说,LCD显示效果更加美观,更加真实; 按键电路,为了做到密码的提取以及校验,就需要有人机交互的操作,本设计采用了机械按键充当此功能。 LED电路,本设计有红绿两个LED,当密码校验正确时,绿灯亮;相反当密码校验错误时,红灯亮。 继电器电路,为了模拟锁的开和关,用到了继电器的开关来模拟。 系统整体框图如图2-1所示
图2-1 硬件总体框图2.2 单片机型号的选择本课题设计的电热洗脚盆温控系统主控制芯片选型为STC89C52单片机,其特点如下: 1.STC89C52单片机简介目前,不管是在工业,农业还是消费电子领域,51系列单片机的身影随处可见,例如,我们可以利用单片机来检测温湿度,来检测空气质量,我们日常使用的电子时钟等等都能很方便的使用51单片机来实现。STC89C52单片机是深圳宏晶科技有限公司生产的一种单片机,它是在一小块很小的集成电路上集成了一个微型计算机。每一个单片机的组成都离不开如下几种组成成分: CPU:51系列单片机内部集成的CPU都是8位的; IO口;数据输入输出的并行口,51单片机有32个IO口,分别是P0,P1,P2,P3,每种有8条数据线; ROM:片内程序存储器,它主要用来存储程序的,一般大小为4K; RAM:片内数据存储器,它主要用来存储临时数据,一般大小为512K; 中断源;它主要用来引发中断的,有5个中断源; 定时器:它主要用来计数定时用,51单片机有2个,分别是定时器0和定时器1; 2.STC89C52单片机时序 任何一个单片机的运行都离不开时钟,时钟就好比是人的心脏,只有心脏起搏,系统才能运转,那么单片机的时钟信号是由晶振产生的,而晶振又分为外部晶振和内部晶振,一般来说,采用外部晶振的稳定性要高很多,有了晶振,那个系统的各个部分就在这个晶振所产生的时钟下有条不紊的按自己的节拍工作了。 51单片机的时序可以分成如下几个名词:节拍,震荡周期,机器周期,他们的关系为,一个机器周期分为12个震荡周期,而一个震荡周期又分成6个节拍。 一个CPU的运算分为算术运算和逻辑运算,以及运算完成后数据的传输,比如从寄存器到寄存器的传输。那么大部分情况下,运算操作发送在P1器件,而传输操作发生在P2期间。并且对于不同类型的指令,其时序也是不一样的,大致分为如下: 对于单周期指令,当指令操作码读人指令寄存器时,使从S1P2开始执行指令。如果是双字节指令,则在同一机器周期的s4读入第二字节。 3.STC89C52单片机引脚介绍STC89C52单片机总共有40个引脚,其中有32个IO口,分别是P0(8个),P1(8个),P2(8个)和P3(8个),还有8个专用引脚,现在将他们分成四个大部分分别介绍如下: (1)电源引脚Vcc和Vss Vcc(40脚):接+5V电源正端; Vss(20脚):接+5V电源正端。 XTAL1是单片机的第19脚,XTAL2是单片机的第18脚,这两个引脚就是用来接晶体振荡器的,当我们不用外部晶体振荡器,只是使用内部振荡器的话,这两个管脚就悬空;当我们接外部晶体振荡器时,它又有两种接法,最常用的接法就是这两个脚分别接上晶体振荡器的两个脚(没有极性之分),然后分别并联一个电容到地(电容的大小根据晶振大小来定);另外一种接法就是,XTAL1接晶体振荡器的一个引脚,晶振的另外一个接地,而XTAL2就悬空或接地。 单片机总共有四种状态的控制信号引脚,它们分别是 RST,EA,PSEN以及ALE。 (a).RST/VPD:该引脚是单片机的第九脚,从名称就可以看出来它具有两个功能,第一个就是复位功能(RST即为RESET的意思,复位),当单片机上电后,晶体振荡器开始工作之时,如果该引脚是出现连续两个震荡周期的高电平,就能正常的复位,也就是单片机进入工作状态,否则,复位不成功,单片机可能无法工作;第二个功能就是掉电保护功能,它可以接上备用电源以防止VCC发生故障。 (b).ALE/ P :该引脚是单片机的第三十脚,当内部程序空间不够用,需要外接外部程序存储器时,该引脚便派上了用场,不接时该引脚恒定的接高电平,接外部的时候,该引脚接低电平。 (c).PSEN:该引脚是单片机的第二十九脚,当接了外部程序存储器的时候,该引脚就是用来决定是否开始读取外部存储器的,当该引脚为低电平时,单片机就可以读取外部存储器,相反,当它是高电平的时候,就禁止读取。同时,此引脚对于外部数据存储器的读写不起作用。 (d).EA/Vpp:该引脚是单片机的第三十一脚,当内部程序空间不够用,需要外接外部程序存储器时,该引脚便派上了用场,不接时该引脚恒定的接高电平,接外部的时候,该引脚接低电平。 (4)IO口P0、P1、P2及P3 (a).P0口:该组引脚有8跟数据线,分别是P0.0到P0.7,位于单片机的第三十九脚到第二十二脚。该引脚主要有三个功能,正常情况下,他作为普通的IO口,数据的输入跟输出;当接了外部存储器的时候,它作为地址总线的高8位;同时,如果单片机内部有EEPROM,对该EEPROM读写操作的时候,也要从P0口输入或输出指令。 (b).P1口:该组引脚有8跟数据线,分别是P1.0到P1.7,位于单片机的第一脚到第八脚。该引脚主要有两个功能,正常情况下,他作为普通的IO口,数据的输入跟输出;另外,对于本设计使用的STC89C52单片机来说,P1.0和P1.1还有另外的功能:作为两个计数脉冲输入端,可以统计脉冲的个数,此举很多应用在测试频率、速度的场合。 (c).P2口:该组引脚有8跟数据线,分别是P2.0到P2.7,位于单片机的第二十一脚到第二十八脚。该引脚主要有两个功能,正常情况下,他作为普通的IO口,数据的输入跟输出;当接有外部程序存储器时,P2口用于地址总线的高8位。 (d).P3口(10脚~17脚):该组引脚有8跟数据线,分别是P2.0到P2.7,位于单片机的第十脚到第十七脚。该引脚主要有两个功能,正常情况下,他作为普通的IO口,数据的输入跟输出;同时它的每个口都有第二功能。P3口的第2功能见下表 表1 单片机P3.0管脚含义 综上所述,STC89C52单片机的引脚作用可归纳为以下两点: 1).可以用少数几根数据线实现多样化的功能; 2).IO口除了作为通用的数据输入输出外,还有地址总线和数据总线分时复用的功能。
2.3 单片机最小系统任何一个处理器,都有与之对应的最小系统,该系统能保证处理器启动起来,并能够连续不断的正常运转下去,除此之外并没有其他多余的功能,所以成为最小系统,对51单片机来说,最小系统一般包括:单片机、复位电路和晶振电路。最小系统如图2-2所示。
图2-2 单片机最小系统 电阻和电容组成的电路经常用在单片机的复位电路中,它的工作过程如下,当系统一上电时,RST引脚瞬间将会出现高电平,同时,电阻和电容之积(RC)决定了高电平的持续时间,51单片机对于此时间的要求是2个机器周期以上。所以,适当组合RC的取值就可以保证可靠的复位,一般来说,C 取10UF,R取10K,也可以去其他参数值,原则就是要让RC组合可以在RST脚产生不少于2个机器周期的高电平,保证可靠的复位。 晶振电路中的晶振采用典型的11.0592M ,因为这个频率的晶振可以产生更准确的波特率,用于RS232通讯的场合,它经过内部12分频后,产生11.0592/12M的机器频率。同时,为了保证晶振能够稳定可靠的起振,一般还需要在晶振两端分别并接两个电容,电容取值一般在10~47pf之间 另外注意,单片机的第31脚是用来决定上电时是从内部ROM读取数据还是从外部ROM读取数据,当为高电平时,表示从内部ROM读取;当为低电平时,表示从外部ROM,本设计中,考虑到实际程序的大小不是特别大,无需外界ROM,所以就将该引脚接了高电平。 2.4 LCD选型随着人机界面的越来越人性化,液晶屏应运而生,十九世纪八十年代,奥地利科学家赖倪次在一种植物身上提取出了看起来很奇怪的物质,它既不是液态的,也不是固态的,徘徊于两者之间,但是他即具有固态的特征,也有液态的特征,所以,当时的人们就把它叫做成液态的晶体,这就是当今液晶的前身。 市面上的LCD显示屏可谓是林林总总,大型的有拼接墙,数十寸的等等,从才子上来分,有TFT、LED等等,但对于单片机系统来说,常用的LCD有两种:分别是1602和12864型号。 12864的意思就是该LCD的点阵是128行*64列,总共有8192个像素点, 控制器AIP31020。可显示汉字及图形, 内置8192 个中文汉字 (16X16 点阵)、 128 个字符 (8X16点阵)及64X256点阵显示RAM(GDRAM)。可与CPU 直接接口,提供两种界面来连接微处理机:8-位并行及串行两种连接方式。具有多种功能:光标显示、画面移位、睡眠模式等。其硬件结构如图2-3所示。
图 2-3 12864内部结构 而1602的意思就是该LCD的点阵是16行*2列,总共有32个像素点,1602LCD分为带背光和不带背光两种,带背光的用起来就比较方便,但缺点就是比较厚,而不带背光的需要自己加一个背光片,不方便使用,但他比较轻薄。 1602LCD主要技术参数: 显示容量:16×2个字符 芯片工作电压:4.5—5.5V 工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V 字符尺寸:2.95×4.35(W×H) 1602LCD的管脚也分为两种标准,对于没有背光的是采用的14管脚,对于有背光的采用的16脚,各引脚接口说明如表1所示 第1脚:VSS为地电源。 第2脚:VDD接5V正电源。 第3脚:VL为液晶显示器对比度调整端,,当该脚接5V时,由于电压差几乎为0,所以对比度最弱,几乎看不见显示内容,该脚接地时,由于电压差几乎为最大,对比度最高,有可能会产生“鬼影”,因此为了是显示有个舒适的感觉,使用时可以通过一个10K的电位器调整对比度,根据不同的外界光线灵活的调整亮度。 第4脚:RS为读写内容的选择端,当要往LCD发送数据的时候,该端就需要拉低;相反,当要往LCD发送命令的时候,该端就需要置高。 第5脚:为读写选择端子,当要往LCD写操作的时候,该端就需要拉低;相反,当要从LCD读操作的时候,该端就需要置高。并且他和RS共同组合可以产生不同的效果,具体见表2 表2 第6脚:E端是enable的简称,也就是使能的意思,要使液晶模块执行读写操作,需要使此引脚信号出现下降沿。 第7~14脚:D7到D0为总线,共八位,既可以作为数据线也可以作为地址线。 第15脚:背光源正极。 第16脚:背光源负极。 由于本设计需要显示的内容不多,信息量不大,所以经分析,1602已经足够了。 2.5 LCD电路设计LCD1602跟单片机相连的电路图如图2-4所示 图2-4 LCD1602跟单片机连接图 LCD的8个数据口跟单片机的P1的8个口相连,控制信号RS接P30,RW接P31以及E接P32。 2.6 LED提示电路本设计 用到了一个红色LED和一个绿色LED来指示输入密码的正确与否。每个LED的正极通过一个限流电阻接到电源正极,然后负极分别接到P33和P34,当IO口为高电平时,灯熄灭,当LED为低电平时,灯亮起来。图2-5是其连线图。
图2-5 LED提示灯电路 2.7 继电器电路本设计用继电器来模拟锁的动作,当继电器吸合表示开始锁关闭,当继电器断开表示断开,继电器的控制引脚接在单片机的P37口,高电平让其吸合,低电平让其断开,图2-6是其连接图。
图2-6 继电器跟单片机连接图 2.8 按键电路为了满足输入功能的需要,本设计采用了14个按键,如果全部接成独立式按键,那么就需要14个IO口,资源占用过多,所以这里采用了矩阵式4*4规格的键盘,多余两个按键做备用。它总共占用8个IO口,分别接到了P0口上,由于P0口的特殊结构,必须接一个上拉电阻,才能输出高电平。 键盘电路如图2-7所示。 图2-7 按键电路 其按键功能如下所示: 0-9的数字按键用来输入密码; “存包”按键 -- 按下此键生成四位随机数密码 “取包”按键 -- 按下此按键,提示输入密码 “清空”按键 -- 在输入密码过程中,按下此键清掉刚才输入的数字 “确认”按键 -- 密码输入完毕后,按下此键进行密码的校验。
三、系统软件设计系统的软件主要是采用单片机特定的C语言--C51,对单片机进行编程实现所有功能。主程序对模块进行初始化,而后调用按键扫描程序、显示子程序、LED子程序以继电器模块程序。图3-1是其主程序流程图。
图3-1 主流程图 主程序里面首先对单片机的硬件资源进行初始化,硬件资源的初始化包括: - IO口的初始化,本设计所采用的51单片机有32个IO口,并且单片机复位后,所有IO口被默认赋值为高电平(1),这就给一些功能带来了一些不必要的麻烦,所以就需要对某些上电需要置低电平的IO口置低电平(比如本设计中的LCD某些管脚);
- 定时器的初始化,定时器是单片机中的一个非常重要的资源,有了它,单片机就能“并行”的处理多个事情了,不然为了做到定时,只能用死等来实现,那样会造成单片机资源大量的浪费,更严重的是,单片机运行会相当不流畅;
- 串口的初始化,串口的存在使得单片机跟外界的通讯带来了很大的方便,因为它遵循标准的RS232协议,所以可以跟任何具有RS232接口的设备通信,
基本的资源初始化完毕后,程序然后进入了一个while(1)死循环,这样保证了程序不断的运行,在该循环中,多个任务逐一按顺序的执行。 3.1 LCD子程序模块LCD1602的读时序如图3-2所示。 图3-2 LCD1602读时序 LCD1602的写时序如图3-3 所示。 图3-3 LCD2602写时序 从时序图可以看出,首先判断RS和RW,从硬件那一章我们得知,RS代表了是指令的操作(高电平)还是数据的操作(低电平),而RW代表了是往LCD里面写数据(高电平)还是从LCD里面读出数据(低电平),所以图3-5就表示读时序,而图3-6就表示写时序。 然后再通过控制器把使能端拉低(通过上面一章,我们知道此管脚为高表示禁用该芯片,此管脚为低表示使能该芯片),拉低后需要延时一段时间,至于要不要 延时,延时的时间多长,对于51单片机来说,其实关系都不大,不影响其使用。 以上两步准备操作完成后,就可以开始读和写了,也就是从这时候开始数据或地址信号就被送上了数据总线,数据送完之后,然后又将使能端拉高(禁止芯片),当然,这中间需要一个建立时间的延迟,改时间最短为40纳秒。然后再将使能端拉低(启用),就可以将刚才数据总线上的数据送入LCD了。 根据上面描述的时序,可以得出如图3-4所示的流程图
图3-4 LCD1602流程图 3.3 按键模块流程图16个按键接在了P0的8个口,其中P00-P03为四行,P04-P07为四列,本设计采用的是行扫描法,也就是说每次给四行当中的一行输出低电平(其他三行为高电平),然后再读取四列的值,如果发现四列全部为高电平,那么就表示没有按键按下,如果有某一列为低电平,就表示有按键按下了。 其工作流程图如3-5所示
图3-5 按键流程图 3.4 LED指示灯流程图 在密码校验过程中,如果密码正确,就亮起绿灯,如果密码校验错误,就让红灯亮起。流程图如3-6所示
图3-6 LED指示灯流程图 参考文献
[1] 李广弟,朱月秀,王秀山.《单片机基础》北京航空航天大学出版社,2001(07). [2] 蔡美琴,张为民等.《MCS-51系列单片机系统及其应用》高等教育出版社,2004(06). [3] 张毅刚,等.MCS-51单片机应用设计[M].哈尔滨工业大学出版社,1997. [4] 刘瑞星,胡健等.《Protel DXP 实用教程》机械工业出版社,2003(04). [5] 于海生. 《计算机控制技术》 机械工业出版社 2007(05). [6] 谭浩强. 《C程序设计》 清华大学出版社. [7] 康华光. 《电子技术基础 模拟部分》 高等教育出版社 1998(08). [8] 余锡存. 《单片机原理与接口技术》 西安电子科技大学出版社,2003. 致谢本论文是在我的指导老师密切关心和悉心指导下完成的。老师在课题开题期间和论文写作的过程中给予了我许多指导,导师总是以认真负责、一丝不苟的工作态度阅读并修改文章中不足的地方,他优良的作风和严谨治学的态度深深影响着我,至此,向恩师致以最真挚的感谢和最崇高的敬意! 同时我要感谢我的同学,特别是我的室友们,正是他们在这几年里陪我一起成长,一起学习,才让我有了今天的成绩。他们在平时的学习和生活中他们给予了我无私的关怀和帮助,在此表示我最诚挚的谢意。 |