单片机电子密码锁毕业设计论文报告完整版电路图+源代码资料.docx
《单片机电子密码锁毕业设计论文报告完整版电路图+源代码资料.docx》由会员分享,可在线阅读,更多相关《单片机电子密码锁毕业设计论文报告完整版电路图+源代码资料.docx(23页珍藏版)》请在冰豆网上搜索。
单片机电子密码锁毕业设计论文报告完整版电路图+源代码资料
摘要
本设计通过1个单片机AT89C2051芯片,三极管,开关,电池线圈等完成一个8位电子密码锁,其工作原理是通过开关控制单片机的P3.7,P3.2口输出电流信号,从而控制喇叭的响声与电池线圈的磁通量变化,通过磁力的效应,吸引开关的开通与报警。
本实验课题实现后可实现设定任意8位密码,更改密码,开锁,报警等功能,有很强的实用价值,另外由于设计简单,实验材料价钱低,可用于实际生活中。
本文以硬件内容为主,介绍了8051系列单片机,引脚用途的资料功率放大器的使用。
并通过这个课题展现出来。
将本课题中的硬件运行过程给予了详细介绍。
对密码锁的运行状态也绘制了流程图给与了很好的说明。
关键词:
AT89C2051;wave软件;密码锁
目录
引言1
1课题要求及目的2
1.1课题要求:
2
1.2研究目的,意义2
251单片机简介2
2.1单片机发展史2
2.251单片机3
2.2.1AT89C2051单片机芯片5
2.3定时器/计数器概述9
3硬件电路设计10
3.1芯片的选择10
3.2时钟电路11
3.3放大电路与中断,I/O口分配的解决12
3.4复位电路13
3.5开锁电路14
3.6电源电路15
3.7报警电路15
4软件设计16
4.1流程图16
4.2源程序及分析17
总结20
参考文献21
基于单片机的电子密码锁的设计
引言
目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。
下面是单片机的主要发展趋势。
CMOS化近年,由于CHMOS技术的进小,大大地促进了单片机的CMOS化。
CMOS芯片除了低功耗特性之外,还具有功耗的可控性,使单片机可以工作在功耗精细管理状态。
这也是今后以80C51取代8051为标准MCU芯片的原因。
因为单片机芯片多数是采用CMOS(金属栅氧化物)半导体工艺生产。
CMOS电路的特点是低功耗、高密度、低速度、低价格。
采用双极型半导体工艺的TTL电路速度快,但功耗和芯片面积较大。
随着技术和工艺水平的提高,又出现了HMOS(高密度、高速度MOS)和CHMOS工艺。
CHMOS和HMOS工艺的结合。
目前生产的CHMOS电路已达到LSTTL的速度,传输延迟时间小于2ns,它的综合优势已在于TTL电路。
因而,在单片机领域CMOS正在逐渐取代TTL电路。
低功耗化单片机的功耗已从Ma级,甚至1uA以下;使用电压在3~6V之间,完全适应电池工作。
低功耗化的效应不仅是功耗低,而且带来了产品的高可靠性、高抗干扰能力以及产品的便携化。
低电压化几乎所有的单片机都有WAIT、STOP等省电运行方式。
允许使用的电压范围越来越宽,一般在3~6V范围内工作。
低电压供电的单片机电源下限已可达1~2V。
目前0.8V供电的单片机已经问世。
大容量化以往单片机内的ROM为1KB~4KB,RAM为64~128B。
但在需要复杂控制的场合,该存储容量是不够的,必须进行外接扩充。
为了适应这种领域的要求,须运用新的工艺,使片内存储器大容量化。
目前,单片机内ROM最大可达64KB,RAM最大为2KB。
1课题要求及目的
1.1课题要求:
用单片机设计一个密码锁,要求设计一个8位密码的密码锁。
能完成密码设置,密码检验,错误时报警5秒提示,错误超过3次时报警1分钟作用
1.2研究目的,意义
通过研究设置一个8位密码锁的方法,使我们重温了基础知识并提高了对单片机的理解,加深了对单片机的用途的认识,加强自我学习能力与动手动脑能力。
251单片机简介
2.1单片机发展史
单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。
1.SCM即单片微型计算机(SingleChipMicrocomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。
“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。
在开创嵌入式系统独立发展道路上,Intel公司功不可没。
2.MCU即微控制器(MicroControllerUnit)阶段,主要的技术发展方向是:
不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。
它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家。
从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。
在发展MCU方面,最著名的厂家当数Philips公司。
Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器。
因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩。
3.单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。
随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。
因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。
单片机的发展
单片机作为微型计算机的一个重要分支,应用面很广,发展很快。
自单片机诞生至今,已发展为上百种系列的近千个机种。
单片机发展简史
如果将8位单片机的推出作为起点,那么单片机的发展历史大致可分为以下几个阶段
(1)第一阶段(1976-1978):
单片机的控索阶段。
以Intel公司的MCS–48为代表。
MCS–48的推出是在工控领域的控索,参与这一控索的公司还有Motorola、Zilog等,都取得了满意的效果。
这就是SCM的诞生年代,“单机片”一词即由此而来。
(2)第二阶段(1978-1982)单片机的完善阶段。
Intel公司在MCS–48基础上推出了完善的、典型的单片机系列MCS–51。
它在以下几个方面奠定了典型的通用总线型单片机体系结构。
①完善的外部总线。
MCS-51设置了经典的8位单片机的总线结构,包括8位数据总线、16位地址总线、控制总线及具有很多机通信功能的串行通信接口。
②CPU外围功能单元的集中管理模式。
③体现工控特性的位地址空间及位操作方式。
④指令系统趋于丰富和完善,并且增加了许多突出控制功能的指令。
(3)第三阶段(1982-1990):
8位单片机的巩固发展及16位单片机的推出阶段,也是单片机向微控制器发展的阶段。
Intel公司推出的MCS–96系列单片机,将一些用于测控系统的模数转换器、程序运行监视器、脉宽调制器等纳入片中,体现了单片机的微控制器特征。
随着MCS–51系列的广应用,许多电气厂商竞相使用80C51为内核,将许多测控系统中使用的电路技术、接口技术、多通道A/D转换部件、可靠性技术等应用到单片机中,增强了外围电路路功能,强化了智能控制的特征。
(4)第四阶段(1990—):
微控制器的全面发展阶段。
随着单片机在各个领域全面深入地发展和应用,出现了高速、大寻址范围、强运算能力的8位/16位/32位通用型单片机,以及小型廉价的专用型单片机。
硬件电路
2.251单片机
8051(芯片采用HMOS,功耗是630mW,是89C51的5倍,实际使用方面已经被市场淘汰)和8751等通用产品,一直到现在,MCS-51内核系列兼容的单片机仍是应用的主流产品(比如目前流行的89S51、已经停产的89C51等),各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习。
有些文献甚至也将8051泛指MCS-51系列单片机,8051是早期的最典型的代表作,由于MCS-51单片机影响极深远,许多公司都推出了兼容系列单片机,就是说MCS-51内核实际上已经成为一个8位单片机的标准。
其他的公司的51单片机产品都是和MCS-51内核兼容的产品而以。
同样的一段程序,在各个单片机厂家的硬件上运行的结果都是一样的,如ATMEL的89C51(已经停产)、89S51,PHILIPS(菲利浦),和WINBOND(华邦)等,我们常说的已经停产的89C51指的是ATMEL公司的AT89C51单片机,同时是在原基础上增强了许多特性,如时钟,更优秀的是由Flash(程序存储器的内容至少可以改写1000次)存储器取带了原来的ROM(一次性写入),AT89C51的性能相对于8051已经算是非常优越的了。
不过在市场化方面,89C51受到了PIC单片机阵营的挑战,89C51最致命的缺陷在于不支持ISP(在线更新程序)功能,必须加上ISP功能等新功能才能更好延续MCS-51的传奇。
89S51就是在这样的背景下取代89C51的,现在,89S51目前已经成为了实际应用市场上新的宠儿,作为市场占有率第一的Atmel目前公司已经停产AT89C51,将用AT89S51代替。
89S51在工艺上进行了改进,89S51采用0.35新工艺,成本降低,而且将功能提升,增加了竞争力。
89SXX可以像下兼容89CXX等51系列芯片。
同时,Atmel不再接受89CXX的定单,大家在市场上见到的89C51实际都是Atmel前期生产的巨量库存而以。
如果市场需要,Atmel当然也可以再恢复生产AT89C51。
89S51相对于89C51增加的新功能包括:
--新增加很多功能,性能有了较大提升,价格基本不变,甚至比89C51更低!
--ISP在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离。
是一个强大易用的功能。
--最高工作频率为33MHz,大家都知道89C51的极限工作频率是24M,就是说S51具有更高工作频率,从而具有了更快的计算速度。
--具有双工UART串行通道。
--内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路。
--双数据指示器。
--电源关闭标识。
--全新的加密算法,这使得对于89S51的解密变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯。
--兼容性方面:
向下完全兼容51全部字系列产品。
比如8051、89C51等等早期MCS-51兼容产品。
也就是说所有教科书、网络教程上的程序(不论教科书上采用的单片机是8051还是89C51还是MCS-51等等),在89S51上一样可以照常运行,这就是所谓的向下兼容。
比较结果:
就如同INTEL的P3向P4升级一样,虽然都可以跑Windows98,不过速度是不同的。
从AT89C51升级到AT89S51,也是同理。
和S51比起来,C51就要逊色一些,实际应用市场方面技术的进步是永远向前的。
2.2.1AT89C2051单片机芯片
AT89C2051外部引脚图:
(可以直接拷入ASM程序文件中,作注释使用,十分方便
【引脚电器性能】
AT89C2051单片机的P口特点:
P1口:
P1口是一个8位双向I/O端口,其中P1.2~P1.7引脚带有内部上拉电阻,P1.0和P1.1要求外部上拉电阻。
P1.0和P1.1还分别作为片内精密模拟比较器的同相输入(AIN0)和反相输入(AIN1)。
P1口输出缓冲器可吸收20mA电流,并能直接驱动LED显示。
对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口。
P2口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流(Iil).
P3口:
P3.0~P3.5、P3.7是带有内部上拉电阻的7个双向I/O端口。
P3.6用于固定输入片内比较器的输出信号并且它作为一通用I/O口引脚而只读。
P3口输出缓冲器可吸收20mA电流。
对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口。
P3口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流(Iil)。
AT89C51单片机的P口特点:
P0口:
是一个8位漏极开路输出型双向I/O端口。
作为输出端口时,每位能以吸收电流的方式驱动8个TTL输入,对端口写1时,又可作高阻抗输入端用。
在访问外部程序或数据存储器时,它是时分多路转换的地址(低8位)/数据总线,在访问期间将激活内部的上拉电阻。
P1口:
P1口是一个带有内部上拉电阻的8位双向I/O端口。
P1口的输出缓冲器可驱动
(吸收或输出电流方式)4个TTL输入。
对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口。
P2口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流(Iil)。
P2口:
P2口是一个带有内部上拉电阻的8位双向I/O端口。
P2口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口。
P2口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流(Iil)。
在访问外部程序存储器时和16位外部地址的外部数据存储器(如执行MOVX@DPTR)时,P2口送出高8位地址。
在访问8位地址的外部数据存储器(如执行MOVX@RI)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。
P3口:
P3口是一个带有内部上拉电阻的8位双向I/O端口。
P3口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口。
P3口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流(Iil)。
内部单元:
运算器:
1、算术/逻辑部件ALU:
用以完成+、-、*、/的算术运算及布尔代数的逻辑运算,并通过运算结果影响程序状态寄存器PSW的某些位,从而为判断、转移、十进制修正和出错等提供依据。
2、累加器A:
在算术/逻辑运算中存放一个操作数或结果,在与外部存储器和I/O接口打交道时,进行数据传送都要经过A来完成。
3、寄存器B:
在*、/运算中要使用寄存器B。
乘法时,B用来存放乘数以及积的高字节;除法时,B用来存放除数及余数。
不作乘除时,B可作通用寄存器使用。
4、程序状态标志寄存器PSW:
用来存放当前指令执行后操作结果的某些特征,以便为下一条指令的执行提供依据。
RS1、RS0:
工作寄存区选择位:
片内工作寄存器组
•RS1、RS0与片内工作寄存器组的对应关系
RS1RS0寄存器区片内RAM地址通用寄存器名称
00000H~07HR0~R7
01108H~0FHR0~R7
10210H~17HR0~R7
11318H~1FHR0~R7
控制器:
1、指令寄存器IR和指令译码器。
2、程序计数器:
存放CPU执行下一条指令的地址。
是一个16位寄存器,可寻址64KB。
3、堆栈指针SP:
用于子程序调用和中断处理。
(机器复位后,SP←#07H,因此压栈的第一个数据在08H单元中)。
4、数据指针寄存器DPTR:
16位的寄存器,也可以作为两个8位寄存器DPH和DPL。
DPTR主要作外部数据指针,可对64KB外部RAM进行间接寻址。
MCS-51由包括PC在内的22个特殊功能寄存器,它们除有各自的名称外,还有唯一的地址,
离散的分布在片内RAM中的80H~FFH共128个存储单元中。
在这128个储存单元构成的SFR块中,未被占用的单元不可使用!
存储器
1、数据存储器(即RAM)
MCS-51系列有128B内部数据存储器(片内ARM),分3部分:
7FH┓
┣数据缓冲区:
存放数据或是作为堆栈区。
30H┛
2FH┓位寻址区:
这(61×8)128位的为地址为00H~7FH,其中每位占用一个位地址。
┣(这些位地址名可以并只能在位操作指令中使用。
例如:
MOVC,30H
20H┛其中的30H是指位地址名,而不是寄存器30H,要特别注意。
)
1FH┓
┣寄存器3区┓
18H┛┃
17H┓┣4个寄存器区占用内部RAM的00H~1FH共31个单元。
┣寄存器2区┃其中每区8个寄存器为R0~R7,参见上述“工作寄存器组”。
10H┛┃(注:
因为CPU复位时,SP(堆栈指针)指向07H,使用寄存器1、2、3时,必须将SP移至数据缓冲区(30H~7FH)。
)
0FH┓┃┣寄存器1区┃
08H┛┃
07H┓┃
┣寄存器0区┛
00H┛
2.3定时器/计数器概述
1.定时器/计数器在微型计算机系统中的主要作用就是为CPU和I/O设备提供实时时钟,以实现定时中断、定时检测、定时扫描、定时显示等定时控制,或者对外部事件进行计数。
一般的微机系统和微机应用系统中均配置了定时器/计数器电路,它既可当作计数器作用,又可当作定时器使用,其基本的工作原理就是"减1"计数。
①定时器:
CLK输入脉冲是一个周期性的时钟脉冲,每当计数单元为零时,计数初值寄存器的内容会自动重新装入计数单元,重新开始"减1"计数,于是OUT输出的是低于CLK频率的均匀脉冲序列。
②计数器:
CLK输入脉冲是一个非周期事件计数脉冲,当计算单元为零时,OUT输出一个脉冲信号,以示计数完毕。
2.可编程定时器/计数器都有几个通道,每个通道都是一个相对独立的定时器/计数器,一个通道有以下5个部分组成。
①控制寄存器:
一个8位的只写寄存器用以存放由CPU写入的通道工作方式选择控制字。
②计数初值寄存器CR:
一个16位寄存器,用以存放计数初值。
③计数执行单元CE:
是一个16位的减1计数器。
④计数输出锁存器OL:
一个16位的只读寄存器,用以锁存当前计数值。
⑤控制逻辑:
控制计数执行单元如何计数,何时输出的电路。
3硬件电路设计
3.1芯片的选择
引脚功能详见2.2.
3.2时钟电路
内部振荡方式:
在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方式。
由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器,并产生振荡时钟脉冲。
晶振通常选用6MHz、12MHz或24MHz。
内部振荡方式如图1所示。
图中电容器C1,C2起稳定振荡频率、快速起振的作用。
电容值一般为5~30pF。
内部振荡方式所得的时钟信号比较稳定,实用电路中使用较多。
3.3放大电路与中断,I/O口分配的解决
三极管是一种控制元件,主要用来控制电流的大小,以共发射极接法为例(信号从基极输入,从集电极输出,发射极接地),当基极电压UB有一个微小的变化时,基极电流IB也会随之有一小的变化,受基极电流IB的控制,集电极电流IC会有一个很大的变化,基极电流IB越大,集电极电流IC也越大,反之,基极电流越小,集电极电流也越小,即基极电流控制集电极电流的变化。
但是集电极电流的变化比基极电流的变化大得多,这就是三极管的放大作用。
IC的变化量与IB变化量之比叫做三极管的放大倍数β(β=ΔIC/ΔIB,Δ表示变化量。
),三极管的放大倍数β一般在几十到几百倍。
在PnP技术出现之前,中断和I/O端口的分配是由人手工进行的,若想要一块块声卡占用中断5,就找一个小跳线在卡上标着中断5的针脚上一插。
这样的操作需要用户了解中断和I/O端口的知识,并且能够自己分配中断地址而不发生冲突,对普通用户提出这样的要求是不切实际的。
PnP技术就是用来解决这个问题的,PnP技术将自动找到一个不冲突的中断和I/O地址分配给外部设备,而完全不需要人工干预。
3.4复位电路
复位操作完成单片机片内电路的初始化,使单片机从一种确定的状态开始运行。
当8XX51单片机的复位引脚RST出现5ms以上的高电平时单片机就完成了复位操作。
如果RST持续为高电平,单片机就处于循环复位状态,而无法执行程序。
因此要求复位后能脱离复位状态。
根据应用的要求,复位操作通常有两种基本形式:
上电复位、开关复位。
上电复位要求接通电源后,自动实现复位操作。
3.5开锁电路
电磁继电器的工作原理和特性
电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。
只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。
当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)吸合。
这样吸合、释放,从而达到了在电路中的导通、切断的目的。
对于继电器的“常开、常闭”触点,可以这样来区分:
继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。
3.6电源电路
本课题使用5V外接电源与内部电池供电。
3.7报警电路
采用普通5V成品小蜂鸣器
4软件设计
4.1流程图
4.2源程序及分析
ORG0000H
AJMPSTART
ORGOO3OH
START:
ACALLPB
MOVRO,#31H
MOVR2,#8
SET:
MOVP1,#0FFH
MOVA,P1
CJNEA,#0FFH,L8;当A≠0FFH时,转移(判断有无按键按下)
AJMPSET
L8:
ACALLDELAY;调用延时
CJNEA,#0FFH,SAVE
AJMPSET;设置8位密码
SAVE:
ACALLBP
MOV@R0A;把A送给R0中内容所指向地址
INCR0
DJNZR2,SET;R2-1≠0,转移(判断输入密码够8位否)
MOVR5,#16
D2S:
ACALLBP;延时
DJNZR5,D2S
MOVR0,#31H
MOVR3,#3
AA1:
MOVR2,#8
AA2:
MOVP1,#0FFH
MOVA,P1
CJNZA,#0FFH,L9
AJMPAA2
L9ACALLDELAY
CJNEA,#0FFH,AA3
AJMPAA2;判断输入密码有错误否
AA3:
ACALLBP
CLRC;对进位清零
SUBBA,@R0;A-@R0-CY(判断输入密码与设置密码相等否)
INCR0
CJNEA,#00H,AA4;A≠00H,转移
AJMPAA5
AA4:
SETB00H;记错误一次,00H单元内容置“1”
AA5:
DJNZR2,AA2;R2-1≠0,转移到AA2(判断输入密码够8位否)
JB00HAA6;00H单元=1,转移
CLRP3.2;标志=1否
L3MOVR5,#8
ACALLBP;延时
DJNZR4,L3
MOVR3,#3
SETBP3.2
AJMPAA1
AA6:
DKNZR3,AA7;判断3次错误到否
MOVR5,#24
L5:
MOVR4,#200
L4:
ACALLBP;错误3次,警告1分钟
DJNZR4,L4
DJNZR5,L5
MOVR3,#3
AA7:
MOVR5,#40
ACALLBP;延时
DJNZR5,AA7
AA8:
CLR00H;错误标志清零
AJMPAA1
BP:
CLRP3.7;错误次数清零
MOVR7,#250
L2:
MOVR6,#124
L1:
DJNZR6,L1;R6-1≠0,转移
CPLP3.7;P3