串行通信的系统设计.docx

上传人:b****5 文档编号:7848750 上传时间:2023-01-26 格式:DOCX 页数:17 大小:251.16KB
下载 相关 举报
串行通信的系统设计.docx_第1页
第1页 / 共17页
串行通信的系统设计.docx_第2页
第2页 / 共17页
串行通信的系统设计.docx_第3页
第3页 / 共17页
串行通信的系统设计.docx_第4页
第4页 / 共17页
串行通信的系统设计.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

串行通信的系统设计.docx

《串行通信的系统设计.docx》由会员分享,可在线阅读,更多相关《串行通信的系统设计.docx(17页珍藏版)》请在冰豆网上搜索。

串行通信的系统设计.docx

串行通信的系统设计

自动化专业微机原理课程设计任务书

论文

题目

串行通信的系统设计

设计类型

应用型

导师姓名

丁健

张盈盈

主要内容及目标

要求:

1、利用8251A、8253等芯片实现串行通信。

2、通过编程实现异步串行通信。

具有的设计条件

PC机一台,教学实验箱一台及汇编程序;

计划学生数及任务

计划需要三人

一人进行电路原理图,流程图的设计;

一人进行编写程序;

一人进行设计报告编写。

计划设计进程

第一周设计任务:

(1):

在选出课题后,及时查阅相关资料,了解串行通信的实现过程;

(2):

画出原理图,制定设计方案,运用画图软件设计电路图;

(3):

编写程序。

第二周设计任务:

(1):

运用教学实验箱对程序进行调试和修改直到程序运行结果正确;

(2):

编写课程设计报告。

参考文献

《微型计算机原理及接口技术》中国科技大学出版社2009.6周荷琴吴秀清编著

《汇编语言程序设计》南京大学出版社姚君遗编著

《微型计算机原理及接口技术》实验指导书

目录

摘要1

一、设计的目的和意义1

二、设计环境2

三、设计内容和要求2

四、设计的原理2

(一)、8251A的基本性能2

(二)、8251A的内部结构3

(三)、8251A的引脚功能4

(四)、8251A的编程6

五、设计方案8

图5、仿真电路图9

六、调试过程10

七、课程设计总结10

参考文献11

附:

程序清单12

串行通信的系统设计

摘要

计算机与外部的信息交换称为通信,基本的通信方式有两种,一种是并行通信,另一种是串行通信。

在远距离通信时,一般采用串行通信方式。

它具有需要的通信线少和传输距离远等优点。

串行通信时,要传送的数据必须按一定的格式编码,在单根线上按一位接一位的先后顺序进行传送。

接收数据时,每次从单根线上一位接一位的接收信息。

串行通信实现异步通信运用串行发送器MC1488、串行接收器MC1489、串行通信接口8251A等芯片实现其功能。

关键字:

串行通信,异步通信,串行发送器MC1488,串行接收器MC1489

一、设计的目的和意义

设计的目的:

(1)了解串行通信的一般原理和8251A的工作原理。

(2)掌握双机通信的原理和方法。

(3)掌握8251A异步串行时的编程应用。

(4)了解8253的初始化。

(5)巩固和加深在微机原理课程中所学的理论知识。

(6)学会查阅相关手册与资料,培养独立分析与解决问题能力。

(7)为以后的毕业搭建一个微机系统应用平台。

设计的意义:

微机原理是机械工业控制设备的理论基础,理论课程的学习只是让学生学习基本理论知识,对课程内容和原理有比较深刻的理解,只要从理论上理解,不用考虑实际的可行性。

本次课程设计是培养学生综合运用所学知识分析和解决实际问题,锻炼实践能力的重要环节。

同时也是对学生实际工作能力的具体训练和考察过程。

二、设计环境

PC机两台,串行通信接口8251A两片,串行发送器MC1488和串行接收器MC1489各两片等。

三、设计内容和要求

设计的内容:

在异步方式下,通过串行接口实现两台计算计之间通信。

设计的要求:

在一台PC机键入字符,从8251A的发送端发送给另一台PC机,另一台PC机的8251A的接收端接收,然后在屏幕上显示出来。

四、设计的原理

(一)、8251A的基本性能

1.两种工作方式:

同步方式,异步方式。

同步方式下,波特率为064K,异步方式下,波特率为0~19.2K。

2.同步方式下的格式

每个字符可以用5、6、7或8位来表示,并且内部能自动检测同步字符,从而实现同步。

除此之外,8251A也允许同步方式下增加奇/偶校验位进行校验。

3.异步方式下的格式

每个字符也可以用5、6、7或8位来表示,时钟频率为传输波特率的1、16或64倍,用1位作为奇/偶校验。

1个启动位。

