可修改密码的3位数字号码锁全解.docx
《可修改密码的3位数字号码锁全解.docx》由会员分享,可在线阅读,更多相关《可修改密码的3位数字号码锁全解.docx(21页珍藏版)》请在冰豆网上搜索。
可修改密码的3位数字号码锁全解
课程设计说明书
(2012/2013学年第二学期)
课程名称:
单片机课程设计
题目:
可修改密码的3位数字号码锁
专业班级:
电气1022班
学生姓名:
谢涛
学号:
100062229
指导教师:
王静爽段广玉韩昱
设计周数:
2周
设计成绩:
2013年7月11日
目 录
摘要………………………………………………………….……………..1
1.课程设计目的…………………………………………………..………….1
2.课程设计具体要求…………………………………………………………..1
2.1主要任务…………………………………………………….…………….1
2.2技术要求…………………………………………….……….…………….2
3.课程设计正文……………………………………….……………………….2
3.1硬件设计…………………………………………….………………….....2
3.1.1方案设计……………………………………………………………..2
3.1.28051,CD4511,数码管简介……………………………….……….2
3.1.3方案设计…………………………………………………….……….8
3.1.4单元电路设计………………………………………………………9
3.1.5材料清单………………………………………….…………………9
3.1.6原理图………………………………………………………………10
3.1.7PCB图……………………………………………………………….11
3.1.8系统调试………………………………………………….…………12
3.2软件设计………………………………………………………...……..…12
3.2.1系统分析………………………………………………….……………12
3.2.2系统设计……………………………………………………..…………13
3.2.3系统实施及程序…………………………………………….………....13
4.课程设计心得体会……………………………………………………………18
5.参考文献…………………………………………………………….………..19
摘要:
单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广,发展很快。
单片机体积小,重量轻,抗干扰能力强,环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。
由于具有上述优点,在我国,单片机已广泛应用在工业自动化控制,自动检测,智能仪器仪表,家用电器,电力电子,机电一体化设备等各个方面。
1.课程设计目的
1)掌握单片机的接口技术及相关外围芯片的外特性,控制方法。
2)通过课程设计,掌握以单片机核心的电路设计的基本方法和技术。
3)通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。
4)与模拟电子技术,数字电子技术等课程相结合,进一步熟悉和掌握单片机的结构及工作原理,为以后所学的后续课程打下良好的基础。
5)通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应打下基础。
2.课程设计具体要求
本次课程设计旨在设计一个带3*3的电子密码号码锁,系统内定的密码为111,通过各种模块电路的连接,实现:
1)当上电时,数码管显示000;2)当按下不同的按键时,数码管动态显示按下的数字;3)所允许的密码的输入范围为1—6,6键9键分别为确认键和改密键;4)输入密码时,如果输入密码正确,蜂鸣器报警同时显示器清零,如果输入密码错误,显示器直接清零;5)修改密码时,在输入密码后方可输入所要修改的密码,然后按下改密键,密码修改完毕;6)再次输入修改后的密码,同4)
2.1.主要任务
(1)确定总体设计方案
(2)设计键盘输入电路
(3)设计显示电路
(4)合理分配地址,编写系统程序
(5)利用PROTEL设计硬件电路原理图和PCB图
(6)软硬件联机调试
2.2技术要求
(1)掌握数码管显示相关电路和程序设计。
(2)会用仿真器对软硬件电路进行实时仿真,调试,以期达到预期的效果。
(3)熟练应用PROTEL绘制原理图和PCB图;
3.课程设计正文
3.1硬件设计
3.1.1方案设计
本课程设计为一个各种模块电路的综合系统,系统单片机的标准的频率时间信号必须做到准确稳定,通常使用石英晶体振荡电路构成。
在硬件设计上主要由复位电路、晶体振荡电路、键盘输入电路、驱动电路、数码管显示电路、蜂鸣器报警电路、单片机模块电路、位选电路等构成。
所用到的主要元器件有8051、数码管、晶体振荡器、按键、三极管、蜂鸣器、CD4511等。
3.1.28051,CD4511,数码管简介
8051:
a.8051主要特性
●与MCS-51单片机产品兼容
●4K字节在系统可编程Flash存储器
●32个可编程I/O口线
●2个16位定时器/计数器
●6个中断源
●全双工UART串行通道
●低功耗空闲和掉电模式
●掉电后中断可唤醒
●看门狗定时器
●双数据指针
●4.0---5.5V电压工作范围
b.内部结构
图3-1是单片机8051的内部结构总框图。
它可以划分为CPU、存储器、并行口、串行口、定时/计数器和中断逻辑几个部分。
●CPU由运算器和控制逻辑构成,其中包括若干特殊功能寄存器(SFR)。
●8051时钟有两种方式产生,即内部方式和外部方式。
●8051在物理上有四个存储空间:
片内/片外程序存储大路、片内/片外数据存储器。
片内有256B数据存储器RAM和4KB的程序存储器ROM。
除此之外,还可以在片外扩展RAM和ROM,并且和有64KB的寻址范围。
●8051内部有一个可编程的、全双工的串行接口。
它串行收发存储在特殊功能寄存器SFR的串行数据缓冲器SBUF中的数据。
●8051共有4个(P0、P1、P2、P3口)8位并行I/O端口,共32个引脚。
P0口双向I/O口,用于分时传送低8位地址和8位数据信号;P1、P2、P3口均为准双向I/O口;其中P2口还用于传送高8位地址信号;P3口每一引脚还具有特殊功能,用于特殊信号的输入输出和控制信号。
●8051内部有两个16位可编程定时器/计数器T0、T1。
最大计数值为216-1。
工作方式和定时器或计数器的选择由指令来确定
图3-1AT89C51内部结构框图
图3-18051内部结构框图
图3-28051的时钟电路
c.外部特性(引脚功能)
8051芯片有40条引脚,双列直插式封装引脚图如2-4所示:
●Vcc(40):
电源+5V
●Vss(20):
接地
●XTAL1(19)和XTAL2(18):
使用内部振荡电路时,用来接石英晶体和电容;使用外部时钟时,用来输入时钟脉冲。
●P0口(39—32):
双向I/O口,既可作地址/数据总线口用,也可作普通I/O口用。
●P1口(1—8):
准双向通用I/O口。
●P2口(21—28):
准双向口,既可作地址总线口输出地址高8位,也可作普通I/O口用。
●P3口(10—17):
多用途口,既8051引脚图可作普通I/O口,也可按每位定义的第二功能操作。
●ALE/~PROG(30):
地址锁存信号输出端。
在访问片外丰储器时,若ALE为有效高电平,则P0口输出地址低8位,可以用ALE信号作外部地址锁存信号。
公式(2—1)fALE=1/6fOSC,也可作系统中其它芯片的时钟源。
第二功能~PROG是对EPROM编程时的编程脉冲输入端。
●RST/VPD(9):
复位信号输入端。
AT89S51接能电源后,在时钟电路作用下,该脚上出现两个机器周期以上的高电平,使内部复位。
第二功能是VPD,即备用电源输入端。
当主电源Vcc发生故障,降低到低电平规定值时,VPD将为RAM提供备用电源,发保证存储在RAM中的信号不丢失。
●~EA/Vpp(31):
内部和外部程序存储器选择线。
~EA=0时访问外部ROM0000H—FFFFH;~EA=1时,地址0000H—0FFFH空间访问内部ROM,地址1000H—FFFFH空间访问外部ROM。
●~PSEN(29):
片外程序存储器选通信号,低电平有效。
图1CD4511引脚图
a引脚介绍
引脚7、1、2、6为CD4511的BCD码输入端,9、10、11、12、13、14、15代表输出段码,另外,又设又三个辅助控制引脚:
LT、BI、LE。
b引脚功能
引脚7、1、2、6分别代表CD4511的BCD码输入,9、10、11、12、13、14、15分别代表输出段码的ABCDEFG,通过7个电阻与数码管abcdefg引脚相连,实现数码管的输出。
另外,又设又三个辅助控制引脚:
LT、BI、LE。
其中LT为试灯输入低电平有效;BI为灭灯输入;LE为使能端。
功能介绍如下:
LE:
锁定控制端,当LE=0时,允许译码输出。
LE=1时译码器是锁定保持状态,cd4511输出被保持在LE=0时的数值。
A1、A2、A3、A4、为8421BCD码输入端。
a、b、c、d、e、f、g:
为译码输出端,输出为高电平1有效。
BI:
4脚是消隐输入控制端,当BI=0时,不管其它输入端状态如何,七段数码管均处于熄灭(消隐)状态,不显示数字。
LT:
3脚是测试输入端,当BI=1,LT=0时,译码输出全为1,不管输入DCBA状态如何,七段均发亮,显示“8”。
它主要用来检测数码管是否正常。
数码管:
这个设计采用的是共阴极数码管。
数字对应数码管显示控制转换字节
(共阴编码)
显示--HGFE,DCBA--编码
0--0011,1111--0x3F;
1--0000,0110--0x06;
2--0101,1011--0x5B;
3--0100,1111--0x4F;
4--0110,0110--0x66;
5--0110,1101--0x6D;
6--0111,1101--0x7D;
7--0000,0111--0x07;
8--0111,1111--0x7F;
9--0110,1111--0x6F;
共阳为编码取反即可
3.1.3方案设计
本次课程设计的内容是设计一个带3*3键盘3位数电子号码琐,3*3键盘输入电路采用行列式结构,输出显示电路部分利用CD4511驱动三个数码管显示,密码修改通过软件编程实现,故在硬件设计上本次设计课题主要由3*3键盘输入电路、复位电路、晶体振荡电路、驱动电路,位选电路和蜂鸣器提示电路等组成。
主要元器件有8051、CD4511、PNP、数码管、晶体振荡器、按键。
3.1.4单元电路设计
1)复位电路的实现
当正常工作时单片机接低电平正常工作,当按下按键,单片机接通高电平,实现复位功能。
2)晶体振荡电路的实现
电容C1、C2与晶体构成一个谐振型网络,完成对振荡频率的控制功能,同时提供了一个180度相移,从而和非门构成一个正反馈网络,实现了震荡器的功能。
由于晶体具有较高的频率稳定性及准确性,从而保证了输出频率的稳定和准确。
3)驱动电路的实现
通过CD4511来实现译码驱动的功能,把BCD码转化成段码显示。
4)键盘输入电路的实现
3*3键盘输入电路采用行列式电路结构,3个行线,3个列线分别与P1口的P1.0,P1.1,P1.2,P1.3,P1.4,P1.5相连。
5)位选电路的实现
通过P2.0,P2.1,P2.2经过三个三极管放大来实现位选,分别控制三个数码管的显示。
5)蜂鸣器提示电路
通过P2.3经过一个PNP和蜂鸣器来实现提示密码输入是否正确。
硬件结构功能框图:
8051应用系统
数字输入
命令输入
显示电路
报警电路
3.1.5材料清单
器件名称
数量
备注
AT89S52
1
单片机
CD4511
1
7段码译码器
晶振
1
12MHZ
电解电容
2
10uf
无极性电容
3
30pf,0.1uf(滤波)
蜂鸣器
1
接通报警
按键
9
数码管
6
共阴极
电阻
19
2k(7),510(10),1k
(2),
电源插座
1
三极管
4
NPN
3.1.6原理图
3.1.7PCB图
3.1.8系统调试
硬件调试:
硬件调试是利用DVCC实验与开发系统、基本测试仪器(万用表、示波器等),检查用户系统硬件中存在的故障。
硬件调试可分为静态调试与动态调试两步进行。
静态调试是在用户系统未工作时的一种硬件检测。
第一步:
目测。
检查外部的各种元件或者是电路是否有断点。
第二步用万用表测试。
先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象。
第三步加电检测。
给板加电,检测所有插座或是器件的电源端是否符合要求的值
第四步是联机检查。
因为只有用单片机开发系统才能完成对用户系统的调试。
动态调试是在用户系统工作的情况下发现和排除用户系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。
动态调试的一般方法是由近及远、由分到合。
由分到合是指首先按逻辑功能将用户系统硬件电路分为若干块,当调试电路时,与该元件无关的器件全部从用户系统中去掉,这样可以将故障范围限定在某个局部的电路上。
当各块电路无故障后,将各电路逐块加入系统中,在对各块电路功能及各电路间可能存在的相互联系进行调试。
由分到合的调试既告完成。
由近及远是将信号流经的各器件按照距离单片机的逻辑距离进行由近及远的分层,然后分层调试。
调试时,仍采用去掉无关元件的方法,逐层调试下去,就会定位故障元件了。
软件调试:
软件调试是通过对程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。
3.2软件设计
3.2.1系统分析
本次课题设计是基于单片机的特性来实现其功能的。
本系统采用的单片机是8051型号。
系统集成了3个数码管,9个按键开关,主要实现数字输入和复位功能。
3*3键盘九个按键,其中六个数字键,一个确认键,一个密码修改键,一个复位按键。
蜂鸣器提示电路,当输入密码正确时,蜂鸣器响,起提示作用。
3.2.2系统设计
本系统需实现3个功能,3*3键盘输入电路通过九个按键采用行列式电路结构实现,输出显示电路部分通过CD4511驱动三个数码管结合位选电路来显示输入的密码,当密码输入正确时,蜂鸣器响,起提示作用,密码修改功能通过软件编程实现。
流程图:
初始化显示000
键盘扫描
有键按下?
取键号
显示键号
开始
设定密码111
蜂鸣器响?
判键号类型
改密键
改密键-9键
确定键--6
密码正确?
蜂鸣器响
是
否
是
否
密码键1-6
否
是
3.2.3系统实施及程序
ORG0000H
LJMPMAIN
ORG1000H
MAIN:
CLRP2.3
MOVr1,#00h;停止响铃标志初值
MOV50H,#01H;初始密码定为111
MOV51H,#01H
MOV52H,#01H
LOOP:
MOVR0,#60H
MOV60H,#00H;显示单元及存值单元
MOV61H,#00H
MOV62H,#00H
LJMPCXSM
DEK8:
CLRC
MOVA,50H
SUBBA,60H;比较第一个单元数据是否与预设值相等
JNZLOOP;不等跳转LOOP
CLRC;相等请进位标志
MOVA,51H
SUBBA,61H;比较第二个单元
JNZLOOP
CLRC
MOVA,52H
SUBBA,62H
JNZLOOP
SETBP2.3;全部相等,报警
ACALLDELAY11
AJMPLOOP
DEK9:
JNBP2.3,LOOP
CLRP2.3
MOV50H,60H;存设定的密码
MOV51H,61H
MOV52H,62H
AJMPLOOP
CXSM:
CJNER0,#63H,KKA;比较次数控制3次
MOVR0,#60H
KKA:
MOVP1,#38H
JNBp1.3,hang1
JNBp1.4,hang2
JNBp1.5,hang3
LCALLxianshi
here:
AJMPCXSM
hang1:
LCALLDEL10MS
JBP1.3,cxsm
MOVp1,#07h
JNBp1.0,jian1
JNBp1.1,jian2
JNBp1.2,jian3
hang2:
LCALLxianshi
LCALLDEL10MS
JBP1.4,cxsm
MOVp1,#07h
JNBp1.0,jian4
JNBp1.1,jian5
JNBp1.2,jian6
hang3:
LCALLxianshi
LCALLDEL10MS
JBP1.5,cxsm
MOVp1,#07h
JNBp1.0,jian7
JNBp1.1,jian8
JNBp1.2,jian9
AJMPcxsm
jian1:
MOV@R0,#01h
INCR0
J1:
ACALLDELAY11
JNBP1.0,J1
AJMPCXSM
jian2:
MOV@R0,#02h
INCR0
J2:
ACALLDELAY11
JNBP1.1,J2
AJMPCXSM
jian3:
MOV@R0,#03h
INCR0
J3:
ACALLDELAY11
JNBP1.2,J3
AJMPCXSM
jian4:
MOV@R0,#04h
INCR0
J4:
acallDELAY11
JNBP1.0,J4
AJMPCXSM
jian5:
MOV@R0,#05h
INCR0
J5:
acallDELAY11
JNBP1.1,J5
AJMPCXSM
jian6:
CJNEr1,#0,stop;标志与初值比较,不等跳转STOP
MOV@R0,#06h
INCR0
J6:
acallDELAY11
JNBP1.2,J6
AJMPCXSM
jian7:
J7:
acallDELAY11
JnBP1.0,J7
AJMPmain
jian8:
J8:
ACALLDELAY11
JNBP1.1,J8
MOVr1,#01h;键8有按下,响铃标志置1
ACALLDELAY11
AJMPDEK8
jian9:
J9:
acallDELAY11
JNBP1.2,J9
LJMPDEK9
xianshi:
CLRP2.1;显示
CLRP2.2
SETBP2.0
MOVA,60H
MOVP0,A
LCALLDEL10MS
CLRP2.0
MOVA,61H
MOVP0,A
SETBP2.1
LCALLDEL10MS
CLRP2.1
MOVA,62H
MOVP0,A
SETBP2.2
LCALLDEL10MS
RET
DEL10MS:
MOVR7,#18h
DEL1:
MOVR6,#25h
DEL2:
DJNZR6,DEL2
DJNZR7,DEL1
RET
DELAY11:
MOVR7,#00h
DEL11:
MOVR6,#00h
ACALLxianshi
DEL12:
DJNZR6,DEL2
DJNZR7,DEL1
RET
delay:
MOVr4,#0ffh;约4S
del:
MOVr5,#0ffh
del123:
MOVr3,#1fh
DJNZr3,$
DJNZr5,del123
DJNZr4,del
RET
stop:
ACALLdelay
CLRP2.3;停止响铃
MOVr1,#0;标志恢复初值
AJMPloop
RET
END
4.课程设计心得体会
经过了一学期的课程学习,我把所学知识和技能应用在了本次的课程设计“可修改密码的3位数字号码锁”当中,通过该设计,我受益匪浅,我们不仅要把所学知识运用其中,更重要的是要大量阅读课外相关知识,只有这样我们才能做到设计得游刃有余,而且还会在基础上有所创新,
在设计的初级阶段,原理图的设计是重中之重,只有把原理图弄得清楚明了,后面的一系列工作才会得到保障。
为此,我们要查阅并阅读很多相关资料,并熟练掌握知识间的联系和区别,以便在设计的过程中的实践应用。
于是,图书馆和网络成为了我们很好的学习助手。
板子的焊接当然也是个不容忽视的过程,稍一出错,就会前功尽弃,所以这个阶段我们依然很谨慎。
另外,我们不是个人在努力,而是一个团队,我们必须要发挥团队的力量,才可以做好这项设计。
因此,互相帮助和学习也是我们应该做到的。
值得一提的是,在设计程序之前,要对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源,要有一个清晰的思路和一个完整的的软件流程图。
在编程的过程中,我逐渐体会到我们所编出来的程序并不是像说话一样那么简单,我们必须要在真正懂得设计的实质和意义的基础上才能更好、更准确地编出所需要的程序来;另一方面,在编程的过程中我们还要特别需要特别认真仔细,稍有一点失误就会以失败告终,正如一谚语所说:
“失之毫厘,谬以千里。
”在编程过程中,每一网络中的每一指令都有它存在而不可或缺的意义,所以我从最初的填写指令到最后填写完成,每一步都小心谨慎,这也锻炼了我认真仔细的优良品质。
在设计的整个过程当中,我们难免会遇到形形色色的问题,包括我们想到的和未想到的。
但是,通过查阅大量的资料、团队之间的互相帮助和学习、老师的教导,许多问题都被我们一一攻克。
而且,我们还运用到了以前所学的专业课知识,如:
protel制图、汇编语言、模拟和数字电路知识等。
这样就把所学的知识联系了起来,灵活了我们的头脑,熟练的运用了知识,让所学知识成为我们头脑中的一个完整系统。
虽然只有两周的课程设计,但是却对我之后的人生带来了不菲的意义。
虽然知识可以充实我们的大脑,但最重要的是我们要做到把知识学牢固,无论是学校里学的,还是课外自己充实的;另外,我们要学会理论联系实际,能够真正把所学的知识运用到实践当中才是我们成功的关键所在。
两周的课设让我看清了自己的位置,更教会了我如何运用所学的知识,并做到对任何事情要精益求精。
5.参考文献
[1]楼然苗,李光飞.51系列单片机设计实例(第二版).北京航空航天出版社,2006.2.
[2]彭为,黄科,雷道仲.单片机典型系统设计实例精讲.电子工业出版社,2006.5.
[3]张毅刚,彭喜元,董继成.单片机原理及应用.高等教育出版社,2008.12.
[4]吴炳胜.80C51单片机原理与应用技术.冶金工业出版社.
[5]张毅