《单片机原理及应用》
课程设计报告
目录
一、课程设计目的... 3
二、课程设计要求... 3
三、电子密码锁的设计... 4
1.设计任务:... 4
2.设计要求:... 4
3.设计提示:... 4
4.系统设计原理及设计框图:... 4
(1)设计原理 : 4
(2)系统设计框图:... 5
5.所用元器件简介及管脚说明:... 5
(1)AT89C51芯片简介:... 5
(2)AT89C51管脚的说明:... 6
6.各模块电路设计:... 7
(1)44的矩阵键盘电路的设计说明及原理图... 7
(2)LCD灯和蜂鸣器的设计说明及原理图... 8
7.工作原理说明:... 8
8.软件的仿真过程:... 9
9.程序流程图:... 10
四、课程设计总结... 11
五、参考文献... 12
六、附件... 13
1. 系统整体电路原理图: 13
2. 源程序源代码清单:... 13
单片机原理及应用课程设计作为独立的教学环节,是自动化及相关专业集中实践性环节系列之一,是学习完《单片机原理及应用》课程后,并在进行相关课程设计基础上进行的一次综合练习。
单片机课程设计过程中,通过查阅资料、接口设计、程序设计、安装调试等环节,完成一个基于MCS-51系列单片机,涉及多种资源应用,并具有综合功能的小应用系统设计。使我们不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件等方面的知识进一步加深认识,同时在软件编程、调试、相关仪器设备和相关软件的使用技能等方面得到较全面的锻炼和提高。使我们增进对单片机的感性认识,加深对单片机理论方面的理解,加深单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O接口、串行口等。使我们了解和掌握单片机应用系统的软硬件设计过程、方法及实现,强化单片机应用电路的设计与分析能力。提高我们在单片机应用方面的实践技能和科学作风;培育我们综合运用理论知识解决问题的能力。
课程设计应充分调动我们的积极性和能动性,重视自学能力的培养。根据课程设计具体课题安排时间,确定课题的设计、编程和调试内容,分团队开展课程设计活动,按时完成每部分工作。课程设计集中在实验室进行。在课程设计过程中,坚持独立完成,实现课题规定的各项指标,并写出设计报告。
要求我们自己调研、设计系统功能、划分软硬件功能、选择器件,用Proteus或Protel软件在PC机上完成硬件原理图设计。使用Keil或相关编程软件,完成软件设计。然后使用通用单片机实验开发系统,或者使用Proteus或Multisim仿真软件在PC机进行系统仿真,调试电路和修改调试程序。烧录程序,对整个系统做试运行,有问题再进一步修改调试,直至达到设计的要求和取得满意的效果。最后编写系统说明书,其内容主要包括系统的功能介绍、使用范围、主要性能指标、使用方法、注意事项等。
基于MCS-51系列单片机AT89C51,设计一个通过按键输入开锁的电子密码锁。
a.通过44的矩阵键盘输入或设定开锁密码;
b.可以通过LCD查看已输入的字符个数【显示为******】;
c.使用串行EEROM24C02A保存用户设置的密码;
d.使用LED和蜂鸣器指示密码锁的状态;
e.@可以通过特殊的按键方法清除用户密码【如同时按下特定的多个键】;
f.☆其他功能。
本设计主要由单片机系统、矩阵键盘、LED显示和报警系统组成。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低 电平传到开锁电路或者报警电路控制开锁还是报警。
图1 系统设计框图
AT89C51是一种低功耗、高性能的片内含有4KB快闪可编程/擦除只读存储器的8位CMOS微控制器,使用高密度、非易失存储技术制造,并且与80C51引脚和指令系统完全兼容。宽工作电压范围:Vcc可为2.7V到6V全静态工作;可从0Hz至16MHz 程序存储器具有3级加密保护 128*8位内部RAM 32条可编程I/O线、两个16位定时器/计数器、中断结构具有5个中断源和2个优先级、可编程全双工串行通道、空闲状态维持低功耗和掉电状态保存存储内容。AT89C51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上。如果按功能划分,它由如下功能部件组成,即微处理器、数据存储器、程序存储器、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器。它们都是通过片内单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式。但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式。 微处理器、数据存储器、程序存储器、并行I/O口、串行口、定时器/计数器、中断系统各部分功能及说明类似于8051单片机内部结构说明。特殊功能寄存器共有21个,用于对片内的各功能的部件进行管理、控制、监视。实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的RAM区。
VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
本设计采用的是矩阵式按键键盘,它由行线和列线组成,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多I/O口。本设计中使用的这个44键盘不但能完成密码的输入还能作特别功能键使用,比如清空显示功能等。键盘的每个按键功能在程序设计中设置。
图2 44的矩阵键盘电路的原理图
LED灯和蜂鸣器主要用于报警及开锁指示电路,密码正确时,发声直接并开锁,当密码输入错误时,单片机的P2.6引脚为高电平,蜂鸣器发声报警。当密码输入正确时,P2.6为低电平,LED灯灭,蜂鸣器不发出报警。
系统启动后,LCD显示如下:
图2 LCD显示图
按下操作键A或B操作如下:
操作键A:设置新的6位数字(0~9)密码。
操作键B:输入6位数字(0~9)密码并检查。
当按B时,LED1灯亮显示输入6位数字密码。输完6位密码时,LED1灯熄灭,表示密码输入完毕,再按确认键,密码开始核对,核对通过后,LED4灯亮,表示锁已经打开。当密码输入错误时,蜂鸣器发出警报,LED3灯亮。
当按下A时,LED2灯亮。输入6位原始密码后LED2灯熄灭,按确认键,密码核对,如果密码错误,报警提示。如密码正确,LED2灯亮,密码修改完成,恢复到起始显示状态。
PROTEUS是一款单片机系统仿真工具,利用该软件可以人工设计硬件电路接线并模拟单片机工作过程,当向选定单片机加载入正确的程序时就可以模拟实验结果。Proteus仿真时单片机需要加载程序,加载程序为.HEX文件。本设计利用Keiluv4, 在新建Keil项目时选择AT89C51单片机作为CPU,将源程序导入,在“Options For Target”对话窗口中,选中“Output”选项中的“Create HEX File”,编译链接后就可以生成HEX文件,对单片机设置完毕后就可以开始仿真了。通过Keil与Proteus的联合调试就可以得到结果。
图3 系统仿真图
图3 程序流程图
这次通过对电子密码锁的设计与仿真过程,不仅加强了我们动手、思考和解决问题的能力,也培养了我们的实践能力。我们将书本上学到的知识运用到本次的课程设计中,加强了我们的理解,也开阔了我们的视野。在设计过程中我们先后利用keil软件进行编程、Proteus进行仿真,最后再利用仿真进行检查看程序是否能显示其功能。在编程和仿真过程中遇到了很多的问题,但通过不断查阅资料和反复修改,终于编程和把电路图设计好了。在这个过程中让我进一步深刻的学习各种软件的利用以及各种软件给我们带来的便利。特别是proteus在没有实物的情况下进行仿真进行程序的检查看是否能现实功能。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正把所学的应用到生活中去,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。所以还得继续努力,进一步提升自己。
这次的课程设计对我来说是一种挑战更是一种学习,也为我们提供了深入探索的机会。在遇到各种问题时必须依靠自己来解决,只有不断学习充实自己才能不断完善自己的不足,在今后的学习中必须更加的努力,加强自己的实践动手能力。
[1] 吴亦锋,陈德为.《单片机原理与接口技术》.电子工业出版社,2010.
[2] 张文利.《微机原理及单片机接口技术》.中国科学技术大学出版社,2007 .
[3] 杨素行.《模拟电子技术》. 高等教育出版社,2006.
[4] 黄仁欣,马彪副主编.《单片机原理及运用技术》.北京:清华大学出版社,2005.
[5]姚国林.《单片机原理与应用技术》.北京:清华大学出版社,2009.
图4 系统整体电路图
RS BIT P2.2 ;定义LCD的RS引脚由P2.2引脚控制
RW BIT P2.1 ;定义LCD的RW引脚由P2.1引脚控制
E BIT P2.0 ;定义LCD的E引脚由P2.0引脚控制
ORG 0000H
AJMP START
ORG 0050H
START: MOV P0, #01H ;清除LCD屏幕
ACALL ENABLE
MOV P0,#38H ;设置LCD为8位点阵方式
ACALL ENABLE
MOV P0,#0FH ;开显示
ACALL ENABLE
MOV P0,#06H ;移动光标
MOV 50H,#1
MOV 51H,#2
MOV 52H,#3
MOV 53H,#4
MOV 54H,#5
MOV 55H,#6 ;设置6位初始密码
MAIN: LCALL ENABLE
LCALL KSXSHI ;开始显示
AA: LCALL KEY ;调用键盘扫描程序
CJNE A,#10,BB ;若不为A键,则跳转为判断是否为B键
LP: ACALL ANAHX
AJMP MAIN
BB: CJNE A,#11,AA ;若不为B键则重新扫描
ACALL ANBHX
LJMP MAIN
ENABLE:CLR RS ;LCD控制指令
CLR RW
CLR E
LCALL DELAY
SETB E
RET
;********键盘编码部分*********
KEY: MOV P1,#0F0H
KEY0: MOV A,P1
CPL A
ANL A,#0F0H
MOV R1,A ;读取列线数据并存入R1中
JZ KEY ;若无键按下,则继续扫描
KEY1: MOV P1,#0FH
MOV A,P1
CPL A
ANL A,#0FH
MOV R2,A ;读取列线数据并存入R1中
JZ KEY ;若无键按下,则继续扫描
TT: JBC F0,WAIT
SETB F0
LCALL DELAY
SJMP TT
GRET: RET
;**********确定按键值***********
WAIT: MOV A,P1 ;等待按键释放
CPL A
ANL A,#0FH
JNZ WAIT
KEY2: MOV A,R1
MOV R1,#03H
MOV R3,#03H
CLR C
KEY3: RLC A
JC KEY4
DEC R1 ;修正列编号
DJNZ R3,KEY3
KEY4: MOV A,R2
MOV R2,#00H
MOV R3,#03H
CLR C
KEY5: RRC A
JC KEY6
INC R2 ;修正列编号
DJNZ R3,KEY5
KEY6: MOV A,R2
CLR C
RLC A
RLC A
ADD A,R1 ;将行线和列线相加得到键值
RET
;**********开始显示效果***********
KSXSHI:MOV P0,#80H
ACALL ENABLE
MOV DPTR,#TABLE3
LCALL WRITE1 ;显示8051 PASSWORD
MOV P0,#0C0H
LCALL ENABLE
MOV DPTR,#TABLE2
LCALL WRITE1 ;显示A OR B KEY
RET
;**********按A后的操作部分**********
ANAHX: MOV P0,#80H
ACALL ENABLE
MOV DPTR,#TABLE4
LCALL WRITE1 ;显示SET PASSWORD
MOV P0,#0C0H
LCALL ENABLE
MOV DPTR,#TABLE5
LCALL WRITE1 ;显示 * * * * *
LCALL XG_PASS
RET
;**********按B后的操作部分**********
ANBHX: MOV P0,#80H
ACALL ENABLE
MOV DPTR,#TABLE6 ;显示SHU RU MI MA
LCALL WRITE1
MOV P0,#0C0H
LCALL ENABLE
MOV DPTR,#TABLE5 ;显示 * * * * *
LCALL WRITE1
LCALL IP_PASS
RET
;**********输入6位密码值***********
IP_PASS:MOV B,#6
MOV R0,#40H
T: CLR P2.3
ACALL KEY
SETB P2.3
MOV @R0,A ;将从键盘得到的键值依次存入40H,41H,42H,43H,44H,45H单元
INC R0
DJNZ B,T ;循环6次得到6个键值
ACALL KEY
CJNE A,#12,PT ;将键值和12比较,看是否为确认键
MOV A,40H
CJNE A,50H,KK
MOV A,41H
CJNE A,51H,KK
MOV A,42H
CJNE A,52H,KK
MOV A,43H
CJNE A,53H,KK
MOV A,44H
CJNE A,54H,KK
MOV A,45H
CJNE A,55H,KK ;将密码和初始密码比较,看密码是否正确
CLR P2.7 ;密码正确则LED4绿灯亮
MOV P0,#80H
ACALL ENABLE
MOV DPTR,#TABLE11
LCALL WRITE1 ;密码正确,输出LOCK OPENED!
MOV P0,#0C0H
LCALL ENABLE
MOV DPTR,#TABLE5
LCALL WRITE1 ;显示 * * * * *
MOV B,#100
PR: LCALL DELAY
DJNZ B,PR
SETB P2.7
PT: RET
;***********输错密码时显示ERROR***********
KK: CLR P2.6
CLR P2.5 ;密码错误,报警并LED3红灯亮
MOV P0,#80H
ACALL ENABLE
MOV DPTR,#TABLE10
LCALL WRITE1 ;密码错误,显示PASSWORD ERROR!
MOV P0,#0C0H
LCALL ENABLE
MOV DPTR,#TABLE5
LCALL WRITE1 ;显示 * * * * *
MOV B,#50
PK: LCALL DELAY
DJNZ B,PK
SETB P2.5
SETB P2.6
RET
;************修改密码操纵部分**********
XG_PASS:MOV P0,#80H
ACALL ENABLE
MOV DPTR,#TABLE9
LCALL WRITE1 ;显示INPUT THE
MOV P0,#0C0H
LCALL ENABLE
MOV DPTR,#TABLE8
LCALL WRITE1 ;显示OLD PASSWORD
MOV B,#6
MOV R0,#30H
YT: CLR P2.4 ;红灯LED2亮,表示可以输入密码,6位输入完毕后,灯灭
ACALL KEY
SETB P2.4
MOV @R0,A ;将从键盘得到的键值依次存入40H,41H,42H,43H,44H,45H单元
INC R0
DJNZ B,YT ;循环6次得到6个键值
ACALL KEY
CJNE A,#12,XT ;判断是否为确认键
MOV A,30H
CJNE A,50H,KK
MOV A,31H
CJNE A,51H,KK
MOV A,32H
CJNE A,52H,KK
MOV A,33H
CJNE A,53H,KK
MOV A,34H
CJNE A,54H,KK
MOV A,35H
CJNE A,55H,KK ;将从键盘输入的密码与初始密码比较
MOV P0,#80H
ACALL ENABLE
MOV DPTR,#TABLE9
LCALL WRITE1
MOV P0,#0C0H
LCALL ENABLE
MOV DPTR,#TABLE7
LCALL WRITE1 ;密码正确则显示INPUT THE NEW PASSWORD
MOV B,#6
MOV R0,#50H
XT1: CLR P2.4 ;红灯LED2亮,表示可以输入密码,6位输入完毕后,灯灭
ACALL KEY
SETB P2.4
MOV @R0,A ;将输入的新密码存入原来的旧密码单元
INC R0
DJNZ B,XT1
ACALL KEY
CJNE A,#12,XT ;判断是否为确认键
MOV P0,#80H
ACALL ENABLE
MOV DPTR,#TABLE1
LCALL WRITE1
MOV P0,#0C0H
LCALL ENABLE
MOV DPTR,#TABLE0 ;显示PASSWORD XIU GAI PASS
LCALL WRITE1
XT: RET
;***********写数据***********
WRITE1:MOV R1,#00H
A1: MOV A,R1
MOVC A,@A+DPTR ;从键值表中读取键值
LCALL WRITE2
INC R1
CJNE A,#00H,A1
RET
WRITE2:MOV P0,A
SETB RS
CLR RW
CLR E
LCALL DELAY
SETB E
RET
DELAY: MOV R7,#255
D1: MOV R6,#255
D2: DJNZ R6,D2
DJNZ R7,D1
RET
TABLE11: DB 4CH,4FH,43H,4BH,20H,20H,20H,4FH,50H,45H,4EH,45H,44H,21H
DB 20H,21H,00H ;LOCK OPENED!
TABLE10: DB 20H,50H,41H,53H,53H,57H,4FH,52H,44H,20H,45H,52H,52H,4FH
DB 52H,21H,00H ;PASSWORD ERROR!
TABLE9: DB 20H,49H,4EH,50H,55H,54H,20H,20H,20H,20H,54H,48H,45H,20H
DB 20H,20H,00H ;INPUT THE
TABLE8: DB 20H,4FH,4CH,44H,20H,20H,50H,41H,53H,53H,57H,4FH,52H,44H
DB 20H,20H,00H ;OLD PASSWORD
TABLE7: DB 20H,4EH,45H,57H,20H,20H,50H,41H,53H,53H,57H,4FH,52H,44H
DB 20H,20H,00H ;NEW PASSWORD
TABLE6: DB 20H,53H,48H,55H,20H,20H,52H,55H,20H,20H,20H,4DH,49H,20H
DB 4DH,41H,00H ;SHU RU MI MA
TABLE5: DB 20H,20H,20H,2AH,20H,2AH,20H,2AH,20H,2AH,20H,2AH,20H,20H
DB 20H,20H,00H ; * * * * *
TABLE4: DB 20H,53H,45H,54H,20H,20H,50H,41H,53H,53H,57H,4FH,52H,44H
DB 20H,20H,00H ;SET PASSWORD
TABLE3: DB 38H,30H,35H,31H,20H,20H,20H,50H,41H,53H,53H,57H,4FH,52H
DB 44H,20H,00H ;8051 PASSWORD
TABLE2: DB 20H,41H,20H,20H,4FH,52H,20H,20H,42H,20H,20H,4BH,45H,59H
DB 20H,20H,00H ;A OR B KEY
TABLE1: DB 4DH,49H,20H,4DH,41H,20H,52H,44H,20H,58H,49H,55H,20H,47H
DB 41H,49H,00H ;MI MA XIU GAI
TABLE0: DB 20H,20H,43H,48H,45H,4EH,47H,20H,20H,20H,47H,4FH,4EH,47H
DB 20H,20H,00H ;CHENG GONG
END
设计说明书课程名称单片机技术设计题目基于51单片机的电子密码锁院部电子信息与电气工程学院学生姓名马亚林学号专业班级12通信工程专升…
1引言11电子密码锁简介电子密码锁是一种通过密码输入来控制电路或是芯片工作从而控制机械开关的闭合完成开锁闭锁任务的电子产品它的种类…
电子技术课程设计题目名称:电子密码锁重庆大学电气工程学院20XX年6月电子密码锁摘要:本文的电子密码锁是利用数字电子技术中基于JK…
课程设计综合实验报告20xx20xx年度第1学期名称题目院系班级学号学生姓名指导教师设计周数成绩日期20xx年1月13日一目的与要…
电子密码锁一引言随着人们生活水平的提高人们对自己的生活有了越来越高的要求贵重物品也越来越多而传统的机械安全锁由于其构造的简单被撬被…
课程设计综合实验报告20xx20xx年度第1学期报告最后附有电路图下载地址名称电子技术综合实验题目院系电气与电子工程学院班级电气0…
大学本科毕业设计论文开题报告题目基于单片机的电子密码锁设计指导教师院系部电信学院专业班级学号姓名日期20xx0305教务处印制一选…
电子密码锁设计实验报告摘要密码锁又称电子锁它的主要功能是1用数字方式输入开锁密码输入密码正确时开锁2如果密码有误或者输入时间过长则…
基于单片机的电子密码锁设计TheDesignofElectronicPassword-lockwithSCM第一章课题任务基于51…