计算机控制课程设计文档格式.docx

上传人:b****1 文档编号:400365 上传时间:2023-04-28 格式:DOCX 页数:21 大小:199.02KB
下载 相关 举报
计算机控制课程设计文档格式.docx_第1页
第1页 / 共21页
计算机控制课程设计文档格式.docx_第2页
第2页 / 共21页
计算机控制课程设计文档格式.docx_第3页
第3页 / 共21页
计算机控制课程设计文档格式.docx_第4页
第4页 / 共21页
计算机控制课程设计文档格式.docx_第5页
第5页 / 共21页
计算机控制课程设计文档格式.docx_第6页
第6页 / 共21页
计算机控制课程设计文档格式.docx_第7页
第7页 / 共21页
计算机控制课程设计文档格式.docx_第8页
第8页 / 共21页
计算机控制课程设计文档格式.docx_第9页
第9页 / 共21页
计算机控制课程设计文档格式.docx_第10页
第10页 / 共21页
计算机控制课程设计文档格式.docx_第11页
第11页 / 共21页
计算机控制课程设计文档格式.docx_第12页
第12页 / 共21页
计算机控制课程设计文档格式.docx_第13页
第13页 / 共21页
计算机控制课程设计文档格式.docx_第14页
第14页 / 共21页
计算机控制课程设计文档格式.docx_第15页
第15页 / 共21页
计算机控制课程设计文档格式.docx_第16页
第16页 / 共21页
计算机控制课程设计文档格式.docx_第17页
第17页 / 共21页
计算机控制课程设计文档格式.docx_第18页
第18页 / 共21页
计算机控制课程设计文档格式.docx_第19页
第19页 / 共21页
计算机控制课程设计文档格式.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

计算机控制课程设计文档格式.docx

《计算机控制课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《计算机控制课程设计文档格式.docx(21页珍藏版)》请在冰点文库上搜索。

计算机控制课程设计文档格式.docx

顺序显示9、8、7、……、1、0;

3.“闭幕式”:

从两边向中间逐次点亮8个灯;

4.自行设计两种显示效果;

5.通过键盘选择,实现多种效果的组合。

1.3总体设计

利用并行接口芯片8255PA口、PB口控制8x8点阵LED的行和列,PC口的低四位、高四位分别控制4x4键盘行和列。

按1键开始“开幕式”表演:

按下2键开始“闭幕式”表演:

按下3键开始“风车”表演:

风车转动;

按下4键开始“烟花”表演:

烟花开放按下5键启动“倒计时”功能:

按下6键:

结束。

同时实现按键转跳功能,也就是在表演过程中,按下其它键,立即转跳显示其它表演。

程序中需要预先填入要输出数字9—0、烟花、风车图的字模,由于需要改变方向输出,不同输出所需的字模也不一样,故需要多种字模。

LED点阵显示图形的原理是:

每次只输出一列,8列都输出之后才将自摸移动一列,重新按列输出:

每次变化的时间非常短,肉眼无法识别出来,因而以为显示的是整个图形。

控制显示速度的变化实际上就是控制每列输出后延迟的时间。

2硬件设计

2.1硬件构成

本次设计点阵LED显示需要的硬件模块有8x8点阵LED、4x4键盘,可编程并行接口芯片8255等,下面简要介绍相关芯片:

8x8点阵LED单元

该单元提供一个8X8的点阵LED显示模块,点阵LED的行列控制已经连接好。

行控制为R1~R8,列控制为L1~L8。

其线路连接如图1所示。

图1点阵LED显示单元

8255单元

该单元提供一片开放的并口控制器8255,用于学习并行接口8255的编程方法。

其线路连接如图2所示

图28255单元

4x4键盘单元

该单元提供4X4的小键盘阵列及4位七段数码管,电路连接为扫描电路形式。

其线路连接如图3所示。

图3键盘及数码管显示单元

2.2硬件连线图

TD-PID+实验板上连接图如图4所示:

图4TD-PID+实验板上连线图

将系统总线和8255的数据总线相连,利用并行接口芯片8255PA口、PB口作为输出口,分别于点阵LED的列控制L1—L8、行控制R1—R8相连,控制LED的行和列,PC口的低四位、高四位分别控制4x4键盘行X1—X4和列Y1—Y4。

