基于C51单片机的电子密码锁课程设计 2Word格式.docx

上传人:b****5 文档编号:18616624 上传时间:2022-12-29 格式:DOCX 页数:34 大小:446.13KB
下载 相关 举报
基于C51单片机的电子密码锁课程设计 2Word格式.docx_第1页
第1页 / 共34页
基于C51单片机的电子密码锁课程设计 2Word格式.docx_第2页
第2页 / 共34页
基于C51单片机的电子密码锁课程设计 2Word格式.docx_第3页
第3页 / 共34页
基于C51单片机的电子密码锁课程设计 2Word格式.docx_第4页
第4页 / 共34页
基于C51单片机的电子密码锁课程设计 2Word格式.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

基于C51单片机的电子密码锁课程设计 2Word格式.docx

《基于C51单片机的电子密码锁课程设计 2Word格式.docx》由会员分享,可在线阅读,更多相关《基于C51单片机的电子密码锁课程设计 2Word格式.docx(34页珍藏版)》请在冰豆网上搜索。

基于C51单片机的电子密码锁课程设计 2Word格式.docx

3.1.2复位电路设计5

3.2键盘、显示电路硬件设计6

3.2.1键盘电路硬件设计6

3.2.2显示电路硬件设计6

3.3继电器驱动电路及报警电路设计8

3.3.1固态继电器简介8

3.3.2固态继电器驱动电路设计9

3.3.3报警提示电路10

第四章系统软件设计11

4.1主程序模块12

4.2密码比较判断模块12

4.3键盘扫描模块12

4.4修改密码模块13

4.5数码管液晶显示模块14

第五章系统调试16

第六章总结17

参考文献17

附录一18

附录二24

第1章课程设计题目目的及意义

1.1课程设计题目:

1.2课程设计目的及意义

在单片机向着大容量、多功能、高性能、高速度、低电压、低功耗及外围电路内装化的方向发展的时代,选择一种性价比最优的芯片显得尤为重要。

在本次课程设计中,程序编写可选汇编和C语言。

而汇编效率高,对硬件的可操控性更强,体积小,但不易维护,可移植性很差;

C语言效率比较低,硬件可操控性比较差,目标代码体积大,但容易维护,可移植性很好。

该系统用C语言编写程序,与汇编语言相比具有更好的移植性和可读性,便于修改和增减功能,故本次课程设计我选择了C语言。

通过对此次设计的理解和掌握,使我受益很多:

1、熟悉掌握单片机的结构及工作原理,锻炼独立设计、制作和调试单片机应用系统的软硬件开发的过程和方法。

2、通过MCS-51单片机应用系统的设计与编程应用,将理论知识和实际应用结合起来,加深对电子电路、电子元器件、印刷电路板等方面的知识,提高在软件编程、排错调试、焊接技术、相关设备的使用技能。

掌握单片机的接口及外围设备的特性,使用和控制方法。

为以后设计和实现单片机应用系统打下良好的基础。

3、通过密码锁的设计将所学知识融会贯通,锻炼独立设计、制作和调试单片机应用系统的能力,领会单片机应用系统的软件、硬件调试方法和习题研制开发过程,为进一步的动手实践活动打下一定的基础。

4、这次课程设计时我翻阅了很多资料例如张毅刚主编的《单片机原理及应用》、高峰编的《单片微型计算机原理与接口技术》等书籍,还从网上找了STC89C52、74LS244以及74LS06的资料。

让我在学习开发单片机应用系统时对芯片功能的学习有了更新的理解,这不仅需要电子技术方面要有数字电路和模拟电路等方面的理论基础,还需要英语基础。

第二章系统方案设计及确定

2.1系统方案的提出

本次课程设计的密码锁电路主要由四个模块组成:

键盘输入模块、数据处理模块、显示控制模块,继电器驱动模块和蜂鸣器报警模块。

方案一:

