循环灯实验报告与代码Word文件下载.docx

上传人:b****1 文档编号:13301446 上传时间:2022-10-09 格式:DOCX 页数:16 大小:45.94KB
下载 相关 举报
循环灯实验报告与代码Word文件下载.docx_第1页
第1页 / 共16页
循环灯实验报告与代码Word文件下载.docx_第2页
第2页 / 共16页
循环灯实验报告与代码Word文件下载.docx_第3页
第3页 / 共16页
循环灯实验报告与代码Word文件下载.docx_第4页
第4页 / 共16页
循环灯实验报告与代码Word文件下载.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

循环灯实验报告与代码Word文件下载.docx

《循环灯实验报告与代码Word文件下载.docx》由会员分享,可在线阅读,更多相关《循环灯实验报告与代码Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。

循环灯实验报告与代码Word文件下载.docx

(2)n=12,

t=2s:

每个灯管单独一组,间隔2秒循环点亮。

(3)n=6,

每两个灯管一组,间隔1秒循环点亮。

(4)n=6,

每两个灯管一组,间隔2秒循环点亮。

(5)n=4,

每三个灯管一组,间隔1秒循环点亮。

(6)n=4,

每三个灯管一组,间隔2秒循环点亮。

(7)n=3,

每四个灯管一组,间隔1秒循环点亮。

(8)n=3,

每四个灯管一组,间隔2秒循环点亮。

按键盘的“A”,“B”,“C”,“D”分别表示选择的灯管数目(一个一组,两个一组,三个一组,四个一组),按键盘的“E”,“F”,表示选择时间(一秒两秒)。

程序启动时默认按第一种方式进行循环,当按动“A~F”时,根据设定情况随时改变循环方式,当按“0”键退出程序,所有灯管熄灭。

提示:

1:

主程序为键盘输入按’A’~’D’命令分支到各点亮功能程序段,按’0’退出。

2:

定时时间1秒2秒可由8253产生定时中断,通过IPQ2引起中断请求。

8253的定时器工作可参考“定时/计数器:

8253方波”。

3:

在中断服务程序中,通过8255A的端口B的PB4-PB7,端口C的PC0—PC7来设置发光二极管下一组灯点亮,其他灯都暗。

次序可从左到右,也可以从右到左。

4:

8255A输出点亮发光二极管可参考“8255A”并行口实验(三)。

二、设计思想:

使用8259中断服务子程序,来去执行中断,用8253方波计时器来去产生1秒和两秒的时间间隔。

把8253和8259结合正好可以把间隔一秒和两秒的计时器导入程序之中。

利用5255A交通灯的特性,把交通灯按要求轮流点亮。

(一)可编程并行接口芯片8255

系统中的8255线路8255的数据线片选信号线、地址线、读写控制线等分别与系统总线相连,其A、B、C三个端口以排针形式引出供825实验使用。

可编程并行接口Intel8255A,其内部结构如图所示,由以下

4个部分组成:

①数据总线缓冲器。

这是一个三态双向8位缓冲器,它是8255A与CPU系统数据总线的接口。

所有数据的发送与接收,

以及CPU发出的命令字和从8255A来的状态信息都是通过该缓冲器传送的。

②读/写控制逻辑。

读/写控制逻辑由读信号RD,写信号WR,选片信号CS以及端口选择信号A0、A1等组成。

读/写控制逻辑控制了总线的开放、关闭和信息传送的方向,以便把CPU的控制命令或输出数据送到相应的端口;

或把外设的信息或输入数据从相应的端口送到CPU。

8255A的基本操作及在TP86A、PC/TX和扩展板上的端口地址如下表所示。

③输入/输出端口A、B、C。

8255A包括3个8

位输入输出端口(port)。

每个端口都有一个数据输入寄存器和一个数据输出寄存器,输入时端口有三态缓冲器的功能,输出时端口有数据锁存器功能。

在实际应用中,PC口的8位可分为两个4位端口(0

方式下),也可以分成一个5位端口和一个3位端口(2方式下)来使用。

④A组和B组控制电路。

控制A,B,C三个端口的工作方式,A

组控制A口和C-4-口的上半部(PC4-PC7),B组控制B口和C口的下半部(PC0-PC3)的工作方式和输入输出。

A组和B组的命令寄存器还接收按位控制命令,以实现对PC口的按位置位/复位操作。

(二)Intel8253可编程定时/计数器

1片8253内部有3个计数器,分别称为计数器0、1、2,其结构完全,互相之间工作完全独立。

每个计数器有三个引脚和外部联系CLK:

计数脉冲输入,计数器对该引脚出现的信号进行计数,最高计数速率为2.6MHZ。

Gate:

门控输入,用于控制计数器是否对CLK计数。

OUT:

输出信号端。

每个计数器内部都有1个8位的控制寄存器,三个控制寄存器使用同一端口地址,在编程结构图中,画为1个控制寄存器。

每个计数器内部还有1个计数初值寄存器(CR)、1个计数执行部件(CE)和1个输出锁存器(OL),它们都是16位的。