其它8255的片选端CS、A0、A1分别接系统总线的IOY0、XA2、XA3。

3系统软件设计

3.1系统软件总述

本次设计采用的语言为汇编语言,大量使用了模块化程序,所有功能都能通过调子程序实现。

点阵LED显示系统设计的软件部分由主程序、烟火表演1子程序、烟火表演2子程序、开幕式子程序、闭幕式子程序、数字倒计时程序子程序、显示子程序、以及延时子程序1和2组成。

在平时编程中,用C语言编写程序有利于实现较复杂的算法,但是汇编语言程序则具有较高的效率且容易精细计算程序运行的时间。

不论是什么语言,始终是要被电脑转换成C语言进行执行的。

所以,在此次设计中,编程采用的是汇编语言,整个程序层次有序,结构清晰,易于维护,完整程序见程序代码。

3.2I/O口分配

8255I/O口分配如表1所示

表1

I/O口

IOY0

MY8255_A

MY8255_B

MY8255_C

MY8255_MODE

分配

9800H

IOY0+00H*4

IOY0+01H*4

IOY0+02H*4

IOY0+03H*4

3.3软件流程图

系统流程图如图5所示:

图5系统流程图

3.4程序代码

IOY0EQU9800H

MY8255_AEQUIOY0+00H*4

MY8255_BEQUIOY0+01H*4

MY8255_CEQUIOY0+02H*4

MY8255_MODEEQUIOY0+03H*4

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

DATA1SEGMENT

INRDB0;

存放列键值单元

CS1CDW?

IP1CDW?

CNTDB0;

计数单元

NUMDB0

FIRE1DB0C1H,63H,36H,1CH,038H,6CH,0C6H,83H;

风车1

DB10H,18H,18H,07FH,0FEH,18H,18H,08H

DB0C1H,63H,36H,1CH,038H,6CH,0C6H,83H

MOVEYANHUADB81H,00H,00H,00H,00H,00H,00H,81H;

烟火2

DB81H,42H,00H,00H,00H,00H,42H,81H

DB00H,00H,24H,00H,00H,24H,00H,00H

DB00H,00H,00H,18H,18H,00H,00H,00H

DB81H,00H,00H,00H,00H,00H,00H,81H

OPEN1DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;

开幕式字段

OPEN2DB0FFH,0FFH,0FFH,0H,0H,0FFH,0FFH,0FFH

OPEN3DB0FFH,0FFH,0H,0H,0H,0H,0FFH,0FFH

OPEN4DB0FFH,0H,0H,0H,0H,0H,0H,0FFH

OPEN5DB0H,0H,0H,0H,0H,0H,0H,0H

CLOSE1DB0H,0H,0H,0H,0H,0H,0H,0H;

闭幕式字段

CLOSE2DB0FFH,0H,0H,0H,0H,0H,0H,0FFH

CLOSE3DB0FFH,0FFH,0H,0H,0H,0H,0FFH,0FFH

CLOSE4DB0FFH,0FFH,0FFH,0H,0H,0FFH,0FFH,0FFH

CLOSE5DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH

NUMTABLEDB00H,00H,4FH,49H,49H,49H,7FH,00H;

"

9"

0

DB00H,00H,4FH,49H,49H,49H,7FH,00H;

0倒计时字段

DB00H,00H,7FH,49H,49H,49H,7FH,00H;

8"

1

DB00H,00H,01H,01H,79H,05H,03H,00H;

7"

2

DB00H,00H,7FH,49H,49H,49H,79H,00H;

6"

3

DB00H,00H,4FH,49H,49H,49H,79H,00H;

5"

4

DB00H,00H,1FH,10H,10H,10H,7FH,00H;

4"

5

DB00H,00H,49H,49H,49H,49H,7FH,00H;

3"

6

DB00H,00H,79H,49H,49H,49H,4FH,00H;

2"

7

DB00H,00H,00H,00H,42H,7FH,40H,00H;

1"

8

DB00H,00H,7FH,41H,41H,41H,7FH,00H;

0"

9