以单片机为电子密码锁系统核心,使用4*4矩阵键盘作为数据输入方式,驱动4位数码管显示器提示程序运行过程和开锁的步骤,利用继电器及蜂鸣器模拟电子门锁作出是否开门以及报警等反应

图1单片机控制密码锁的系统原理框图

方案二:

以74LS112双JK触发器构成的数字逻辑电路控制方案,如图2。

2.2方案比较及确定

由于利用单片机灵活的编程设计和强大的I/O端口,及其控制的准确性,不但能实现基本的密码锁功能,还可以增添掉电存储、声光提示等功能,故选用方案一。

CPU的选择

STC89C52系列单片机,高速、低功耗、新增在系统/在应用可编程(ISP,IAP)功能,使不具有E2PROM的单片机具有了E2PROM的功能,可以在线对现场历史数据的存储功能,适用于一些需经常改变数据的应用产品(如计费器、门禁系统等)及需远距离改变设备参数的产品(遥控设备等)。

采用STC89C52单片机设计的电子密码锁,利用内部E2PROM资源,不需要外接程序存储器就能完成修改密码等多种功能,并且保密性高、成本低、简单易行,符合住宅、部门办公安全要求。

ISP在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离,是一个强大易用的功能。

具有双工UART串行通道。

内部集成看门狗计时器,不再需要像AT89C51那样外接看门狗计时器单元电路

键盘电路采用矩阵式键盘,显示电路采用四位数码管动态显示方式,动态显示相对于静态显示有占用I/O口资源少的特点,恰好适合于本系统。

方案中没有采用键盘、显示接口芯片8279实现键盘、显示接口。

由于本次课程设计所使用的键盘数量、显示的方式及单片机的I/O口线使用情况等,采用前一种方式就足以能完成课程设计的要求,不必要多用一个芯片。

根据本次课程设计的实际情况,兼顾经济性、使用性、简单易行、操作简单等多方面因素,本次课程设计采用方案一来完成。

第3章系统硬件设计

通过单片机送给开锁执行机构,电路驱动继电器吸合,从而达到开锁的目的。

如图3所示,为密码锁开锁电路原理图。

当用户输入的密码正确时,单片机便输出开门信号,送到继电器驱动电路,然后驱动继电器常开触点闭合,达到开门的目的。

本次设计中,继电器选用固态继电器,信息通过数码管显示,并利用蜂鸣器和发光二极管声光指示。

其中,绿发光二极管亮,表示开锁;

否则,红发光二极管亮,表示密码输入错误并开启报警电路。

图3密码锁开锁电路原理图

3.1STC89C52最小系统设计

单片机最小系统包括CPU、时钟电路和复位电路等三部分。

下面则分别介绍这三部分的选取。

3.1.1时钟电路设计

时钟电路用于产生单片机工作时所必需的时钟控制信号,常用的时钟电路有内部时钟方式和外部时钟方式。

内部时钟方式电路外接两个电容和一个晶振,根据振荡频率要求的不同选用不同阻值的电容和晶振。

时钟电路中的晶振震荡频率范围通常是1.2MHz~12MHz,AT89S51常选择6MHz或12MHz的石英晶体,为消除误差,得到准确的波特率,本设计选择震荡频率为11.0592MHz的石英晶,时钟电路如图4所示。

图4时钟电路

3.1.2复位电路设计

复位是单片机的初始化操作,只需在单片机的复位引脚加上大于2个机器周期的高电平就可使单片机复位,当程序运行出错或操作进入死循环状态可通过复位重新启动程序。

MCS-51的复位是由外部的复位电路来实现的,STC89C52也不例外,复位电路通常采用上电自动复位和按钮复位两种方式,为方便复位操作,本文采用按键电平复位,电路如图5所示。

其中C取10uF,R2取10KΩ,复位电路如图5所示。

图5复位电路

3.2键盘、显示电路硬件设计

3.2.1键盘电路硬件设计

键盘是系统中的手动控制部分,所以键盘的设计就显得尤为的重要。

