微机原理与接口技术 课程设计.docx

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

微机原理与接口技术 课程设计.docx

《微机原理与接口技术 课程设计.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术 课程设计.docx(33页珍藏版)》请在冰点文库上搜索。

微机原理与接口技术 课程设计.docx

微机原理与接口技术课程设计

摘要

霓虹灯主要是通过8255A对LED亮灭状态的控制,和8254定时/计数器的定时功能实现霓虹灯闪烁控制系统,外设是红、绿、黄三种颜色的发光二极管,在程序自动控制下,按照不同规律闪烁同时由数码管显示相应的闪烁方式。

关键字:

8255A8254LED数码管

 

一、设计的任务和要求

设计霓虹灯闪烁控制系统,是外设的红、绿、黄三种颜色的发光二极管,在开关的控制下或者在程序自动控制下,按照不同规律闪烁。

要求发光二极管的亮、灭变化有一定的规律;发光二极管变化规律要求有多种状态。

二、设计小组成员及分工

本次课设由冀任共同完成,在课设中遇到的问题四个人共同思考解决。

三、总体设计

1、8254用于定时:

定时/计数器0与定时器/计数器1共同构成100ms的定时器,确定执行相邻闪烁方式的间隔时间。

2.8255A用于控制LED的状态和数码管显示:

PA0接8254的输出,B口接数码管,显示对应的闪烁方式,C口输出控制LED的状态。

3、六种闪烁方式:

方式1:

从左向右依次点亮8个LED灯,数码管显示1

方式2:

从右向左依次点亮8个LED灯,数码管显示2

方式3:

从左向右依次点亮4个的红灯、2个黄灯和2个绿灯,数码管显示3

方式4:

从左向右两个两个的点亮8个LED灯,数码管显示4

方式5:

从两边向中间依次点亮8个LED灯,数码管显示5

方式6:

按红、绿、黄顺序点亮相同颜色的灯,数码管显示6

1、芯片介绍

(1)芯片8255A

8255A是具有3个8位并行I/O口3种工作方式的可编程并行接口芯片。

8255共有40个引脚,采用双列直插式封装。

D0--D7:

三态双向数据线,与单片机数据总线连接,用来传送数据信息。

CS:

片选信号线,低电平有效,表示芯片被选中。

RD:

读出信号线,低电平有效,控制数据的读出。

WR:

写入信号线,低电平有效,控制数据的写入。

Vcc:

+5V电源。

PA0--PA7:

A口输入/输出线。

PB0--PB7:

B口输入/输出线。

PC0--PC7:

C口输入/输出线。

RESET:

复位信号线。

A1、A0:

地址线,用来选择8255内部端口。

GND:

地线。

三种工作状态:

1)工作方式0:

这是8255A中各端口的基本输入/输出方式。

它只完成简单的并行输入/输出操作,CPU可从指定端口输入信息,也可向指定端口输出信息,如果三个端口均处于工作方式0,则可由工作方式控制字定义16种工作方式的组合。

2)工作方式1:

被称作选通输入/输出方式。

在这种工作方式下,数据输入/输出操作要在选通信号控制下完成。

3)工作方式2:

被称作带选通的双向传送方式。

8255A中只允许端口A处于工作方式2,可用来在两台处理机之间实现双向并行通信。

其有关的控制信号由端口C提供,并可向CPU发出中断请求信号。

(2)芯片8254

8254芯片是可编程定时/计数器芯片,片内有3个独立的16位计数器,每个计数器可编程设定为6中不同的工作方式。

8254的引脚图和引脚说明

8254芯片的工作方式:

8254芯片共有六种工作方式,分别对应与六种不同的用途。

1)方式0:

计数结束产生中断。

2)方式1:

可重触发单稳方式。

3)方式2:

分频器。

4)方式3:

方波发生器。

5)方式4:

软件触发计数。

6)方式5:

硬件触发计数。

2、硬件连接图

五、软件编程

1、软件流程图

N

Y

Y

(2)方式1

 

 

Y

N

 

 

(3)主程序

 

 

Y

N

 

 

 

2、汇编语言源程序

DATASEGMENT

IOPORTEQU0D880H-280H

IO8255AEQUIOPORT+280H

IO8255BEQUIOPORT+281H

IO8255CEQUIOPORT+282H

IO8255TEQUIOPORT+283H

IO82540EQUIOPORT+288H

IO82541EQUIOPORT+289H

IO8254KEQUIOPORT+28BH;地址

PBDB?

DATAENDS

STACKSEGMENTSTACK