DATA1ENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA1,SS:

STACK1

START:

MOVAX,DATA1

MOVDS,AX

PUSHDS

MOVDX,MY8255_MODE;

初始化8255,设置A,B和C低四位为输出,C口高四位为输入

MOVAL,88H

OUTDX,AL

CALLSCAN;

扫描有无按键按下,有则跳出,无则继续

;

//////////////风车/////////////////////////////////////

YANHUO1PROCNEAR

MOVBX,3H;

风车表演循环次数

S1:

MOVCNT,0

LEADI,FIRE1

MOVCX,4

Y1:

MOVSI,DI

CALLDISP

扫描有无按键按下,有则跳出,无则继续

INCCNT

CMPCNT,8H

JEY2

JMPY1

Y2:

ADDDI,8

LOOPY1

DECBX

MOVCX,BX

LOOPS1

MOVDX,MY8255_B;

清8255B口

MOVAL,0H

OUTDX,AL

MOVINR,0H

RET

YANHUO1ENDP

/////////////烟火////////////////////////////////////

YANHUO2PROCNEAR

循环次数

S2:

LEADI,MOVEYANHUA

MOVCX,8

M1:

CALLSCAN;

JEM2

JMPM1

M2:

ADDDI,8

LOOPM1

LOOPS2

YANHUO2ENDP

////////////////开幕式///////////////////////////////////

OPENINGPROCNEAR

MOVCX,6H

T1:

LEASI,OPEN1

CALLDISP

LOOPT1

T2:

LEASI,OPEN2

LOOPT2

T3:

LEASI,OPEN3

LOOPT3

T4:

LEASI,OPEN4

LOOPT4

T5:

LEASI,OPEN5

LOOPT5

MOVINR,0

RET

OPENINGENDP

///////////////闭幕式////////////////////////////////////

CLOSINGPROCNEAR

TT1:

LEASI,CLOSE1

LOOPTT1

TT2:

LEASI,CLOSE2

LOOPTT2

TT3:

LEASI,CLOSE3

LOOPTT3

TT4:

LEASI,CLOSE4

LOOPTT4

TT5:

LEASI,CLOSE5

LOOPTT5

CLOSINGENDP

/////////////////数字倒计时程序/////////////////////////////

TIMEPROCNEAR

MOVCNT,0

LEADI,NUMTABLE

MOVCX,11

W1:

JEW2

JMPW1

W2:

ADDDI,8

LOOPW1

RET

TIMEENDP

///////////////键盘扫描子程序////////////////////////

SCANPROCNEAR

XORBX,BX;

列键值BL=0,行键值BH=0

MOVAL,0H;

C口低四位输出全为0

MOVDX,MY8255_C

MOVDX,MY8255_C;

读入C口高四位

INAL,DX

ANDAL,0F0H

CMPAL,0F0H

JEL;

C口高四位输入全为1,该列无键按下转L

CALLDELAY;

C口高四位输入非全1,该列有键按下调延时

MOVDX,MY8255_C

INAL,DX

ANDAL,0F0H

CMPAL,0F0H

JEL

MOVCL,0EH;

该列有键按下,从第一行开始查找

R1:

MOVAL,CL;

使某列为0

MOVDX,MY8255_C

JNER2;

该列有键按下

MOVAL,BL;

该列无键按下,列键值加4

ADDAL,4

DAA

MOVBL,AL;

BL列键值

SHLCL,1;

准备查找下一列

CMPCL,0;

所有列未查找完转K1

JNER1

R2:

INCBH;

该列有键按下,行值加1

SHLAL,1;

行键移入CF

JCR2;

CF=1,该行无键按下转K2

CF=0,该行有键按下

ADDAL,BH;

键值=行键值+列键值

LEADI,INR;

存键值

MOV[DI],AL

JMPCOMP;

转键处理程序

L:

RET;

无键按下,跳出查询

COMP:

MOVAL,INR

CMPAL,1

JZDES1

CMPAL,2

JZDES2

CMPAL,3

JZDES3

CMPAL,4

JZDES4

CMPAL,5

JZDES5

CMPAL,6

JZDES6

JMPL

DES1:

CALLOPENING;