每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要M条行线和N条列线,即可组成具有M×

N个按键的键盘。

由于本设计中要求使用16个按键输入,为减少键盘与单片机接口时所占用的I/O线的数目,故使用矩阵键盘。

本设计中,矩阵键盘列线和单片机P2.0-P2.3相连,行线与单片机P2.4-P2.7相连。

键盘扫描采用行扫描法,即依次置行线中的每一行为低电平,其余均为高电平,扫描列线电平状态,为低电平即表示该键按下。

键盘电路硬件连接图如图6所示。

图6矩阵按键

3.2.2显示电路硬件设计

显示是系统的输出部分,用于观察当前的输入状态。

显示电路采用三极管对位码进行驱动。

LED数码管有共阳和共阴两种,把这些LED发光二极管的正极接到一块(一般是拼成一个8字加一个小数点)而作为一个引脚,就叫共阳的,相反的,就叫共阴的,那么应用时这个脚就分别的接VCC和GND。

再把多个这样的8字装在一起就成了多位的数码管了

图7共阳、共阴数码管

显示方式有静态显示和动态显示两种显示方式。

静态显示时,数据是分开送到每一位LED上的;

而动态显示则是数据是送到每一个LED上,再根据位选线来确定是哪一位LED被显示。

静态显示亮度很高,但口线占用较多;

动态显示占用口线数目较少,适合用在显示位数较多的场合,但显示位数的增多,将占用大量的CPU时间。

本次设计选用动态显示。

显示电路硬件连接图如图8、图9所示。

330ΩΩΩΩΩΩΩΩΩΩΩΥΥΩΩΩΩΩΩ5Ω5555ΩΩΩ5Ω

图8数码管驱动电路

图9四位数码管

3.3继电器驱动电路及报警电路设计

3.3.1固态继电器简介

固态继电器(SolidStateRelay,缩写SSR),是由微电子电路,分立电子器件,电力电子功率器件组成的无触点开关。

用隔离器件实现了控制端与负载端的隔离。

固态继电器的输入端用微小的控制信号,达到直接驱动大电流负载。

固态继电器有三部分组成:

输入电路,隔离(耦合)和输出电路。

按输入电压的不同类别,输入电路可分为直流输入电路,交流输入电路和交直流输入电路三种。

有些输入控制电路还具有与TTL/CMOS兼容,正负逻辑控制和反相等功能。

固态继电器的输入与输出电路的隔离和耦合方式有光电耦合和变压器耦合两种。

固态继电器的输出电路也可分为直流输出电路,交流输出电路和交直流输出电路等形式。

交流输出时,通常使用两个可控硅或一个双向可控硅,直流输出时可使用双极性器件或功率场效应管。

1、固态继电器的优点

(1)高寿命,高可靠:

固态继电器没有机械零部件,有固体器件完成触点功能,由于没有运动的零部件,因此能在高冲击,振动的环境下工作,由于组成固态继电器的元器件的固有特性,决定了固态继电器的寿命长,可靠性高。

(2)灵敏度高,控制功率小,电磁兼容性好:

固态继电器的输入电压范围较宽,驱动功率低,可与大多数逻辑集成电路兼容不需加缓冲器或驱动器。

(3)快速转换:

固态继电器因为采用固体器件,所以切换速度可从几毫秒至几微妙。

(4)电磁干扰小:

固态继电器没有输入“线圈”,没有触点燃弧和回跳,因而减少了电磁干扰。

大多数交流输出固态继电器是一个零电压开关,在零电压处导通,零电流处关断,减少了电流波形的突然中断,从而减少了开关瞬态效应。

2、固态继电器的缺点

(1)导通后的管压降大,可控硅或双相控硅的正向降压可达1~2V,大功率晶体管的饱和压降也在1~2V之间,一般功率场效应管的导通电阻也较机械触点的接触电阻大。

