西安电子科技大学通信工程学院课程设计Word文档格式.docx

上传人:b****6 文档编号:16313261 上传时间:2022-11-22 格式:DOCX 页数:28 大小:27.73KB
下载 相关 举报
西安电子科技大学通信工程学院课程设计Word文档格式.docx_第1页
第1页 / 共28页
西安电子科技大学通信工程学院课程设计Word文档格式.docx_第2页
第2页 / 共28页
西安电子科技大学通信工程学院课程设计Word文档格式.docx_第3页
第3页 / 共28页
西安电子科技大学通信工程学院课程设计Word文档格式.docx_第4页
第4页 / 共28页
西安电子科技大学通信工程学院课程设计Word文档格式.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

西安电子科技大学通信工程学院课程设计Word文档格式.docx

《西安电子科技大学通信工程学院课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《西安电子科技大学通信工程学院课程设计Word文档格式.docx(28页珍藏版)》请在冰豆网上搜索。

西安电子科技大学通信工程学院课程设计Word文档格式.docx

扫描键值,返回值

start

初始化8255

产生随机数,存入缓存

扫描键盘,将扫描到的键值存

入缓存,超时则标记-1

比较随机数和键值统计正确值

数码管显示评分等级

end

存于BL。

CALLFARPTRCMPNUM;

比较数值。

INCDI;

读取下一个随机数。

LOOPSTEP2;

循环四次逐个键值扫描,比较。

STEP3:

;

将成绩转换对应评分。

MOVAX,RESULT

CMPAL,4

JENICE

CMPAL,3

JEGOOD

CMPAL,2

JEPASS

FAIL:

成绩小于2输出FAIL。

MOVAH,0FH

MOVBUF[0],AH

MOVAH,0AH

MOVBUF[1],AH

MOVAH,1H

MOVBUF[2],AH

MOVBUF[3],AH

JMPSTEP4

PASS:

成绩为2输出PASS。

MOVAH,21H

MOVAH,5H

GOOD:

成绩为3输出GOOD。

MOVAH,6H

MOVAH,22H

MOVAH,0H

NICE:

成绩为4输出NICE。

MOVAH,10H

MOVAH,0CH

MOVAH,0EH

STEP4:

MOVCX,9000

STP5:

CALLFARPTRDISPLAY;

显示评分。

LOOPSTP5;

闪烁维持评分显示。

MOVAH,4CH

INT21H

CODE1SEGMENT

ASSUMECS:

CODE1

RDNUMPROCFAR

PUSHAX

PUSHBX

PUSHCX

PUSHDX

PUSHDI;

寄存器保护。

DO1:

MOVAH,2CH;

2CH号功能调用,

取系统时间:

DL存放毫秒

MOVAL,DL;

将毫秒值除以5,调整随机偏移量的取值在0-4之间。

MOVAH,0

MOVBL,5

DIVBL;

AH是一个0-4的随机数去查询伪随机表。

RDNUM

RET

获取系统时间产生随机数

随机数查表获得伪随机序列

序列依次载入BUF

LEADI,TABLE3

RDSCAN:

MOVAL,[DI];

将随机表内容放入AL。

INCDI

指向转换表下一个查找字节。

CMPAL,AH;

比较AL,AH。

JNZRDSCAN;

不等则继续查找。

MOVAL,[DI-1];

相等则开始查表对BUF赋值。

MOVBUF[0],AL

MOVAL,[DI+1]

MOVBUF[1],ALMOVAL,[SI+3]MOVBUF[2],ALMOVAL,[SI+5]MOVBUF[3],AL

POPDI

POPDX

POPCX

POPBX

POPAX

RET;

返回。

RDNUMENDPCODE1ENDS

CODE2SEGMENT

CODE2

DISPLAYPROCFAR

PUSHDI

PUSHSI;

MOVCX,4;

循环显示4个数码管。

LEADI,BUF;

DI指向输入的数据。

MOVAH,00001000B;

由左至右显示。

DO2:

MOVBL,[DI];

将输入数据放入BL。

