只需一步,快速开始
热门: 51单片机 | 24小时必答区 | 单片机教程 | 单片机DIY制作 | STM32 | Cortex M3 | 模数电子 | 电子DIY制作 | 音响/功放 | 拆机乐园 | Arduino | 嵌入式OS | 程序设计
社会在不断发展、物质生活水平在不断的提高,人们对自己的生活水平也提出了更高的要求,尤其是在安全隐私方面。因此洗安全易用的密码锁又显得极其重要,而且它已经成为人们日常生活的重要组成部分。
本系统设计了一款性价比较高的基于LCD1602和单片机为控制核心的电子密码锁系统。
本课题设计功能主要包括如下几个方面:
1. 按下“存包”按键生成随机的四位数密码;
2. 按下“取包”按键后,进行密码输入并自动校验;
3. 密码校验时对错与否,通过不同的LED指示灯来指示;
4. LCD实时显示相关信息;
5. 用protues仿真软件实现上述功能。
为了达到系统要求,硬件应该包括如下部分:
单片机最小系统,最小系统主要包括时钟电路和复位电路;
LCD电路,为了能直观的看到生成的密码,以及用户输入的密码,就需要一个显示设备,而在单片机系统中,比较常见的显示设备就是LED和LCD,相比较于LED来说,LCD显示效果更加美观,更加真实;
按键电路,为了做到密码的提取以及校验,就需要有人机交互的操作,本设计采用了机械按键充当此功能。
LED电路,本设计有红绿两个LED,当密码校验正确时,绿灯亮;相反当密码校验错误时,红灯亮。
继电器电路,为了模拟锁的开和关,用到了继电器的开关来模拟。
系统整体框图如图2-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;
任何一个单片机的运行都离不开时钟,时钟就好比是人的心脏,只有心脏起搏,系统才能运转,那么单片机的时钟信号是由晶振产生的,而晶振又分为外部晶振和内部晶振,一般来说,采用外部晶振的稳定性要高很多,有了晶振,那个系统的各个部分就在这个晶振所产生的时钟下有条不紊的按自己的节拍工作了。
51单片机的时序可以分成如下几个名词:节拍,震荡周期,机器周期,他们的关系为,一个机器周期分为12个震荡周期,而一个震荡周期又分成6个节拍。
一个CPU的运算分为算术运算和逻辑运算,以及运算完成后数据的传输,比如从寄存器到寄存器的传输。那么大部分情况下,运算操作发送在P1器件,而传输操作发生在P2期间。并且对于不同类型的指令,其时序也是不一样的,大致分为如下:
对于单周期指令,当指令操作码读人指令寄存器时,使从S1P2开始执行指令。如果是双字节指令,则在同一机器周期的s4读入第二字节。
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管脚含义
引脚
第2功能
P3.0
RXD(串行口输入端0)
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单片机的引脚作用可归纳为以下两点:
1).可以用少数几根数据线实现多样化的功能;
2).IO口除了作为通用的数据输入输出外,还有地址总线和数据总线分时复用的功能。
任何一个处理器,都有与之对应的最小系统,该系统能保证处理器启动起来,并能够连续不断的正常运转下去,除此之外并没有其他多余的功能,所以成为最小系统,对51单片机来说,最小系统一般包括:单片机、复位电路和晶振电路。最小系统如图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,所以就将该引脚接了高电平。
随着人机界面的越来越人性化,液晶屏应运而生,十九世纪八十年代,奥地利科学家赖倪次在一种植物身上提取出了看起来很奇怪的物质,它既不是液态的,也不是固态的,徘徊于两者之间,但是他即具有固态的特征,也有液态的特征,所以,当时的人们就把它叫做成液态的晶体,这就是当今液晶的前身。
市面上的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分为带背光和不带背光两种,带背光的用起来就比较方便,但缺点就是比较厚,而不带背光的需要自己加一个背光片,不方便使用,但他比较轻薄。
第3脚:VL为液晶显示器对比度调整端,,当该脚接5V时,由于电压差几乎为0,所以对比度最弱,几乎看不见显示内容,该脚接地时,由于电压差几乎为最大,对比度最高,有可能会产生“鬼影”,因此为了是显示有个舒适的感觉,使用时可以通过一个10K的电位器调整对比度,根据不同的外界光线灵活的调整亮度。
LCD的8个数据口跟单片机的P1的8个口相连,控制信号RS接P30,RW接P31以及E接P32。
本设计 用到了一个红色LED和一个绿色LED来指示输入密码的正确与否。每个LED的正极通过一个限流电阻接到电源正极,然后负极分别接到P33和P34,当IO口为高电平时,灯熄灭,当LED为低电平时,灯亮起来。图2-5是其连线图。
图2-5 LED提示灯电路
本设计用继电器来模拟锁的动作,当继电器吸合表示开始锁关闭,当继电器断开表示断开,继电器的控制引脚接在单片机的P37口,高电平让其吸合,低电平让其断开,图2-6是其连接图。
图2-6 继电器跟单片机连接图
为了满足输入功能的需要,本设计采用了14个按键,如果全部接成独立式按键,那么就需要14个IO口,资源占用过多,所以这里采用了矩阵式4*4规格的键盘,多余两个按键做备用。它总共占用8个IO口,分别接到了P0口上,由于P0口的特殊结构,必须接一个上拉电阻,才能输出高电平。
键盘电路如图2-7所示。
系统的软件主要是采用单片机特定的C语言--C51,对单片机进行编程实现所有功能。主程序对模块进行初始化,而后调用按键扫描程序、显示子程序、LED子程序以继电器模块程序。图3-1是其主程序流程图。
图3-1 主流程图
主程序里面首先对单片机的硬件资源进行初始化,硬件资源的初始化包括:
基本的资源初始化完毕后,程序然后进入了一个while(1)死循环,这样保证了程序不断的运行,在该循环中,多个任务逐一按顺序的执行。
从时序图可以看出,首先判断RS和RW,从硬件那一章我们得知,RS代表了是指令的操作(高电平)还是数据的操作(低电平),而RW代表了是往LCD里面写数据(高电平)还是从LCD里面读出数据(低电平),所以图3-5就表示读时序,而图3-6就表示写时序。
然后再通过控制器把使能端拉低(通过上面一章,我们知道此管脚为高表示禁用该芯片,此管脚为低表示使能该芯片),拉低后需要延时一段时间,至于要不要 延时,延时的时间多长,对于51单片机来说,其实关系都不大,不影响其使用。
以上两步准备操作完成后,就可以开始读和写了,也就是从这时候开始数据或地址信号就被送上了数据总线,数据送完之后,然后又将使能端拉高(禁止芯片),当然,这中间需要一个建立时间的延迟,改时间最短为40纳秒。然后再将使能端拉低(启用),就可以将刚才数据总线上的数据送入LCD了。
根据上面描述的时序,可以得出如图3-4所示的流程图
16个按键接在了P0的8个口,其中P00-P03为四行,P04-P07为四列,本设计采用的是行扫描法,也就是说每次给四行当中的一行输出低电平(其他三行为高电平),然后再读取四列的值,如果发现四列全部为高电平,那么就表示没有按键按下,如果有某一列为低电平,就表示有按键按下了。
其工作流程图如3-5所示
图3-5 按键流程图
在密码校验过程中,如果密码正确,就亮起绿灯,如果密码校验错误,就让红灯亮起。流程图如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.
本论文是在我的指导老师密切关心和悉心指导下完成的。老师在课题开题期间和论文写作的过程中给予了我许多指导,导师总是以认真负责、一丝不苟的工作态度阅读并修改文章中不足的地方,他优良的作风和严谨治学的态度深深影响着我,至此,向恩师致以最真挚的感谢和最崇高的敬意!
同时我要感谢我的同学,特别是我的室友们,正是他们在这几年里陪我一起成长,一起学习,才让我有了今天的成绩。他们在平时的学习和生活中他们给予了我无私的关怀和帮助,在此表示我最诚挚的谢意。
查看全部评分
使用道具 举报
本版积分规则 发表回复 回帖后跳转到最后一页
手机版|小黑屋|51黑电子论坛 | 管理员QQ:125739409;技术交流QQ群281945664
Powered by 单片机教程网