(2)半导体器件关断后仍可有数微安至数毫安的漏电流,因此不能实现理想的电隔离。

(3)由于管压降大,导通后的功耗和发热量也大,大功率固态继电器的体积远远大于同容量的电磁继电器,成本也较高。

(4)电子元器件的温度特性和电子线路的抗干扰能力较差,耐辐射能力也较差,如不采取有效措施,则工作可靠性低。

(5)固态继电器对过载有较大的敏感性,必须用快速熔断器或RC阻尼电路对其进行过载保护。

固态继电器的负载与环境温度明显有关,温度升高,负载能力将迅速下降。

(6)主要不足是存在通态压降(需相应散热措施),有断态漏电流,交直流不能通用,触点组数少,另外过电流、过电压及电压上升率、电流上升率等指标差。

3.3.2固态继电器驱动电路设计

当用户输入的密码正确时,单片机便输出开门信号,送到继电器驱动电路,然后驱动继电器常开触点闭合,绿发光二极管亮,表示开锁;

否则,红发光二极管亮,表示密码输入错误。

硬件电路如图10所示

图10固态继电器驱动电路

3.3.3报警提示电路

报警提示电路采用小蜂鸣器提示。

蜂鸣器能够根据脉冲信号,以及信号的频率发出各种不同的声音,这样可以根据系统要求在密码出入正确和密码输入错误时发出不同的声音提示,已达到报警的要求。

蜂鸣器电路,如图11所示。

图11报警电路

第4章系统软件设计

在系统设计中,除了硬件设计之外,软件设计也是很重要的,它是系统工作的指挥者,因此系统软件设计时要遵循结构合理、操作性能好、具有一定的保护措施、兼容性好的设计原则来开发设计。

密码锁系统软件设计主要包括主程序模块、密码比较判断模块、键盘扫描模块、修改密码模块、数码管显示模块等及按键检测模块。

开始

系统初始化

显示主界面

按键检测

读入键值

A键是否按下

判断密码对否

报警,红灯亮

开锁,绿灯亮

B键是否按下

设置新密码

新密码设置完成

图12系统程序流程图

4.1主程序模块

主程序主要用于定义全局变量,给全局变量赋初值,启动定时器,为整个程序提供数据;

检测按键;

调用显示等功能。

4.2密码比较判断模块

该模块的功能是将键盘输入的密码利用if语句与设定的密码进行逐个比较,若密码完全正确则开锁;

若不正确,则开启报警电路,可重新输入密码。

其密码输入和比较判决流程图如图13所示。

图13密码输入和比较判决流程图

4.3键盘扫描模块

键盘使用矩阵式键盘,由行和列组成,CPU对所有键盘进行监视,从而实现逐列扫描键盘确定被按键的具体位置、判断键盘上有无键按下、消除去抖动、判断闭合的键是否释放等功能。

如图14所示,为键盘扫描流程图。

图14键盘扫描流程图

4.4修改密码模块

在密码输入正确情况下,可以按下“重置密码”对密码进行重新设置,每设定一位就将密码存储起来,当设置4位密码完毕后,系统将自动跳到程序开始,调用新设置的密码。

图15为修改密码流程图。

图15修改密码流程图

4.5数码管液晶显示模块

此模块包括数码管初始化、动态扫描等。

在显示之前,我们编好了段选表0—9,通过查表来显示,由于本次设计采用动态显示,所以先送段选给每一位,然后给相应的数码管送位选,延时1MS,再给下一位送段选,送位选,延时1MS,以此类推,让4位数码管显示不同的数字,利用人的视觉暂留,使我们看到4位数码管的动态显示效果。

显示子程序流程图如图15所示。

图15显示子程序流程图

第5章系统调试

在本次软件调试中,我们使用的是STC_ISP_V481C51单片机下载工具和KeiluVision2软件,KeiluVision2是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。

KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,使您能在很短的时间内就能学会使用keilc51来开发您的单片机应用程序。

另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。