并能根据编程为每个数据增加1个、1.5个或2个停止位。

可以检查假启动位,自动检测和处理终止字符。

4.全双工的工作方式

其内部提供具有双缓冲器的发送器和接收器。

5.提供出错检测

具有奇偶、溢出和帧错误三种校验电路。

(二)、8251A的内部结构

1、发送器

发送器由发送缓冲器和发送控制电路两部分组成。

图1、8251A的内部结构图

采用异步方式,则由发送控制电路在其首尾加上起始位和停止位,然后从起始位开始,经移位寄存器从数据输出线TXD逐位串行输出。

采用同步方式,则在发送数据之前,发送器将自动送出1个或2个同步字符,然后才逐位串行输出数据。

如果CPU与8251A之间采用中断方式交换信息,那么TXRDY可作为向CPU发出的中断请求信号。

当发送器中的8位数据串行发送完毕时,由发送控制电路向CPU发出TXE有效信号,表示发送器中移位寄存器已空。

2、接收器

接收器由接收缓冲器和接收控制电路两部分组成。

接收移位寄存器从RXD引腿上接收串行数据转换成并行数据后存入接收缓冲器。

异步方式:

在RXD线上检测低电平,将检测到的低电平作为起始位,8251A开始进行采样,完成字符装配,并进行奇偶校验和去掉停止位,变成了并行数据后,送到数据输入寄存器,同时发出RXRDY信号送CPU,表示已经收到一个可用的数据。

同步方式:

首先搜索同步字符。

8251A监测RXD线,每当RXD线上出现一个数据位时,接收下来并送入移位寄存器移位,与同步字符寄存器的内容进行比较,如果两者不相等,则接收下一位数据,并且重复上述比较过程。

当两个寄存器的内容比较相等时,8251A的SYNDET升为高电平,表示同步字符已经找到,同步已经实现。

采用双同步方式,就要在测得输入移位寄存器的内容与第一个同步字符寄存器的内容相同后,再继续检测此后输入移位寄存器的内容是否与第二个同步字符寄存器的内容相同。

如果相同,则认为同步已经实现。

3、数据总线缓冲器

数据总线缓冲器是CPU与8251A之间的数据接口。

包含3个8位的缓冲寄存器:

两个寄存器分别用来存放CPU向8251A读取的数据或状态信息。

一个寄存器用来存放CPU向8251A写入的数据或控制。

4、读/写控制电路

读/写控制电路用来配合数据总线缓冲器的工作。

功能如下:

(1)接收写信号

,并将来自数据总线的数据和控制字写入8251A。

(2)接收读信号

,并将数据或状态字从8251A送往数据总线。

(3)接收控制/数据信号C/

,高电平时为控制字或状态字;低电平时为数据。

(4)接收时钟信号CLK完成8251A的内部定时。

(5)接收复位信号RESET,使8251A处于空闲状态。

5、调制解调控制电路

调制解调控制电路用来简化8251A和调制解调器的连接。

(三)、8251A的引脚功能

1、8251A和CPU之间的连接信号

8251A和CPU之间的连接信号可以分为四类:

a)、片选信号

片选信号,它由CPU的地址信号通过译码后得到。

b)、数据信号

D0-D7:

8位,三态,双向数据线,与系统的数据总线相连。

传输CPU对8251的编程命令字和8251A送往CPU的状态信息及数据。

c)、读/写控制信号

读信号,低电平时,CPU当前正在从8251A读取数据或者状态信息。

写信号,低电乎时,CPU当前正在往8251A写入数据或者控制信息。

•C/

控制/数据信号,用来区分当前读/写的是数据还是控制信息或状态信息。

该信号也可看作是8251A数据口/控制口的选择信号。

由此可知,

、C/

这3个信号的组合,决定了8251A的具体操作,

d)、收发联络信号

•TXRDY:

发送器准备好信号,用来通知CPU,8251A已准备好发送一个字符。

•TXE:

发送器空信号,TXE为高电平时有效,用来表示此时8251A发送器中并行到串行转换器空,说明一个发送动作已完成。

•RXRDY:

接收器准备好信号,用来表示当前8251A已经从外部设备或调制解调器接收到一个字符,等待CPU来取走。

因此,在中断方式时,RXRDY可用来作为中断请求信号;在查询方式时,RXRDY可用来作为查询信号。

•SYNDET:

同步检测信号,只用于同步方式。

2、8251A与外部设备之间的连接信号

8251A与外部设备之间的连接信号分为两类:

a)、收发联络信号

数据终端准备好信号,通知外部设备,CPU当前已经准备就绪。

数据设备准备好信号,表示当前外设已经准备好。

请求发送信号,表示CPU已经准备好发送。

