基于C5单片机的电子密码锁课程设计_第1页
基于C5单片机的电子密码锁课程设计_第2页
基于C5单片机的电子密码锁课程设计_第3页
基于C5单片机的电子密码锁课程设计_第4页
基于C5单片机的电子密码锁课程设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 通信工程 专业课程设计题单 班级 1182041 学生 舒航 课程名称 专业课程设计 课 题 密码锁的设计 设计要求 利用单片机STC89C52设计一个密码锁,能够使用数码管显示器来显示密码输入的相关信息课 题 发 给 日 期 2014.06.03 课程设计完成日期 2014.06.26 指 导 教 师 何矞,邹琼 评语: 评分: 摘要一、要求利用单片机STC89C52设计一个密码锁,能够使用数码管显示器来显示密码输入的相关信息,通过10位数字按键(09)设置4位数字(09)密码,2位功能按键A(输入校验密码并验证密码)和B (设置新密码),利用继电器模拟电子门锁作出是否开门以及报警等反应。

2、二、包含内容1.课程设计目的1).灵活运用单片机的基础知识,依据课程设计内容,能够完成从硬件电路图设计,到PCB制版,再到软件编程及系统调试实现系统功能,完成课程设计,加深对单片机基础知识的理解,并灵活运用,将各门知识综合应用。2).能够上网查询器件资料,培养对新知识新技术的独立的学习能力和应用能力。3).独立完成一个小的系统设计,从硬件设计到软件设计,增强分析问题、解决问题的能力,为日后的毕业设计及科研工作奠定良好的基础。2. 主要设计内容:使用数码管显示器来显示密码输入的相关信息,通过10位数字按键(09)设置4位数字(09)密码,2位功能按键A(输入校验密码并验证密码)和B (设置新密码

3、),利用继电器模拟电子门锁作出是否开门以及报警等反应。关键词单片机;继电器;密码锁目 录第一章 课程设计题目 目的及意义1第二章 系统方案设计及确定22.1 系统方案的提出22.2 方案比较及确定3第三章 系统硬件设计43.1 STC89C52最小系统设计43.1.1时钟电路设计43.1.2复位电路设计53.2 键盘、显示电路硬件设计63.2.1键盘电路硬件设计63.2.2显示电路硬件设计63.3 继电器驱动电路及报警电路设计83.3.1 固态继电器简介83.3.2 固态继电器驱动电路设计93.3.3 报警提示电路10第四章 系统软件设计114.1 主程序模块124.2 密码比较判断模块124

4、.3 键盘扫描模块124.4 修改密码模块134.5 数码管液晶显示模块14第五章 系统调试16第六章 总结17参考文献17附录一18附录二242第1章 课程设计题目 目的及意义1.1 课程设计题目:密码锁利用单片机STC89C52设计一个密码锁,能够使用数码管显示器来显示密码输入的相关信息,通过10位数字按键(09)设置4位数字(09)密码,2位功能按键A(输入校验密码并验证密码)和B (设置新密码),利用继电器模拟电子门锁作出是否开门以及报警等反应。1.2 课程设计目的及意义在单片机向着大容量、多功能、高性能、高速度、低电压、低功耗及外围电路内装化的方向发展的时代,选择一种性价比最优的芯片

5、显得尤为重要。在本次课程设计中,程序编写可选汇编和C语言。而汇编效率高,对硬件的可操控性更强,体积小,但不易维护,可移植性很差;C语言效率比较低,硬件可操控性比较差,目标代码体积大,但容易维护,可移植性很好。该系统用C语言编写程序,与汇编语言相比具有更好的移植性和可读性,便于修改和增减功能,故本次课程设计我选择了C语言。通过对此次设计的理解和掌握,使我受益很多:1、熟悉掌握单片机的结构及工作原理,锻炼独立设计、制作和调试单片机应用系统的软硬件开发的过程和方法。2、通过MCS-51单片机应用系统的设计与编程应用,将理论知识和实际应用结合起来,加深对电子电路、电子元器件、印刷电路板等方面的知识,提

6、高在软件编程、排错调试、焊接技术、相关设备的使用技能。掌握单片机的接口及外围设备的特性,使用和控制方法。为以后设计和实现单片机应用系统打下良好的基础。3、通过密码锁的设计将所学知识融会贯通,锻炼独立设计、制作和调试单片机应用系统的能力,领会单片机应用系统的软件、硬件调试方法和习题研制开发过程,为进一步的动手实践活动打下一定的基础。4、这次课程设计时我翻阅了很多资料例如张毅刚主编的单片机原理及应用、高峰编的单片微型计算机原理与接口技术等书籍,还从网上找了STC89C52、74LS244以及74LS06的资料。让我在学习开发单片机应用系统时对芯片功能的学习有了更新的理解,这不仅需要电子技术方面要有

