ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:113.36KB ,
资源ID:25263880      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25263880.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理课题设计实验报告材料之矩阵式键盘数字密码锁.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机原理课题设计实验报告材料之矩阵式键盘数字密码锁.docx

1、微机原理课题设计实验报告材料之矩阵式键盘数字密码锁微机系统与应用课程设计报告课程设计题目成绩矩阵式键盘数字密码锁设计评 语:教 师:年 月 日班 级: 学 号: 姓 名: 实验地点: E楼区311 实验时间: 2013.3.4-3.9 矩阵式键盘数字密码锁设计 一 . 实验目的1. 掌握微机系统总线与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力。2. 初步掌握键盘扫描,密码修改和计时报警程序的编写方法。3. 掌握通过矩阵式键盘扫描实现密码锁功能的设计思路和实现方法。二 实验内容矩阵式键盘数字密码锁设计,根据设定好的密码,采用4x4矩阵键盘实现密码的输入功能。当密码输入正确之后,锁就打开(

2、绿灯亮),10秒之后,锁自动关闭(红灯亮);如果连续输入三次密码不正确,就锁定按键5秒钟,同时发出报警(黄灯闪),5秒后,解除按键锁定,恢复密码输入。数字密码锁操作键盘参考上面设定,也可以自行设计键盘。用户初始密码为“123456”,系统加电运行后,密码锁初始状态为常闭(红灯亮),用户可以选择开锁或修改密码:如果选择开锁就按“Open”键,系统提示输入密码,输入用户密码+“#”键后,如果密码正确,就打开锁(绿灯亮),系统等待10秒,然后重新关闭密码锁,若密码错,提示重新输入,连续三次错误,提示警告词同时报警(黄灯闪),锁定键盘5秒,然后重新进入初始状态;如果选择修改密码就按”Modify Se

3、cret”键,系统提示输入旧密码,输入旧密码+“#”键后,如果正确,系统提示输入新密码,输入新密码+“#”后,新密码起效,重新进入初始状态;如果旧密码错,不能修改密码,密码锁直接进入初始状态。三 实验基本任务 1)具有开锁、修改用户密码等基本的密码锁功能。2)对于超过3次密码密码错误,锁定键盘5秒,系统报警。5秒后解除锁定。4)通过LCD字符液晶和LED指示灯(红,绿,黄)实时显示相关信息。 5)用户密码为6位数字,显示采用 “*” 号表示。6)码锁键盘设计合理,功能完善,方便用户使用。本次实验还做了附加的任务( 1) 增加了管理员(Admin)功能,如果用户忘记密码可向管理员求助。管理员密码

4、为8位数字(系统内预先已设定),管理员按“Admin”键后,系统提示输入管理员密码,输入管理员密码+“#”键后,如果正确,系统自动恢复用户初始密码为“123456”;如果错误,程序停止运行,系统退出。2)增加了输入清除功能(*),在输入密码过程中,如果中途按下“*”键,则清除前面的输入,开始重新输入密码。(2)增加组合键(Shift)功能,使系统的密码选择范围除数字外,另外增加3)a,b,c,d,e,f,g,h,i,j等10个字母。数字直接输入,字母“Shift”+“字母”。四 . 实验设计方案 实验用到8255作为并行接口设备,用以ISA总线与外设的连接,本次用的是8255的A口作为输出口,

5、C口的高4位与B口是输入,C口低4位是输出口,所以控制住设置为ox8a,8253作为时钟器,作为控制提示灯的时间闪烁,8255的A口接键盘的rom,B口接col,地址线都连接在总线下面的芯片上接口,其他的读写控制线都接入ISA总线上。如下图的接线设置 五 实验器材 8086CPU,可编程并行接口8255,可编程定时器8253,LCD显示屏,LED灯,4x4矩阵键盘。电路连接关系:1、 首先将8255模块的控制总线与总线连接,并将片选CS连接至000H-007H地址空间;2、 将8253模块的控制总线与总线连接,并将片选CS连接至008H-00FH地址空间;3、 将DRV模块JS8(CS)连接至

6、0010H-0017H地址空间;4、 将LCD模块的控制总线与总线连接,并将片选CS接至018H-01FH地址空间;5、 8255和键盘的连线,他们之间的连接关系如下:8255模块输入输出方式键盘PA0PA3输出JS35PC0-PC3输入JS366、 8255和TRL的连线,他们之间的连接关系如下: 8255模块LEDPB0PB3JS18(1-3)7、 时钟源的/64同8253的CLK0连接。8、 8253的OUT0同JS7的B0连接。9、 8253的GATE0同JS3的K7连接。(高电平选通)六 程序流程图其中软硬件初始化流程如图1所示密码锁程序运行流程如图2所示其中密码输入模块详细流程如图

