微机原理课设霓虹灯闪烁控制系统Word格式文档下载.doc
《微机原理课设霓虹灯闪烁控制系统Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《微机原理课设霓虹灯闪烁控制系统Word格式文档下载.doc(30页珍藏版)》请在冰点文库上搜索。
3.2.2.2STATE1子程序………………………………………………………...14
3.2.2.3STATE2子程序………………………………………………………...15
3.2.2.4STATE3子程序………………………………………………………...16
3.2.2.5延时子程序DELAY10…………………………………………………...18
3.2.2.6显示子程序DISP…………………………………………………………19
第四章实验总结…………………………………………………………………………..20
4.1开关控制霓虹灯实验总结…………………………………………………………….20
4.2实验心得……………………………………………………………………………….20
参考文献……………………………………………………………………………………..21
附录…………………………………………………………………………………………..22
摘要:
霓虹灯是日常生活中最常见的灯饰,它装点了晚上,丰富了人们的生活。
通过汇编语言,实现霓虹灯的显示与闪烁,可以很方便的达到想要的效果。
本设计是利用微机原理中的汇编语言,并且以8255A芯片为核心来控制LED从而实现霓虹灯的不同变化,并从该课题设计中巩固我们所学的知识和锻炼我们的动手能力,为以后工作中动手,动脑奠定一定的基础
Abstract:
theneonlampindailylifeisthemostcommonlighting,decorateitintheevening,peoplelivearichlife.Throughtheassemblylanguage,toachievethedisplayofneonlightsandflashing,canbeveryconvenienttoachievethedesiredeffect.ThisdesignistheuseofMicrocomputerPrincipleandassemblylanguage,using8255AchipasthecoretocontroltheLEDsoastorealizetheneonlightsofdifferentchanges,andfromtheprojectdesigntoconsolidatewhatwehavelearnedandexerciseourability,forthefutureworktolayasolidfoundation,brains.
关键字:
霓虹灯程序8255A
Keywords:
Neonlampprogram8255A
第一章绪论
1.1设计题目简介:
设计霓虹灯闪烁控制系统,使外设的红、绿、黄3种颜色的发光二极管,在开关的控制或者在程序自动控制下,按照不同规律闪烁。
要求:
(1)要求发光二极管的亮、灭变化有一定的规律
(2)发光二极管变化规律要有多种状态
1.2设计背景
“微机与接口技术”是一门实践性和实用性都很强的课程,学习的目的在于应用。
本课程设计是自动化专业学生的一次较全面的的设计训练,是配合“微机与接口技术”课堂教学的最后一个重要的实践教学环节,它将起到巩固课堂和书本上所学的知识、加强综合能力、提高系统设计水平、启发创新思想的作用。
其基本目的是:
(1)培养理论联系实际的正确设计思路,训练综合运用已经学过的理论和实际知识去分析和解决实际问题的能力。
(2)帮助学生全面消化已学的相关课程内容,深刻理解微机原理与接口技术课程的内涵,从硬件的角度掌握微机的组成、接口部件的结构和彼此之间的联系,从软件的角度理解和应用微机系统的运行机制。
(3)进行基本技能训练。
例如编程、上机、调试硬件和软件系统。
课程设计的任务是使学生利用学校现有条件,自己动手设计完成一个典型的微机应用小系统。
我们小组选定的课程设计题目是:
霓虹灯
其设计目的主要为:
(1)进一步熟悉8255A并行接口的基本工作原理
(2)运用CES-86通用微机实验装置,了解键盘的基本结构,学会编写程序.
(3)在熟悉了小键盘的基础上,加上LED发光二极管的使用设计出绚丽闪耀的霓虹灯.
当然,虽然程序最后达到了预期控制要求,但是由于实际情况和理想情况存在差距,我知道还有很多地方有待改进,同时我还是个初学者,各方面肯定存在不足,如果老师发现了缺陷之处,请指出,我们一定会虚心接受。
1.3设计功能
外设的8个发光二极管在2个开关K1,K2的控制下按照不同的规律闪烁,同时在电脑屏幕上显示开关状态,二极管闪烁规律如下:
(1)开关状态为K1关,K2关时,前四灯同时亮,熄灭后,接着后四个同时亮,
并且在屏幕上显示“00STATEZERO”。
(2)开关状态为K1关,K2开时,8灯依次点亮,并且在屏幕上显示“01STATEOME”。
(3)开关状态为K1开,K2关时,从两侧向内依次同时点亮一个灯,并且在屏幕上显示“01STATETWO”。
(4)开关状态为K1开,K2开时,从中心向外依次同时点亮一灯,并且在屏幕上显示“01STATETHYEE”。
第二章硬件设计
2.1实验装置简介
本次课程设计所使用的主要设备是CES-86型通用实验装置。
CES-86型通用PC机实验装置的特点是“单板积木式”电路。
而且可以和任何一种PC机相连组成系统,相连后即可在此装置上进行硬件拼接,组成各种实验系统。
单积木式电路分为21块基本电路,标以A、B、C、……R、S和两块辅助电路。
这21块积木的具体电路为:
A:
单脉冲发生器电路;
B:
时钟脉冲发生器电路;
C:
数/模转换(DAC0832)电路;
D:
可编程计数器/定时器(8253)电路;
E:
模/数转换(ADC0809)电路;
F:
单板机I/O地址电路;
G:
逻辑电路芯片插座区;
H:
电平开关电路;
I:
发光二极管(LED)显示电路;
J:
计数器分频电路;
K:
可编程并行通信接口(8255A)电路;
L:
可编程串行通信接口(8251A)电路
M:
十六进制键盘电路;
N:
七段数码显示电路;
O:
随机存储(RAM6116)电路;
P:
中继电路;
Q:
直流电源及控制电路;
R:
PC总线接口;
S:
与PC机连接的接口电路;
S
RO
Q
C
B
A
P
D
G
N
E
M
F
L
万用表
K
H
J
I
“单板积木式”示意图
本课程设计使用了F(单板机IO地址电路),H(电平开关电路),I发光二极管显示电路,K(可编程并行通信接口即8255A电路)。
2.2硬件电路设计
2.2.1电路图
设计电路图如下图所示,A口为输出,连接8个发光二极管,B口为输入,其中的PB0,PB1接开关K1,K2。
开关的四个状态分别对应霓虹灯的四种变化状态,做试验时,通过控制开关的断开与闭合,可以观察到霓虹灯的闪烁。
同时CPU通过B端口将K1,K2的信息读入,然后转换成ASCII码
其中端口A的地址为318H;
端口B的地址为319H;
控制字的地址为31BH
2.2.2芯片介绍
本次课程设计中所使用的芯片8255A(如右图)是Intel公司采用CHMOS工艺生产的一种高性能
通用可编程输入/输出并行接口芯片,可以方便地
应用在Intel系列微处理器系统中。
下面对8255A
芯片进行简单介绍:
2.2.2.18255A的内部结构
8255A是40引脚双列直插式芯片,片内有
A,B,C三个8位I/O端口,可提供24条可编程的
输入/输出端口线。
它的内部结构由三部分电路组成:
与CPU的接口电路、内部控制逻辑电路和与外
设连接的输入/输出接口电路。
2.2.2.2与CPU的接口电路
(1)与CPU的接口电路由数据总线缓冲器和读/写控制逻辑组成。
数据总线缓冲器是一个三态、双向、8位寄存器,8条数据线D7~D0与系
统数据总线连接,构成CPU与8255A之间信息传送的通道,CPU通过执行输出指令向8255A写入控制命令或往外设传送数据,通过执行输入指令读取外设输入的数据。
读写控制逻辑电路用来接收CPU系统总线的读信号RD,写信号WR,片选择信号CS,端口选择信号A和复位信号RESET,用于控制8255A内部寄存器的读写操作和复位操作。
(2)内部控制逻辑电路
内部控制逻辑包括A组控制与B组控制两部分。
A组控制寄存器用来控制A口PA7~PA0和C口的高四位PC7~PC4;
B组控制寄存器用来控制B口PB7~PB0和低四位PC3~PC0。
它们接收CPU发送来的控制命令,对A,B,C3个端口的输入/输出方式进行控制。
(3)输入输出接口电路
8255A片内有A,B,C3个8位并行端口,A口和B口分别有1个8位的数据输出锁存/缓冲器和1个8位数据输入锁存器,C口有一个8位数据输出锁存/缓冲器,用于存放CPU与外部设备交换的数据。
对于8255A的3个数据端口和1个控制端口,数据端口既可以写入数据也可以读出数据,控制端口只能写入命令而不能读出,读、写控制信号(RD,WR)和端口选择信号(CS,A1,A0)的状态组合可以实现A,B,C3个端口和控制端口的读写操作。
8255A的端口分配及读写功能见下表:
CSWRRD
A1A0
功能
001
00
数据写入A口
01
数据写入B口
10
数据写入C口
11
命令写入控制寄存器
010
读出A口数据
读出B口数据
10
读出C口数据
非法操作
2.2.2.3引脚信号
8255A的引脚如下图示,分为数据线、地址线、读写控制线、输入/输出端口线和电源线。
D7~D0:
三态、双向数据线,与数据总线连接,用来传送数据。
CS:
片选信号线,低电平有效时,芯片被选中。
A1,A0:
地址线,用来选择内部端口。
RD:
读出信号线,低电平有效时,允许数据读出。
WR:
写入信号线,低电平有效时,允许数据写入。
RESET:
复位信号线,高电平有效时,将所有内部寄存器(包括控制寄存器)清0。
PA7~PA0:
A口输入/输出信号线。
PB7~PB0:
B口输入/输出信号线。
PC7~PC0:
C口输入/输出信号线。
VCC:
+5V电源。
GND:
电源地线。
2.2.2.48255A的工作方式及初始化编程
8255A有三种工作方式:
基本输入/输出方式,单向选通输入/输出方式和双向选通输入/输出方式。
(1)方式0:
基本输入输出方式
方式0是8255A的基本输入输出方式,其基本特点是与外部传送数据时,不需要设置专用的信号联络(应答)信号,可以无条件的直接进行I/O端口传送。
A,B,C三个端口都可以工作在方式0。
A口和B口工作在方式0时,只能设置以8位数据格式输入输出;
C口工作在方式0时,可以将高4位和低4位分别设置为数据输入或数据输出方式。
方式0常用于与外设无条件数据传送或查询方式数据传送。
(2)方式1:
单项选通输入/输出方式
方式1是一种带选通信号的单方向输入/输出工作方式,其特点是:
与外设传送数据时,需要联络信号进行协调,允许用查询或中断方式传送数据。
由于C口的PC0,PC1和PC2定义为B口工作在方式1的联络信号线,PC3,PC4和PC5定义为A口工作方式1的联络信号线,因此只允许A口和B口工作在方式1。
(3)方式2:
双向选通输入/输出方式
方式2为双向选通输入输出方式,是方式1输入和输出的组合,即同一端口的信号线既可以输入又可以输出。
由于C口的PC7~PC3定义为A口工作在方式2时的联络信号线,因此只允许A口工作在方式2。
8255A的A,B,C三个端口的工作方式是在初始化编程时,通过向8255A的控制端口写入控制字来设定的。
8255A由编程写入的控制字有两个:
方式控制字和置位/复位控制字。
方式控制字用于设置端口A,B,C的工作方式和数据传送方向;
置位/复位控制字用于设置C口的PC7PC0中某一条口线PCi(i=0~7)的电平。
两个控制字公用一个控制字公用一个端口地址,由控制字的最高位最为区分这两个控制字的标志位。
8255A工作方式控制字的格式如图所示:
第三章软件设计及程序分析
3.1程序清单:
见附录
3.2程序分析
3.2.1主程序
3.2.1.1主程序功能
它所实现的功能是实现开关对发光二极管的亮灭状态控制,并将开关状态在屏幕上显示出来。
在运行程序后按任意键发光二极管根据开关状态开始闪烁,同时在程序运行过程中按任意键可返回DOS。
3.2.1.2主程序分析
流程图如下:
结束
初始化编程
写入控制字
开始
读取开关状态
在屏幕上显示开关状态开关状态
显示提示信息
开关状态装入AL
AL=03H
AL=01H
AL=02H
AL=00H
返回DOS
调用子程序DELAY0
调用子程序DELAY1
调用子程序DELAY2
调用子程序DELAY3
有键按下
是
否
主程序代码段
START:
MOVAX,DATA;
数据段装入初始地址
MOVDS,AX
MOVES,AX
MOVAH,09H;
MOVDX,OFFSETMESS
INT21H
MOVDX,31BH;
控制字端口
MOVAL,10000010B;
控制字,B口输入A口输出
OUTDX,AL;
A:
MOVDX,319H;
端口B
INAL,DX;
读开关状态
ANDAL,03H;
保留B1,B0位,其他位置0
MOV X,AL;
将AL暂时装入X
MOVCX,02H
B:
MOVDL,AL;
AL装入DL以备子程序使用
CALLDISP;
调用显示子程序,显示PB2的状态
SHLAL,1
LOOPB;
循环2次,显示2个开关状态
MOVAL,X;
开关状态装入AL
CMPAL,00H;
比较开关状态,00调用STATE0
JNZM
CALLSTATE0
M:
CMPAL,01H;
比较开关状态,01调用STATE1
JNZN
CALLSTATE1
N:
CMPAL,02H;
比较开关状态,10调用STATE2
JNZO
CALLSTATE2
O:
CMPAL,03H;
比较开关状态,11调用STATE3
CALLSTATE3
3.2.2子程序
3.2.2.1STATE0子程序:
前四灯同时亮,熄灭后,接着后四个同时亮
流程图如下
标号S
子程序开始
显示子程序信息
在CX中置入循环次数为4次
控制A口使前4个灯亮,后4个灯灭
调用延时子程序
控制A口使前4个灯灭,后4个灯亮
CX=0
STATE0PROCNEAR
MOVAH,09H
MOVDX,OFFSETZERO
MOVDX,318H
MOVCX,04H;
端口A
H:
MOVAL,0FH
OUTDX,AL
CALLDELAY10
MOVAL,0F0H
CALLDELAY10
LOOPH
JMPS
RET
STATE0ENDP
3.2.2.2STATE1子程序:
8灯依次点亮
在CX中置入循环次数为8次
输出状态写入AL
AL逻辑右移一位
灯显示输出状态
STATE1PROCNEAR
MOVAH,09H
MOVDX,OFFSETONE
MOVDX,318H;
MOVCX,08H
D:
MOVAL,80H
NOTAL
RORAL,1
LOOPD
STATE1ENDP
3.2.2.3STATE2子程序:
从两侧向内依次同时点亮一个灯
B7,B0灯亮,其余灯灭
B6,B1灯亮,其余灯灭
B4,B3灯亮,其余灯灭
B5,B2灯亮,其余灯灭
STATE2PROCNEAR
MOVDX,OFFSETTWO
MOVCX,04H
MOVDX,318H;
E:
MOVAL,01111110B
MOVAL,1011101