7、数字电路和模拟电路等方面的理论基础,还需要英语基础。第二章 系统方案设计及确定2.1 系统方案的提出本次课程设计的密码锁电路主要由四个模块组成:键盘输入模块、数据处理模块、显示控制模块,继电器驱动模块和蜂鸣器报警模块。方案一:以单片机为电子密码锁系统核心,使用4*4矩阵键盘作为数据输入方式,驱动4位数码管显示器提示程序运行过程和开锁的步骤,利用继电器及蜂鸣器模拟电子门锁作出是否开门以及报警等反应图1 单片机控制密码锁的系统原理框图方案二:以74LS112双JK触发器构成的数字逻辑电路控制方案,如图2。2.2 方案比较及确定 由于利用单片机灵活的编程设计和强大的I/O端口,及其控制的准确性,不但

8、能实现基本的密码锁功能,还可以增添掉电存储、声光提示等功能,故选用方案一。CPU的选择STC89C52系列单片机,高速、低功耗、新增在系统在应用可编程(ISP,IAP)功能,使不具有E2PROM的单片机具有了E2PROM的功能,可以在线对现场历史数据的存储功能,适用于一些需经常改变数据的应用产品(如计费器、门禁系统等)及需远距离改变设备参数的产品(遥控设备等)。采用STC89C52单片机设计的电子密码锁,利用内部E2PROM资源,不需要外接程序存储器就能完成修改密码等多种功能,并且保密性高、成本低、简单易行,符合住宅、部门办公安全要求。ISP在线编程功能,这个功能的优势在于改写单片机存储器内的

9、程序不需要把芯片从工作环境中剥离,是一个强大易用的功能。具有双工UART串行通道。内部集成看门狗计时器,不再需要像AT89C51那样外接看门狗计时器单元电路键盘电路采用矩阵式键盘,显示电路采用四位数码管动态显示方式,动态显示相对于静态显示有占用I/O口资源少的特点,恰好适合于本系统。方案中没有采用键盘、显示接口芯片8279实现键盘、显示接口。由于本次课程设计所使用的键盘数量、显示的方式及单片机的I/O口线使用情况等,采用前一种方式就足以能完成课程设计的要求,不必要多用一个芯片。根据本次课程设计的实际情况,兼顾经济性、使用性、简单易行、操作简单等多方面因素,本次课程设计采用方案一来完成。第3章

10、系统硬件设计本次课程设计的密码锁电路主要由四个模块组成:键盘输入模块、数据处理模块、显示控制模块,继电器驱动模块和蜂鸣器报警模块。通过单片机送给开锁执行机构,电路驱动继电器吸合,从而达到开锁的目的。如图3所示,为密码锁开锁电路原理图。当用户输入的密码正确时,单片机便输出开门信号,送到继电器驱动电路,然后驱动继电器常开触点闭合,达到开门的目的。本次设计中,继电器选用固态继电器,信息通过数码管显示,并利用蜂鸣器和发光二极管声光指示。其中,绿发光二极管亮,表示开锁;否则,红发光二极管亮,表示密码输入错误并开启报警电路。图3 密码锁开锁电路原理图3.1 STC89C52最小系统设计单片机最小系统包括C

11、PU、时钟电路和复位电路等三部分。下面则分别介绍这三部分的选取。3.1.1时钟电路设计时钟电路用于产生单片机工作时所必需的时钟控制信号,常用的时钟电路有内部时钟方式和外部时钟方式。内部时钟方式电路外接两个电容和一个晶振,根据振荡频率要求的不同选用不同阻值的电容和晶振。时钟电路中的晶振震荡频率范围通常是1.2MHz12MHz,AT89S51常选择6MHz或12MHz的石英晶体,为消除误差,得到准确的波特率,本设计选择震荡频率为11.0592MHz的石英晶,时钟电路如图4所示。图4时钟电路3.1.2复位电路设计复位是单片机的初始化操作,只需在单片机的复位引脚加上大于2个机器周期的高电平就可使单片机

