单片机串行通信实验报告

合集下载

单片机汇编 串口通信实验

单片机汇编  串口通信实验

一、实验项目名称串口通信实验二、实验内容现有两台单片机应用系统。

甲机发送内存中以TR_BUF为首地址的10个数据串,乙机把接收到的数据存入以RC_BUF为首地址的内存单元中。

设甲、乙两机的振荡频率为12MHz,串行口均工作在方式1下。

要求甲机用查询方式编程,乙机用中断方式编程。

三、实验原理图(纯软件部分实验报告可不要本部分)四、编程思路及算法分析流程图:五、程序清单甲机发送内存中以TR_BUF为首地址的10个数据串.org 0000hmov r2,#10mov r1,#tr_bufmov a,#0fehlp1: mov @r1,arl ainc r1djnz r2,lp1mov TMOD,#20Hmov th1,#0fdhmov tl1,#0fdhsetb tr1mov scon,#40hmov r0,#tr_bufmov r7,#100acall dy1slp: mov sbuf,@r0jnb ti,$clr tiinc r0djnz r7,lpsjmp $dy1s: mov r6,#200m1: mov r5,#0fahdjnz r5,$djnz R6,m1retEnd乙机把接收到的数据存入以RC_BUF为首地址的内存单元中org 0000hajmp mainorg 0023hajmp s20fworg 0030hmain: mov TMOD,#20Hmov th1,#0fdhmov tl1,#0fdhsetb tr1setb essetb eamov scon,#50hmov r0,#rc_bufmov r2,#10sjmp $s20fw: clr rimov @r0,sbufinc r0djnz r2,fanmov r3,#10mov r1,#rc_buflp1: mov a,@r1mov p1,aacall dy1sinc r1djnz r3,lp1fan: retidy1s: mov r6,#200m1: mov r5,#0fahdjnz r5,$djnz R6,m1retend六、实验仿真结果要有适当的图文解释。

串行通讯实验报告

串行通讯实验报告

一、实验目的1. 理解串行通讯的基本原理及通信方式。

2. 掌握串行通讯的硬件设备和软件实现方法。

3. 学会使用串行通讯进行数据传输。

4. 通过实验,加深对单片机串行口工作原理和程序设计的理解。

二、实验原理串行通讯是指将数据一位一位地按顺序传送的通信方式。

与并行通讯相比,串行通讯的通信线路简单,成本低,适用于远距离通信。

串行通讯主要有两种通信方式:异步通信和同步通信。

1. 异步通信异步通信中,每个字符之间没有固定的时钟同步,而是通过起始位和停止位来标识字符的开始和结束。

每个字符由起始位、数据位、奇偶校验位和停止位组成。

2. 同步通信同步通信中,数据传输过程中有固定的时钟同步信号,发送方和接收方通过同步时钟来保证数据传输的准确性。

三、实验设备1. 单片机最小系统教学实验模块2. 数码管显示模块3. 串行数据线4. 电脑四、实验内容1. 单片机串行口初始化首先,我们需要对单片机串行口进行初始化,包括设置波特率、通信方式、数据位、停止位等。

2. 数据发送在单片机程序中,编写数据发送函数,将数据通过串行口发送出去。

3. 数据接收编写数据接收函数,从串行口接收数据。

4. 数据显示将接收到的数据通过数码管显示出来。

5. 双机通信通过两套单片机实验模块,实现双机通信。

一台单片机作为发送方,另一台单片机作为接收方。

五、实验步骤1. 将单片机最小系统教学实验模块和数码管显示模块连接到电脑上。

2. 编写单片机程序,初始化串行口,并设置波特率、通信方式、数据位、停止位等。

3. 编写数据发送函数,将数据通过串行口发送出去。

4. 编写数据接收函数,从串行口接收数据。

5. 编写数据显示函数,将接收到的数据通过数码管显示出来。

6. 编写双机通信程序,实现两台单片机之间的通信。

7. 将程序下载到单片机中,进行实验。

六、实验结果与分析1. 通过实验,成功实现了单片机串行口的初始化、数据发送、数据接收和数据显示。

2. 成功实现了双机通信,两台单片机之间可以相互发送和接收数据。

单片机串行通信实验报告(实验要求、原理、仿真图及例程)

单片机串行通信实验报告(实验要求、原理、仿真图及例程)

《嵌入式系统原理与实验》实验指导实验三调度器设计基础一、实验目的和要求1.熟练使用Keil C51 IDE集成开发环境,熟练使用Proteus软件。

2.掌握Keil与Proteus的联调技巧。

3.掌握串行通信在单片机系统中的使用。

4.掌握调度器设计的基础知识:函数指针。