7、3七主要代码 unsigned char kbscan()/键盘扫描 int row_va4=0x0e,0x0d,0x0b,0x07; /选中每一行时的A口值 unsigned char data; unsigned char data_tmp; Sleep(200); /第一次消除抖动-每次键盘扫描的时间间隔至少为200毫秒 for(int i=0;i4;i+,i%=4) int tmp=row_vai; OutByte(0xde00, tmp); /循环扫描第一到四行 InByte(0xde01,&data); if(data=NULL) /扫描不到的情况排除掉 else if(data&

8、0x0f)!=0x0f) /检测这一行是否有按键被按下 Sleep(10);/第二次消除抖动-如果10ms之后还是相同的按键就执行下面的。 InByte(0xde01,&data_tmp); data_tmp=data_tmp&0x0f; if(data_tmp!=data) continue; /否则不执行下面的 while(data_tmp=data)/第三次消除抖动-判断按键是否弹起。弹起则结束循环 InByte(0xde01,&data); data=data&0x0f; Sleep(10); if(data=0x0f) Sleep(100); InByte(0xde01,&data)

9、; data=data&0x0f; switch(data_tmp) case 0x0e: return valuei0; case 0x0d: return valuei1; case 0x0b: return valuei2; case 0x07: return valuei3; return NULL;void displayOnLcd()/在LCD上显示*号. unsigned char stmp2=*; for (int i=0;i- 起始位置-起始条件 OutByte(0xde02,0xFE); /红灯亮 temp = 0; /指令符号 printf(please input Op

10、en!); while(1) int j=0; temp = kbscan(); /获取在键盘中得到的数字 printf(the key:%cn,temp); if(temp=O) Mimasum=0; Clear(); /清空屏幕 while(1) temp = kbscan(); j+; printf(第%d次键盘扫描:%cn,j,temp); if(isnum(temp) if(Mimasum6) WodemimaMimasum=temp; Mimasum+; displayOnLcd(); /上屏幕LCD一个*号 else if(isoper(temp) if(temp=#) /密码匹

11、配 if(Mimasum=6) if(Newmima=true) /修改密码标志为true且原密码正确-修改密码 int i; for(i=0;i6;i+) Mimachari=Wodemimai; Newmima=false; printf(新密码为:); for(i=0;i=3) /提示重新输入的显示 OutByte(0xde02,0xFD); /黄灯亮 Sleep(1000); OutByte(0xde02,0xFF); /黄灯灭 Sleep(1000); OutByte(0xde02,0xFD); /黄灯亮 Sleep(1000); OutByte(0xde02,0xFF); /黄灯灭

12、 Sleep(1000); OutByte(0xde02,0xFD); /黄灯亮 Sleep(1000); OutByte(0xde02,0xFE); /红灯亮&绿灯灭 Mimasum=0; /初始 Errorcount=0; Clear(); /清空屏幕 goto Start_Position; else printf(请重新输入密码:n); else if(temp=*) Mimasum=0; /重新输入密码 Clear(); /清空屏幕 else if(temp=A) Guanlisum=0; Clear(); /清空屏幕 printf(请输入管理员密码:n); while(1) /输入

13、管理员密码 temp = kbscan(); printf(one次键盘扫描:%cn,temp); if(isnum(temp) if(Guanlisum8) GuanlicharGuanlisum=temp; Guanlisum+; displayOnLcd(); /上屏幕LCD*号 else if(isoper(temp) if(temp=#& Guanlisum=8) int i; for(i=0;i8;i+) if(Guanlikeyi!=Guanlichari) return 0; Mimachar0=1; Mimachar1=2; Mimachar2=3; Mimachar3=4;

14、 Mimachar4=5; Mimachar5=6; printf(密码初始化完成.n); Guanlisum=0; Mimasum=0; Errorcount=0; Modify=false; Newmima=false; goto Start_Position; /回到开始 else if(temp=*) Guanlisum=0; Clear(); /清空屏幕 else if(temp=M) Modify=true; Mimasum=0; Clear(); printf(请输入原密码:n); coutendl; end8255(); / CloseDevice(); return 0;八. 实验心得 通过这次微机课题设计实验,使我学到了不少实用的知识,更重要的是做实验的过程,思考问题的方法,这与其他的实验师通用的,真正使我受益匪浅。 在做实验之前,我没有完全将课本上的理论知识掌握透彻,但在老师的讲解中,以及实践中对这些知识的理解有了很大一步的掌握。对汇编语言的编程和微机系统的芯片有了比较深刻的认识。

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

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