密码的设置和验证 - 范文中心

密码的设置和验证

09/02

华 北 科 技 学 院

《接 口 技 术》

课 程 设 计 报 告

班级

设计题目: 密码的设置和验证 设计时间: 2012-6-4 至 2012-6-15 指导教师: 评 语:_________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩: 评阅教师:_____

一、课程设计目的

1、掌握8253的基本工作原理和编程方法。 2、掌握8255的基本工作原理和编程方法。 3、掌握数码管显示数字的原理。

4、了解数/模转换器的基本原理,掌握DAC0832芯片的使用方法。

5、了解双色点阵LED显示器的基本原理,掌握PC机控制双色点阵LED显示程序的设计方法。

进行程序设计方法和芯片使用基本训练,巩固在课堂上学到的有关芯片初始化编程和使用的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉接口技术的原理及应用,达到能独立使用现有芯片编制程序并正确运行的水平。

二、课程设计内容

密码的设置和验证:按原理图连接好电路。将8253OUT0接8255C口PC7,将8255的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,8255的C口PC5~PC4与位码驱动输入端S1、S0相接,dp接地(关闭),8255的C口PC3~PC0与逻辑电平开关K3~K0相接, K3~K0又与LED灯L3~L0相接。编程实现如下功能:

1、

在10秒钟内设定好4位密码(每位为0或1)。七段数码管用于计时:

9-0,8*8双色LED显示红色“SET”,4位密码由逻辑电平开关低四位K3-K0拨入。

2、

输入密码,有三次验证密码的机会。10s内输入密码,七段数码管用

于计时:9-0,8*8双色LED显示红色“IN”,4位密码由逻辑电平开关低四位K3-K0拨入。

3、 4、 5、 SUCCESS。

若输入的错误密码错误,则发出警报声而后继续让输入密码。 若三次都输入错误则报警提示。

若输入密码正确则验证成功,8*8双色LED显示红色“OK”,提示

三、课程设计原理及原理图

原理:⑴8253可编程定时/计数器 方式控制字:

D7~D6:00 计数器0,01 计数器1,10 计数器2,11 非法。

D5~D4:00 计数器锁存命令,01 只读写低字节,10 只读写高字节,11 先 读写低字节后读写高。

D3~D1: 000 方式0,001 方式1,010 方式2,011 方式3,100 方式4,101 方式5。

D0:0 二进制,1 十进制。 ⑵并行I/O接口芯片8255

端口A:PA0~PA7

A组,支持工作方式0、1、2 端口B:PB0~PB7

B组,支持工作方式0、1 端口C:PC0~PC7

仅支持工作方式0、A组控制高4位PC4~PC7、B组控制低4位PC0~PC3 ⑶DAC0832数模转换器

数字量 → 按权相加 → 模拟量 ⑷七段数码管

实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。

⑸双色点阵LED显示器

实验仪上设有一个共阳极8×8点阵的红绿两色LED显示器,其点阵结构如图所示。该点阵对外引出24条线,其中8条行线,8条红色列线,8条绿色列线。若使某一种颜色、某一个LED发光,只要将与其相连的行线加高电平,列线加低电平即可。如欲显示汉字,采用逐列循环发光。 “SET”点阵代码:

①行代码输出 40H; 红色列代码输 01H;第一列1个红色LED发光。 ②行代码输出 7CH; 红色列代码输 02H;第二列5个红色LED发光。 ③行代码输出 40H; 红色列代码输 04H;第三列1个红色LED发光。 ④行代码输出 54H; 红色列代码输 08H;第四列3个红色LED发光。 ⑤行代码输出 7CH; 红色列代码输 10H;第五列5个红色LED发光。 ⑥行代码输出 08H; 红色列代码输 20 H;第六列1个红色LED发光。 ⑦行代码输出 54H; 红色列代码输 40 H;第七列3个红色LED发光。 ⑧行代码输出 20H; 红色列代码输 80 H;第八列1个红色LED发光。 “IN”点阵代码:

①行7EH; ②行04H;③行08H;④行10H;⑤行20H;⑥行7EH;⑦行00H;⑧行7EH。 “OK”点阵代码:

②行42H; ②行24H;③行14H;④行7EH;⑤行7EH;⑥行42H;⑦行42H;⑧行7EH。

原理图(电路图):

四、流程图

主流程图

熄灭七段数码管灯(LED_OFF): 打开七段数码管灯S0(LED_ONS0):

