当前位置:文档之家› 单片机串行通信实验

单片机串行通信实验

单片机实验报告
实验名称:串行通信实验
姓名:高知明
学号: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<reg51.h>
void main(void)
{
SCON=0X40; //设置串口为接受,REN=0
PCON=0; //波特率不倍频
REN=1;
TMOD=0X20; //启动定时器1的方式2
TH1=0XFD; TL1=0XFD; //初值:0XFD
TR1=1; //启动定时器1
while(1)
{SBUF='U';
while(!TI);
TI=0; //发送中断清0
}}
2)硬件图:
2、接受装置:
1)C51程序:
#include<reg51.h>
char s[32];
void main(void)
{
char a,b=0;
SCON=0X40; //设置串口为接受,REN=0
PCON=0; //波特率不倍频
REN=1;
TMOD=0X20; //启动定时器1的方式2
TH1=0XFD; TL1=0XFD; //初值:0XFD
TR1=1; //启动定时器1
a=32;
for(;b<a;b++)
{
while(!RI);
if(SBUF!='U') //如果SBUF中数据不等于U s[a]=SBUF; //接受到的数据取出给s[a]
else SBUF='A'; //否折把发送的数据装载到SBUF中RI=0; //标志位清零等待,等待下一次接受 }}
2)硬件图:
四、小结与体会
通过这次串行通信实验,有了上节课的简单了解,我对单片机串行口的工作原理有了更为深入的了解,比如说发送缓冲器只可以写入不可读出、接收缓冲器只可以读出不可以写入、定时器T1作为波特率发生器,它的溢出信号作接收或发送移位寄存器的移位时钟、T1和R1分别为发送和接收完数据的中断标志等问
题。

相关主题