串行通信8251
北京邮电大学
实验报告
课程名称:微机原理与接口技术
实验名称:串行通信8251
一.实验目的
了解串行通讯的基本原理
掌握串行接口芯片8251的工作原理和编程方法
二.实验内容
1.按下图所示连接好电路,其中8254计数器用于产生8251的发送和接收时钟,TXD和RXD
连接在一起。
2.编程:从键盘输入一个字符,将其ASCII码的值加1后发送出去,再接收回来在屏幕上
显示,实现自发自收。
3.连线:
三.实验思路
1.芯片8251
(1)重要管脚的说明:
Intel 8251A是可编程的串行通信接口芯片,它的内部结构如下图所示:
D7~D0为三态双向数据线,将CS连接到实验台的I/O地址(本实验将其连接到Y7,因此数据端口地址为2B8H),则可以通过8251的数据端口实现串行通信。
TxD为发送数据线,用作输出;RxD为接收数据线,用作输入。本实验将TxD和RxD连接起来,从而实现8251的自发自收。
TX/RXCLK为8251的发送时钟和接收时钟,将其与8254的OUT0连接起来,则可以利用8254的计数器0的输出作为时钟信号。
(2)方式命令字的确定
Intel 8251A有两种工作方式:串行同步通信和串行异步通信。本实验采用异步通信方式,其方式命令字格式如下:
本实验采用8位字符,波特因子为16,因此方式命令字为11001110。
(3)工作命令字的确定
Intel 8251A的工作命令字的格式如下:
本实验要实现自发自收,因此发送端和接收端都要允许,从而确定的命令字为00100111。
(4)状态字的检查
Intel 8251A的状态字的格式如下:
通过8251实现数据的收发时必须先确定发送器/接收器是否准备好,这可以通过读取控制端的状态字来确定:D1(RxRDY)表示接收器准备好,当RxRDY=1时,表示接收器已接收到了字符,可以让CPU将该字符读取走。D0(TxRDY)表示发送器准备好,当TxRDY=1时,表示发送缓冲器已空,可以接收CPU送来的欲发送数据。
上面已提到本实验中8251的数据端口地址为2B8H,则其控制端口地址为2B9H,编程
中只要将读取到的状态字与01b(或10b)相与则可知道发送器(或接收器)是否准备好,从而进行下一步数据处理。
2.芯片8254
Intel 8254可编程计数器具有3个独立的16位计数器通道,每个计数器都可以按照二进制或BCD码计数方式进行计数,每个通道都有六种工作方式。
(1)工作方式的选择
本实验中8254要实现的功能是给8251提供时钟信号,因此采用方式3较恰当。
方式3是对CLK信号进行分频,在写入方式3的控制字和计数初值后计数器开始计数,在计数过程中OUT断的输出是一半时间为高电平,一段时间为低电平的方波。
(2)计数器初值
计数初值= 时钟频率/ (波特率* 波特率因子),由于本实验中的时钟频率是接
1MHz,波特率选的是1200,而波特因子为16,则得到的计数器初值为52.
(3)控制字的确定
Intel 8254的控制字格式如下:
本实验采用计数器0进行计数,确定的控制字为:00110110。
3.算法流程图
四.源代码
data segment
port_8254equ 280h;
port_8251equ 2b8h;
ESC equ 27h
okdb 'hi~','$',0dh,0ah data ends
code segment
assumecs:code, ds:data
main:;初始化8254
mov dx, port_8254+3
mov al, 00110110b
out dx, al
mov dx, port_8254
mov ax, 52
out dx, al
mov al, ah
out dx, al
;初始化8251
mov dx, port_8251+1
xor al, al
out dx, al ;
mov al, 40h
out dx, al ;
nop
mov al, 11001110b
out dx, al
mov al, 00100111b
out dx, al
;打印显示信息
mov dx, offset ok
mov ax, seg ok
mov ds, ax
mov ah, 9
int 21h
;读取8251的状态字
L1: mov dx, port_8251+1
inal, dx
and al, 01b ;TxDRY为1?
jz L1
;从键盘接收字符
mov ah, 1
int 21h
;判断是否为ESC
cmp al, ESC
jz over
;将ASCII码加1后通过8251端口发送字符inc al
mov dx, port_8251
out dx, al
;读取8251的状态字
L2: mov dx, port_8251+1
inal, dx
and al, 10b ;DxDRY为1?
jz L2
;从8251端口接收数据
mov dx, port_8251
inal, dx
mov dl, al
mov ah, 2
int 21h
jmp L1
over: mov ax, 4C00H
int 21h
code ends
end main
五.实验心得
通过这次实验,熟悉和掌握了两个芯片——Intel 8254可编程计数器和Intel 8251可编程串行通信接口的使用。进一步理解了两个芯片的工作原理与工作方式:Intel 8251实现串行通信,有两种工作方式:同步通信和异步通信。同步通信需要用到同步符和终止符的检测,此次实验中没有涉及;异步通信看似较简单一些,8251能够自动检测和处理终止字符。这里需要注意的就是设置波特率因子,也就是接收时钟频率与波特率的倍数。
在确定工作命令字的时候,起初觉得有那么多选项好复杂,在弄清楚每个管脚代表的意义之后,发现要确定的东西其实也不难,保证自发自收,同时允许接收和发送使能就好了。理解了8251的工作过程之后,也明白了检查状态字中的TxRDY和DxRDY位的意义。机器的工作总是要一步一步来的,必须保证每步的正确性。
Intel 8254中有三个独立的计数器,这次实验中只需要用到其中一个计数器,对于该芯片的使用的唯一难点就是确定工作方式和计数器初值。8254的工作方式有六种,每种方式都可以实现特定功能:计数结束中断、单稳触发器、频率发生器、方波发生器、软件触发选通信号和硬件触发选通信号。这次实验需要计数器来提供时钟信号,因此最适合的就是方波计数器了。至于计数器初值的选择,上面也已经解释清楚了。
本次实验的另一大收获就是对于汇编语言的编程技巧的提升。在给出流程图后,本实验的编程并不算困难。再一次熟悉运用了MOV, CMP, AND, JZ, JMP等指令,熟悉使用了01H(带回显的键盘输入),02H(在屏幕上显示字符),09H(在屏幕上显示以‘$’结束的字符串)等中断服务。
编程方面遇到的唯一的问题就是显示字符串的时候显示了乱码,经排查发现是自己忘了将字符串的首地址放入DS中。汇编语言就是这样,一点点小细节就容易出错,还有好多指令的细节(比如数据的隐含地址等)需要你细心体会然后记住。
总而言之,通过这次实验,对芯片和编程语言的熟悉都加深了,收获很大。
最新单片微机原理及应用 徐春辉第10章 习题答案51系列单片机的串行通信习题与思考题答案
练习与思考题10 1.串行数据传送的主要优点和作用是什么? 答:串行数据传送的主要优点是硬件接口简单,接口端口少(2个)。主要用于微机之间或微机与外设之间的数据通信。 2.单工、半双工、全双工通信有什么异同? 答:相同之处在于都是串行通信; 单工方式:数据仅按一个固定方向传送。 半双工方式:数据可实现双向传送,但不能同时进行。 全双工方式:允许通信双方同时进行数据双向传送。。 3.假定串行口串行发送的字符格式为1个起始位,8个数据位,1个奇校验位,1个停止位, 请画出传送字符“F”的帧格式。 起始位0 1 1 0 0 0 1 0 校验位0 停止位 4.若异步通信接口按方式3传送,已知其每分钟传送3600个字符,其波特率是多少? 答:已知每分钟传送3600个字符,方式3每个字符11位,则: 波特率=(11b/字符)×(3600字符/60s)=660b/s 5.AT89S51单片机的串行口由哪些功能部件组成?各有什么作用? 答:AT89S51单片机的串行接口由发送缓冲器SBUF,接收缓冲器SBUF、输入移位寄存器、串行接口控制器SCON、定时器T1构成的波特率发生器等部件组成。 由发送缓冲期SBUF发送数据,接收缓冲期SBUF接收数据。串行接口通信的工作方式选择、接收和发送控制及状态等均由串行接口控制寄存器SCON控制和指示。定时器T1产生串行通信所需的波特率。 6.AT89S51单片机串行口有几种工作方式?有几种帧格式?各种工作方式的波特率如何 确定? 答:串行口有4种工作方式:方式0、方式1、方式2、方式3; 有3种帧格式,方式2和3具有相同的帧格式; 方式0的发送和接收都以fosc/12为固定波特率, 方式1的波特率=2SMOD/32×定时器T1的溢出率 方式2的波特率=2SMOD/64×fosc 方式3的波特率=2SMOD/32×定时器T1的溢出率 7.为什么MCS-51串行口的方式0帧格式没有起始位(0)和停止位(1)? 解答:串行口的方式0为同步移位寄存器输入输出方式,常用于外接移位寄存器,以扩展并行I/O口,一般不用于两个MCS-51之间的串行通信。该方式以fosc/12的固定波特率从低为位到高位发送或接受数据。 8.AT89S51中SCON的SM2,TB8,RB8有何作用? 答:A T89S51中SCON的SM2是多机通信控制位,主要用于方式2和方式3.若置SM2=1,则允许多机通信。 TB8是发送数据的第9位,在方式2或方式3中,根据发送数据的需要由软件置位
串口通信的接线方法
目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时(<12m),可以用电缆线直接连接标准RS232端口(RS422、RS485较远),若距离较远,需附加调制解调器(MODEM)。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连,本文只涉及到最为基本的接法,且直接用RS232相连。 1、DB9和DB25的常用信号脚说明 2、RS232C串口通信接线方法(三线制) 首先,串口传输数据只要有接收数据针脚和发送针脚就能实现:同一个串口的接收脚和发送脚直接用线相连,两个串口相连或一个串口和多个串口相连同一个串口的接收脚和发送脚直接用线相连对9针串口和25针串口,均是2与3直接相连; 两个不同串口(不论是同一台计算机的两个串口或分别是不同计算机的串口) 图2 上面表格是对微机标准串行口而言的,还有许多非标准设备,如接收GPS数据或电子罗盘数据,只要记住一个原则:接收数据针脚(或线)与发送数据针脚(或线)相连,彼些交叉,信号地对应相接,就能百战百胜。 3、串口调试中要注意的几点: 不同编码机制不能混接,如RS232C不能直接与RS422接口相连,市面上专门的各种转换器卖,必须通过转换器才能连接; 线路焊接要牢固,不然程序没问题,却因为接线问题误事;
串口调试时,准备一个好用的调试工具,如串口调试助手、串口精灵等,有事半功倍之效果; 强烈建议不要带电插拨串口,插拨时至少有一端是断电的,否则串口易损坏。 RS232C标准串口接线方法 (第二版) 检验仪器与微机的通讯主要是以RS232C标准接口为主,而串口的接线方法也有一定的标准,在此谈谈几种常用的串口接法,仅作参考: 一、标准接法 1、9对9(包括9针对9孔,9孔对9孔,9针对9针): 说明:以下的孔、针指串口线两端的串口,不过2、3有可能不交换 2-------------3 3-------------2 4-------------6 5-------------5 6-------------4 7-------------8 8-------------7 2、9对25(包括9孔对25孔,9孔对25针) 2-------------3 (备注:2、3有可能不交换) 3-------------2 4-------------6 5-------------7 6-------------20 7-------------5 8-------------4
8251串行通讯实验
安徽师范大学数计学院实验报告 专业名称11计科 课程微机原理 实验名称串行通信实验姓名 学号110704012
8251 可编程串行口与PC 机通讯实验 一、实验目的 (1) 掌握8251 芯片的结构和编程,掌握微机通讯的编制。 (2) 学习有关串行通讯的知识。 (3) 学习PC 机串口的操作方法。 二、实验说明 1、8251 信号线 8251 是CPU 与外设或Mode 之间的接口芯片,所以它的信号线分为两组:一组是用于与CPU 接口 的信号线,另一组用于与外设或Mode 接口。 (1)与CPU 相连的信号线: 除了双向三态数据总线(D7~D0)、读(RD)、写(WR)、片选(CS)之外,还有: RESET:复位。通常与系统复位相连。 CLK:时钟。由外部时钟发生器提供。 C/D:控制/数据引脚。 TxRDY:发送器准备好,高电平有效。
TxE:发送器空,高电平有效。 RxRDY:接收器准备好,高电平有效。 SYNDET/BRKDET:同步/中止检测,双功能引脚。 (2)与外设或Mode 相连的信号线: DTR:数据终端准备好,输出,低电平有效。 DSR:数据装置准备好,输入,低电平有效。 RTS:请求发送,输出,低电平有效。 CTS:准许传送,输入,低电平有效。 TxD:发送数据线。 RxD:接收数据线。 TxC:发送时钟,控制发送数据的速率。 RxC:接收时钟,控制接收数据的速率。 2、8251 的初始化编程和状态字 8251 是一个可编程的多功能串行通信接口芯片,在使用前必须对它进行初始化编程。初始化编 程包括CPU 写方式控制字和操作命令字到8251 同一控制口,在初始化编程时必须按一定的顺序。如 下面的流程图:
串口通信实验报告全版.doc
实验三双机通信实验 一、实验目的 UART 串行通信接口技术应用 二、实验实现的功能 用两片核心板之间实现串行通信,将按键信息互发到对方数码管显示。 三、系统硬件设计 (1)单片机的最小系统部分 (2)电源部分 (3)人机界面部分
数码管部分按键部分 (4)串口通信部分 四、系统软件设计 #include
sbit L1=P0^5; sbit L2=P0^6; sbit L3=P0^7; uint m=0,i=0,j; uchar temp,prt; /***y延时函数***/ void delay(uint k) { uint i,j; //定义局部变量ij for(i=0;i { m=1; //KEY1键按下 return(m); } if(H2==0) { m=4; //KEY4键按下 return(m); } } } if(L2==0) { delay(5); if (L2==0) { L2=0;H1=1;H2=1; if(H1==0) { m=2; //KEY2键按下 return(m); } if(H2==0) { m=5; //KEY5键按下 return(m); } } } if(L3==0) { delay(5); if (L3==0) { L3=0;H1=1;H2=1; if(H1==0) { m=3; //KEY3键按下 课程名称:Zigbee技术及应用实验项目:串口通信实验指导教师: 专业班级:姓名:学号:成绩: 一、实验目的: (1)认识串口通信的概念; (2)学习单片机串口通信的开发过程; (3)编写程序,使单片机与PC通过串口进行通信。 二、实验过程: (1)根据实验目的分析实验原理; (2)根据实验原理编写C程序; (3)编译下载C程序,并在实验箱上观察实验结果。 三、实验原理: 串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送,此时只需要一条数据线,外加一条公共信号地线和若干条控制信号线。因为一次只能传送一位,所以对于一个字节的数据,至少要分8位才能传送完毕,如图3-1所示。 图2-1串行通信过程 串行通信制式: (1)单工制式 这种制式是指甲乙双方通信时只能单向传送数据,发送方和接收方固定。 (2)半双工制式 这种制式是指通信双方都具有发送器和接收器,即可发送也可接收,但不能同时接收和发送,发送时不能接收,接收时不能发送。 (3)全双工制式 这种制式是指通信双方均设有发送器和接收器,并且信道划分为发送信道和接收信道,因此全双工制式可实现甲乙双方同时发送和接收数据,发送时能接收,接收时能发送。 三种制式分别如图3-2所示 图3-2串行通信制式 3.1硬件设计原理 CC2530有两个串行通信接口USART0和USART1,两个USART具有同样的功能,可已分别运行于UART模式和同步SPI模式。 CC2530的两个串行通信接口引脚图分布如表3-1所示 表3-1 CC2530串行通信口引脚图分布 本实验CC2530模块使用的是USART1的位置2,P1_6和P1_7。 串行通信实验报告 班级学号日期 一、实验目的: 1、掌握单片机串行口工作方式的程序设计,及简易三线式通讯的方法。 2、了解实现串行通讯的硬环境、数据格式的协议、数据交换的协议。 3、学习串口通讯的程序编写方法。 二、实验要求 1.单机自发自收实验:实现自发自收。编写相应程序,通过发光二极管观察收发状态。 2.利用单片机串行口,实现两个实验台之间的串行通讯。其中一个实验台作为发送方,另一侧为接收方。 三、实验说明 通讯双方的RXD、TXD信号本应经过电平转换后再行交叉连接,本实验中为减少连线可将电平转换电路略去,而将双方的RXD、TXD直接交叉连接。也可以将本机的TXD接到RXD上。 连线方法:在第一个实验中将一台实验箱的RXD和TXD相连,用P1.0连接发光二极管。波特率定为600,SMOD=0。 在第二个实验中,将两台实验箱的RXD和TXD交叉相连。编写收发程序,一台实验箱作为发送方,另一台作为接收方,编写程序,从内部数据存储器20H~3FH单元中共32个数据,采用方式1串行发送出去,波特率设为600。通过运行程序观察存储单元内数值的变化。 四、程序 甲方发送程序如下: ORG 0000H LJMP MAIN ORG 0023H LJMP COM_INT ORG 1000H MAIN: MOV SP,#53H MOV 78H,#20H MOV 77H,00H MOV 76H,20H MOV 75H,40H ACALL TRANS HERE: SJMP HERE TRANS: MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H MOV PCON,#80H SETB TR1 MOV SCON,#40H MOV IE,#00H CLR F0 MOV SBUF,78H WAIT1: JNB TI,WAIT1 CLR TI MOV SBUF,77H WAIT2: JNB TI,WAIT2 CLR TI MOV SBUF,76H WAIT3: JNB TI,WAIT3 CLR TI 单片机实验报告 实验名称:串行通信实验 姓名:高知明 学号:110404320 班级:通信3 实验时间:2014-6-11 南京理工大学紫金学院电光系 一、实验目的(四号+黑体) 1、理解单片机串行口的工作原理; 2、学习使用单片机的TXD\RXD口; 3、了解MAX232芯片的作用; 二、实验原理 MCS-51单片机内部集成有一个UART,用于全双工方式的串行通信,可以发送、接收数据。他有两个相互独立的接收、发送缓冲器,这两个缓冲器同名(SBUF),共用一个地址号(99H)。发送缓冲器只能写入,不能读出,接受缓冲器只能读出,不能写入。要发送的字节数据直接写入发送缓冲器。SBUF=a;当UART接收到数据后,CPU从接收缓冲器中读取数据,a=SBUF;串行口内部有两个移位寄存器,一个用于串行发送,一个用于串行接收。定时器T1作为波特率发生器,波特率发生器的溢出信号昨接受或发送移位寄存器的位移时钟。TI与RI分别为发送完数据的中断标志,用来想CPU发中断请求。 三、实验内容 1、发送信号 1)C51程序: #include串口通信实验讲解
串行通信实验报告
单片机串行通信实验