单片机串行通信实验报告.docx

上传人:b****7 文档编号:8893999 上传时间:2023-02-02 格式:DOCX 页数:6 大小:58.61KB
下载 相关 举报
单片机串行通信实验报告.docx_第1页
第1页 / 共6页
单片机串行通信实验报告.docx_第2页
第2页 / 共6页
单片机串行通信实验报告.docx_第3页
第3页 / 共6页
单片机串行通信实验报告.docx_第4页
第4页 / 共6页
单片机串行通信实验报告.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

单片机串行通信实验报告.docx

《单片机串行通信实验报告.docx》由会员分享,可在线阅读,更多相关《单片机串行通信实验报告.docx(6页珍藏版)》请在冰豆网上搜索。

单片机串行通信实验报告.docx

单片机串行通信实验报告

 

单片机实验报告(三)

 

实验名称:

串行通信

姓名:

张昊

学号:

110404247

班级:

通信2班

时间:

2013.11

 

南京理工大学紫金学院电光系

 

一、实验目的

1、理解单片机串行口的工作原理;

2、学习使用单片机的TXD、RXD口;

3、了MAX232解芯片的作用。

 

二、实验原理

计算机与其外部设备之间进行数据交换称为通信。

通信的基本方式可分为并行通信和串行通信两种。

并行通信中数据至少有8路,可以同时将一个字节的8位二进制代码发送到对方。

串行通信用两根传输线进行数据的传输,一次只能发送一位二进制。

串行通信技术根据传送的编码格式不同,可分为同步通信和异步通信两种方式:

1、同步方式:

数据以数据块为单位传送。

在开始传送前用同步字符来指示,并由时钟来实现发送端和接收端同步。

2、异步方式:

数据时不连续传送的。

以字符为单位进行传送。

被传送字节分为:

起始位、数据位、校验位和停止位,称为一帧。

常用格式:

a、1bit起始位+8bit数据位+无校验位+1bit停止位 

b、1bit起始位+8bit数据位+1位偶校验位+1bit停止位

串行通信技术根据数据流动方向分为三种方式:

1、单工通信:

数据流动方向是固定的,数据只能由一方发送到另一方。

2、半双工通信:

数据的流动方向是双向的,但一时刻,数据只能在一个方向流动。

3、全双工通信:

允许数据在两个方向流动,即通信双方的数据发送和接收是同时的。

 

 

串行口控制寄存器SCON的格式如下:

D7D6D5D4D3D2D1D0

SM0

SM1

SM2

REN

TB8

RB8

T1

RI

SM0、SM1:

由软件置位或清零,用于选择串行口四种工作方式。

SM2:

多机通信控制位。

在方式2和方式3中,如SM2=1,则接收到的第9位数据(RB8)为0时不启动接收中断标志RI(即RI=0),并且将接收到的前8位数据丢弃;RB8为1时,才将接收到的前8位数据送入SBUF,并置位RI,产生中断请求。

当SM2=0时,则不论第9位数据为0或1,都将前8位数据装入SBUF中,并产生中断请求。

在方式0时,SM2必须为0。

REN:

允许串行接收控制位。

若REN=0,则禁止接收;REN=1,则允许接收,该位由软件置位或复位。

TB8:

发送数据D8位。

在方式2和方式3时,TB8为所要发送的第9位数据。

在多机通信中,以TB8位的状态表示主机发送的是地址还是数据:

TB8=0为数据,TB8=1为地址;也可用作数据的奇偶校验位。

该位由软件置位或复位。

RB8:

接收数据D8位。

在方式2和方式3时,接收到的第9位数据,可作为奇偶校验位或地址帧或数据帧的标志。

方式1时,若SM2=0,则RB8是接收到的停止位。

在方式0时,不使用RB8位。

TI:

发送中断标志位。

在方式0时,当发送数据第8位结束后,或在其它方式发送停止位后,由内部硬件使TI置位,向CPU请求中断。

CPU在响应中断后,必须用软件清零。

此外,TI也可供查询使用。

RI:

接收中断标志位。

在方式0时,当接收数据的第8位结束后,或在其它方式接收到停止位的中间由内部硬件使RI置位,向CPU请求中断。

同样,在CPU响应中断后,也必须用软件清零。

RI也可供查询使用。

电源控制寄存器PCON的格式如下:

D7D6D5D4D3D2D1D0

SMOD

---

---

---

CF1

CF0

PD

IDL

PCON的最高位SMOD是串行口波特率系数控制位。

SMOD=1时,波特率增大一倍。

其余各位与串行口无关。

波特率设置:

串行口的4种工作方式对应着三种波特率模式。

对于方式0,波特率是固定的,为fosc/12。

对于方式2,波特率由振荡频率fosc和SMOD(PCON.7)所决定。

其对应公式为

波特率=2SMOD×fosc/64。

当SMOD=0时,波特率为fosc/64;当SMOD=1时,波特率为fosc/32。

对于方式1和方式3,波特率由定时器/计数器T1的溢出率和SMOD决定,即由下式确定:

波特率=2SMOD×定时器/计数器T1溢出率/32

 

三、实验内容

#include"reg51.h"

#defineucharunsignedchar

uchara,flag;

voiddelay();

voidinit()//串行口初始化函数:

实现9600b/s的波特率,只发送不接收

{

TMOD=0x20;//定时器1的方式2

TH1=0xfd;TL1=0xfd;//初值:

0xfd

PCON=0x00;//波特率不倍频

TR1=1;//启动定时器1

SCON=0x50;//设置串行口为接收,REN=0

TI=0;//发送标志位初始为0

RI=1;//接收标志位初始化为0

ES=1;EA=1;flag=0;

}

voidsend(uchardat)//发送函数:

发送一个8位的数据

{

SBUF=dat;//把发送的数据装载入SBUF中

while(TI==0);//等待发送完成

TI=0;//发送完成,标志位必须软件清零

}

ucharreceive()//接收函数:

接收一帧数据

{

uchardat;//保存接收到的数据

while(RI==0);//等待接收完成

RI=0;//标志位清零,等待下次接收

dat=SBUF;//接收到的数据取出给dat

returndat;//返回dat给主函数处理

}*/

voidreceive()interrupt4using1

{

RI=0;

P1=SBUF;

delay();

a=SBUF;

flag=1;

}

voiddelay()//延时函数:

实现约15ms的时间

{

ucharm,n;

for(m=0;m<200;m++)

for(n=0;n<200;n++);

}

voidmain()//主函数:

实现数据发送

{

init();//初始化串行口

while

(1)

{

//send(0xAA);//发送0x55给串行口清零

//P1=receive();

//delay();//给系统一点响应时间

if(flag==1)

{

flag=0;

send(a);

delay();

}

}

}

仿真图

 

 

四、小结与体会

通过这次串行通信实验,有了上节课的简单了解,我对单片机串行口的工作原理有了更为深入的了解,比如说发送缓冲器只可以写入不可读出、接收缓冲器只可以读出不可以写入、定时器T1作为波特率发生器,它的溢出信号作接收或发送移位寄存器的移位时钟、T1和R1分别为发送和接收完数据的中断标志等问题。

 

WelcomeTo

Download!

!

!

 

欢迎您的下载,资料仅供参考!

 

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

当前位置:首页 > 高等教育 > 工学

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

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