允许发送信号,是对

的响应,由外设送往8251A。

实际使用时,这4个信号中通常只有

必须为低电平,其它3个信号可以悬空。

b)、数据信号

TXD:

发送器数据输出信号。

当CPU送往8251A的并行数据被转变为串行数据后,通过TXD送往外设。

RXD:

接收器数据输入信号。

用来接收外设送来的串行数据,数据进入8251A后被转变为并行方式。

3.、时钟、电源和地

8251A除了与CPU及外设的连接信号外,还有电源端、地端和3个时钟端。

CLK:

时钟输入,用来产生8251A器件的内部时序。

同步方式下,大于接收数据或发送数据的波特率的30倍,异步方式下,则要大于数据波特率的4.5倍。

TXD:

发送器时钟输入,用来控制发送字符的速度。

同步方式下,TXC的频率等于字符传输的波特率,异步方式下,TXC的频率可以为字符传输波特率的1倍、16倍或者64倍。

(四)、8251A的编程

编程的内容包括两大方面:

一是由CPU发出的控制字,即方式选择控制字和操作命令控制字;

二是由8251A向CPU送出的状态字。

1、方式选择控制字(模式字)

方式选择控制字的格式如图所示。

图2、方式控制字

2、操作命令控制字(控制字)

操作命令控制字的格式如下:

图3、操作命令控制字

3、8251A的初始化

a)、芯片复位以后,第一次用奇地址端口写入的值作为模式字进入模式寄存器。

b)、如果模式字中规定了8251A工作在同步模式,

c)、由CPU用奇地址端口写入的值将作为控制字送到控制寄存器,而用偶地址端口写入的值将作为数据送到数据输出缓冲寄存器。

五、设计方案

图4、程序流程图

图5、仿真电路图

图6、电路连接图

图7、程序调试界面

六、调试过程

在用实验箱完成项目设计调试的过程中,首先是运用实验箱验证已经编写的程序的正确性。

然后根据实验的完成度改正了一些程序,继而继续调试。

调试首先是力求实现单机通讯,先在一台实验箱上连接好电路进行调试程序,经过反复调试实现了单机通讯。

然后再将另一台实验箱连接好电路,通过端口将两台实验箱连接起来,再验证双机通讯的试验程序是否正确。

经过修改过后,才实现双机通讯的过程。

七、课程设计总结

本次微机原理课程设计是利用8251A、8253等芯片实现串行通信,通过编程来实现异步串行通信。

在设计第一个星期主要进行资料的查询以及进行工作分配问题,各个人员之间进行讨论如何进行设计的工作。

对于电路图的设计,对电路原理的分析等方面遇到了一些困难之处。

在询问知道老师过程中了解设计的错误之处,从而正确的分析电路实现可能。

在第二周的课程设计之时,是在实验室运用实验箱来验证所编写程序的正确性,以确定设计电路可以在程序运行时达到要求。

但是在验证程序的过程中也遇到了一些困难,之前所设计的电路和试验箱已有的电路有所出入。

由于试验箱的电路不可更改,所以在所设计好的电路进行了小范围的改动,再将编写的程序进行改写,才确保程序可以运行。

课程设计的时间虽然不是很长,但是这体现了三人团队之间的配合,团队的协作在其中突显出重要的作用。

还有非常感谢指导老师在整个过程的细心讲解我们所遇到的问题,才能让我们的设计回到正确的轨道上。

参考文献

1、《微型计算机原理及接口技术》中国科技大学出版社2009.6周荷琴吴秀清编著

2、《汇编语言程序设计》南京大学出版社姚君遗编著

3、《微型计算机原理及接口技术》实验指导书

附:

程序清单

单机通讯实现程序

.MODELTINY

PCIBAR3EQU1CH;8位I/O空间基地址

Vendor_IDEQU10EBH;厂商ID号

Device_IDEQU8376;设备ID号

.STACK100

.DATA

COM_ADDRDW00B3H

T0_ADDRDW00B0H

T1_ADDRDW00B1H

IO_Bit8_BaseAddressDW?

msg0DB'BIOS不支持访问PCI$'

msg1DB'找不到StarPCI9052板卡$'

msg2DB'读8位I/O空间基地址时出错$'

.CODE

START:

MOVAX,@DATA

MOVDS,AX

NOP

CALLInitPCI

CALLModifyAddress;根据PCI提供的基地址,将偏移地址转化为实地址

MOVDX,00B3H

MOVAL,00110101B

OUTDX,AL;计数器T0设置在模式2状态,BCD码计数

MOVDX,00B0H

MOVAL,00H

OUTDX,AL

MOVAL,10H

OUTDX,AL;CLK0/1000

MOVDX,00B3H