执行部件(CE)是1个16位减法计数器,其起始值等于初值寄存器(CR)的值。

CR的值通过程序设置。

输出寄存器(OL)用来锁存执行部件(CE)的值,以便CPU读出。

原理:

通过Intel8253可编程定时/计数器方式3方波发生器与方式0计数结时产生中断风别产生的方波和中断来计数,配合可编程并行接口芯片8255来控制流水灯的循环点亮,通过键盘扫描来接受外部控制.并通过八段数码管将A,B,C,D显示,并且转入相应的模式执行。

实验连线:

8255A:

PA0-L15PA1-L14PA2-L13PA3-L11

PA4-L10PA5-L9PA6-L7PA7-L6

PB0-L5PB1-L3PB2-L2PB3-L1

8259:

连接138译码输入端A.B.C,其中A连A2,B连A3,C连A4,138使能控制输入端G与总线单元上方的GS相连。

将8259CS插孔与译码单元的Y0相连,中断源IR7与单脉冲单元的SP插孔相连。

用8芯扁平电缆将8259中断控制单元的数据总线插座与数据总线单元任一插座相连。

8253:

将8253CS与译码单元的Y1相连,中断源IR0与8253的OUT0口相连。

用8芯扁平电缆将8251串行通信单元的数据总线插座与数据总线单元任一插座相连。

GATE0与+5V相连,CLK0与频单元T7相连

 

三、功能流程图:

按键

ABCD

按键按键按键按键

EFEFEFEF

按键0

4、结果讨论:

刚开始使用循环计时来实现倒计时,计时会有误差,改为8253计时器之后,及时秒数比较准确。

因为要求可以随时切换状态,所以将检测有无按键以及按键之后的切换写成一个子程序,在需要切换的地方进行调用。

所有的模块都写成子程序,这样在调用的时候比较方便。

使用8259中断时,要注意关中断和开中断的位置,否则会造成中断脉冲按键不灵。

程序的关键是每个状态的相互切换。

附录:

实验代码:

(完整的源程序)

CODESEGMENT

ASSUMECS:

CODE,DS:

CODE,ES:

CODE

ORG2000H

JMPA

PAEQU0FFD8H

PBEQU0FFD9H

PCEQU0FFDAH

PCTLEQU0FFDBH

OUTSEGEQU0FFDCH;

段控制口

OUTBITEQU0FFDDH;

位控制口/键扫口

IN_KEYEQU0FFDEH;

键盘读入口

ZXKEQU0FFDCH;

字型口

ZWKEQU0FFDDH;

字位口

Port0EQU0FFE4H

Port1EQU0FFE5H

SHOW1DB02H

FLAGDB?

PCC1DB07FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH,0FFH,0FFH,0FFH,0FFH

PBC1DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,07FH,0BFH,0DFH,0EFH

PCC2DB03FH,0CFH,0F3H,0FCH,0FFH,0FFH

PBC2DB0FFH,0FFH,0FFH,0FFH,03FH,0CFH

PCC3DB01FH,0E3H,0FCH,0FFH

PBC3DB0FFH,0FFH,07FH,08FH

PCC4DB0FH,0F0H,0FFH

PBC4DB0FFH,0FFH,0FH

;

---------------------8253芯片初始化---------------------------

A:

MOVDX,0FFE3H;

控制口

MOVAL,36H;

计数器0,方式3,二进制计数

OUTDX,AL

MOVDX,0FFE0H

MOVAL,00

MOVAL,4bH

---------------------------------------------------------------

---------------------8255芯片初始化---------------------------

MOVDX,PCTL

MOVAL,80H;

10000000b

MOVDX,PA;

PA置0

MOVAL,0

MOVDX,PB

MOVAL,0FFH

MOVDX,PC

----------------------中断向量地址------------------------------

CLI

MOVAX,OFFSETINT8259

MOVBX,003CH

MOV[BX],AX

MOVBX,003EH

MOVAX,0000H

CALLFOR8259

STI

-----------------------------------------------------------------

JMP_AE

START:

CALLGetKey

CMPAL,0AH

JZNEXTA

CMPAL,0BH

JZNEXTB

CMPAL,0CH

JZNEXTC

CMPAL,0DH

JNZ_D

JMPNEXTD

_D:

CMPAL,00H

JNZSTART

JMPEXIT

NEXTA:

MOVFLAG,0

CMPAL,0EH

JZ_AE

CMPAL,0FH

JZ_AF

JMPNEXTA

_AE:

MOVSI,0

MOVDI,0

CALLE

JMPLAST

_AF:

CALLF

NEXTB:

MOVFLAG,1

JZ_BE

JZ_BF

JMPNEXTB

_BE:

_BF:

NEXTC:

MOVFLAG,2

JZ_CE

JZ_CF

JMPNEXTC

_CE:

_CF:

NEXTD:

MOVFLAG,3

CALLGetKe

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

当前位置:首页 > 高中教育 > 语文

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

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