微机原理简易密码锁
- 格式:docx
- 大小:192.07 KB
- 文档页数:11
一、设计目的:本课程设计旨在使学生在学习《微机原理与接口技术》这门课程之后,能够掌握Intel8086/8088微型计算机系统的组成原理,熟练运用8086宏汇编语言进行程序设计,熟悉各种I/O接口的配套使用技术,掌握用Intel8086/8088CPU进行一些基本的微型计算机系统的软硬件设计方法。
通过对具体应用的课程设计使学生对所学知识有进一步的加深和了解,培养和提高学生的动手能力和实际应用能力。
二、设计内容:随着电子技术的发展,计算机应用技术起着越来越重要的作用。
多媒体技术、网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术等都离不开计算机。
本课程设计是基于微机原理与接口技术的简单应用。
运用所学的微机原理和接口技术知识完成简易数码锁。
数码锁主要由8086系统及Intel 8255A可编程并行接口芯片和密码输入电路、显示电路、密码确认电路这几部分构成。
根据设计的功能和要求,编写相应的汇编程序,以支持整个系统的运行,实现数码锁的功能。
汇编程序只要分为输入密码、判断密码、修改密码这几部分流程来编写,以满足整个数码锁的设计要求并完成相应的功能.三、设计任务和要求:1:数码锁系统主要有8086系统和8255A可编程并行接口芯片及密码输入电路、显示电路、密码确认电路组成。
2:用K0~K7开关作为密码控制输入键3:K2~K7为6位密码设置及输入开关4:K0、K1分别做控制键5:当K1开关闭合时,通过开关K2~K7重设并保存新密码6:当K1开关断开时,查看开关K0的状态,若K0闭合,将K2~K7输入的密码与原密比较,若相同则灯亮,否则,灯灭;若K0断开,则重复输入密码进行比较。
四、可选器材:⑴PC机;⑵EL-1型微机原理教学实验箱系统;⑶信号发生器;五、参考资料:[1]《EL-1型微机教学系统实验指导书》[2] 赵彦强.《微机原理与接口技术》(第二版).合肥:合肥工业大学出版社,2010.[3]周荷琴,吴秀清.《微型计算机原理与接口技术》(第三版).合肥:中国科学技术大学出版社,2004.[4] 戴梅萼,史嘉权.微型计算机技术及应用.北京:清华大学出版社,1996[5] 李伯成.微型计算机原理及接口技术.北京:清华大学出版社,2005.[6] 洪永强.微机原理与接口技术.北京:科学出版社,2004.硬件设计方案:一、设计概述原理图硬件工作流程首先对可编程器件进行初始化操作,即对8255写入方式控制字,配置I/O 端口的输入输出方向。
一.课程设计的目的和任务1.设计目的1、了解和掌握8086,8255接口芯片以及LED灯的原理和功能。
2、能用这些接口芯片构建一个简单的系统控制对象。
3、掌握接口电路的综合设计与使用。
4、通过自己动手,进一步了解计算机得工作原理,接口技术,提高计算机硬件,软件综合应用能力,即对微机原理,接口技术,汇编语言程序设计进行综合训练。
2.设计任务1、选用8086和适当接口芯片完成相应的功能。
2、用LED灯显示电子锁的当前状态。
3、画出详细的硬件连接图。
4、给出程序设计思路、画出软件流程图。
5、给出所有程序清单并加上必要注释。
二、设计内容密码锁在开启之后需要置一个初始密码,之后输入密码并按确认键,在输入密码正确的条件下输出开锁电平,此时绿灯亮表示密码锁开启。
当输入密码错误时,红灯亮表示密码锁关闭状态。
可以继续输入密码并确认输入密码,直至密码正确则开启。
在密码输入正确之后还可以实现对密码的修改,修改密码之后按下确认修改密码键,修改成功。
三、方案选择及原理通过8255的24个接口实现密码输入,密码锁开关显示输出的功能。
应用8255的A 口的8位作为密码输入的8位,通过8个SWITCH开关控制,B口的其中两位分别接绿和红的LED灯作为输出表示密码锁的开关(绿灯亮表示密码正确开锁,红灯亮表示密码错误闭锁)。
C口的作为输入,使用其中两位分别接两个BUTTON开关,一个作为密码修改确认开关,一个作为密码输入确认开关。
四、所用器件CPU8086,地址锁存器273,译码器154,并行接口8255A,SWITCH开关,BUTTON 开关,LED灯。
主要器件简介CPU80868086是Inter系列的16位微处理器,芯片上有2.9万个晶体管,采用 HMOS工艺制造,用单一的+5V电源,时钟频率为5MHz~10MHz。
8086有16根数据线和20根地址线,它既能处理16位数据,也能处理8位数据。
可寻址的内存空间为1MB。
并行接口8255Intel 8086/8088 系列的可编程外设接口电路(Programmable Peripheral Interface)简称 PPI,型号为8255(改进型为8255A及8255A-5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。
微机原理班级:13电气2学号:*********姓名:***成绩:目录一、设计内容 (3)二、设计要求 (3)三、方案选择及原理 (3)四、所用器件 (3)五、主要器件简介 (3)六、原理图 (5)1、8086与8255A连接 (5)2、8255A的A口、C口与矩阵键盘连接 (6)3、8255A的A口、B口与数码管的连接 (7)4、8086与8253连接 (7)5、完整电路图 (8)七、软件设计思路 (9)八、流程图 (10)1、主程序 (10)2、子程序 (11)九、程序代码 (13)十、设计中的难点 (22)十一、收获及体会 (22)十二、参考文献 (23)密码锁一、设计内容在实验系统TDN86/88上实现密码锁功能。
设计内容:密码锁在输入密码正确的条件下输出开锁电平,控制电控锁开启,同时显示0字样。
当输入密码错误时,发出错误警告声音,同时显示CC字样。
当六次误码输入的条件下,产生报警信号。
还可以实现对密码的修改,修改成功后,蜂鸣器发生确认音。
根据实验系统的配置,可以通过使步进电机转动180度来模拟开锁和关锁动作。
二、设计要求1、用LED显示器现实电子锁的当前状态;2、画出详细的硬件连接图;3、给出程序设计思路、画出软件流程图;4、给出所有程序清单,并加上必要注释;5、完成设计说明书(列出参考文献)。
三、方案选择及原理这次的设计要求是在密码输入正确时输出开锁电平和显示“0”,密码错误时显示“C”和蜂鸣器发出报警声音等,我们采用8255A的A口低四位和C口的低三位组成4x3的矩阵键盘,同时A口的低六位为选管;B口作为显示器的输出;C 口高四位的PC4口输出开锁电平,对于6次密码错误输入,PC5口输出报警电平。
用8253计数器产生警告音和确认音。
用蜂鸣器发声次数来区分确认和警告声音,一声表示确认,三声表示警告。
采用Proteus自带的键盘元件KEYPAD-PHONE,0-9为数字键,#为确认/返回键和*为密码修改键,每次对键盘扫描,获得对应的键值。
目录一.课设目的 (1)二.课设内容三.问题分析、设计思路及原因 (1)四.电路设计及功能说明,硬件原理图 (2)五.软件部分的程序流程图,算法和使用的编程技巧 (10)六.汇编源程序清单 (11)七.课设结果分析 (20)八.收获、体会和建议 (20)九.参考文献 (21)一.课设目的1.掌握8086,8255等芯片的工作原理和使用方法,了解各引脚的功能。
2.掌握各芯片之间的连接方法,设计多功能密码锁电路。
3.运用《微机原理及应用》中学习到的知识,编写汇编语言程序,通过对芯片的控制实现多功能密码锁的各种功能。
4.巩固本学期学习到的微机原理的相关知识,通过实践加强对知识的理解,同时提高自身思考问题的能力,培养对本课程的兴趣,提高动身能力。
二.课设内容课程设计题目选取多功能密码锁,实现的功能为:1.判断输入的密码是否正确2.修改密码3.密码输入错误时发错警告声音4.当密码输入错误四次时发出警报三.问题分析、设计思路及原因1.问题分析考虑到实现以上功能需要使用数码管、开锁电平、报警电平、蜂鸣器等输出,因此使用微机实验中用过的芯片8255A作为接口芯片,该芯片能比较好地满足这次课程设计的功能要求。
而CPU则选择我们熟悉的8086。
2.设计思路及原因密码的输入主要通过系统功能调用语句“MOV AH,1; INT 21H”(即带显示的单字符键盘输入功能)和循环语句实现,而密码输入是否正确则通过串比较指令来实现。
程序中的提示语句可以使用系统功能调用语句“MOV AH,9; INT 21H”(即字符串输出)功能来实现。
对接口芯片,首先要完成芯片的初始化,使8255A芯片的A,B口作为输出端口,A口用于控制数码管在密码输入正确或错误的情况下的显示“00”或“FF”,B口用于控制提示音和相应的发光二极管。
当输入错误时,B口输出03H(即00000011B),使对应的蜂鸣器发声,相应的发光二极管发光。
而当四次输入密码错误时,B口输出0CH(即00001100B),使对应蜂鸣器发声,对应二极管发光。
本科课程设计(论文)题目:多功能密码锁课程名称微机原理课程设计学院自动化科学与工程学院班级 2012级3班学生姓名罗艺锋学生学号 201230641470提交日期 2015 年 1分数目录一、目的 (3)二、内容 (3)三、设计任务 (3)四、方案选择及原理 (3)五、所用器件 (3)主要器件简介 (4)六、原理图 (6)1、8086和存储器连接 (6)2、CPU与8255A连接 (6)8255A的A口与键盘连接 (7)4、8255A的B、C口 (7)5、完整电路图 (8)七、软件设计思路 (8)八、流程图 (9)1、主程序 (10)2、子程序 (11)九、程序代码 (11)十、设计中的难点 (13)十一、收获及体会 (14)多功能密码锁一、目的1、了解和掌握8086,8255,等接口芯片以及LED显示器的原理和功能;2、能用这些接口芯片构建一个简单的系统控制对象,3、掌握接口电路的综合设计与使用;4、通过自己动手,进一步了解计算机得工作原理,接口技术,提高计算机硬件,软件综合应用能力,即对微机原理,接口技术,汇编语言程序设计进行综合训练。
二、内容密码锁在输入密码正确的条件下输出开锁电平,控制电控锁开启,同显示00字样。
当输入密码错误时,发出错误警告声音,同时显示FF字样。
当六次误码输入的条件下,产生报警电平报警。
还可以实现对密码的修改,修改成功后,蜂鸣器发出确认音。
三、设计任务1、选用8086和适当的存储器及接口芯片完成相应的功能。
2、用LED显示器显示电子锁的当前状态。
3、画出详细的硬件连接图。
4、给出程序设计思路、画出软件流程图。
5、给出地址分配表。
6、给出所有程序清单并加上必要注释。
7、完成设计说明书(列出参考文献,所用器件型号)。
四、方案选择及原理这次的设计要求是在密码输入正确时输出开锁电平和显示“00”,密码错误时显示“FF”和蜂鸣器发出报警声音等,我们采用8255A的B口作为显示器的输出,c口为选管和接蜂鸣器,开锁及报警电平。
摘要密码锁在输入密码正确的条件下输出开锁电平,控制电控锁开启,同显示00字样。
当输入密码错误时,发出错误警告声音,同时显示FF字样。
当六次误码输入的条件下,产生报警电平报警。
还可以实现对密码的修改,修改成功后,蜂鸣器发出确认音。
密码锁的基本功能是可输入密码、修改码以及判断密码是否正确,故需要输入设备及其与CPU的接口电路及相关存储设备;判断密码则涉及逻辑分析,即要实现逻辑功能;另外相关的报警提示功能则需要相关的输出设备及其接口电路。
我采用8255A的B口作为显示器的输出,c口为选管和接蜂鸣器,开锁及报警电平。
对于6次密码错误输入,可以直接用软件控制,线路简单,程序也很易实现。
用蜂鸣器发声次数来区分确认和警告声音,一声表示确认,三声表示警告。
键盘上的按键用SW-PB共12个,0-9为数字键,连接到8255A的A口对应二进制数,还有确认键和密码修改键,按下表示A口接收到低电平信号。
关键词;密码锁, 蜂鸣器, 微机原理,接口技术,AbstractCipher lock when the input password is correct conditions the output level control electric lock lock, open, the samedisplay the words 00. When the input password mistake, sending the error warning sound, at the same time display FF. When the six error input conditions, generating alarm level alarm. Also can be achieved on the password modification, modification is successful, the buzzer sends confirmation tone. The cipher lock is the basic function of input password, modify the code and password to determine whether the correct, so it needs to input device and an interface circuit of CPU and related storage device; Determine whether the password to logical analysis, namely, to realize the logic function; the related alarm function needs to output equipment and its interface circuit.I use the 8255A B as the display output, C for selected tube and a buzzer, lock and alarm level. For the 6 time password input errors, starting with a 8253 counter, and then found can be directly controlled by the software, simple circuit, the program is very easy to realize. With buzzer sound frequency to distinguish and confirm the warning sound, a sound that confirm, three sound warning. The keys on the keyboard to use SW-PB in all 12, for the number keys 0-9, connect to the 8255A A port corresponding binary number, and a confirmation key and password modify key, press the A port receives a low level signal.Keywords:Password lock, buzzer, microcomputer principle, interface technology,目录摘要 (Ⅲ)Abstract (Ⅳ)第1章绪论 (7)1.1密码锁的发展现状 (7)1.2密码锁的发展前景 (7)第2章密码锁的工作原理及结构设计方案 (8)2.1目的 (8)2.2内容 (8)2.3设计任务‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥82.4方案选择及原理‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥8 第3章硬件系统设计 (9)3.1所用到的相关芯片元件及其介绍‥‥‥‥‥‥‥‥‥‥‥‥‥‥93.1.1所用器件‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥93.1.2主要元件及芯片介绍‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥93.2硬件电路图 .............................. 错误!未定义书签。
趣味小实验,使用三极管做一个密码锁,加深大家对三极管的
认识。
本节课给大家介绍一个三极管密码锁,电路均采用三极管组成,这样让大家加深对三极管的理解,电路结构比较简单。
一.电路原理:
1.电路由5只三极管 1只继电器组成,并且有4只SW按钮开关,如下图所示:
2.当有人员按下SW1时V1导通,这个时候给C1充电,再来按下SW2时C1的电能给C4充电,这时候V2基极有高电平,所V2饱和导通,此刻V2集电极为低电平,这时候再按下SW3时,V3导通然后再给C2充电,最后再按下SW4时C2给C3充电.
3.当SW4按下去之后V5基极为高电平,这时候V5导通,然后集电极有电流,此刻继电器工作常闭变为常开,这时候D3绿灯亮起解码成功.
4.在此电路中还有V4/D1/R4/R7/D4元器件,这几个元器件主要是防止有人一次性多按几个按钮,从而有V4的存在就解决了此问题,另外C1/C4电容的大小决定了按下开关的时间,如果不在指定的时间内同样也不能正常解码。
IOY0 EQU 3000H ;片选IOY0对应的端口始地址MY8255_A EQU IOY0+00H*4 ;8255的A口地址MY8255_B EQU IOY0+01H*4 ;8255的B口地址MY8255_C EQU IOY0+02H*4 ;8255的C口地址MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址IOY1 EQU 3040H ;片选IOY1对应的端口始地址MY8254_COUNT0 EQU IOY1+00H*4 ;8254计数器0端口地址MY8254_COUNT1 EQU IOY1+01H*4 ;8254计数器1端口地址MY8254_COUNT2 EQU IOY1+02H*4 ;8254计数器2端口地址MY8254_MODE EQU IOY1+03H*4 ;8254控制寄存器端口地址STACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSDATA SEGMENTDTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H,40H;键值表,0~F对应的7段数码管的段位值TTABLE DB 10H,30H,20H,60H,40H,0C0H,80H,90H ;歩进电机转速表TTABLE1 DB 90H,80H,0C0H,40H,60H,20H,30H,10H ;歩进电机反向转速表TI1 DB 'please input the codes',0DH,0AH,0DH,0AH,'$'TI2 DB 'codes is WRONG!', 0DH,0AH,0DH,0AH,'$'TI3 DB 'codes is RIGHT~ *-*',0DH,0AH,0DH,0AH,'$'TI4 DB 'before change the codes,please input the old codes',0DH,0AH,0DH,0AH,'$'TI5 DB 'unsuccessful',0DH,0AH,0DH,0AH,'$'TI6 DB 'the first time input the newcodes',0DH,0AH,0DH,0AH,'$'TI7 DB 'the second time input the newcodes',0DH,0AH,0DH,0AH,'$'TI8 DB 'congratulation! the newcodes change is finish!',0DH,0AH,0DH,0AH,'$'CODEIN DB 6 DUP(10H) ;输入的密码CODEOR DB 01H,01H,01H,01H,01H,01H ;原始密码CODEG DB 6 DUP(13H) ;改的密码FREQ DW 1500,1600,1700,1650,1900,0 ;扬声器的频率表TIME DB 1,1,1,1,2 ;扬声器的时间表COUNT EQU 6CISHU DB 00H ;记录输入密码错误的次数SIGN DB 00H ;修改密码前的判断,如果按修改键之前,密码输过,且正确则值01H,否则00HFLAG DB 00H ;电机正反转YIGAI DB 00H ;判断改密码时输入的两次密码DENG DB 00H ;控制灯的亮与灭,灯亮表示开锁,灯灭表示关锁DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,10H ;先初始化数码管不显示MOV AH,10HCALL CHUSHIHUACALL DIS ;显示刷新MOV DI,3005HMOV DX,MY8255_MODE ;初始化8255工作方式MOV AL,81H ;方式0,A口、B口输出,C口低4位输入 OUT DX,ALMOV DX,OFFSET TI1MOV AH,9 ;输出提示INT 21HMOV CX,0040hBEGIN1:PUSH CXBEGIN: CALL DISCALL CLEAR ;清屏CALL CCSCAN ;扫描按键JNZ GETKEY2 ;有键按下则跳置GETKEY2POP CXLOOP BEGIN1MOV CX,0040hMOV AH,01h ;判断PC键盘是否有按键按下INT 16HJZ BEGIN1 ;无按键则跳回继续循环,有则退出QUIT: MOV AX,4C00H ;返回到DOSINT 21HGETKEY2:MOV CH,3EHMOV AL,DENGOR CH,ALMOV CL,00H ;设置当前检测的是第几列COLUM: MOV AL,CH ;选取一列,将X1~X4中一个置0 MOV DX,MY8255_AOUT DX,ALMOV DX,MY8255_C ;读Y1~Y4,用于判断是哪一行按键闭合 IN AL,DXL1: TEST AL,01H ;是否为第1行JNZ L2 ;不是则继续判断MOV AL,00H ;设置第1行第1列的对应的键值 JMP KCODEL2: TEST AL,02H ;是否为第2行JNZ L3 ;不是则继续判断MOV AL,04H ;设置第2行第1列的对应的键值JMP KCODEL3: TEST AL,04H ;是否为第3行JNZ L4 ;不是则继续判断MOV AL,08H ;设置第3行第1列的对应的键值 JMP KCODEL4: TEST AL,08H ;是否为第4行JNZ NEXT ;不是则继续判断MOV AL,0CH ;设置第4行第1列的对应的键值KCODE: ADD AL,CL ;将第1列的值加上当前列数,确定按键值 CALL PUTBUF ;保存按键值PUSH AXKON: CALL DISCALL CLEAR ;清屏CALL CCSCAN ;扫描按键,判断按键是否弹起JNZ KON ;未弹起则继续循环等待弹起POP AXNEXT: INC CL ;当前检测的列数递增MOV AL,CHTEST AL,08H ;检测是否扫描到第4列JZ KERR ;是则跳回到开始处ROL AL,1 ;没检测到第4列则准备检测下一列 MOV CH,ALJMP COLUMKERR: JMP BEGINCCSCAN PROC NEAR ;扫描是否有按键闭合子程序MOV AL,DENGOR AL,00HMOV DX,MY8255_A ;将4列全选通,X1~X4置0 OUT DX,ALMOV DX,MY8255_CIN AL,DX ;读Y1~Y4NOT ALAND AL,0FH ;取出Y1~Y4的反值RETCCSCAN ENDPCLEAR PROC NEAR ;清除数码管显示子程序MOV DX,MY8255_B ;段位置0即可清除数码管显示MOV AL,00HOUT DX,ALRETCLEAR ENDPDIS PROC NEAR ;显示键值子程序PUSH AX ;以缓冲区存放的键值为键值表偏移找到键值并显示 MOV SI,3000HMOV DL,0DFHMOV DH,0DFHMOV AL,1FHAGAIN:MOV AH,DENGOR AL,AHPUSH DXMOV DX,MY8255_AOUT DX,ALPUSH AX ;设置X1~X4,选通一个数码管MOV AL,[SI] ;取出缓冲区中存放键值MOV BX,OFFSET DTABLEAND AX,00FFHADD BX,AXMOV AL,[BX] ;将键值作为偏移和键值基地址相加得到相应的键值 MOV DX,MY8255_BOUT DX,AL ;写入数码管A~DpCALL DALLYPOP AXINC SI ;取下一个键值POP DXMOV AL,DLTEST AL,01H ;判断是否显示完?JZ OUT1 ;显示完,返回ROR AL,1ROR DH,1MOV DL,DHAND DL,3FHMOV AL,DL; MOV DL,ALJMP AGAIN ;未显示完,跳回继续OUT1: POP AXRETDIS ENDPPUTBUF PROC NEAR ;保存键值子程序CMP AL,0AHJAE NOSAVE;大于09H的数则不保存,进行功能判断CMP DI,3005HJE P1JMP P2P1: PUSH AXMOV AH,10HMOV AL,10HCALL CHUSHIHUAPOP AXP2: MOV SI,DIMOV AH,11H ;使数码管显示为--状态 MOV [SI],AHPUSH BX ;将键值保存到codein PUSH SICHU:MOV SI,3005HSUB SI,DIMOV BX,OFFSET CODEINMOV [BX+SI],ALPOP SIPOP BXDEC DICMP DI,2FFFHJNZ GOBACKMOV DI,3005HGOBACK: CALL DIS ;显示刷新RETNOSAVE: CMP AL,0AH ;0AH做确认键JE D5CMP AL,0BH ;0BH做修改键JE D3CMP AL,0CH ;0CH键做删除键JE D0CMP AL,0DH ;0DH做复位键JE D4CMP AL,0EH ;0EH做关密码锁的键 JE D6CMP AL,0FHJE D7RET ;对0FH不响应D0: CALL DELETERETD4: CALL CLEARARETD3: CALL XIUGAIRETD5: CALL QUERENRETD6: CALL SHUTRETD7: RETPUTBUF ENDPSHUT PROC NEAR ;关电机MOV AL,10HMOV AH,10HCALL CHUSHIHUAMOV DENG,00H ;灯灭MOV SIGN,00H ;重置回未输入密码状态CALL DISCMP FLAG,03HJE SH1JMP SH2SH1: CALL BUJINMOV FLAG,00HSH2: RETSHUT ENDPCHUSHIHUA PROC NEAR ;初始化MOV SI,3000H ;建立缓冲区,存放要显示的键值,使数码管全熄灭 MOV [SI],ALMOV [SI+1],ALMOV [SI+2],AHMOV [SI+3],AHMOV [SI+4],AHMOV [SI+5],AHRETCHUSHIHUA ENDPQUEREN PROC NEAR ;确认CMP FLAG,03H ;先判断是否开锁,如果已经开了,JE T8T1: CALL BIJIAO ;再判断是否按下修改键CALL DISRET ;开锁状态下不进行密码比较T8: CMP SIGN,02HJE C1RETC1: PUSH CXPUSH BXPUSH SICMP DI,3005HJE SIXWEI0JMP NOTSIXSIXWEI0:;PUSH AXMOV SI,3000HMOV AL,[SI+5]CMP AL,10HJE NOTSIXSIXWEI: CMP YIGAI,00HJE FIRSTJMP SECONDFIRST : MOV DX,OFFSET TI6MOV AH,9 ;屏幕输出提示第一次输入新密码INT 21HMOV CX,06HMOV BX,OFFSET CODEGMOV DI,OFFSET CODEINMOV SI,00HAG: MOV AX,[DI]MOV [BX][SI],AXINC DIINC SICMP SI,CXJB AGMOV YIGAI,01HMOV AL,02HMOV AH,10H ;提示第二次输入密码,数码管显示22JMP JIESUNOTSIX: MOV DX,OFFSET TI5MOV AH,9 ;屏幕输出提示INT 21HMOV YIGAI,00H;MOV AL,0FH;MOV AH,0FHMOV SIGN,02H ;未修改成6位密码输出FFFFF,原密码未改 JMP JIESU3SECOND: MOV DX,OFFSET TI7MOV AH,9 ;屏幕输出提示INT 21HMOV SI,OFFSET CODEGMOV DI,OFFSET CODEINMOV CX,COUNTT5:MOV AH,[SI]MOV AL,[DI]CMP AH,ALJNE NOTSIXINC SIINC DILOOP T5MOV CX,06HMOV BX,OFFSET CODEORMOV DI,OFFSET CODEINMOV SI,00HAG2: MOV AX,[DI]MOV [BX][SI],AXINC DIINC SICMP SI,CXJB AG2MOV YIGAI,00HMOV SIGN,01HMOV DX,OFFSET TI8MOV AH,9 ;屏幕输出提示INT 21HCALL SOUND ;密码修改成功提示音MOV AL,0DHMOV AH,10H ;修改成功数码管输出dd JMP JIESUJIESU3:MOV AL,01HMOV AH,10H ;要改密码的话重新输入两次新密码 JIESU: CALL CHUSHIHUA ;或按复位键退出密码修改CALL DISPOP SIPOP BXPOP CXMOV DI,3005HRETQUEREN ENDPDELETE PROC NEAR ;删除CMP DI,3005HJE Y16INC DIMOV AL,10HMOV SI,DIMOV [SI],ALRETY16:MOV SI,3000HMOV AH,[SI+5]CMP AH,10HJE Y17MOV SI,3000HMOV AH,10HMOV [SI],AHCALL DISMOV DI,3000HRETY17:MOV SI,3000HMOV AH,[SI]CMP AH,10HJE Y18MOV DI,3005HRETY18:MOV AL,10HMOV AH,10HCALL CHUSHIHUACALL DISRETDELETE ENDPCLEARA PROC NEAR ;复位MOV AL,10HMOV AH,10HCALL CHUSHIHUAPUSH BXPUSH CXMOV BX,OFFSET CODEINMOV CX,06HY13: MOV AL,10HMOV [BX],ALINC BXLOOP Y13POP CXPOP BXCMP SIGN,02HJE CL1JMP CL2CL1: MOV SIGN,01HCL2: MOV DI,3005HRETCLEARA ENDPXIUGAI PROC NEAR ;修改CMP SIGN,00HJE M1CMP SIGN,01HJE M0M0: MOV AL,01HMOV AH,10H ;数码管输出11,提示第一次输入新密码CALL CHUSHIHUAMOV SIGN,02H ;密码输入正确,且按下修改键,sign置02H MOV DI,3005HRETM1: MOV DX,OFFSET TI4MOV AH,9 ;屏幕输出提示INT 21HMOV AL,0EH ;提示未输入原密码MOV AH,10HCALL CHUSHIHUAMOV DI,3005HRET ;输出EEXIUGAI ENDPBIJIAO PROC NEAR ;密码比较PUSH CXPUSH SICMP DI,3005HJNE WRONGMOV SI,OFFSET CODEORMOV DI,OFFSET CODEINMOV CX,COUNTCLDT3: MOV AH,[SI]MOV AL,[DI]CMP AH,ALJNZ WRONGINC SIINC DILOOP T3 ;比较不相等就跳转发声OK: MOV DX,OFFSET TI3MOV AH,9 ;屏幕输出提示INT 21HMOV DENG,0C0H ;灯亮MOV CISHU,00HMOV SIGN,01HMOV SI,3000HMOV AL,00HMOV AH,10HCALL CHUSHIHUACALL DISCMP FLAG,00HJE NZJMP YZNZ: CALL BUJIN ;电机转动MOV FLAG,03HYZ: JMP BWWRONG:MOV DENG,00H ;灯灭MOV DX,OFFSET TI2MOV AH,9 ;屏幕输出提示INT 21HINC CISHUMOV SIGN,00HMOV SI,3000HCMP CISHU,06H ;比较输入错误的次数,超过6次则跳到报警 JB CCJMP BAOJINGCC: MOV AL,CISHU ;错误次数小于6次,发声警告MOV [SI],ALMOV AL,0CHMOV [SI+1],ALMOV [SI+2],ALMOV AL,10HMOV [SI+3],ALMOV [SI+4],ALMOV [SI+5],ALCALL SOUNDJMP BW1BAOJING:MOV AL,10H ;超过6次报警MOV AH,10HCALL CHUSHIHUACALL DISCALL DALLYCALL SOUNDCALL DALLYCALL SHUTMOV AX,4C00H ;返回到DOS,退出程序INT 21HBW: CALL CHUSHIHUABW1: CALL DIS;比完了POP SIPOP CXMOV DI,3005HRETBIJIAO ENDPSOUND PROC NEARPUSH AXPUSH DXPUSH SIPUSH DIMOV DX,MY8254_MODEMOV AL,36H ;初始化8254工作方式,定时器0,方式3 OUT DX,ALMOV SI,OFFSET FREQMOV DI,OFFSET TIMEPLAY1: MOV DX,0FHMOV AX,0E502HDIV WORD PTR [SI]MOV DX,MY8254_COUNT0OUT DX,ALMOV AL,AHOUT DX,ALMOV DL,[DI]CALL DALLY2ADD SI,2INC DICMP CISHU,06HJE BAOJING2CMP CISHU,00HJE DONECMP WORD PTR [SI],1600JAE JIESU2JMP PLAY1BAOJING2:CMP WORD PTR [SI],0JE JIESU2JMP PLAY1DONE: CMP WORD PTR [SI],1700JE JIESU2JMP PLAY1JIESU2:MOV DX,MY8254_MODE ;退出时设置8254为方式2,out0置0 MOV AL,10HOUT DX,ALPOP DIPOP SIPOP DXPOP AXRETSOUND ENDPDALLY2 PROC ;发声延时子程序D10: MOV CX,0F00HD11: MOV AX,0FFFFHD12: DEC AXJNZ D12LOOP D11DEC DLJNZ D10RETDALLY2 ENDPBUJIN PROC NEAR ;歩进电机PUSH AXPUSH BXPUSH SIMOV SI,06HCMP FLAG,00HJE A1 ;FLAG=0正转,否则反转A4: MOV BX,OFFSET TTABLE1MOV CX,0008HA3: MOV AL,[BX]MOV DX,MY8255_C ;用C口的高四位做输出OUT DX,ALCALL DALLY1INC BXLOOP A3DEC SIJNZ A4JMP A5A1: MOV BX,OFFSET TTABLEMOV CX,0008HA2: MOV AL,[BX]MOV DX,MY8255_COUT DX,ALCALL DALLY1INC BX LOOP A2DEC SIJNZ A1A5: POP SIPOP BXPOP AXRETBUJIN ENDPDALLY PROC NEAR ;软件延时子程序PUSH CXMOV CX,0fffHD1: MOV AX,00FFHD2: DEC AXJNZ D2LOOP D1POP CXRETDALLY ENDPDALLY1 PROC NEAR ;步进电机延时子程序 PUSH CXPUSH AXMOV CX,5000HD8: MOV AX,5000HD9: DEC AXJNZ D9LOOP D8POP AXPOP CXRETDALLY1 ENDPCODE ENDSEND START。
基于微机原理简易数码锁的设计摘要随着电子技术的发展,计算机应用技术起着越来越重要的作用。
多媒体技术、网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术等都离不开计算机。
本课程设计是基于微机原理与接口技术的简单应用。
运用所学的微机原理和接口技术知识完成简易数码锁。
本课程设计以TDN 86/88微机系统教学实验箱为基础,以Intel 8255A芯片作为扩展接口,连接密码输入电路、显示电路、密码确认电路等,作为系统的硬件部分;以西安唐都科教仪器公司出版的《微机原理及应用技术试验系统Wmd86》软件4.0版为平台,以汇编语言为基础编程,作为系统的软件部分,实现了密码输入判断、显示机构操作、修改密码的功能设计。
本课程设计的主要目的是提高学生的实践能力,包括提高汇编等语言的编程能力及对接口等硬件的理解分析能力和设计接口电路的能力,从而学以致用。
只有通过实际编程和微机及接口的硬件实践,才能真正掌握软硬件设计的方法,从中得到收益和提高。
前言…………………………………………………………………………………………·第一章数码锁的设计要求及方案 (1)1.1 初始条件 (1)1.2 设计要求 (1)1.3 设计方案 (1)第二章数码锁的硬件设计 (1)2.1 硬件设计概述 (1)2.2 硬件框图 (1)2.3 硬件工作流程 (2)第三章数码锁的软件设计 (2)3.1 主程序流程图设计 (2)3.2 验证密码程序设计 (3)3.3 重设密码程序设计 (4)第四章数码锁的安装与调试 (4)4.1 硬件调试 (4)4.2 软件调试 (4)4.3 系统整体调试 (5)第五章设计体会与小结 (6)附录 (7)参考文献 (9)电子课程设计是电子技术学习中非常重要的一个环节,是将理论知识和实践能力相统一的一个环节,是真正锻炼学生能力的一个环节。
只有通过实际的操作才能将理论知识运用到实践中来,才能真正的掌握所学知识。
微机原理课程设计加密解密算法加密解密程序设计1设计算法概述本设计主要采⽤对密码符号的ASCII码进⾏变换和反变换来实现加密和解密。
将ASCII码从33到126(除控制字符外)的字符分成2部分:ASCII码从33到63的字符为第⼀部分,ASCII码在64到128之间的字符为第⼆部分。
每个字符加密后均变为2个字符。
第⼀部分通过查表法加密和解密,先建⽴62字节的密码表。
加密时,因为⼀个字符加密后变为两个字符,所以ASCII码从33到63的31个字符密码对应62个字符,即62个字节的数据,计算待加密字符ASCII码对33的偏移量,在密码表中,以这个偏移量乘以2为偏移量的字节数据和下⼀字节数据就是对应密码;解密时,在表中找到相同字型数据时,计算它对表⾸的偏移,再加33,就是解密后的字符的ASCII码。
第⼆部分通过判断字符ASCII码的特性来加密和解密。
先判断输⼊字符的ASCII码是否为3的倍数,若是则对应密码的⾼位字节为35 ('#'),低位字节为本⾝ASCII码减⼀;再判断输⼊字符的ASCII码是否为5的倍数,若是则对应密码的⾼位字节为37(‘%’),低位字节为本⾝ASCII码减3;最后判断输⼊字符的ASCII码是偶数还是寄数,偶数的密码⾼字节为38(‘&’),低字节为本⾝ASCII码加1,奇数的密码⾼字节为39(‘'’),低字节为本⾝ASCII码加3 。
解密的时候先判断⾼字节数据,若⾼字节数据位35、37、38、39则舍去⾼位字节,低位字节分别进⾏相应的解密,就得到原码。
2主程序设计2.1主程序的功能主程序主要是⼈机交互部分,提⽰输⼊信息和功能选择。
程序开始,提⽰⽤户选择相应的功能:按E、e调⽤加密⼦程序,进⼊加密状态,按R、r调⽤解密⼦程序,进⼊解密状态,按Esc退出程序,若输⼊错误则再次提⽰输⼊功能选择。
2.2主程序流程图主程序流程图如图1所⽰。
图1 主程序流程图2.3主程序汇编代码分析主程序汇编代码分析如下:main proc far ; 主程序start:mov ax,datamov ds,axmov dx,seg first_message ;提⽰输⼊信息dos-09h,ds:dx为⾸地址mov ds,dx mov dx,offset first_messagemov ah,09hint 21hmainloop:mov dx,seg second_messagemov ds,dxmov dx,offset second_messagemov ah,09hint 21hinputagain:mov ah,01hint 21hcmp al,1bhje over ;输⼊为ESC,跳转到结束cmp al,45hje jiamicallcmp al,65hje jiamicall ;输⼊为e,E,调⽤加密程序cmp al,52hje jiemicallcmp al,72hje jiemicall ;输⼊为r,R,调⽤解密程序jmp mainloopjiamicall:call jiamijmp mainloopjiemicall:call jiemijmp mainloopover:mov dx,seg message3 ;提⽰结束mov ds,dxmov dx,offset message3mov ah,09hint 21hmov ax,4c00h ;程序退出int 21hmain endpcode endsend main3加密程序设计3.1 加密字符筛选程序3.1.1加密字符筛选程序描述本段程序⽤以筛选输⼊字符,将ASCII码在33到63之间的字符作为第⼀部分,ASCII码在64到126之间的字符作为第⼆部分,然后分别进⾏加密,两种加密⽅法完全不同。
欧阳术创编 2021.02.02 欧阳美创编 2021.02.02湖南理工学院单片微机原理课程设计说明书设计题目:基于AT24C02的简易电子密码锁院部:机械学院专业:机械电子工程组长姓名:学号:组员姓名:学号:学号:学号:起迄日期: 2016 年 6月19日 2016 年 6月 30日指导教师:教研室主任:目录1 引言 (4) (4)1.2 电子密码锁的发展趋势 (4) (5)55 (6)3.1.1 AT89S51性能简介 (6)3.1.2 AT89S51引角功能说明 (7)3.3.1 接口信号说明 (10)3.3.2 主要技术参数 (11)3.3.3 基本操作程序 (11)1213 (15)1 引言电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。
现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。
其性能和安全性已大大超过了机械锁。
其特点如下:1) 保密性好,编码量多,远远大于弹子锁。
随机开锁成功率几乎为零。
2) 密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。
3) 误码输入保护,当输入密码多次错误时,报警系统自动启动。
4) 无活动零件,不会磨损,寿命长。
5) 使用灵活性好,不像机械锁必须佩带钥匙才能开锁。
6) 电子密码锁操作简单易行,一学即会。
1.2 电子密码锁的发展趋势在日常生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
目前门锁主要用弹子锁,其钥匙容易丢失;保险箱主要用机械密码锁,其结构较为复杂,制造精度要求高,成本高,且易出现故障,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。
针对这些锁具给人们带来的不便若使用机械式钥匙开锁,为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。
目录引言 (1)1,课程设计目的及要求 (2)1.1 设计目的 (2)1.2 设计要求 (2)2,设计方案 (3)2.1 基本思路 (3)2.2 界面菜单的显示 (3)2.3 响铃程序 (4)2.4 进程选择程序 (4)2.5 加密程序 (6)2.6 程序解密 (8)2.7 退出程序 (10)2.8 主程序的流程图 (11)3,程序输出结果 (12)3.1 菜单输出结果 (12)3.2 加密输出结果 (12)3.3 解密输出的结果 (13)3.4 退出程序的结果 (13)4,总结与心得体会 (15)参考资料与文献 (16)附录 (17)引言计算机自出现至今一直是各个行业的主要工具,对于自动化行业来说,其以强大的计算能力和控制能力一直是这个行业不可缺少的首要工具,做为自动化专业的学生,掌握计算机的基本用法则是我们必须掌握的一门知识。
同时计算机已成了我们学习和工作必不可少的工具,然而计算机作为网络中的核心部分也是最不安全的,大量的信息用数据的形式存放在计算机系统里。
信息的传输则是通过公共信道。
这些计算机系统和信道是不设防的,很脆弱的,很容易受到攻击和破坏,因而我们需要一种措施来保护我们的数据,防止被一些用心不良的人盗取或破坏。
因此,我们需要一种强有力的安全措施来保护我们的机密数据不被盗取或破坏。
数据的加密和解密从宏观上讲是很简单,很容易理解的。
加密和解密的一些方法也是很直接的,很容易掌握,可以很方便的对机密数据进行加密和解密。
本次设计就是要用8086汇编语言设计一个程序,使它能够对网络信息的原始数据进行加密保护和解密使用。
数据加密和解密功能的实现是利用对数据的ASCII码进行移位运算,使它改写为另一组数据,隐藏了原数据,使他人不能看到,从而保证了原数据的安全。
汇编语言(Assembly Language)是面向机器的程序设计语言。
汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。
微型计算机原理及应用课程设计报告设计题目:多功能密码锁指导老师:学生:学号:专业:目录一、课设目的 (2)二、设计内容 (2)三.设计任务 (2)四.设计思路 (3)五.所用器件及各器件所实现的功能 (4)5.1 所用器件 (4)5.2 各部分器件及其功能 (4)5.2.1 CPU 8086 (4)5.2.2 可编程并行接口8255A (5)5.2.3译码器74L138 (6)5.2.4存储器27C513 (7)5.2.5 共阴极数码管 (8)5.2.6 时钟发生器8284A (8)5.2.7 石英晶振 (9)六、硬件连接图及说明(设计说明书) (10)6.1时钟发生模块电路 (10)6.2 内存模块电路 (10)6.3 拓展IO口模块电路 (11)6.4 键盘输入模块 (12)6.5 显示模块 (14)6.6系统整体电路 (16)七、各程序的详细框图及相应说明 (16)7.1 软件设计思路 (16)7.2程序介绍 (17)7.2.1主程序 (17)7.2.2开锁子程序 (17)7.2.3闭锁子程序 (17)7.2.4密码输入错误子程序 (17)7.2.5开锁成功子程序 (17)7.2.6修改密码子程序 (18)7.3流程图 (19)7.3.1主程序流程图 (19)7.3.2子程序流程图 (20)7.3.3修改密码子程序 (21)八、程序清单及必要注释 (21)九、课设结果及分析及设计难点 (25)9.1课设结果及分析 (25)9.2设计难点 (25)十.收获与体会 (26)参考文献 (26)一、课设目的1.认真回顾及运用《微型计算机原理》的内容,深入了解8086,8255A和存储器等部分芯片的功能,并学会应用。
2.学会应用学过的汇编语言知识编写一个实用并且比较深入的程序。
3.能够用相应的芯片按照程序连接成一个多功能的可实现系统。
4.提高实验技术、操作能力,提高分析问题、处理问题、解决问题的能力;掌握电路的方案选择和综合设计方法与使用;5.在此综合设计中,通过团队协作,进一步深入了解微机原理技术,提高软硬件的应用应用能力。
微机原理班级:13 电气 2 学号:178940045 姓名:李林娟成绩:目录一、设计内容 (3)二、设计要求 (3)三、方案选择及原理 (3)四、所用器件 (3)五、主要器件简介 (3)六、原理图 (5)1、8086与8255A连接 (5)2、8255A的A口、C口与矩阵键盘连接. (6)3、8255A的 A 口、B 口与数码管的连接. (7)4、8086与8253 连接 (7)5、完整电路图 (8)七、软件设计思路 (9)八、流程图.........................................10 1、主程序.......................................10 2、子程序 (11)九、程序代码.......................................13 十、设计中的难点...................................22 十一、收获及体会...................................22 十二、参考文献. (23)密码锁一、设计内容在实验系统TDN86/88上实现密码锁功能。
设计内容:密码锁在输入密码正确的条件下输出开锁电平,控制电控锁开启,同时显示0 字样。
当输入密码错误时,发出错误警告声音,同时显示CC字样。
当六次误码输入的条件下,产生报警信号。
还可以实现对密码的修改,修改成功后,蜂鸣器发生确认音。
根据实验系统的配置,可以通过使步进电机转动180 度来模拟开锁和关锁动作。
二、设计要求1、用LED显示器现实电子锁的当前状态;2、画出详细的硬件连接图;3、给出程序设计思路、画出软件流程图;4、给出所有程序清单,并加上必要注释;5、完成设计说明书(列出参考文献)。
三、方案选择及原理这次的设计要求是在密码输入正确时输出开锁电平和显示“0”,密码错误时显示“ C”和蜂鸣器发出报警声音等,我们采用8255A的A口低四位和C口的低三位组成4x3 的矩阵键盘,同时A口的低六位为选管;B口作为显示器的输出;C 口高四位的PC4口输出开锁电平,对于6 次密码错误输入,PC5口输出报警电平。
信息科学与技术学院微机原理与接口技术课程设计题目名称:简易密码锁的设计姓名:学号:**********20125081392012508137 专业年级:电子信息工程1班****:**时间: 2012.12.25目录第一章简易数码锁的设计要求及方案 (1)1.1 初始条件 (1)1.2 设计要求 (1)1.3 方案设计 (1)第二章硬件原理电路图的设计及分析 (1)2.1 硬件设计概述 (1)2.2 硬件框图 (2)2.3 硬件工作流程 (2)第三章程序设计与分析 (3)3.1 主程序流程图设计 (3)3.2 验证密码程序设计 (3)3.3 重设密码程序设计 (4)第四章数码锁的安装与调试 (4)4.1 硬件调试 (4)4.2 软件调试 (5)4.3系统整体调试 (6)第五章设计体会与小结 (6)附录 (7)参考文献 (9)第一章 简易数码锁的设计要求及方案1.1 初始条件1)运用所学的微机原理和接口技术知识; 2)微机原理和接口技术实验室的实验箱设备。
1.2 设计要求1.密码由0-7数字组成,密码位数6位;2.开机上电后系统复位,处于准备接收密码的状态;3.每次输入密码后须按下确认键,若输入密码位数超6位,取后6位;4.若与规定密码相同则在点亮一只发光二极管,显示正确,否则点亮另一只发光二极管,显示错误。
(正确和错误显示的发光二极管为两个)5.在实验系统 TDN86/88 上实现。
1.3 方案设计数码锁主要由8086系统及Intel 8255A 可编程并行接口芯片和密码输入电路、显示电路、密码确认电路这几部分构成。
根据设计的功能和要求,编写相应的汇编程序,以支持整个系统的运行,实现数码锁的功能。
汇编程序只要可分为输入密码、判断密码、修改密码这几部分流程来编写,以满足整个数码锁的设计要求并完成相应的功能.第二章 硬件原理电路图的设计及分析2.1 硬件设计概述硬件部分主要以8255芯片为主,用控制密码输入键(70K ~K )、 彩灯显示(LED UNIT ) , 在实验箱上模拟整个数码锁的工作流程。
2.2 硬件框图硬件框图如图1密码确认电路图1 系统硬件框图2.3 硬件工作流程首先对可编程器件进行初始化操作,即对8255写入方式控制字,配置I/O 端口的输入输出方向。
本系统选择PA 端口(60H )为输入口,接收密码输入区70K ~K 的电平状态;选择PB 端口(61H )为输出口,控制彩灯的显示。
对8255的配置如表1所示,具体接法详见附录的系统硬件原理图部分。
表1 8255 I/O 资源配置表按照系统硬件原理图 和8255的配置连接好电路, 即可按照用户操作流程,对8255进行相应的I/O 端口操作即可第三章 程序设计与分析3.1 主程序流程图设计软件设计的主要能够输入密码并确认每一次输入的密码是否有效,而且能够保存每次输入的密码,接着让最后6位输入的密码与正确密码比较。
由输入密码正确与否的判断结果来引导下一步的动作,并且可增加修改内设密码功能。
系统的完整程序流程如下图所示3.2 验证密码程序设计程序编译加载后,开始后对8255初始化,此时系统就有一初始密码,即可输入已经设置的密码(本程序初始密码:88H )。
输入的密码以只承认最后6位输入数8255初始化输入密码无反应绿灯全亮判断密码是否正确重设密码新密码锁存确认码 。
拨动按键K2~K7,对应的彩灯也会相应的亮起,拨好密码后,再拨动按键K0, 若K2~K7六位密码与初始密码相同,则彩灯的绿灯全部亮,若密码与初始密码不同,则彩灯没有变化。
验证密码流程图如图3图 3 验证密码流程图3.3 重设密码程序设计进行重新设置密码,首先拨动K1键,此时K2~K7六位处于待设密码状态,只要拨动K2~K7按键就可以设置新密码,设置好以后再次拨回K1,进行新密码的锁存,此时新密码已经设置成功。
若要再进行解码,按照验证密码程序设计里的步骤即可。
重设密码流程如图4图4 密码重设流程图第四章 数码锁的安装与调试4.1 硬件调试1. 安装上电前按电路设计连接实验箱电路,连接好实验箱与主机的线,并检查是否输入密码 判断密码绿灯全亮无反应密码按键还原重设密码新密码锁存有短路,再打开电源。
2. 调试在主机上安装并运行Wmd86,首先进行端口测试,正常后即可编写程序。
在测试8255的输出时发现8255工作不正常,其表面温度过高,故更换8255芯片后方能正常工作。
4.2 软件调试按照主程序流程进行软件的编写,按照实际的硬件接口来编程,软件编写中的许多细节问题并不是在编写程序的时候能够检查出来的,需要一步一步的调试,通过不断的调试程序,加深了对汇编语言和硬件结构的理解。
软件调试过程中遇到许多问题是不能通过硬件电路的现象来发现的,而通过win86的单步运行能够发现程序的走向,很直观的查出问题的所在。
比如,在程序运行中不能看到堆栈中的内容,而单步运行就能很直观的看的出来,方便调试。
编写层序的时候遇到了一些问题,主要是对堆栈的概念和应用上的认识不太深刻。
堆栈遵循“先入后出”的原则。
对于本题中的认可最后输入的6位密码的要求。
必须利用堆栈的这一特点。
将开关输入的密码依次压入堆栈(记录每次输入的密码),再出栈与原密码逐次比较6次,遇到一个问题就是,每次只从堆栈弹出6位密码,如果输入密码次数过多,前几次的密码没有出栈,堆栈就会被占满,导致程序无法正常运行;或者前一次没有清空堆栈的数据在下一次运行程序的时候被弹出,影响下一次的运行结果。
想到如此,就必须让堆栈在每次程序运行结束以后都要清空。
由于代码段的程序过长,导致代码段的空间不够用,往往使程序无法正常运行。
解决的办法是使用call指令,利用将子程序压入堆栈,用ret指令返回。
可以节省代码段的空间。
在调用的子程序中注意如果改变堆栈的入口地址的话需要在返回指令ret之前恢复原来调用此子程序是的入口地址,否则会使程序混乱。
基于此点,在编写程序的时候只是将初始化,显示等不改变堆栈地址的子程序压入堆栈。
4.3系统整体调试整个系统在经过软硬件调试成功并正常加载程序运行后即可按流程来调试。
首先输入原始密码看能否解锁,如果绿灯都亮则密码正确。
然后任意输入几组六位密码看绿灯是否都亮,如果绿灯均不亮则初始密码设置成功。
然后检测重置密码功能,先拨动按键K1,进入设置密码状态,任意拨动六位密码,再拨回按键K1,将设置的密码锁存,之后输入自己设置的密码看能否解锁,再多重复设置任意六位密码,如果绿灯都亮,则重置密码部分运行正常。
整个系统经过完整的逻辑测试后没有发现问题,整体调试结束。
第五章设计体会与小结刚确定做简易密码锁的课程设计任务时,自己真的是一头雾水不知怎么下手,经过进图书馆、上网查资料自己了解到了许多,现在经过一个星期的努力自己的数码锁已经基本成型。
但由于自己水平的有限,此设计任务仍有许多不足之处。
这次课程设计并不是很难,主要的困难来自对程序的理解。
功夫不负有心人,经过我们组的合作和努力,我们最后对实验的原理有了清晰的认识。
虽然实验箱上的很多模块单元没有用到,但是就系统功能来说,我觉得我们做的还是不错的。
这次课程设计却让我们对实验箱有了足够的了解,特别是8255A芯片;而且它还让我们对自己动手写程序来控制实验箱的运作有了一定的基础。
虽然实验箱只是一个小型的模拟平台,但是通过对它的学习和操作,我们对有关接口的知识将会有一个更广泛的认识,而且它对我们以后的学习也会有帮助的。
通过此次设计,发现自己仍然还有许多不足之处,发现自己的知识是非常欠缺的,自己的动手能力也不强。
自己清醒的认识到该怎么办,自己应该好好的反省一下,该好好的投入学习中,多一点时间用在学习中,把所学知识都好好的掌握,并很好的利用。
在以后的学习和生活中,自己多找机会锻炼一下,使自己的动手能力得以很大的提高。
从而是自己各方面的能力得到很好的发展,为自己以后很好的工作打下坚实的基础。
总之,这次课程设计对于我们有很大的帮助,通过课程设计,我更加深入地理解了,微机原理课程上讲到的多种芯片的功能,以及引脚的作用,同时加深了对于主要芯片的应用的认识,同时在试验室的环境里熟悉了汇编程序的编写过程和运行过程,并提高了自己的动手能力。
最后衷心的感谢老师的悉心指导。
附录系统硬件电路图系统程序源代码DATA SEGMENT ;定义数据段BLOCK DB 0DATA ENDSCODE SEGMENT;定义代码段ASSUME CS:CODE, DS:DATASTART: MOV DX, 63HMOV AL, 90H ;设置8255A方式字OUT DX, AL ;8255A A口输入,B口输出 MOV BLOCK, 088H ;设置初始密码MOV BL, 10HMAIN: MOV DX, 60HIN AL, DX ;读取A口开关信息TEST AL, 02H ;判断开关K1的状态JZ K1 ;K1=0 转移IN AL, 60HAND AL, 0FCH ;K1=1设置新密码,A口高六位有效 MOV BLOCK, AL ;存储新密码NOT ALOUT 61H, ALCALL DELAYJMP MAINK1: IN AL, 60HTEST AL, 01H ;判断开关K0的状态JNZ K0 ;K0=1 转移IN AL, 60H ;K0=0 输入密码AND AL, 0FCH ;A口的低二位被屏蔽NOT ALOUT 61H, ALCALL DELAYJMP MAINK0: IN AL, 60HAND AL, 0FCHCMP BLOCK, AL ;输入的密码与存储的密码相比较JA MAINJB MAINMOV AL, 0FH ;输出显示NOT ALOUT 61H, ALCALL DELAYJMP MAINDELAY PROC NEARDELAY1: MOV CX, 10H ;循环延时DELAY2:LOOP DELAY2DEC BLJNZ DELAY1RETDELAY ENDPCODE ENDSEND START参考文献1 华中科技大学电子技术课程组编,康华光主编. 电子技术基础(数字部分).第五版. 北京:高等教育出版社,20062 李伯成编. 单片机及嵌入式系统. 北京:清华大学出版社,20053. 《微机原理与接口技术》. 彭虎,周佩玲,傅忠谦编. 第二版. 北京:电子工业出版社,2008;4. 《汇编语言程序设计》.程学先,林姗,程传慧编著. 北京:机械工业出版社,2009;5. 《微型计算机原理与接口技术》.王宁宁,张瑾,谭彦彬,陈铖编著.北京:国防工业出版社,2009;9。