LEASI,TABLE2;

SI指向由BUF

到LED数码管的转换表。

MOVDX,0EE00H;

DX指向A口地址。

MOVAL,0FFH;

显示为空。

将AL内容显示。

DO3:

MOVBH,[SI];

将转换表内容放入BH。

MOVDH,0FFH

INCSI

INCSI;

CMPBL,BH;

比较BL,BH。

JNZDO3;

在转换表中查找对应值。

MOVDX,0EE01H;

将DX指向B口。

MOVAL,AH;

给AL赋值(应显示那个数码管。

控制哪个管显示。

将DX指向A口。

MOVAL,[SI-1];

查找到的数码管值写入AL。

OUTDX,AL

DELAY:

维持显示,使数码管数据显示清晰。

MOVAX,200

REP1:

用两个循环来控制时延。

MOVCX,1000

REP2:

CX=4

随机数查表转换

8255输出待显值

时延,维持显示

更新待显值和数码管

CX=0?

CX-1

DISPLAY

LOOPREP2

DECAX

CMPAX,0

JNZREP1;

AX不为0继续循环。

RORAH,1;

循环左移。

更换下一个显示数据。

LOOPDO2;

POPSI

DISPLAYENDPCODE2ENDS

CODE3SEGMENT

CODE3

SCANNUM1PROCFAR

寄存器保护,

将BX作为参数传递的方式,不压栈。

MOVCX,SCANNUM;

控制扫描循环次数。

SCANLOOP1:

调用DISPLAY显示。

MOVAL,00001111B

MOVDX,0EE05H

ANDAL,LED

74L374口高位置零。

MOVDX,0EE02H;

控制C口。

INAL,DX;

将C口内容读到AL。

ANDAL,00001111B;

取出AL低四位。

CMPAL,00001111B;

判断是否有键按下(无键按下时为全1。

JESCANLOOP3;

无键值时跳转。

MOVAH,11101111B;

扫描第一行。

SCANLOOP2:

有键按下则开始扫描。

MOVDX,0EE02H

INAL,DX

JNESCANLOOP4;

有则译键码。

ROLAH,1;

AH左移读取下一行。

CMPAH,11111110B;

循环四次,各行扫完结束?

JNZSCANLOOP2;

没有则进行下一次扫描。

SCANLOOP3:

LOOPSCANLOOP1

MOVBL,0FFH;

超时标记。

JMPSCANLOOP7;

循环结束,跳出扫描。

SCANLOOP4:

键值查表。

SCAN

调用DISPLAY,显示

行输出全0

列输入值

=1111?

行输出初值AH=11101111

行输出AH

AH左环移

4行扫描完否?

N

Y

调用DISPLAY,消抖

读入列值

获得键值

将键值译码放入BL

DE→CX

BL=-1

(CX-1→CX

ANDAH,0F0H;

AH带有行号特征,AND后行特征位为0。

MOVBL,AL

ORBL,AH;

行列OR获得键值。

MOVDI,OFFSETTABLE1;

获取键值对应表的地址。

SCANLOOP5:

键值和随机数映射。

MOVBH,[DI]

键值和查表比较。

JNZSCANLOOP5

MOVBL,[DI-1];

查到值放入BL。

SCANLOOP6:

调用显示。

ANDAL,00001111B

判断按键是否松开。

JNESCANLOOP6;

没有继续监听。

SCANLOOP7:

消抖。

SCANNUM1ENDP

CODE3ENDS

CODE4SEGMENT

CODE4

CMPNUMPROCFAR

寄存器压栈保护。

MOVBH,[DI];

BH装载随机数,BL装载键值。

CHANGE1:

键值映射范围调整。

MOVAL,BL

MOVAH,0;

数值载入AX。

MOVBL,4;

除以4。

DIVBL

MOVDL,AH;

余数载入DL。

CHANGE2:

随机数映射范围调整。

MOVAL,BH

SUBAL,10H;

将之前加上的10H减除。

MOVDH,AH;

余数载入DH。

CMPDL,DH

JNZWRONG1;

不等则报错。

MOVCX,RESULT

INCCX

MOVRESULT,CX;

正确则计数。

JMPEND1

WRONG1:

MOVDL,07H;

按键出错后主板上的蜂鸣器报警。

MOVAH,02H;

调用系统报错。

CMPNUM

BX载入随机数和键值

取余将值与四方向对应

比较随机数与键值

报错

相等?

成绩加1

INT21HEND1:

POPSIPOPDX

POPCXRET

CMPNUMENDPCODE4ENDS

8255硬件原理及电路原理图一与CPU连接部分

8255能并行传送8位数据,所以其数据线为8根D0~D7。

由于8255具有3个通道A、B、C,所以只要两根地址线就能寻址A、B、C口及控制寄存器,故地址线为两根A0~A1。

此外CPU要对8255进行读、写与片选操作,所以控制线为片选、复位、读、写信号。

各信号的引脚编号如下:

(1数据总线DB:

编号为D0~D7,用于8255与CPU传送8位数据。

(2地址总线AB:

编号为A0~A1,用于选择A、B、C口与控制寄存器。

(3控制总线CB:

片选信号、复位信号RST、写信号、

读信号。

当CPU要对8255进行读、写操作时,必须先向8255发片选信号选中8255芯片,然后发读信号或写信号对8255进行读或写数据的操作。

二与外设接口部分

根据定义,8255有3个通道A、B、C与外设连接,每个通道又有8根线与外设连接,所以8255可以用24根线与外设连接,若进行开关量控制,则8255可同时控制24路开关。

各通道的引脚编号如下:

(1A口:

编号为PA0~PA7,用于8255向外设输入输出8位并行数据。

(2B口:

编号为PB0~PB7,用于8255向外设输入输出8位并行数据。

(3C口:

编号为PC0~PC7,用于8255向外设输入输出8位并行数据,当8255工作于应答I/O方式时,C口用于应答信号的通信。

三控制器

8255将3个通道分为两组,即PA0~PA7与PC4~PC7组成A组,PB0~PB7与PC0~PC3组成B组。

如图7.5所示,相应的控制器也分为A组控制器与B组控制器,各组控制器的作用如下:

(1A组控制器:

控制A口与上C口的输入与输出。

(2B组控制器:

控制B口与下C口的输入与输出。

当向A1=1,A0=1的端口寄存器(即控制寄存器发送D7=1的控制字时,其作用为方式控制字,各个位的含义如图所示

74LS374硬件原理及电路原理图

74LS374的管脚图如图:

74LS374作为八上升沿D触发器,主要端口的含义:

D0~D7数据输入端

OE三态允许控制端(低电平有效CP时钟输入端O0-O7输出端电路接线如下:

8255A

PA4

PA5

PA6

PA7

PB7

PB6

PB5

PB4

PB3

PA3

PA2

PA1

PA0

PC7

PC6

PC5

PC4

PC3

PC2

PC1

PC0

PB0

PB1

PB2

+5V

1

2

3

456789

1abc

d

e

fgDp

COM

5afb

gCOM

Dp

cde74LS374

D7

D6

D5

D4

D0

D1

D2

D3COM4

COM

COM3

COM2

COM1COMCOM0

D6D7a

bcdefg

Dp

COM0COM1COM2

COM3

COM4COM5

三.其它技术要点

LED数码显示器扩展:

字型和字型码对应:

0,0C0H,01H,0F9H,05H,92H,06H,82H,0AH,88H,0CH,0C6H,0DH,0A1H,0EH,86H,0FH,84H,21H,8CH,22H,0A3H,10H,0C8H,11H,0F0H,12H,0C1H,13H,0C6H,14H,0F7H,15H,0CFH,16H,0FEH,17H,0F9H。

其中21H,22H代表P和O。

10H-17H

表示,

,

,,,。

动态显示原理:

建立显示缓冲区BUF:

存放字形代码,由运算程序写入BUF显示子程序DISPLAY动态扫描显示:

①关显示器:

位选信号无效(全0②送字形代码③送位选信号

④当前位亮2ms左右⑤重复①~④亮下一位显示子程序DISPLAY:

调用一次扫描6位,约12ms每秒调用24次左右DISPLAY可用作延时

矩阵键盘的扩展:

键盘采用行输入列输出的方式进行控制,输出不同的数值,让不同的行生效,通过列输入判断列数值,把输出数据和输入数据组合起来计算键值。

完成按键的确认。

行输出值列输入值11101111无键按下1110‘0’1101‘1’1011‘2’0111‘3’11011111无键按下1110‘4’

1101‘5’1011‘6’0111‘7’1011……键值转换:

采用查询方式获得键值,建立了TABLE1存储对应键值和特征值:

TABLE1DB11101110B,0,11101101B,01H,11101011B,02H,...

键盘的消除抖动处理:

当按键被按下时会引起抖动,抖动时间不超过15ms。

a

bc

COMafb

gCOMDp

cde引脚图

......

abcdefg

.共阳极

按键按下

前沿抖动

后沿抖动

处理的方法是:

(1当某按键被按下后,调用DISPLAY子程序,前沿消抖

(2识别按键是否抬起

(3按键抬起时也应消除抖动

随机序列生成:

系统调用产生随机时间值,在循环调用时数值有很大的相关性,随机性得不到保证。

采用伪随机码列表查询的方式由随机时间值查询序列获得随机序列,保证了随机值的不重复性。

四.心得体会:

通过本次设计,我们复习了微机原理与接口技术的相关知识,熟悉了8255,74LS374的相关技术,加深了对于汇编的理解和运用,掌握矩阵键盘和显示接口的硬件的设计方法,掌握键盘扫描程序和显示程序的编程方法,无论是软件还是硬件的相关方面,都有所收获。

由于设计的工作量比较大,代码较长,使得我们形成了工作规划的习惯与分治策略:

将每个小功能模块独立以便于维护和可读性,同时还加深了团队协作能力和沟通技巧。

实践出真知。

我们虽然学习过微机原理与接口技术,但是时间久远,有点陌生了。

通过本次设计,自己查询资料,自己写代码并维护,一个小小的失误都导致运行出错,由此每一个程序的错误都记忆深刻,在设计过程中必须万分谨慎,牢记每个知识点,这比书本上告诉我们的要来的高效得多。

最后,感谢在本次设计帮助过我们的老师,同学。

补充:

完整代码

DATASEGMENT

BUFDB4DUP(0;

存储随机数。

TABLE1DB

11101110B,0,11101101B,01H,11101011B,02H,11100111B,03H,11011110B,04H,11011101B,05H,11011011B,06H,11010111B,07H

DB

10111110B,08H,10111101B,09H,10111011B,0AH,10110111B,0BH,01111110B,0CH,01111101B,0DH,01111011B,0EH,01110111B,0FH;

键值对应表。

TABLE2DB0,0C0H,01H,0F9H,05H,92H,06H,82H,0AH,88H,0CH,0C6H,0DH,0A1H,0EH,86H,0FH,8EH

21H,8CH,22H,0A3H,10H,0C8H,11H,0F0H,12H,0C1H,13H,0C6H,14H,0F7H,15H,0CFH,16H,0FEH,17H,0F9H;

键值对应显示表。

TABLE3DB0,17H,1,11H,2,13H,3,15H,4,10H,5,12H,6,14H,7,16H;

定义伪随机表

SCANNUMDW9000;

定义扫描次数。

RESULTDW0;

定义成绩。

LEDDB11111010B

DATAENDS

STACKSEGMENTSTACK

DW256DUP(?

定义堆栈,预留256个单元。

TOPLABELWORD;

标记栈顶。

STACKENDS

CODESEGMENT

CODE,DS:

DATA,SS:

STACK

START:

工作方式状态控制字,表示方式0,端口C输出。

调用RDNUM生成随机数,存储于BUF。

MOVCX,4

STEP2:

扫描键值,返回值存于BL。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 自我管理与提升

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

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