MOVAL,01110111B

OUTDX,AL;计数器T1为模式3状态,输出方波,BCD码计数

MOVDX,00B1H

MOVAL,00H

OUTDX,AL

MOVAL,10H

OUTDX,AL;CLK1/1000

START1:

CALLIfExit;OUT1输出频率为1S的方波

JZSTART1

JMPExit

IfExitPROCNEAR

PUSHAX

PUSHDX

MOVAH,06H

MOVDL,0FFH

INT21H

POPDX

POPAX

RET

IfExitENDP

InitPCIPROCNEAR

MOVAH,00H

MOVAL,03H

INT10H;清屏

MOVAH,0B1H

MOVAL,01H

INT1AH

CMPAH,0

JZInitPCI2

LEADX,msg0

InitPCI1:

MOVAH,09H

INT21H

JMPExit

InitPCI2:

MOVAH,0B1H

MOVAL,02H

MOVCX,Device_ID

MOVDX,Vendor_ID

MOVSI,0

INT1AH

JNCInitPCI3;是否存在StarPCI9052板卡

LEADX,msg1

JMPInitPCI1

InitPCI3:

MOVDI,PCIBAR3

MOVAH,0B1H

MOVAL,09H

INT1AH;读取该卡PCI9052基地址

JNCInitPCI4

LEADX,msg2

JMPInitPCI1

InitPCI4:

ANDCX,0FFFCH

MOVIO_Bit8_BaseAddress,CX

RET

InitPCIENDP

ModifyAddressPROCNEAR

ADDCOM_ADDR,CX

ADDT0_ADDR,CX

ADDT1_ADDR,CX

RET

ModifyAddressENDP

Exit:

MOVAH,4CH

INT21H

ENDSTART

双机通讯主机端(仿真实现)

CS8251Requ09080h;串行通信控制器复位地址

CS8251Dequ09000h;串行通信控制器数据口地址

CS8251Cequ09002h;串行通信控制器控制口地址

TCONTROEQU0A006H

TCON0EQU0A000H

CODESEGMENT;H8253.ASM

ASSUMEDS:

DATA,CS:

CODE

START:

MOVAX,DATA

MOVDS,AX

MOVDX,TCONTRO;8253初始化

MOVAL,16H;计数器0,只写计算值低8位,方式3,二进制计数

OUTDX,AL

MOVDX,TCON0

MOVAX,52;时钟为1MHZ,计数时间=1us*50=50us输出频率20KHZ

OUTDX,AL

NOP

NOP

NOP

movdx,CS8251R;8251初始化

INAL,DX

NOP

movdx,CS8251R

INAL,DX

NOP

movdx,CS8251C

moval,01001101b;1停止位,无校验,8数据位,x1

outdx,al

moval,00010101b;清出错标志,允许发送接收

outdx,al

START4:

MOVCX,19

LEADI,STR1

Send:

movdx,CS8251C;串口发送''hantaijun'

moval,00010101b;清出错,允许发送接收

outdx,al

WaitTXD:

NOP

NOP

inal,dx

testal,1;发送缓冲是否为空

jzWaitTXD

moval,[DI];取要发送的字

moval,3fh

movdx,CS8251D

outdx,al;发送

pushcx

movcx,8fh

loop$

popcx

INCDI

LOOPSend

JMPSTART4

CODEENDS

DATASEGMENT

STR1db'hantaijun'

DATAENDS

ENDSTART

双机通讯接收端(仿真实现)

CS8251Requ09080h;串行通信控制器复位地址

CS8251Dequ09000h;串行通信控制器数据口地址

CS8251Cequ09002h;串行通信控制器控制口地址

TCONTROEQU0A006H

TCON0EQU0A000H

CODESEGMENT;H8253.ASM

ASSUMEDS:

DATA,CS:

CODE

START:

MOVAX,DATA

MOVDS,AX

MOVDX,TCONTRO;8253初始化

MOVAL,16H;计数器0,只写计算值低8位,方式3,二进制计数

OUTDX,AL

MOVDX,TCON0

MOVAX,52;时钟为1MHZ,计数时间=1us*50=50us输出频率20KHZ

OUTDX,AL

NOP

NOP

NOP

movdx,CS8251R;8251初始化

INAL,DX

NOP

movdx,CS8251R

INAL,DX

NOP

Receive:

movdx,CS8251C;串口接收

WaitRXD:

inal,dx

testal,2;是否已收到一个字

jeWaitRXD

movdx,CS8251D

inal,dx;读入

movBH,al

JMPSTART

CODEENDS

DATASEGMENT

STR1db100dup(?

DATAENDS

ENDSTART

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

当前位置:首页 > 农林牧渔 > 林学

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

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