第四部分 选做实验
实验九 继电器控制
1、实验目的
(1)了解微型计算机控制直流继电器的一般方法;(2)进一步熟悉8255和8253的使用。 2、实验内容
(1)实验电路如图30所示。按虚线连结电路:CLK0接1MHz,GATE0、GATE1接+5V,OUT0接CLK1,OUT1接PA0,PC0接继电器驱动电路的开关输入端IK,继电器输出插头J4,接实验盒上的继电器插头。编程使8253定时,让继电器周而复始的闭合5秒钟(指示灯亮),断开5秒(指示灯灭)。
(2)用可编程并行接口8255端口C的PC0控制继电线圈,用端口A的PA0查询8253的OUT1输出。 3、编程提示
(1)将8253计数器0设置为方式3、计数器1设置为方式0串联使用,CLK0接1MHz时钟,设置两个计数器的初值(乘积为5000000)为5秒,启动计数器工作后,经过5秒钟OUT1输出高电平。8255A端口A的PA0查询OUT1的输出,当其为高电平,用端口C的PC0输出开关量控制继电器动作。
(2)继电器开关量输入端输入“1”时,继电器常开触点闭合,电路接通,指示灯亮;输入“0”时,继电器开关断开,指示灯熄灭。
(3)流程图
把程序分为主程序和延时子程序两部分, 其流程图如图31和图32所示。 4、预习要求
(1)了解实验台上的继电器控制的使用方法; (2)复习8253采用级连方式作为定时器使用的方法; (3)仔细阅读本实验指导书;
(4)了解8253与8255联合使用实现定时控制的方法;
图30 继电器控制 288H~ 8255 PA0 PC0 CLK0 GATE0 U5 OUT0 8253 CLK1 GATE1 OUT1 1MHz +5V … 280H~ 。 CS +5V +5V J2 。 1 。 J3 2 +5V 。 CS Ik 28
(5)按照流程图编好程序。 5、报告要求
(1)小结用微型机控制继电器的一般方法;(2)小结8253与8255联合使用实现定时控制的方法。
开始 设定计数器0工作方式3 写入计数器初值1000 开始 设定计数器1工作方式0 写入计数器初值500 设8255A口输入,C口输出 Y 有键按下吗? 将PC0口置位,继电器加电 N 结束 从8255A口输入数据 调延时子程序,延时5秒 N PA0是高电平吗? 将PC0口复位,继电器断电 Y 调延时子程序,延时5秒 子程序返回
图31主程序流程图 图32延时子程序流程图
实验十 DMA传送
1、实验目的
(1)掌握PC机工作环境下进行DMA方式传送数据的方法。 (2)掌握DMA控制器8237的编程方法。 2、实验内容
(1)用通用插座按图33把电路连接好(74LS273插通用插座,74LS74利用实验台上的D触发器),利用DMA控制器8237把内存数据传送至外设(74LS273,由L0~L7显示)。在内存6000H:0开始单元存放10个数据,对DMA控制器8237进行初始化编程,使每一次DMA请求(用单脉冲发生器通过74LS74 D触发器发出)从内存向外设传送一字节的数据。
(2)用通用插座按图34把电路连接好(74LS244插通用插座,74LS74利用实验台上的D触发器),利用DMA控制器8237从外设输入数据至内存。编程在内存6000H:0开辟一个8字节数据缓冲区,对DMA控制器8237进行初始化编程,使每一次DMA请求(仍用单脉冲发生器通过74LS74 D触发器发出)从外设向内存传送一字符(ASCII码),存入数据缓冲区,编程不断读取显示缓冲区的数据(ASCII)并且在屏幕上显示。
29
20 D0 D1 D2 D3 D4 D5 D6 D7 +5V L0 L1 L2 L3 L4 L5 L6 L7 74LS32 ≥1 3 2 D1 VCC Q1 5 4 D2 Q2 6 7 8 D3 Q3 9 13 D4 Q4 12 14 D5 74LS273 Q5 15 17 D6 Q6 16 18 D7 Q7 19 D8 Q8 11 CLK 1 CLR GND 10 DRQ +5V D SD Q 74LS74 CLK CD Q 。 单脉冲 DACK 。 。 +5V DACK IOW 图33 通过DMA控制器输出数据
3、编程提示:(1)DMA实验应该将实验台上跳线开关JC插在DMA位置,JB插在“I/O”位置。 (2)DMA请求是由单脉冲输入到D触发器,在由触发器的Q端向DRQ1发出的,8237在接收到DRQ1后,向CPU发出DMA请求HOLD。CPU响应后向8237发出HDLA信号,由8237发出有效的DACK1信号将D触发器置成低电平以撤消请求。
(3)流程图
通过8237从内存输出数据至外设的流程图如图35所示 通过8237输入数据的流程图如图36所示 4、预习要求
(1)复习DMA传送的方法和8237DMA控制器的编程方法;
(2)仔细阅读本实验指导,了解D触发器、8237DMA控制器和74LS273、74LS274之间的相互关系与连线;
(3)根据流程图编好程序。
20 K0 K1 K2 K3 K4 K5 K6 K7 +5V D0 D1 D2 D3 D4 D5 D6 D7 2 18 4 1A1 VCC 1Y1 16 1A2 1Y2 6 1A3 1Y3 14 8 1A4 1Y4 12 11 74LS244 9 13 2A1 2Y1 7 15 2A2 2Y2 5 17 2A3 2Y3 2A4 2Y4 3 19 2G 1 1G GND 10 DRQ +5V D SD Q 74LS74 CLK CD Q 。 单脉冲 DACK 。 。 74LS32 ≥1 DACK 2A0H~ 3、编程提示
IOR 图34 通过DMA控制器输入数据
30
开始 初始化 开始 初始化 将10个数据放入6000H:0开始单元 置通道1页面寄存器为6 清字节指针触发器 写地址低16位为0000H 写通道1方式字:单字节读传输,地址增量 置通道1页面寄存器为6 写地址低16位为0000H 写入传送的字节数 N 清除通道1的屏蔽,启动8237 结束 有键按下吗? Y 结束 写入传送的字节数 清除通道1的屏蔽,启动8237 显示自内存6000:0开始的字符串 清字节指针触发器 写通道1方式字:单字节读传输,地址增量 图35 通过DMA控制器输出
数据的程序流程图 5、报告要求
图36 通过8237输入数据的程序流程图
(1)小结DMA传送方式与程序传送方式的区别; (2)小结8237DMA控制器的编程;
(3)考虑若用8237在内存间传送信息,则电路图应该如何连接,程序应该怎样编写?
实验十一 串行通信
1、实验目的
(1)了解串行通信的基本原理;
(2)掌握串行通信接口芯片8251的基本工作原理和编程方法。 2、实验内容
(1)按图37连结好电路(8251插入通用插座)。其中,8253计数器用于产生8251的发送和接收时钟,TxD和RxD连结在一起(自发自收)。
(2)编程:从键盘输入一个字符,将其ASCII码加1后发送出去,在接收回来并且在屏幕上显示,实现自发自收。
31
9 D0 D1 D2 D3 D4 D5 D6 D7 2B8H IOR IOW A0 RESET 27 28 1 2 5 6 7 8 11 13 10 12 21 20 25 19 3 15 OUT0 +5V GATE0 CLK0 。 CS 280H~ 8253 。 。 。 D0 TxCLK RxCLK TxD D1 D2 RxD D3 D4 TxRDY D5 8251 D6 D7 RxRDY CS RD WR C/D RESET CTS CLK GND Vcc 4 26 14 。 17 1MHz +5V 图37 串行通信
开始 初始化8253 初始化8251 显示提示信息 从8251控制口读状态字 Y N TxRDY为1吗? 从键盘接收字符 Y 是ESC键吗? N 结束 通过8251数据端口发送字符 从8251控制端口读入状态字 有键按下吗? Y N 通过8251数据端口发送字符 显示提示信息 图38 程序流程图
3、编程提示
(1)在图所示的电路中8251的控制端口地址为2B9H,数据端口地址为2B8H。
(2)8253计数器的计数初值=时钟频率/(波特率×波特率因子),这里的时钟频率接1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。
(3)收发采用查询方式。
32