在开发大型软件时更能体现高级语言的优势。

第6章总结

经过三周的紧张设计,终于顺利完成了设计任务。

本次课程设计主要是针对密码锁系统做了详细介绍,以STC89C52为核心,并通过调试运行可以实现数码管显示器显示密码输入的相关信息,通过10位数字按键(0~9)设置4位数字(0~9)密码,实现2位功能按键A(输入校验密码并验证密码)和B(设置新密码),利用继电器模拟电子门锁作出是否开门以及报警等反应。

通过课程设计让我对单片机系统有了较详细的了解,而且触及到与其相关的很多新知识,而且随着电子技术的发展简易数字电压表也会越来越完善,作为大学生的我们应该跟上时代的步伐,时刻关注形势变化,不断充实更新自己的知识。

在设计中既应用到了基础知识,也用到了专业知识,它是对三年来所学知识的综合考察。

最重要的是我通过亲自设计,亲自绘制原理图,印制电路板以及系统调试培养了我的耐心和细心,这对我以后的工作和学习有很大的帮助。

参考文献

1、张志良.单片机学习指导及习题解答.机械工业出版社,2008.

2、张伟.单片机原理及应用.机械工业出版社,2009.

3、孙俊逸盛秋林.张铮编著.单片机原理及应用.清华大学出版社.

4、张毅刚主编.单片机原理及应用.北京:

高等教育出版社,2010.5.

5、黄仁欣.单片机原理及应用技术.北京:

清华大学出版社,2005.

附录一:

程序清单

#include<

reg52.h>

#defineDataPortP0//定义数据端口数码管显示

#defineKeyPortP2//按键扫描

sbitDIG1=P3^1;

sbitDIG2=P3^2;

sbitDIG3=P3^3;

sbitDIG4=P3^4;

bitkey_flag;

bitFlag;

bitclr_flag;

sbitP23=P2^3;

//继电器控制端

sbitP30=P3^0;

//蜂鸣器控制端

unsignedcharcode

dofly_DuanMa[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

//显示段码值0~F

unsignedcharTempData[4];

//存储显示值的全局变量

unsignedchartime_flag;

unsignedchardelay_count1;

unsignedchardelay_count2;

unsignedcharchange_flag;

unsignedcharc_flag;

voidDelay(unsignedintz);

voidDisplay(void);

//数码管显示函数

unsignedcharKeyScan(void);

//键盘扫描

voidInit_Timer0(void);

//定时器初始化

voidInit_Timer1(void);

voidmain(void)

{

unsignedcharkey,i,j,count;

unsignedcharnum;

unsignedchartemp[4];

unsignedcharpassword[4]={0,0,0,0};

Init_Timer0();

Init_Timer1();

i=0;

num=0;

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++)

{

TempData[j]=0xff;

}

TempData[0]=0xbf;

//

TempData[1]=0xbf;

//

TempData[2]=0xbf;

TempData[3]=0xbf;

//

while

(1)//主循环

key_flag=0;

key=KeyScan();

if(delay_count1!

=0)

P23=1;

while(key_flag)

if(clr_flag==1)

TempData[j]=0xbf;

switch(key)

case0x11:

break;

case0x21:

num=1;

case0x41:

num=2;

case0x81:

num=3;

case0x12:

num=4;

case0x22:

num=5;

case0x42:

num=6;

case0x82:

num=7;

case0x14:

num=8;

case0x24:

num=9;

case0x44:

num=10;

case0x84:

num=11;

default:

if(change_flag==1&

&

num==11&

i==0)

c_flag=1;

c_flag==1)

if(i<

5&

i>

0)

password[i-1]=num;

TempData[i-1]=dofly_DuanMa[num];

if(i==5&

num==10)

}

i++;

if(i==6)

clr_flag=1;

else

if(i<

4)

temp[i]=num;

TempData[i]=0x89;

//把按键值输入到显示数组中}

if(i==4&

Flag=1;

/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1