12、复位,当程序运行出错或操作进入死循环状态可通过复位重新启动程序。MCS-51的复位是由外部的复位电路来实现的,STC89C52也不例外,复位电路通常采用上电自动复位和按钮复位两种方式,为方便复位操作,本文采用按键电平复位,电路如图5所示。其中C取10uF,R2取10K,复位电路如图5所示。图5复位电路3.2 键盘、显示电路硬件设计3.2.1键盘电路硬件设计键盘是系统中的手动控制部分,所以键盘的设计就显得尤为的重要。每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要M条行线和N条列线,即可组成具有M×N个按键的键盘。由于本设计中要求使

13、用16个按键输入,为减少键盘与单片机接口时所占用的I/O线的数目,故使用矩阵键盘。本设计中,矩阵键盘列线和单片机P2.0-P2.3相连,行线与单片机P2.4-P2.7相连。键盘扫描采用行扫描法,即依次置行线中的每一行为低电平,其余均为高电平,扫描列线电平状态,为低电平即表示该键按下。键盘电路硬件连接图如图6所示。 图6 矩阵按键3.2.2显示电路硬件设计显示是系统的输出部分,用于观察当前的输入状态。显示电路采用三极管对位码进行驱动。LED数码管有共阳和共阴两种,把这些LED发光二极管的正极接到一块(一般是拼成一个8字加一个小数点)而作为一个引脚,就叫共阳的,相反的,就叫共阴的,那么应用时这个脚

14、就分别的接VCC和GND。再把多个这样的8字装在一起就成了多位的数码管了图7 共阳、共阴数码管显示方式有静态显示和动态显示两种显示方式。静态显示时,数据是分开送到每一位LED上的;而动态显示则是数据是送到每一个LED上,再根据位选线来确定是哪一位LED被显示。静态显示亮度很高,但口线占用较多;动态显示占用口线数目较少,适合用在显示位数较多的场合,但显示位数的增多,将占用大量的CPU时间。本次设计选用动态显示。显示电路硬件连接图如图8、图9所示。 330555555图8 数码管驱动电路图9 四位数码管3.3 继电器驱动电路及报警电路设计3.3.1固态继电器简介固态继电器(Solid State

15、Relay,缩写SSR),是由微电子电路,分立电子器件,电力电子功率器件组成的无触点开关。用隔离器件实现了控制端与负载端的隔离。固态继电器的输入端用微小的控制信号,达到直接驱动大电流负载。固态继电器有三部分组成:输入电路,隔离(耦合)和输出电路。按输入电压的不同类别,输入电路可分为直流输入电路,交流输入电路和交直流输入电路三种。有些输入控制电路还具有与TTL/CMOS兼容,正负逻辑控制和反相等功能。固态继电器的输入与输出电路的隔离和耦合方式有光电耦合和变压器耦合两种。固态继电器的输出电路也可分为直流输出电路,交流输出电路和交直流输出电路等形式。交流输出时,通常使用两个可控硅或一个双向可控硅,直

16、流输出时可使用双极性器件或功率场效应管。1、固态继电器的优点(1)高寿命,高可靠:固态继电器没有机械零部件,有固体器件完成触点功能,由于没有运动的零部件,因此能在高冲击,振动的环境下工作,由于组成固态继电器的元器件的固有特性,决定了固态继电器的寿命长,可靠性高。 (2) 灵敏度高,控制功率小,电磁兼容性好:固态继电器的输入电压范围较宽,驱动功率低,可与大多数逻辑集成电路兼容不需加缓冲器或驱动器。(3) 快速转换:固态继电器因为采用固体器件,所以切换速度可从几毫秒至几微妙。(4) 电磁干扰小:固态继电器没有输入“线圈”,没有触点燃弧和回跳,因而减少了电磁干扰。大多数交流输出固态继电器是一个零电压

17、开关,在零电压处导通,零电流处关断,减少了电流波形的突然中断,从而减少了开关瞬态效应。 2、固态继电器的缺点(1)导通后的管压降大,可控硅或双相控硅的正向降压可达12V,大功率晶体管的饱和压降也在12V之间,一般功率场效应管的导通电阻也较机械触点的接触电阻大。 (2) 半导体器件关断后仍可有数微安至数毫安的漏电流,因此不能实现理想的电隔离。(3) 由于管压降大,导通后的功耗和发热量也大,大功率固态继电器的体积远远大于同容量的电磁继电器,成本也较高。(4) 电子元器件的温度特性和电子线路的抗干扰能力较差,耐辐射能力也较差,如不采取有效措施,则工作可靠性低。(5) 固态继电器对过载有较大的敏感性,