STADW50DUP(?

TOPEQULENGTHSTA

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK;定义代码段

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVDX,IO8255T;8255控制字为81H,端口C低四位为输入

MOVAL,10000001B

OUTDX,AL

MOVDX,IO8255C;读端口C数据并保存

INAL,DX

MOVPB,AL

MOVDX,IO8255T;8255设控制字为90H

MOVAL,90H;(端口A输入,端口B和C输出)

OUTDX,AL

MOVDX,IO8254K;定时器0,方式三,先读写低八位,再读写高八位

MOVAL,36H

OUTDX,AL;输入时钟,1MHZ

MOVDX,IO82540

MOVAX,10000;初值10000,输出时钟周期10MS

OUTDX,AL

NOP

NOP

MOVAL,AH

OUTDX,AL

MOVDX,IO8254K;计数器1,方式0,只读写低八位

MOVAL,50H

OUTDX,AL

CHXU1:

MOVDX,IO8255B

MOVAL,06H

OUTDX,AL;数码管显示1

MOVCX,17;循环17次

MOVAL,00000001B;点亮L7灯

A:

CALLDELAY10;延时

MOVDX,IO8255C

OUTDX,AL

ROLAL,1;AL循环左移一位

LOOPA;循环是否结束?

没有结束,跳到A

MOVAL,00H;灯全灭

OUTDX,AL

MOVAH,01H;有无键入

INT16H

JNZppp

CHXU2:

MOVDX,IO8255B;数码管显示2

MOVAL,5BH

OUTDX,AL

MOVDX,IO82541

MOVAL,10;初值10,检测1秒

OUTDX,AL

DING2:

MOVDX,IO8255A;读入PA0值

INAL,DX

ANDAL,01H

JZDING2;8255的PA0=1停止计时

MOVCX,17;循环17次

MOVAL,10000000B;点亮L1灯

B:

CALLDELAY10;延时

MOVDX,IO8255C

OUTDX,AL

RORAL,1;AL循环右移一位

LOOPB;循环是否结束?

没有结束,跳到B

MOVAL,00H

OUTDX,AL;灯全灭

MOVAH,01H;有无键入

INT16H

JNZppp

CHXU3:

MOVDX,IO8255B;数码管显示3

MOVAL,4FH

OUTDX,AL

MOVDX,IO82541

MOVAL,10;初值10

OUTDX,AL

DING3:

MOVDX,IO8255A

INAL,DX

ANDAL,01H

JZDING3;8255的PA0=1停止计时

MOVCX,2;循环2次

C0:

PUSHCX

MOVDX,IO8255C

MOVAL,01H;左起第一展红灯亮

OUTDX,AL

CALLDELAY10

MOVAL,08H;左起第二展红灯亮

OUTDX,AL

CALLDELAY10

MOVAL,40H;左起第三展红灯亮

OUTDX,AL

CALLDELAY10

MOVAL,80H;左起第四展红灯亮

OUTDX,AL

CALLDELAY10

MOVAL,02H;左起第一展黄灯亮

OUTDX,AL

CALLDELAY10

MOVAL,10H;左起第二展黄灯亮

OUTDX,AL

CALLDELAY10

MOVAL,04H;左起第一展绿灯亮

OUTDX,AL

CALLDELAY10

MOVAL,20H;左起第二展绿灯亮

OUTDX,AL

CALLDELAY10

POPCX

MOVAH,01H;有无键入

INT16H

JNZppp

LOOPC0

MOVAL,00H;灯全灭

OUTDX,AL

CHXU4:

MOVDX,IO8255B;数码管显示4

MOVAL,66H

OUTDX,AL

MOVDX,IO82541

MOVAL,10;初值10

OUTDX,AL

DING4:

MOVDX,IO8255A;读入PA0值

INAL,DX

ANDAL,01H

JZDING4;8255的PA0=1停止计时

MOVCX,9;循环9次

MOVAL,00000011B;点亮L6,L7灯

D:

PUSHCX

CALLDELAY10;延时

MOVDX,IO8255C

OUTDX,AL

MOVCL,2

ROLAL,CL;AL左移两位

POPCX

LOOPD;循环若没有结束,跳到D

MOVAL,00H;灯全灭

OUTDX,AL

MOVAH,01H;有无键入

INT16H

JNZppp

CHXU5:

MOVDX,IO8255B;数码管显示5

MOVAL,6DH

OUTDX,AL

MOVDX,IO8254K

MOVAL,50H

OUTDX,AL;计数器1,方式0,只读写低8位

MOVDX,IO82541

MOVAL,10;初值100

OUTDX,AL

DING5:

MOVDX,IO8255A;读入PA0值

INAL,DX

ANDAL,01H

JZDING5

MOVCX,2

E:

PUSHCX

MOVDX,IO8255C

MOVAL,81H;L7,L0亮

OUTDX,AL

CALLDELAY10

MOVAL,42H;L6,L1亮

OUTDX,AL

CALLDELAY10

MOVAL,24H;L5,L2亮

OUTDX,AL

CALLDELAY10

MOVAL,18H

OUTDX,AL

CALLDELAY10

POPCX

MOVAH,01H;有无键入

INT16H

JNZppp

LOOPE;循环若没有结束,跳到E

MOVAL,00H

OUTDX,AL

CHXU6:

MOVDX,IO8255B;数码管显示6

MOVAL,7DH

OUTDX,AL

MOVDX,IO8254K

MOVAL,50H

OUTDX,AL;计数器1,方式0,只读写低8位

MOVDX,IO82541

MOVAL,10;初值100

OUTDX,AL

DING6:

MOVDX,IO8255A;读入PA0值

INAL,DX

ANDAL,01H

JZDING6

MOVCX,2

F:

PUSHCX

MOVDX,IO8255C

MOVAL,01H;L7亮

OUTDX,AL

CALLDELAY10

MOVAL,04H;L5亮

OUTDX,AL

CALLDELAY10

MOVAL,10H;L3亮

OUTDX,AL

CALLDELAY10

MOVAL,40H;L1亮

OUTDX,AL

CALLDELAY10

MOVAL,02H;L6亮

OUTDX,AL

CALLDELAY10

MOVAL,08H;L4亮

OUTDX,AL

CALLDELAY10

MOVAL,20H;L2亮

OUTDX,AL

CALLDELAY10

MOVAL,80H;L0亮

OUTDX,AL

CALLDELAY10

POPCX

MOVAH,01H;有无键入

INT16H

JNZppp

LOOPF;循环若没有结束,跳到F

MOVAL,00H;灯全灭

OUTDX,AL

CALLDELAY10

JMPCHXU1;循环致信程序

PPP:

MOVDX,IO8255B;数码管熄灭

MOVAL,00H

OUTDX,AL;退出DOS

MOVAX,4C00H

INT21H

DELAY1PROCNEAR

PUSHCX

MOVCX,0FFFFH

CCC:

LOOPCCC

POPCX

RET

DELAY1ENDP

DELAY10PROCNEAR

PUSHAX

PUSHCX

MOVCX,0800H

UUU:

CALLDELAY1

LOOPUUU

POPCX

POPAX

RET

DELAY10ENDP

CODEENDS

ENDSTART

六、程序运行的结果

程序按照以下四种工作方式依次执行,当有按键按下时,执行完此时正在执行的方式就停止。

方式1:

从左向右依次点亮8个LED灯,数码管显示1

方式2:

从右向左依次点亮8个LED灯,数码管显示2

方式3:

从左向右依次点亮4个的红灯、2个黄灯和2个绿灯,数码管显示3

方式4:

从左向右两个两个的点亮8个LED灯,数码管显示4

方式5:

从两边向中间依次点亮8个LED灯,数码管显示5

方式6:

按红、绿、黄顺序点亮相同颜色的灯,数码管显示6

七、设计过程中出现的问题及解决方法

1、循环与任意键结束问题的解决。

起初写好的程序实现不了按任意键结束和循环,本来是执行完闪烁方式4后判断是否有键按下,没有继续循环执行,有退出。

然后在每种工作方式之后都加了判断是否有键按下的程序,就可以实现按意见结束的功能,并在无键按下时一直循环。

2、两个数码管同时显示,将其S0端口接地,便实现了其单独的显示。

八、设计总结

通过这次课程设计我们学到很多。

使我们的学习能力有所提高,但是由于我们的课设还是比较简单,时间也比较紧,所以我们自己要是有机会和时间,一定要做其他一些感兴趣的东西,使自己对硬件语言编程掌握的更灵活一些。

九、程序清单

DATASEGMENT

IOPORTEQU0D880H-280H

IO8255AEQUIOPORT+280H

IO8255BEQUIOPORT+281H

IO8255CEQUIOPORT+282H

IO8255TEQUIOPORT+283H

IO82540EQUIOPORT+288H

IO82541EQUIOPORT+289H

IO8254KEQUIOPORT+28BH;地址

PBDB?

DATAENDS

STACKSEGMENTSTACK

STADW50DUP(?

TOPEQULENGTHSTA

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK;定义代码段

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVDX,IO8255T;8255控制字为81H,端口C低四位为输入

MOVAL,10000001B

OUTDX,AL

MOVDX,IO8255C;读端口C数据并保存

INAL,DX

MOVPB,AL

MOVDX,IO8255T;8255设控制字为90H

MOVAL,90H;(端口A输入,端口B和C输出)

OUTDX,AL

MOVDX,IO8254K;定时器0,方式三,先读写低八位,再读写高八位

MOVAL,36H

OUTDX,AL;输入时钟,1MHZ

MOVDX,IO82540

MOVAX,10000;初值10000,输出时钟周期10MS

OUTDX,AL

NOP

NOP

MOVAL,AH

OUTDX,AL

MOVDX,IO8254K;计数器1,方式0,只读写低八位

MOVAL,50H

OUTDX,AL

CHXU1:

MOVDX,IO8255B

MOVAL,06H

OUTDX,AL;数码管显示1

MOVCX,17;循环17次

MOVAL,00000001B;点亮L7灯

A:

CALLDELAY10;延时

MOVDX,IO8255C

OUTDX,AL

ROLAL,1;AL循环左移一位

LOOPA;循环是否结束?

没有结束,跳到A

MOVAL,00H;灯全灭

OUTDX,AL

MOVAH,01H;有无键入

INT16H

JNZppp

CHXU2:

MOVDX,IO8255B;数码管显示2

MOVAL,5BH

OUTDX,AL

MOVDX,IO82541

MOVAL,10;初值10,检测1秒

OUTDX,AL

DING2:

MOVDX,IO8255A;读入PA0值

INAL,DX

ANDAL,01H

JZDING2;8255的PA0=1停止计时

MOVCX,17;循环17次

MOVAL,10000000B;点亮L1灯

B:

CALLDELAY10;延时

MOVDX,IO8255C

OUTDX,AL

RORAL,1;AL循环右移一位

LOOPB;循环是否结束?

没有结束,跳到B

MOVAL,00H

OUTDX,AL;灯全灭

MOVAH,01H;有无键入

INT16H

JNZppp

CHXU3:

MOVDX,IO8255B;数码管显示3

MOVAL,4FH

OUTDX,AL

MOVDX,IO82541

MOVAL,10;初值10

OUTDX,AL

DING3:

MOVDX,IO8255A

INAL,DX

ANDAL,01H

JZDING3;8255的PA0=1停止计时

MOVCX,2;循环2次

C0:

PUSHCX

MOVDX,IO8255C

MOVAL,01H;左起第一展红灯亮

OUTDX,AL

CALLDELAY10

MOVAL,08H;左起第二展红灯亮

OUTDX,AL

CALLDELAY10

MOVAL,40H;左起第三展红灯亮

OUTDX,AL

CALLDELAY10

MOVAL,80H;左起第四展红灯亮

OUTDX,AL

CALLDELAY10

MOVAL,02H;左起第一展黄灯亮

OUTDX,AL

CALLDELAY10

MOVAL,10H;左起第二展黄灯亮

OUTDX,AL

CALLDELAY10

MOVAL,04H;左起第一展绿灯亮

OUTDX,AL

CALLDELAY10

MOVAL,20H;左起第二展绿灯亮

OUTDX,AL

CALLDELAY10

POPCX

MOVAH,01H;有无键入

INT16H

JNZppp

LOOPC0

MOVAL,00H;灯全灭

OUTDX,AL

CHXU4:

MOVDX,IO8255B;数码管显示4

MOVAL,66H

OUTDX,AL

MOVDX,IO82541

MOVAL,10;初值10

OUTDX,AL

DING4:

MOVDX,IO8255A;读入PA0值

INAL,DX

ANDAL,01H

JZDING4;8255的PA0=1停止计时

MOVCX,9;循环9次

MOVAL,00000011B;点亮L6,L7灯

D:

PUSHCX

CALLDELAY10;延时

MOVDX,IO8255C

OUTDX,AL

MOVCL,2

ROLAL,CL;AL左移两位

POPCX

LOOPD;循环若没有结束,跳到D

MOVAL,00H;灯全灭

OUTDX,ALMOVAH,01H;有无键入

INT16H

JNZppp

CHXU5:

MOVDX,IO8255B;数码管显示5

MOVAL,6DH

OUTDX,AL

MOVDX,IO8254K

MOVAL,50H

OUTDX,AL;计数器1,方式0,只读写低8位

MOVDX,IO82541

MOVAL,10;初值100

OUTDX,AL

DING5:

MOVDX,IO8255A;读入PA0值

INAL,DX

ANDAL,01H

JZDING5

MOVCX,2

E:

PUSHCX

MOVDX,IO8255C

MOVAL,81H;L7,L0亮

OUTDX,AL

CALLDELAY10

MOVAL,42H;L6,L1亮

OUTDX,AL

CALLDELAY10

MOVAL,24H;L5,L2亮

OUTDX,AL

CALLDELAY10

MOVAL,18H

OUTDX,AL

CALLDELAY10

POPCX

MOVAH,01H;有无键入

INT16H

JNZppp

LOOPE;循环若没有结束,跳到E

MOVAL,00H

OUTDX,AL

CHXU6:

MOVDX,IO8255B;数码管显示6

MOVAL,7DH

OUTDX,AL

MOVDX,IO8254K

MOV

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

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

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

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