发出错误警报声(

五、程序源代码

;宏定义

;************************* SCREEN_MODEL MACRO MOV AH,6 MOV AL,0 MOV BH,34H MOV BL,0AH MOV CX,0 MOV DH,24 MOV DL,79 INT 10H ENDM

;----------------------- ;输出字符串

OUTSTR MACRO STR LEA DX,STR MOV AH,09H INT 21H ENDM

;**************************

DATAS SEGMENT MESS1 DB "please input password from the logic_switch! " ,0dh,0ah DB "(10 seconds to do this,the low 4 bits!) $" MESS2 DB 0dh,0ah,"input password form the logic_swith to Open clock!" ,0dh,0ah

DB " ( you have 3 chances ) $" MESS3 DB 0dh,0ah,"Press any key to continue…… ",0dh,0ah,'$' MESS4 DB 0dh,0ah,"you lose a chance! ",0dh,0ah,'$' MESS5 DB 0dh,0ah,"Open success! ",0dh,0ah,'$' PASSWORD DB ? I82531 EQU 0280H

I8253C EQU 0283H I8255A EQU 288H I8255C EQU 28AH I8255K EQU 28BH

I0832A EQU 2A8h

LED_Table DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

ICS1 EQU 0290H ICS2 EQU 0298H

the

ICS3 EQU 02A0H

COLUMN DB 00h,01h,02h,03h,04h,05h,06h,07h WORD_SET DB 40H,7CH,40H,54H,7CH,08H,54H,20H

WORD_IN DB 7EH,04H,08H,10H,20H,7EH,00H,7EH WORD_F DB 00H,00H,90H,90H,90H,0FFH,00H,00H WORD_T DB 00H,40H,40H,7EH,40H,40H,00H,00H

data1 DB 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh DB 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h DB 80h,66h,4eh,38h,25h,15h,09h,04h DB 00h,04h,09h,15h,25h,38h,4eh,66h ;正弦波数据 DATAS ENDS

STACKS SEGMENT DB 200 DUP (?) STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS START:

MOV AX,DATAS MOV DS,AX MOV ES,AX

SCREEN_MODEL ;置屏显 OUTSTR MESS1

;****************设定密码*********************************** CALL LED_OFF ;七段数码管灯灭 MOV CX,10 AGAIN:

MOV AL,00110010B ;计数器0,先写高8位后写低8,二进制 MOV AX,3000H MOV DX,I82531 OUT DX,AL MOV AL,AH OUT DX,AL ;写计数初值

MOV DX,I8255K

MOV AL,10001001B ;方式0,A口出,C口入 OUT DX,AL ;写8255控制字

MOV DX,I8255C

TEST1: IN AL,DX ;读C口数据

TEST AL,10000000B;是否计数完1秒 JZ TEST1 PUSH CX

;***********显示计时*********************** MOV AX,CX DEC AX

MOV BX,AX

MOV DX,I8255K

MOV AL,10001001B ;方式0,A口出,C口入 OUT DX,AL ;写8255控制字

LEA SI,LED_Table MOV BH,0 ADD SI,BX CALL LED_ONS0 ;打开七段数码管灯S0 MOV AL,[SI] MOV DX,I8255A OUT DX,AL ;显示计数值

;***********显示SET*********************** MOV CX,080h d2: MOV AH,01h PUSH CX MOV CX,8 MOV SI,OFFSET COLUMN next: MOV AL,[SI] MOV BX,OFFSET WORD_SET XLAT ;得到第一行码 MOV DX,ICS1 OUT DX,AL MOV AL,AH MOV DX,ICS2 OUT DX,AL ;显示第一行红 SHL AH,01 INC SI

;CALL SHORT_DELAY LOOP next POP CX ;CALL SHORT_DELAY LOOP d2

;***********显示SET结束***********************

;***********一轮结束*********************** ;CALL DELAY

POP CX

LOOP AGAIN

CALL LED_OFF

MOV DX,I8255K

MOV AL,10001001B ;方式0,A口出,C口入 OUT DX,AL ;写8255控制字 MOV DX,I8255C IN AL,DX ;从8255C口读入数据,即读入设定的密码 AND AL,00001111B ;取其低4位

MOV PASSWORD,AL ;将设定的密码保存起来

;****************设定密码结束***********************************

;SCREEN_MODEL ;置屏显 OUTSTR MESS2

OUTSTR MESS3 MOV AH,1

INT 21H

;****************输入密码开锁,有3次开锁机会********************* MOV CX,3 OPEN_AGAIN: PUSH CX MOV CX,10 AGAIN2:

PUSH CX

;***********显示计时*********************** MOV AX,CX DEC AX

MOV BX,AX

MOV DX,I8255K

MOV AL,10001001B ;方式0,A口出,C口入 OUT DX,AL ;写8255控制字

LEA SI,LED_Table MOV BH,0 ADD SI,BX CALL LED_ONS0 ;打开七段数码管灯S0 MOV AL,[SI] MOV DX,I8255A OUT DX,AL ;显示计数值

;***********显示IN*********************** MOV CX,080h D1: MOV AH,01h PUSH CX MOV CX,8 MOV SI,OFFSET COLUMN next1: MOV AL,[SI] MOV BX,OFFSET WORD_IN XLAT ;得到第一行码 MOV DX,ICS1 OUT DX,AL MOV AL,AH MOV DX,ICS2 OUT DX,AL ;显示第一行黄 SHL AH,01 INC SI

CALL SHORT_DELAY LOOP next1 POP CX CALL SHORT_DELAY LOOP D1

;***********显示IN结束*********************** POP CX LOOP AGAIN2 CALL LED_OFF

;***********一轮结束*********************** POP CX MOV DX,I8255K

MOV AL,10001001B ;方式0,A口出,C口入 OUT DX,AL ;写8255控制字 MOV DX,I8255C IN AL,DX ;从8255C口读入数据,即读入输入的密码 AND AL,00001111B ;取其低4位 CMP PASSWORD,AL JZ OPEN_SUCCESS OUTSTR MESS4

CALL ALERT;发出错误警报声 LOOP OPEN_AGAIN JMP EXIT OPEN_SUCCESS:

OUTSTR MESS5

;***********显示T*********************** MOV CX,080h

D3: MOV AH,01h PUSH CX MOV CX,8 MOV SI,OFFSET COLUMN next3: MOV AL,[SI] MOV BX,OFFSET WORD_T XLAT ;得到第一行码 MOV DX,ICS1 OUT DX,AL MOV AL,AH MOV DX,ICS2 OUT DX,AL ;显示第一行红 SHL AH,01 INC SI

CALL SHORT_DELAY LOOP next3 POP CX CALL SHORT_DELAY LOOP D3

CALL MUSIC1 ;***********显示T结束***********************

EXIT:MOV AH,4CH INT 21H

;***********七段数码管灯灭与亮***************** LED_OFF PROC NEAR ;熄灭七段数码管灯 PUSH DX

PUSH AX

MOV AL,10000001B ;方式0,A口出,C口高4位出,低4位入 MOV DX,I8255K OUT DX,AL

MOV AL,00001000B ;PC4置0 OUT DX,AL

MOV AL,00001010B ;PC5置0 OUT DX,AL POP AX

POP DX RET

LED_OFF ENDP

;---------------------------------------------------

LED_ONS0 PROC NEAR ;打开七段数码管灯S0 PUSH DX

PUSH AX

MOV AL,10000001B ;方式0,A口出,C口高4位出,低4位入

MOV DX,I8255K OUT DX,AL

MOV AL,00001001B ;PC4置1 OUT DX,AL

MOV AL,00001010B ;PC5置0 OUT DX,AL POP AX

POP DX RET

LED_ONS0 ENDP

;***************************************

;***********延迟子程序****************** SHORT_DELAY PROC NEAR ;短延迟子程序 PUSH CX MOV CX,0ffffh ccc: LOOP ccc POP CX RET

SHORT_DELAY ENDP

;---------------------------------------------- DELAY PROC NEAR ; 长延时子程序 PUSH CX PUSH DX

MOV CX,0A000H _1: MOV DX,8088H _2: DEC DX JNZ _2 LOOP _1 POP DX POP CX RET

DELAY ENDP

;************************************************** ALERT PROC NEAR PUSH CX MOV CX,200 ;取200次32个正弦波数据 ddd: MOV SI,0

lll: MOV AL,data1[SI] ;取正弦波数据 MOV DX,I0832A OUT DX,AL ;放音 CALL SHORT_DELAY INC SI CMP SI,32 ;是否取完32个数据 JL lll ;若没有,则继续

LOOP ddd ;总循环次数60是否完,没有,则继续 POP CX RET

ALERT ENDP

;*************************************** CODES ENDS

END START

六、结果

①提示信息,10s内通过逻辑电平开关设定密码10s内通过逻辑电平开关输入密码实验箱上:设定的密码为

1111

双色点阵LED显示器相识SET

②显示提示信息,

实验箱上:输入的密码为1001,输入的密码与设定的密码1111不相同,发出开锁不成功警报声,再次输入,不同,再次发出警报声,第三次输入1111,提示信息SUCCESS!

实验箱显示:数码管显示倒计时,双色点阵器显示IN,验证密码

④验证成功,实验箱显示“OK”,屏幕提示信息”SUCCESS!”

七、课程设计总结及体会

在设计的过程中我遇到过许多问题。如使用8253 计时,采用方式0,输入时钟频率1MHZ,初值为65536,理论上是每隔1S输出1个高电平,但在实际中利用查询方式查询高电平时,与理论值不同。再如,使用七段数码管显示计时,比如显示‘13’,‘1’显示得极短、‘3’显示得较长,很不协调,最终只用了一位显示计时。

通过两个星期的课程设计,我对有关芯片的初始化编程和使用的基本知识、基本方法有了更深的认识,学会了应用8255、DAC0832、七段数码管等编写程序实现一些简单的功能,同时也意识到自己的不足,所谓越学越感觉到知识的欠缺,自己所想的无法用知识去体现出来或者结果跟思路相悖却找不到症结所在。

动手能力是计算机系学生应具有而且要强加练习的一种能力,这次课设是我充分的发挥了这一点,而且不仅现在,在以后的工作中也要多动手,多实践 。

创新思维也是计算机系培养的重点,再简单的东西动动脑就能做得漂亮,得到同学们的称赞。这次课设也正是在这个的基础之上来完成的。这次课程设计使我收获甚多。在此,感谢培养我的老师们。


相关内容

  • 联通手机上网设置
    中国联通3G 手机上网设置方法 一. 诺基亚系列 1.3G 业务internet 接入点设置 菜单-设置-手机设置-连接-接入点 连接名称: "3gnet" 数据承载方式: "分组数据" 连接点名称: ...
  • 多秤称重管理系统说明书
    多秤称重管理系统 操作说明书 目录 一. 上位机软件操作............................................................................................ ...
  • 软件工程毕业论文
    目 第一章 第二章录绪论............................................................................................1需求分析........... ...
  • 平板电脑怎么连接网络
    平板电脑怎么连接网络 新手很多都不懂得平板电脑如何用wifi上网,其实该原理与普通笔记本无线上网原理相 同.有热点的地方就可以上网,现在一般公共场所都能搜索到很多无线信号,但一般的信号都加密码需要密码才可以上网,不过现在很多公共场很多地方也 ...
  • 求计算机账户与用户账户的区别与联系?
    在一个网络中用户和计算机都是网络的主体,两者缺一不可.拥有计算机账户是计算机接入Windows 2000和Windows NT网络的前提,拥有用户账户是用户登录到网络并使用网络资源的前提.因此,用户和计算机账户管理是Windows 2000 ...
  • 5 计算机系统验证报告
    现代中药论坛原创www.chinapat.com STP -验-S -047-00 计算机系统验证报告 第 1 页 共 47 页 1 概述: 计算机系统位于我公司提取一车间二楼中控室,适用于现代化提取车间所有设备的指令.监控.控制运行.本设 ...
  • 无线路由器如何设置
    KW5813 ADSL 无线宽带路由 用户手册 User Manual 商标.版权声明 本产品的所有组成部分,包括配件和软件在内,受版权保护,未经许可,不得任意仿制.拷贝.誊抄或转译.本手册所提到的产品规格和资讯仅供参考,如有内容更新,恕不 ...
  • 金融网络安全知识手册
    金融网络安全知识手册 一.常见安全风险 (一)网络钓鱼 网络钓鱼是指不法分子通过大量发送声称来自于银行或其他知名机构的欺骗性垃圾邮件或短信.即时通讯信息等,引诱收信人给出敏感信息(如用户名.口令.帐号 ID 或信用卡详细信息),然后利用这些 ...
  • 移动app测试项目实践
    移动互联网APP 测试流程及测试点 1 APP测试基本流程 1.1流程图 仍然为测试环境 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间.正 ...
  • 个人电子邮件数字证书
    (一)配置使用Outlook Express [实训目的] 通过本次实训,能够对常用客户端邮件软件Outlook Express 6.0进行配置,掌握使用客户端软件收发电子邮件的方法. [实训内容与步骤] (1)双击Outlook Expr ...