18、必须用快速熔断器或RC阻尼电路对其进行过载保护。固态继电器的负载与环境温度明显有关,温度升高,负载能力将迅速下降。(6) 主要不足是存在通态压降(需相应散热措施),有断态漏电流,交直流不能通用,触点组数少,另外过电流、过电压及电压上升率、电流上升率等指标差。3.3.2 固态继电器驱动电路设计当用户输入的密码正确时,单片机便输出开门信号,送到继电器驱动电路,然后驱动继电器常开触点闭合,绿发光二极管亮,表示开锁;否则,红发光二极管亮,表示密码输入错误。硬件电路如图10所示 图10 固态继电器驱动电路3.3.3 报警提示电路报警提示电路采用小蜂鸣器提示。蜂鸣器能够根据脉冲信号,以及信号的频率发出各种

19、不同的声音,这样可以根据系统要求在密码出入正确和密码输入错误时发出不同的声音提示,已达到报警的要求。蜂鸣器电路,如图11所示。 图11 报警电路第4章 系统软件设计在系统设计中,除了硬件设计之外,软件设计也是很重要的,它是系统工作的指挥者,因此系统软件设计时要遵循结构合理、操作性能好、具有一定的保护措施、兼容性好的设计原则来开发设计。密码锁系统软件设计主要包括主程序模块、密码比较判断模块、键盘扫描模块、修改密码模块、数码管显示模块等及按键检测模块。开始系统初始化显示主界面按键检测 否读入键值是A键是否按下 否 是判断密码对否 否是报警,红灯亮开锁,绿灯亮B键是否按下 否 是设置新密码A键是否按

20、下 否新密码设置完成是图12 系统程序流程图4.1 主程序模块主程序主要用于定义全局变量,给全局变量赋初值,启动定时器,为整个程序提供数据;检测按键;调用显示等功能。4.2 密码比较判断模块该模块的功能是将键盘输入的密码利用if语句与设定的密码进行逐个比较,若密码完全正确则开锁;若不正确,则开启报警电路,可重新输入密码。其密码输入和比较判决流程图如图13所示。输入密码核对键盘锁定,开启报警电路开锁灯亮,可密码修改NY复位图13 密码输入和比较判决流程图4.3 键盘扫描模块键盘使用矩阵式键盘,由行和列组成,CPU对所有键盘进行监视,从而实现逐列扫描键盘确定被按键的具体位置、判断键盘上有无键按下、

21、消除去抖动、判断闭合的键是否释放等功能。如图14所示,为键盘扫描流程图。图14 键盘扫描流程图4.4 修改密码模块在密码输入正确情况下,可以按下“重置密码”对密码进行重新设置,每设定一位就将密码存储起来,当设置4位密码完毕后,系统将自动跳到程序开始,调用新设置的密码。图15为修改密码流程图。图15 修改密码流程图4.5 数码管液晶显示模块此模块包括数码管初始化、动态扫描等。在显示之前,我们编好了段选表09,通过查表来显示,由于本次设计采用动态显示,所以先送段选给每一位,然后给相应的数码管送位选,延时1MS,再给下一位送段选,送位选,延时1MS,以此类推,让4位数码管显示不同的数字,利用人的视觉

22、暂留,使我们看到4位数码管的动态显示效果。显示子程序流程图如图15所示。图15 显示子程序流程图第5章 系统调试在本次软件调试中,我们使用的是STC_ISP_V481C51单片机下载工具和Keil uVision2软件,Keil uVision2是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。Keil C51软件提供丰富的库函数和功能强大

23、的集成开发调试工具,全Windows界面,使您能在很短的时间内就能学会使用keil c51来开发您的单片机应用程序 。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。第6章 总 结经过三周的紧张设计,终于顺利完成了设计任务。本次课程设计主要是针对密码锁系统做了详细介绍,以STC89C52为核心,并通过调试运行可以实现数码管显示器显示密码输入的相关信息,通过10位数字按键(09)设置4位数字(09)密码,实现2位功能按键A(输入校验密码并验证密码)和B (设置新密

24、码),利用继电器模拟电子门锁作出是否开门以及报警等反应。通过课程设计让我对单片机系统有了较详细的了解,而且触及到与其相关的很多新知识,而且随着电子技术的发展简易数字电压表也会越来越完善,作为大学生的我们应该跟上时代的步伐,时刻关注形势变化,不断充实更新自己的知识。在设计中既应用到了基础知识,也用到了专业知识,它是对三年来所学知识的综合考察。最重要的是我通过亲自设计,亲自绘制原理图,印制电路板以及系统调试培养了我的耐心和细心,这对我以后的工作和学习有很大的帮助。参考文献1、张志良.单片机学习指导及习题解答. 机械工业出版社,2008.2、张伟.单片机原理及应用. 机械工业出版社,2009.3、孙