二、实验设备1.PC机一套2.Keil C51开发系统一套3.Proteus 仿真系统一套三、实验容1.甲机通过串口控制乙机LED闪烁(1)要求a.甲单片机的K1按键可通过串口分别控制乙单片机的LED1闪烁,LED2闪烁,LED1和LED2同时闪烁,关闭所有的LED。

b.两片8051的串口都工作在模式1,甲机对乙机完成以下4项控制。

i.甲机发送“A”,控制乙机LED1闪烁。

ii.甲机发送“B”,控制乙机LED2闪烁。

iii.甲机发送“C”,控制乙机LED1,LED2闪烁。

iv.甲机发送“C”,控制乙机LED1,LED2停止闪烁。

c.甲机负责发送和停止控制命令,乙机负责接收控制命令并完成控制LED的动作。

两机的程序要分别编写。

d.两个单片机都工作在串口模式1下,程序要先进行初始化,具体步骤如下:i.设置串口模式(SCON)ii.设置定时器1的工作模式(TMOD)iii.计算定时器1的初值iv.启动定时器v.如果串口工作在中断方式,还必须设置IE和ES,并编写中断服务程序。

(2)电路原理图Figure 1 甲机通过串口控制乙机LED闪烁的原理图(3)程序设计提示a.模式1下波特率由定时器控制,波特率计算公式参考:b.可以不用使用中断方式,使用查询方式实现发送与接收,通过查询TI和RI标志位完成。

2.单片机与PC串口通讯及函数指针的使用(1)要求:a.编写用单片机求取整数平方的函数。

b.单片机把计算结果向PC机发送字符串。

c.PC机接收计算结果并显示出来。

d.可以调用Keil C51 stdio.h 中的printf来实现字符串的发送。

单片机双机串行实验报告

单片机双机串行实验报告

单片机双机串行实验报告实验报告:单片机双机串行通信实验一、实验目的本实验旨在通过单片机实现双机间的串行通信,包括数据的发送和接收,并利用这种通信方式完成一定的任务。

二、实验原理1.串行通信:串行通信是将数据一个个位发送或接收的方式。

数据通过一个线路逐位发送或接收,可以减少通信所需的线路数目。

2. UART串口通信:UART是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter)的简称,是一种最常用的串口通信方式,通常用于单片机与计算机、单片机与单片机之间的通信。

3.串口模块:串口模块是负责将数据转变为串行传输的硬件模块,包括发送端和接收端。

通过设置波特率、数据位、校验位和停止位等参数,可以实现数据的可靠传输。

4.单片机串口通信:单片机内部集成了UART串口通信接口,只需要通过相应的寄存器配置,可以实现串口通信功能。

5.双机串行通信:双机串行通信是通过串口将两台单片机进行连接,一台单片机作为发送端,负责将数据发送出去;另一台单片机作为接收端,负责接收并处理发送的数据。

三、实验器材与软件1.实验器材:两台单片机、USB转TTL模块、杜邦线若干。

2. 实验软件:Keil C51集成开发环境。

四、实验内容与步骤1.配置发送端单片机(1)连接单片机和USB转TTL模块,将USB转TTL模块的TXD端连接到单片机的P3口,将GND端连接到单片机的地线。

(2)在Keil C51环境下创建新工程,编写发送端程序。

(3)配置串口通信的波特率、数据位、校验位和停止位,并打开串口发送中断。

(4)循环发送指定的数据。

2.配置接收端单片机(1)连接单片机和USB转TTL模块,将USB转TTL模块的RXD端连接到单片机的P3口,将GND端连接到单片机的地线。

(2)在Keil C51环境下创建新工程,编写接收端程序。

(3)配置串口通信的波特率、数据位、校验位和停止位,并打开串口接收中断。

实验6 单片机与PC机间的串行通信

实验6  单片机与PC机间的串行通信

实验6 单片机与PC机间的串行通信一、实验目的1、掌握电平转换器件RS-232的使用方法;2、掌握Proteus VSM虚拟终端(VITUAL TERMINAL)的使用;3、掌握单片机与PC机间的串行通信软硬件设计方法。

二、实验内容实现利用虚拟终端仿真单片机与PC机间的串行通信。

PC机先发送从键盘输入的数据,单片机接收后回发给PC机。

单片机同时将收到的30~39H间的数据转换成0~9的数字显示,其他字符的数据直接显示为其ASCII码。

单片机和PC机进行通信时,要求使用的波特率、传送的位数等相同。

要能够进行数据传送也必须首先测试双方是否可以可靠通信。

可在PC机和单片机上各编制非常短小的程序,具体可分成PC机串行口发送接收程序、单片机串行口发送程序和单片机串行口发送接收程序。

这三个程序能运行通过,即可证明串行口工作正常。

PC机串行口发送接收程序设置串行口为波特率9600、8位数据、1位停止位、无奇偶校验的简单设置。

