串口通讯课程设计.docx
《串口通讯课程设计.docx》由会员分享,可在线阅读,更多相关《串口通讯课程设计.docx(14页珍藏版)》请在冰豆网上搜索。
串口通讯课程设计
成绩:
南京信息工程大学
《微机技术综合实验》
设计报告
设计课题:
8251串口通讯课程设计
专业班级:
测控技术与仪器2班
学生姓名:
倪阳
学生学号:
20112341905
指导教师:
杨常松
二O一四年五月二十日
8251单机串口通讯
一、设计目的
1.掌握8086实现串口通信的方法;
2.了解串行通讯的协议,8251芯片的逻辑功能以及正确的使用方法;
3.使用微处理器芯片及其它典型的接口芯片,设计微处理器应用的典型接口电路,加深对微处理器、典型接口芯片特性的理解,掌握微处理器接口电路设计的初步方法,并进行一定的编程训练,加强微机应用的工程实践能力;
二、设计要求
1、利用8086控制8251A可编程串行通信控制器,实现向PC机发送字符串“WELCOMETO8086SIMULATION”
2、要求实时显示传送或者接受的数据
3、CPU和8251之间采用查询方式交换数据
三、设计电路原理图
1.电路原理图
U3
3
4
7
2
5
6
9
12
15
16
19
D0
D1
D2
D3
D4
D5
D6
D7
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
A1
U4
8
13
14
17
18
23
22
21
20
1
2
3
4
5
6
7
8
A
B
C
D
0
1
2
3
4
5
6
7
8
IO0
IO1
IO2
IO3
IO4
IO5
IO6
IO7
U1
M/IO
1
11
18
19
OE
LE
E1
E2
74HC373
9
IO8
10
11
13
14
15
16
17
9
IO9
32
29
10
11
12
13
14
15
IO10
IO11
IO12
IO13
IO14
IO15
WR/LOCK
M/IO
8086
LOAD_SEG=0x0200
SRCFILE=1.asm
74154
U12(1M)
P1
1
DCD
6
2
7
3
8
4
9
DSR
RXD
RTS
TXD
CTS
DTR
RI
ERROR
COMPIM
D
C
B
A
四、软件流程图与程序清单
8251是用来作为CPU与外设或者调制解调器之间的接口芯片。
它的信号线可以分为4组:
与CPU连接的信号线,状态信号线,时钟信号线和与外设接口的信号线。
与CPU连接的信号线中,RESET是芯片复位线,当该线为高电平时,芯片复位而处于空闲状态;C/D是地址线,若此线为高电平,则CPU访问8251命令寄存器或状态寄存器,低电平则访问数据寄存器。
状态信号线供CPU查询或向CPU申请中断用。
TxRDY发送准备好信号,高电平有效;RxRDY接收准备好信号,高电平表示输入端接受了一个字符,通知CPU取数据;TxE发送空信号,高电平有效;SYNDET为双功能引脚,同步方式时作为同步字符检出信号。
时钟信号线包括发送器时钟信号(/TxC)、接收器时钟信号(/RxC)和内部工作时钟信号CLK。
面向调制器的接口信号线包括:
/DTR,数据终端准备好,是输出信号,低电平有效;/DSR,通信设备准备好,是输入信号,低电平有效;/RTS,请求发送,是输出信号,低电平有效;/CTS,允许发送,是输入信号,低电平有效;TxD,发送数据线;RxD,接收数据线。
8251有两个8位的命令字,和一个8位状态字。
方式命令字指定通信方式及数据格式,即指定8251为异步或同步,并按照其通信方式约定帧数据的格式。
方式命令字的格式为8位,可以分为4组,每组2字,格式如下。
工作命令字指定8251进行某种操作,包括发送、接收、内部复位和检查同步字符等,或者处于某种工作状态,以便接收或发送数据。
工作命令字的格式为8位,格式如下。
状态字报告8251何时才能开始接收或发送数据,以及接收数据是否有错。
状态字为8位,其格式如下,所有状态位置“1”有效。
方式命令字、工作命令字和状态字之间的关系是:
方式命令字只是约定了双方通信的方式及数据格式、传输速率等参数,但并没有规定数据传输的方向是接受还是发送,因此需要工作命令字来控制,而何时才能发送或者接收则由状态字控制。
只有在8251进入发送或接受准备好状态才能真正开始数据的传送。
8251是可编程的串行通信接口,可以管理信号变化范围很大的串行数据通信。
有下列基本性能:
(1)通过编程,可以工作在同步方式,也可以工作在异步方式。
(2)同步方式下,波特率为0~64K,异步方式下,波特率为0~19.2K。
(3)在同步方式时,可以用5~8位来代表字符,内部或外部同步,可自动插入同步字符。
(4)在异步方式时,也使用5~8位来代表字符,自动为每个数据增加1个启动位,并能够根据编程为每个数据增加1个、1.5个或2个停止位。
(5)具有奇偶、溢出和帧错误检测能力。
(6)全双工,双缓冲器发送和接收器。
①数据线D7~D0——双向、三态,用于与CPU传送数据、命令、状态等信息。
②片选CS——用于芯片寻址。
③读写控制RD,WR。
④控制/数据选择信号(输入)。
⑤C/D(A0)RDWR功能
001CPU从8251A输入数据
010CPU向8251A输出数据
101CPU读8251A的状态
110CPU向8251A写控制命令
因为8251A使用前必须进行初始化,以确定工作方式、传送速率、字符格式以及停止位长度等;改变8251A的工作方式时必须再次进行初始化编程。
程序设计流程图
8086CPU与8251A的硬件接线图
源程序:
ADD8251DEQU30H;串行通信控制器数据口地址
ADD8251CEQU32H;串行通信控制器控制口地址
CODESEGMENT;
ASSUMEDS:
DATA,CS:
CODE
START:
MOVAX,DATA
MOVDS,AX
INIT:
XORAL,AL;AL清零
MOVCX,03
MOVDX,ADD8251C
OUT1:
OUTDX,AL;往8251A的控制端口送3个0
LOOPOUT1
MOVAL,40H
OUTDX,AL
NOP
MOVDX,ADD8251C
MOVAL,01001101b;写模式字1停止位,无校验,8数据位,x1
OUTDX,AL
MOVAL,00010101b;控制字清出错标志,允许发送接收
OUTDX,AL
RE:
MOVCX,25
LEADI,STR1
Send:
;串口发送
MOVDX,ADD8251C
MOVAL,00010101b;清出错,允许发送接收
OUTDX,AL
NOP
WTXD:
INAL,DX
TESTAL,1;发送缓冲是否为空
NOP
JZWTXD
MOVAL,[DI];取要发送的
MOVDX,ADD8251D
OUTDX,AL;发送
PUSHCX
MOVCX,20h
SIM:
LOOPSIM
POPCX
INCDI
LOOPSend
JMPRE
CODEENDS
DATASEGMENT
STR1DB'THISISPROTEUS8251UARTTEST!
'
DB'WELCOMETO8086SIMULATION'
DATAENDS
ENDSTART
五、结论与心得
课程设计的几天里,我天天对着电脑,忙着接线,脑袋跟随者CPU不停的转,中午也不回宿舍睡觉,但是仍然有一种愉悦感,我向这就是程序设计的魅力,遇到问题,解决问题的过程时快乐的。
进步本身就时一件令人快乐的事情。
做这个设计题目,前前后后花了我一周的时间。
其中前三天用于做前期的知识准备,还有一些时间用于和同学探讨,还有一些时间用于思维的转变,有时自己的思维方式相对有些死板而已。
要敢于思考,要喜欢思考,要善于思考,这对我自己来说,都是一个启发。
在程序调试成功后,有不少同学问我,这个程序如何理解。
我从头到尾给他们讲了,他们懂了,我自己对程序的理解就更深一步了,得到了一种成就感;当然在写程序的过程中,在其他的同学身上学到了很多东西,自己也取得了很大的进步。
有时当有一个没解决的问题困扰我的时候,在睡觉的时候,脑袋里出现的全是程序设计的代码,达到了一种“暮然回首,那人却在灯火阑珊处”的境界了。
程序设计的感觉真好!
真希望多开几门这样的课!
六、参考文献
[1]胡汉才.单片机原理及其接口技术[M].北京:
清华大学出版社,2010.3:
299-319
[2]范立南,张乐.微型计算机原理及应用[M].北京:
清华大学出版社,2012.1:
12-54
[3]杨立,邓振杰,荆淑霞.微型计算机原理与接口技术[M].北京:
中国铁道出版社,2009.3:
45-89
[4]方立友.微机原理与汇编语言实用教程[M].北京:
清华大学出版社,2008.5:
159-189
附录: