单片机密码锁课程设计Word文档下载推荐.docx
- 文档编号:20626021
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:13
- 大小:77.99KB
单片机密码锁课程设计Word文档下载推荐.docx
《单片机密码锁课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机密码锁课程设计Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
第1章设计的研究背景及目的要求
1.1研究背景
在单片机的产品设计中,人机界面是非常重要的部分,而且随着系统的日益复杂,以及人们对产品的人机交互能力的要求不断提升,常握单片机系统中的人机界面基础设计能力成为了学习单片机的基础课程,而4X4键盘的操作和LED数码管的动态显示是人机界面设计的基础内容,掌握这些基础设计能力,加深对人机界面的认识,同时提高人机界面系统设计能力。
1.2设计目的
熟悉凌阳十六位单片机系统板-61板的基本构成,掌握LED数码管原理及使用方法,掌握61板的使用方法,掌握4X4键盘的扫描原理,初步掌握SPCE061A单片机汇编语言一般编程技巧。
1.3硬件选择
装有Windows系统和μ’nSP™IDE仿真环境的PC机一台,μ’nSP™十六位单片机实验箱一个。
本设计用到的实验箱硬件模块为:
SPCE061A核心及周边电路模块(包含32个I/O口),4X4键盘,凌阳十六位单片机系统板-61板。
1.4设计内容
行列式键盘的操作一般完成两个任务,一是检测是否有键被按下,二是识别被按下的键是哪一个。
一般会采用行列扫描法,可以同时完成上述两项任务。
基本的扫描原理是:
先使行扫描线全部输出高电平,然后读取列扫描线的状态,得到与按键横向位置对应的4位列码;
如果有键被按下,则对应的列扫描线必然会被读回高电平,如果无键按下,则读取的列码必定全是0(低电平)。
这也就可以判断有无按键的按下了。
一旦检测到有键按下时,还需要有一个延时消抖操作,以消除按键时带有的抖动信号;
一般延时在15ms左右即可。
延时后,如还能检测到有按键按下,则可确定当前是有键按下,可进入获取键值的操作。
获取键值时,采用行列依次扫描的方法。
首先使第一行扫描线输出高电平,其它的行扫描线输出低电平,然后读取列扫描线的状态,得到列码;
如果本行无键按下,则得到的列码为全0,并扫描下一行;
如本行有键按下,则会读取到对应的列码值,并退出扫描,进行键值计算。
当第一行扫描没有检测到按键时,则扫描第二行,即置第二行扫描线输出高电平,其它行扫描线输出低电平,其它与前面所述类似。
第2章设计的基本原理及硬件连接方案
根据电子密码锁的设计要求几人机界面系统的设计理念,整个系统以4×
4行列式键盘作为输入部分,以SPCE061A板作为系统的单片机的控制处理部分,以一个4位的LED和一个2位的LED作为显示部分。
4行列式键盘扫描原理
键盘按其接线方法有:
直接式键盘、行列式键盘(又称矩阵键盘)、串转并键盘等;
在本设计中,采用4X4的行列式键盘,即键盘排列为4行、4列,共16个按键。
4X4键盘的电路连线如图所示,分别定义这16个按键盘的键值为1~16。
单片机与该电路连接时,使用4个端口作为输出口,接4条行扫描线;
使用4个端口作为输入口,接4条列扫描线;
在此介绍中,使用SPCE061A的IOA0~7这8个端口作4X4键盘的扫描,IOA0~3接行扫描线,IOA4~7接列扫描线。
图2-14×
4键盘输入电路图
如上图中,IOA0~3设置为输出口,接行扫描线;
IOA4~IOA7设置为带下拉电阻的输入口,接列扫描线。
在行列扫描时,可以用一个变量记录下当前扫描的行号,在计算键值时,可以利用此行号以及读回的列码得知是哪一行、哪一列上的按键按下了。
如:
当S5按下时,应该检测出第二行扫描时读取到有效的列码0001(IOA7~4)。
2.2系统设计框图
根据系统的功能选择61板作为单片机控制处理部分,利用一个4位的LED和一个2位LED作为显示部分,键盘采用4X4的行列式键盘,系统框图如图所示。
图2-2电子密码锁系统设计框图
2.3硬件连接
六位数的显示采用的是一个4位共阴极数码管(LG5641AH)和一个2位共阴极数码管(LG5621AH),连接方法是SPCE061A的IOB8-IOB14接LED焊接板的A-G,小数显示部分可以省略不要;
IOB0-IOB5分别接LED的位选COM1~COM6。
第3章软件设计方案
3.1设计步骤
根据设计要求的功能,程序主要分为三部分,即:
(1)动态显示部分;
(2)行列键盘扫描部分;
(3)按键功能实现部分。
按键功能实现部分融合在主程序中,根据不同的键值进行分支处理,以完成设计要求的不同控制功能;
按键控制主要完成数据输入、显示刷新控制等。
清看门狗
程序主流程主要完成键盘扫描、键值处理,键值分支控制的任务,流程图如图3-1所示:
图3-1主程序流程图
显示部分是在IRQ4的1KHZ中断中控制显示的,采用动态扫描的方式,1KHz的时基中断每1ms进一次中断,在中断中对2ms计数器i进行累加,当i从0累加到2时,则刚好为2ms,此时更新一个位的数码管显示,并对i进行清零。
具体流程图3-2。
IRQ41KHZ
2ms计数器
i++
i>
=2
更新显示一位
LED
结束
图3-2IRQ41KHz时基中断流程
3.2设计程序
由于程序过多,如附录所示。
第4章调试结果与分析
4.1调试结果
将LED数码管与单片机板I/O接口连接,然后连接单片机与4×
4键盘。
用短路子将S5的2、3引脚短接,即选择EZ-PROBE,将EZ-PROBE的5针接口连到J11的位置使用,这时74HC244起作用。
再用下载线连接单片机下载线接口与电脑接口,打开单片机电源开关,打开集成开发环境,以PROJECT方式打开程序,或直接按F8将程序下载到单片机芯片中。
下载完毕后,拔掉下载线,把S5上的短路子拨到PROBE(J4)处(即用短接冒短接S5的1、2插针)脱机运行下载到电子密码锁芯片中的程序,打开电源开关,开机时数码管显示“000000”,初始化密码为“123456”,密码可以更改,并保存在RAM中;
然后按下述步骤对硬件电路进行测试:
(1)开机时数码管显示“000000”,初始化密码为“123456”,密码可以更改,并保存在RAM中。
(2)按下“#”,则显示全部清零为“000000”。
(3)随时可以输入数值,并在LED数码管上实时显示,当键入一个新数值时,原来显示的数字左移一位,并在最右边的一位上显示出新键入的键值,键值为0~9。
(4)按下“D”键,则表示确定键按下,则进行密码对比,如相符则在LED数码管上显示“======”以示通过;
如不符,则显示“------”。
(5)按下“*”键,如当前在已经通过密码验证的状态,则根据当前输入的号码更新原有的密码;
如当前在尚未通过密码验证状态,则显示“------”。
(6)按下“A”键,如当前在已经通过密码验证的状态,则显示当前的密码;
(7)按下“C”键,退出通过密码验证状态,进入尚未通过验证状态。
4.2结果分析
此设计验证了LED板可以按照相应的给定值进行显示的功能基本达到了作为电子密码锁的绝大部分功能,但还有许多不足和需要完善的地方。
结论与体会
设计结论:
1.通过此次试验我对凌阳十六位单片机61板的应用系统开发的过程有了一定的了解。
2.在这次试验中认真的学习了凌阳单片机语言,并复习C语言和汇编语言,完成了设计要求和设计指标。
3.我提出的建议是将单片机的点位进行扩充,以实现多笔画字的显示,并且可以使单片机软件程序智能的对进制进行转换,除去繁冗的进制计算。
心得体会:
回顾此次单片机课程设计,至今我仍感慨颇多,从理论到实现,在做设计的这些日子里,可以说是苦多于甜,但是可以学到许多许多东西,同时不仅可以巩固以前所学过的知识,而且学到了很多书本上没有学到过的知识。
对凌阳十六位单片机61板的应用系统开发的过程有了一定的了解,掌握了系统硬件设计及软件设计的设计原则、思路、步骤。
并通过不断上网查资料、到图书馆借阅图书的方式,进一步熟悉并掌握利用这些工具来进行单片机设计的方法。
通过这次的学习,我真正学到了不少东西,真正体会到了理论联系实际的重要性。
经过这次实习可以使我们能更快更准确的掌握专业方面的理论知识同时,通过实践,又证明了我们所学理论知识的科学性和正确性。
参考文献
[1]罗亚非.凌阳16位单片机[M].北京:
北京航空航天大学出版社,2005.
[2]薛峰.微机通讯技术大全[M].北京:
电子工业出版社,2002.
[3]张念维.USB总线接口开发指南[M].北京:
电子出版社,2002.
[4]周立功.单片机实验与实践[M].北京:
北京航空航天大学出版社,2004.
[5]周航慈.单片机应用程序设计技术[M].北京:
航空航天大学出版社,2002.
[6]袁勤勇.嵌入式系统构件[M].北京:
北京机械工业出版社,2002.
附录
文件名称:
main.c
#defineP_Watchdog_Clear
(volatileunsignedint*)0x7012
voidInitial_Password(void);
unsignedintCom_Password(void);
voidSave_Password(void);
unsignedintInput_Password(unsignedintkey);
voidF_FlashWrite1Word(intaddr,intValue);
voidF_FlashErase(unsignedintsector);
voidF_numLED_Status(unsignedinttemp);
voidF_numLED_Update(unsignedintshow[6]);
voidF_Key4X4_Initial(void);
unsignedintF_Key4X4_Scan(void);
voidF_IrqInti(void);
unsignedintG_Password[6];
unsignedintG_Password_Get[6];
intmain(void)
{
intKey,i;
unsignedintF_Pass=0;
F_IrqInti();
F_Key4X4_Initial();
Initial_Password();
while
(1)
{
Key=F_Key4X4_Scan();
switch(Key)
case4:
if(F_Pass==1)F_numLED_Update(G_Password);
elseF_numLED_Status
(2);
for(i=0;
i<
6;
i++)G_Password_Get[i]=0;
break;
case15:
F_numLED_Status(0);
case16:
i=Com_Password();
if(i==1)
F_Pass=1;
F_numLED_Status
(1)
}
else
F_Pass=0;
F_numLED_Status
(2);
case12:
case13:
if(F_Pass==1)
Save_Password();
default:
i=Input_Password(Key);
if(i!
=0)F_numLED_Update(G_Password_Get);
*P_Watchdog_Clear=0x0001;
}
#definePS_Addr
(unsignedint*)0xF000
constunsignedintC_Password_Define[6]={1,2,3,4,5,6};
voidInitial_Password(void)
unsignedintuiTemp,i;
uiTemp=*PS_Addr;
if(uiTemp==0xffff)
{
F_FlashErase((unsignedint)PS_Addr);
i++)
G_Password[i]=C_Password_Define[i];
F_FlashWrite1Word((unsignedint)(PS_Addr+i),G_Password[i]);
G_Password[i]=*(PS_Addr+i);
unsignedintCom_Password(void)
unsignedintuiBack=0,i;
if(G_Password[i]!
=G_Password_Get[i])break;
if(i==6)uiBack=1;
elseuiBack=0;
returnuiBack;
voidSave_Password(void)
unsignedinti;
G_Password[i]=G_Password_Get[i];
unsignedintInput_Password(unsignedintkey)
unsignedinti,uiBack=0;
switch(key)
case1:
break;
case2:
case3:
case5:
key=4;
case6:
key=5;
case7:
key=6;
case9:
key=7;
case10:
key=8;
case11:
key=9;
case14:
key=0;
key=0xffff;
if(key!
=0xffff)
5;
G_Password_Get[i]=G_Password_Get[i+1];
G_Password_Get[5]=key;
uiBack=1;
东北石油大学课程设计成绩评价表
课程名称
单片机的控制系统课程设计
题目名称
电子密码锁
学生姓名
孙维超
学号
070601140329
指导教师姓名
姜寅令
张会珍
职称
讲师
序号
评价项目
指标
满分
评分
1
工作量、工作态度和出勤率
按期圆满的完成了规定的任务,难易程度和工作量符合教学要求,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。
20
2
课程设计质量
课程设计选题合理,计算过程简练准确,分析问题思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。
45
3
创新
工作中有创新意识,对前人工作有一些改进或有一定应用价值。
5
4
答辩
能正确回答指导教师所提出的问题。
30
总分
评语:
指导教师:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 密码锁 课程设计