从键盘接收的字符可从串行口发送出去,从串行口接收的字符在屏幕上显示。

通过让串行口发送线和接收线短接可测试微机串行口,通过让串行口和单片机系统相接,使用此程序可进一步测试单片机的串行通信状况。

具体程序用BASIC编制,简单易懂。

直接输入即可运行。

程序RS232.三、实验电路原理图图7-1 单片机与PC机间电路原理图四、实验步骤1、在PROTEUS中画好电路原理图。

2、串口模型属性设置串口模型属性设置为:波特率―4800;数据位―8;奇偶校验―无;停止位-1,如图7-2所示。

图7-2 串口模型属性设置3、虚拟终端属性设置PCT代表计算机发送数据,PCR用来监视PC接收到的数据,它们的属性设置完全一样,如图7-3所示。

SCMT和SCMR分别是单片机的数据发送和接收终端,用来监视单片机发送和接收的数据,它们的属性设置也完全一样,如图7-4所示。

单片机和PC机双方的波特率、数据位、停止位和检验位等要确保和串口模型的设置一样,并且同单片机程序中串口的设置一致。

单片机串行通信实验结果描述

单片机串行通信实验结果描述

单片机串行通信实验结果描述一、引言单片机串行通信是嵌入式系统中常用的一种通信方式,通过串行通信可以实现单片机与其他外部设备的数据交换。

本文将详细描述单片机串行通信实验的结果。

二、实验目的本次实验的目的是通过单片机串行通信,实现与计算机之间的数据传输。

具体要求如下: 1. 使用串口通信模块与计算机进行数据交互; 2. 在计算机端编写相应的程序,实现数据的发送和接收; 3. 确保数据的准确传输和接收。

三、实验器材1.单片机开发板;2.串口通信模块;3.计算机。

四、实验步骤1. 连接硬件将单片机开发板与计算机通过串口通信模块连接,确保连接稳定。

2. 编写单片机程序在单片机开发板上编写程序,实现与计算机的串行通信。

具体步骤如下: 1. 初始化串口通信模块的相关参数,包括波特率、数据位、停止位等; 2. 设置串口通信模块为发送模式; 3. 通过串口发送数据。

3. 编写计算机程序在计算机上编写程序,实现与单片机的串行通信。

具体步骤如下: 1. 打开串口通信端口,并设置相关参数,与单片机的配置保持一致; 2. 接收串口发送的数据,并进行处理; 3. 将处理后的数据显示在计算机的界面上。

4. 运行实验将单片机程序烧录到开发板上,运行计算机程序。

观察数据的传输和接收情况,并记录实验结果。

五、实验结果与分析经过实验,我们得到了如下结果: 1. 数据传输稳定:通过串行通信,单片机与计算机之间的数据传输稳定可靠,没有出现丢失数据或传输错误的情况。

2. 传输速率较快:串行通信的传输速率较快,可以满足实际应用的需求。

3. 数据处理准确:计算机程序正确接收并处理了从单片机发送的数据,实现了数据的正确显示。

六、实验总结通过本次实验,我们掌握了单片机串行通信的基本原理和操作方法,实现了与计算机之间的数据传输。

实验结果表明,单片机串行通信是一种稳定可靠的通信方式,能够满足实际应用的需求。

在今后的实际工作中,我们可以利用串行通信实现更多功能,提高系统的性能和可靠性。

双机通信实验报告.doc

双机通信实验报告.doc

双机通信实验报告。

单片机实验报告(自动化15级)实验名称:串行通信实验1.实验1的目的。

掌握单片机串口的工作模式;2.掌握双机通信的接口电路设计和程序设计。

2.实验设备1。

个人电脑;2.单片机最小系统教学实验模块:3.数码管显示模块三、实验内容1。

两套单片机测试装置(两个实验组)共同完成了实验。

我们U1是机器A,U2是机器B。

机器A将学生的学号后的8位数字发送到机器B。

机器B接收到这8位数字,并将其显示在8位数字的电子管上。

该电路如图1所示。

串行通信模式要求为模式1,波特率为2400位/秒,不是双倍,单片机外部晶振频率为11.0592米。

图1双机通信原理附加要求示意图:机器b收到后,该机器(机器b)的学生编号的最后8位数字被送回机器a,并显示在数码管上。

2.单片机与PC机之间的通信单片机向PC机发送数据。

单片机将本机的学生号(学生本人)反复发送到PC机,发送波特率为1200,采用模式1,单片机外部晶振频率为11.0592米四、实验原理4.1串行通信模式在串行通信中,有两种基本通信模式:异步通信。

异步串行通信规定了字符数据的传输格式,即每个数据以相同的帧格式传输。

每个帧信息由起始位、数据位、奇偶校验位和停止位组成。