开幕式

JMPSCAN

DES2:

CALLCLOSING;

闭幕式

DES3:

CALLYANHUO1;

风车

JMPSCAN

DES4:

CALLYANHUO2;

烟花

DES5:

CALLTIME;

数字倒计时

JMPSCAN

DES6:

MOVDX,MY8255_B;

清8255B口,停止

OUTDX,AL

MOVAX,4C00H

INT21H

SCANENDP

/////////////////显示子程序///////////////////////////

DISPPROCNEAR

PUSHAX

PUSHBX

PUSHCX

PUSHDX

MOVDX,MY8255_B

MOVAL,0H

MOVBL,01H

MOVCX,8H

LOOP1:

MOVDX,MY8255_B

MOVAL,[SI]

MOVAL,BL

NOTAL

MOVDX,MY8255_A

ADDBL,BL

CALLDALLY

INCSI

LOOPLOOP1

POPAX

POPBX

POPCX

POPDX

DISPENDP

/////////////延时子程序1供显示子程序使用/////////////

DALLYPROCNEAR

PUSHAX

PUSHCX

MOVCX,03FH

D1:

MOVAX,2FFFH

D2:

DECAX

JNZD2

LOOPD1

POPAX

DALLYENDP

//////////////延时子程序2供去抖用////////////////////

DELAYPROCNEAR

MOVCH,20

DL1:

MOVCL,200

DL2:

DECCL

JNZDL2

DECCH

JNZDL1

DELAYENDP

////////////////结束/////////////////////////////

CODEENDS

ENDSTART

3.5程序结果部分显示

程序显示结果如下图所示

图6开幕式(闭幕式)图7烟花闪烁

4结束语

本报告主要介绍如何实现8x8点阵LED显示,硬件部分使用西安唐都科教仪器公司的TD-PID+实验系统,实验箱中的可编程并行接口芯片8255,8x8点阵LED,4x4键盘等连接组成点阵LED显示控制系统的基本电路。

软件部分采用了汇编语言编写程序代码,通过判断、跳转、循环等基本技术实现LED显示“开幕式”“闭幕式”的动态显示,倒计时0--9、风车和烟花等简单图形,并用4x4键盘控制“开幕式”“闭幕式”“风车”“烟花绽放”的控制时序。

在做实验过程中,LED点阵实现的硬件连接并不难,连线也很简单,只要熟悉芯片8255的引脚功能,并且注意一下4x4键盘的输出输入端口的连接就行。

在软件部分,程序是比较长比较烦,但是通过运用模板化思想,各个子程序逐个设计,然后通过嵌套连接,其实还是比较简单的,只要花些时间耐心看就很快能看懂。

为了减少程序代码,我们共用了一个延时程序,为了兼顾各个延时时间,开幕式的演示相对较短,倒计时也没有严格按照10秒倒计时的标准显示。

此外,对于4*4键扫描、编码及功能及地址转移程序的编写是,我们主要参考了所学课本中16*16键盘相关程序。

虽然仅仅只有一天时间的课程设计,但是在设计过程中,通过将在课堂上所学的专业理论知识与实际开发、动手实践有机统一结合起来,大大加深了对LED点阵显示的原理和方法的理解和认识,提高了专业技能。

在设计过程中,查阅了大量的资料,通过对理论的实践与应用,对计算机控制方面的知识有了更深入的理解和认识,扩展了知识面,开拓了视野,从一开始看到题目,选择课题,到课题分析、理论设计、线路图连接,全面了解和掌握了课题开发的基本方法和步骤。

同时,在实验室外,在自己电脑上也使用了MasmforWindows集成实验环境2011专业化软件模拟实验环境进行模拟调试等操作,通过对这些软件的应用,方便了在无开发板的基础上,能够正常的进行工作,扩展了对办公软件的应用。

这次课设对LED点阵显示和4*4键盘的原理与应用有了更加深入的认识;

编写较为复杂代码时,慢慢树立了层次化和模块化思想,总之,一句话:

收获良多,获益匪浅。

参考文献:

[1]杨鹏《计算机控制系统》机械工业出版社

[2]TD-PID+实验系统用户手册

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2