好文档 - 专业文书写作范文服务资料分享网站

串口通信实验报告

天下 分享 时间: 加入收藏 我要投稿 点赞

大连理工大学实验报告

成绩:

串口通信实验

一、实验目的和要求

? 了解串口通信的原理与机制

? 掌握基于8051的串口通信硬件电路设计方法 ? 掌握8051串口通信程序调试方法

二、实验原理和内容

实验原理:

1.串口通信简介

串口通信是指数据在一根数据线上按照二进制数的数位一位接一位的传输。其特点是通信线路简单,只要一对传输线就可以实现通信(如电话线),可大大地降低成本,适用于远距离通信。缺点是传送速度慢。

2. 51单片机串行口简介

51单片机的串行口是一个可编程全双工的通信接口,具有UART(通用异步收发器)的全部功能,能同时进行数据的发送和接收,也可以作为同步移位寄存器使用。

51单片机的串行口主要由两个独立的串行数据缓冲寄存器SBUF组成,它可以通过特殊功能寄存器SBUF对串行接收或串行发送寄存器进行访问,两个寄存器共用一个地址99H,但在物理上是两个独立的寄存器,由指令操作决定访问哪一个寄存器。执行写指令时访问串行发送寄存器;执行读指令时,访问串行接收寄存器。

3.串行口控制寄存器SCON

串行口控制寄存器SCON用来设定串行口的工作方式、接收或发送控制位以及状态标志位等。

在本实验中设定SM0为0,SM1为1,采用串行口的工作方式1(8位异步收发,波特率可变,由定时器控制)。允许串行接收位REN设置为1,其它控制、标志位设置为0。(即令SCON=0X50)

4. 定时器/计数器模式控制寄存器TMOD

定时器/计数器模式控制寄存器TMOD是一个逐位定义的8位寄存器,其中低四位(即D0 ~ D3)定义定时器/计数器T0,高四位(即D4 ~ D7)定义定时器/计数器T1。

在本实验中使用定时器1,设定M1=1,M2=0,,采用定时器T1的工作方式2(自动重载8位定时器/计数器),其它控制位设置为0。并由晶振频率(11.0592MHZ)和波特率(9600)计算初始化定时器T1:TH1=TL1=0xfd。

最后通过对TR1置1启动定时器T1。 5.中断允许寄存器IE

EA:中断允许总开关控制位,置1,所有中断请求开放,置0,所有中断请求禁止。 ES: 当前位为1表示允许串行口中断,当前位为0表示禁止串行口中断 6.数码管显示原理

首先利用了74HC595这一CMOS器件,通过串行输入并行输出的方法,将单片机中的数据传输到数码管上显示。并且利用了片选的方式,以4ms为一个显示周期,轮流显示四个数码管,实现视觉上看到四个数码管同时显示不同数字的功能。

实验内容:

本实验将采用Proteus仿真软件仿真单片机及其外围器件,通过实现向串口调试助手发送数据和接收显示串口调试助手发来的数据这两个过程来模拟串口通信。

1. 利用VSPD软件虚拟两个COM端口:COM1和COM2

2. 利用Proteus仿真单片机及其外围设备并将单片机和COM1相连 3. 串口调试助手连接COM2端口

4. 利用Keil软件编程控制单片机实现串口通信

三、主要设备与开发环境

1. 笔记本电脑 2. Keil开发系统 3. Proteus仿真系统 4. 串口调试助手V2.2 5. 虚拟串口VSPD软件

四、实验步骤与操作方法

1. 在Proteus仿真系统中搭载电路

(1)选取AT89C52芯片,搭载晶振电路与复位电路。

(2)将晶振电路中的晶振改为11.0592MHZ,同时也将AT89C52中的晶振改为11.0592MHZ。

(3)选取COMPIM,配置串口,将AT89C52上的P3.0和P3.1与COMPIM上的RXD,TXD相连接。

(4)把COMPIM的物理端口设置为COM1,物理波特率设置为9600,物理数据位数设为8位,物理奇偶校验位设置为NONE,下面的虚拟波特率、虚拟数据位数和虚拟奇偶校验位与相应物理参数相同。

(4)选取7SEG-MPX4-CC数码显示管,74HC595串并转换芯片,搭载数码管显示电路,和74HC595串并转化电路。 2. 在Keil开发系统中建立工程,编写相关代码

(1)编写相关代码

(2)将Keil和Proteus进行联调连接

3. 建立虚拟串口,并通过串口调试助手调试,验证实验效果

(1)通过VSPD创建两个可以相互通信的虚拟串口,如COM1和COM2。点击添加端口按钮后,可以看到左边栏中的虚拟端口处看到你新创建的两个虚拟端口。

(2)打开串口调试助手V2.2,对其进行配置,将串口改为COM2端口,波特率设为960,校验位选择NONE,数据位为8位,停止位为1位。 (3)编译Keil中的代码,无误后,点击start。

(4)在Proteus中点击play,可以在串口调试助手接受信息的窗口中观察到发送的信息

(5)在串口调试助手中,在发送信息框中输入4位数字,点击‘手动发送’按钮,可以在Proteus中看到数码显示管上显示出发送的数字。

五、实验结果

1. AT89C52通过串口发送给PC的所有五位同学的信息

2. PC通过串口发送给AT89C52的四位数字,并在数码管上显示

3. PC通过串口继续发送给AT89C52的相应信息,并在数码管上显示

六、核心代码及分析

1. 初始化函数

Init函数主要实现串行口通信的初始化操作: void init() {

SCON=0X50; //设置串行口为工作方式1,将串行接收位REN置1 TMOD=0x20; //设置定时器1为工作方式2 TH1=0xfd;

TL1=0xfd; //根据波特率初始化定时器1 TR1=1; //启动定时器1计数 TI=0; RI=0; //将发送和接受中断标志位清0 }

2. PC端发送信息给AT89C52

在PC端准备好将要发送的字符串后,通过对字符串从头到尾的遍历,逐个字节发送到AT89C52的接收寄存器SBUF上,根据TI是否产生高电平后判断是否完成当前字节的发送,最后单独发送’\\0’字符,即可完成PC通过串口发送信息给AT89C52的操作。下面是相关代码:

void send_information()

{

char a;

char* A = \这里将个人信息用hello代替 a = *A;

串口通信实验报告

大连理工大学实验报告成绩:串口通信实验一、实验目的和要求?了解串口通信的原理与机制?掌握基于8051的串口通信硬件电路设计方法?掌握8051串口通信程序调试方法二、实验原理和内容实验原理:
推荐度:
点击下载文档文档为doc格式
5dg7e1kjsi28mwx1483k6i8ss1c8w101bg9
领取福利

微信扫码领取福利

微信扫码分享