本实验主要研究异步通信的实现方法。

在异步通信中,每个字符使用一个起始位和一个停止位作为字符开始和结束的符号,因此占用时间。

因此,为了提高传输数据块时的通信速度,这些标记通常被去除,并采用同步通信。

同步通信不像异步通信那样依赖起始位在每个字符数据的开头发送和接收同步。

相反,同步字符用于在每个数据块传输开始时同步发送方和接收方。

根据通信方式,数据传输线可分为三种类型:单工模式、半双工模式、全双工模式。

(1)单工模式在单工模式中,通信线路的一端连接到发射机,另一端连接到接收机,这形成单向连接,并且仅允许数据在固定方向上传输。

(2)半双工模式在半双工模式下,系统中的每个通信设备由一个发射机和一个接收机组成,它们通过收发器开关连接到通信线路,如图33所示-1.实验1的目的。

单片机双机串行实验报告

单片机双机串行实验报告

单片机双机串行实验报告实验目的:通过单片机实现双机串行通信功能,掌握串行通信的原理、方法和程序设计技巧。

实验原理:双机串行通信是指通过串行口将两台单片机连接起来,实现数据的传输和互动。

常用的串行通信方式有同步串行通信和异步串行通信。

异步串行通信是指通过发送和接收数据时的起始位、停止位和校验位进行数据的传输。

而同步串行通信是指通过外部时钟信号进行数据的同步传输。

实验器材:1.两台单片机开发板(MCU7516)2.两个串口线3.两台计算机实验步骤:1.将两台单片机开发板连接起来,通过串口线连接它们的串行口。

2.在两台计算机上分别打开串口调试助手软件,将波特率设置为相同的数值(例如9600)。

3.在编程软件中,编写两个程序分别用于发送数据和接收数据。

4.在发送数据的程序中,首先要设置串口的波特率、数据位、停止位和校验位,并将数据存储在缓冲区中。

然后利用串口发送数据的指令将数据发送出去。

5.在接收数据的程序中,同样要设置串口的参数。

然后使用串口接收数据的指令将接收到的数据存储在缓冲区中,并将其打印出来。

实验结果与分析:经过实验,我们成功地实现了单片机之间的双机串行通信。

发送数据的单片机将数据发送出去后,接收数据的单片机能够正确地接收到数据,并将其打印出来。

实验中需要注意的是,串口的波特率、数据位、停止位和校验位必须设置为相同的数值。

否则,发送数据的单片机和接收数据的单片机无法正常进行通信。

同时,在实验之前,需要了解单片机开发板支持的串口通信相关的指令和函数。

实验总结:通过本次实验,我们深入了解了单片机之间的双机串行通信原理和方法。

掌握了串口的设置和使用方法,以及相关的指令和函数。

在实验中,我们学会了如何通过串行口实现数据的传输和互动,为今后的单片机应用和开发打下了基础。

同时,我们还发现,双机串行通信在实际应用中有着广泛的用途。

例如,可以通过串行通信实现两台计算机之间的数据传输,或者实现单片机与计算机之间的数据收发。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机实验报告(三)
实验名称:串行通信
姓名:张昊
学号: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的格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
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的格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
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"
#define uchar unsigned char
uchar a,flag;
void delay();
void init() //串行口初始化函数:实现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;
}
void send(uchar dat) //发送函数:发送一个8位的数据
{
SBUF=dat; //把发送的数据装载入SBUF中
while(TI==0);//等待发送完成
TI=0; //发送完成,标志位必须软件清零
}
uchar receive() //接收函数:接收一帧数据
{
uchar dat; //保存接收到的数据
while(RI==0);//等待接收完成
RI=0; //标志位清零,等待下次接收
dat=SBUF; //接收到的数据取出给dat
return dat; //返回dat给主函数处理
}*/
void receive() interrupt 4 using 1
{
RI=0;
P1=SBUF;
delay();
a=SBUF;
flag=1;
}
void delay( ) //延时函数:实现约15ms的时间
{
uchar m,n;
for(m=0;m<200;m++)
for(n=0;n<200;n++);
}
void main() //主函数:实现数据发送
{
init(); //初始化串行口
while(1)
{
//send(0xAA); //发送0x55给串行口清零
//P1=receive();
//delay(); //给系统一点响应时间
if (flag==1)
{
flag=0;
send(a);
delay();
}
}
}
仿真图
四、小结与体会
通过这次串行通信实验,有了上节课的简单了解,我对单片机串行口的工作原理有了更
为深入的了解,比如说发送缓冲器只可以写入不可读出、接收缓冲器只可以读出不可以写入、定时器T1作为波特率发生器,它的溢出信号作接收或发送移位寄存器的移位时钟、T1和R1分别为发送和接收完数据的中断标志等问题。

相关文档
最新文档