25、俊逸 盛秋林. 张铮编著.单片机原理及应用.清华大学出版社.4、张毅刚主编. 单片机原理及应用. 北京: 高等教育出版社,2010.5.5、黄仁欣.单片机原理及应用技术. 北京: 清华大学出版社, 2005.附录一:程序清单23#include<reg52.h> #define DataPort P0 /定义数据端口数码管显示#define KeyPort P2/按键扫描sbit DIG1=P31;sbit DIG2=P32; sbit DIG3=P33;sbit DIG4=P34;bit key_flag;bit Flag;bit clr_flag;sbit P23=P23;/继

26、电器控制端sbit P30=P30;/蜂鸣器控制端unsigned char codedofly_DuanMa=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e;/ 显示段码值0Funsigned char TempData4; /存储显示值的全局变量unsigned char time_flag;unsigned char delay_count1;unsigned char delay_count2;unsigned char change_flag;unsigned char

27、c_flag;void Delay(unsigned int z);void Display(void);/数码管显示函数unsigned char KeyScan(void);/键盘扫描void Init_Timer0(void);/定时器初始化void Init_Timer1(void);void main (void)unsigned char key,i,j,count; unsigned char num; unsigned char temp4;unsigned char password4=0,0,0,0;Init_Timer0();Init_Timer1();i=0;num=0

28、;time_flag=0;count=0;clr_flag=0;change_flag=0;key=0;c_flag=0;delay_count1=0;delay_count2=0;for(j=0;j<4;j+) TempDataj=0xff; TempData0=0xbf; / TempData1=0xbf; /TempData2=0xbf; / TempData3=0xbf;/while (1) /主循环key_flag=0;key=KeyScan();if(delay_count1!=0)P23=1;while(key_flag)if(clr_flag=1)clr_flag=0;f

29、or(j=0;j<4;j+) TempDataj=0xbf; switch(key)case 0x11:num=0;break; case 0x21:num=1;break;case 0x41:num=2;break; case 0x81:num=3;break;case 0x12:num=4;break;case 0x22:num=5;break; case 0x42:num=6;break; case 0x82:num=7;break; case 0x14:num=8;break; case 0x24:num=9;break; case 0x44:num=10;break; case

30、 0x84:num=11;break; default:break;key_flag=0;if(change_flag=1&&num=11&&i=0)c_flag=1;if(change_flag=1&&c_flag=1)if( i<5&&i>0)passwordi-1=num;TempDatai-1=dofly_DuanManum;if(i=5&&num=10)for(j=0;j<4;j+) TempDataj=0xbf; i+;if(i=6)change_flag=0;c_flag=0;i=0

31、;clr_flag=1;elseif(i<4)tempi=num;TempDatai=0x89;/把按键值输入到显示数组中 if(i=4&&num=10)Flag=1;/先把比较位置1for(j=0;j<4;j+) Flag=Flag&&(tempj=passwordj);for(j=0;j<4;j+)TempDataj=0XFF;if(Flag)TempData0=0xc0; / "o" TempData1=0x8c; / "p"TempData2=0x86; / "E"TempDa

32、ta3=0xc8; / "n" P23=1;TR0=1; /定时器开关打开change_flag=1;else count+;if(count=3)TempData0=0x86; / "E"TempData1=0x88; / "r"TempData2=0x88; / "r"TempData3=0xb0;/"3"count=0;P30=0;TR1=1; /定时器0开关打开else /否则显示"Err"TempData0=0x86; / "E"TempData

33、1=0x88; / "r"TempData2=0x88; / "rP30=0;TR1=1; /定时器1开关打开 clr_flag=1;if(i=4&&num!=10)TempData0=0x86; / "E"TempData1=0x88; / "r"TempData2=0x88; / "rTempData3=0xff; / i+;if(i=5)i=0;Display();void Delay(unsigned int z)unsigned int x;unsigned int y;for(x=z;x>0;x-)for(y=100;y>0;y-); void Display(void)DataPort=0xff; /清空数据,防止有交替重影DIG1=0;DIG2=1;DIG3=1;DIG4=1;DataPort=TempData0; /取显示数据,段码0Delay(2);DataPort=0xff; /清空数据,防止有交替重影DIG1=1;DIG2=0;DIG3=1;DIG4=1;DataPort=TempData1; /取显示数据,段码1Delay(2);DataPort=0xff; /清空数据,防止有交替重影D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论