实验四-串口通信实验

合集下载

实验4-7(外部中断,串口通信)

实验4-7(外部中断,串口通信)
五、实验原理及软件框图
主程序框图外部中断子程序框图
六,参考程序
#include <reg51.h>
sbit LED = P1^0;
bit LEDBuf;
void ExtInt0() interrupt 0
{
LEDBuf = !LEDBuf;
LED = LEDBuf;
}
void main()
{
LEDBuf = 0;
七段数码管的字型代码表如下表:
a
f b
g
e c
d
。dp
显示字形
g
f
e
d
c
b
a
段码
0
0
1
1
1
1
1
1
3fh
1
0
0
0
0
1
1
0
06h
2
1
0
1
1
0
1
1
5bh
3
1
0
0
1
1
1
1
4fh
4
1
1
0
0
1
1
0
66h
5
1
1
0
1
1
0
1
6dh
6
1
1
1
1
1
0
1
7dh
7
0
0
0
0
1
1
1
07h
8
1
1
1
1
1
1
1
7fh
9
1
1
0
1
1
1
1

串口通信实验报告

串口通信实验报告

串⼝通信实验报告⼤连理⼯⼤学实验报告成绩:串⼝通信实验⼀、实验⽬的和要求了解串⼝通信的原理与机制掌握基于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。

串口通讯方法的三种实现

串口通讯方法的三种实现

串口基本信息用一台电脑实验串口自发自收,实验前要将串口(以9针为例)的发送引脚(2脚)和接受引脚(3脚)短接。

三线连接:适用于计算机之间尤其是PC机和单片机之间的数据通信。

其连接信号对为(TxD,RxD)、(RxD,TxD)、(SG,SG)。

即发送数据TxD端和接受数据RxD端交叉连接,信号地SG对应连接。

七线交叉连接:适用于同型号的计算机之间的连接,如PC机间的数据通信。

其连接信号对为:(TxD,RxD)、(RxD,TxD)、(SG,SG)、(RTS,CTS)、(CTS,RTS)、(DSR.DTR)、(DTR,DSR)。

其中,TxD、RxD、SG与前面信号的含义相同,RTS为请求发送,CTS为准许发送,DSR为数据装置准备好,DTR为数据终端准备好。

在本地连接的微机系统中,RTS、CTS、DTR、DSR用作硬件联络控制信号。

目前使用的串口连接线有DB9和DB25两种连接器,用户可以国家使用的具体机器选择相应的连接器。

一个串口通讯类在/network/serialport.shtml。

PC机的RS-232接口的电平标准是-12V标示“1”,和+12V表示“0”,有些单片机的信号电平时TTL 型,即大于2.4v表示“1”,小于0.5v表示“0”,因此采用RS-232总线进行异步通信是,发送端和接受端要有一个电平转换接口。

串口通讯方法的三种实现串口是计算机上一种非常通用的设备通信协议。

大多数计算机包含两个基于RS232的串口。

串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS一232口。

同时,串口通信协议也可以用于获取远程采集设备的数据。

串口通信(Serial Communication),是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。

串口通信方便易行,应用广泛。

在Windows应用程序的开发中,我们常常需要面临与外围数据源设备通信的问题。

msp430 实验报告

msp430 实验报告

msp430 实验报告MSP430 实验报告引言:MSP430是一款低功耗、高性能的微控制器,广泛应用于嵌入式系统开发领域。

本实验报告将介绍我对MSP430进行的一系列实验,包括基本的GPIO控制、定时器应用、模拟信号采集和通信接口应用等。

实验一:GPIO控制在本实验中,我使用MSP430的GPIO引脚控制LED灯的亮灭。

通过配置引脚的输入/输出模式以及设置引脚电平,我成功地实现了对LED灯的控制。

这为后续实验奠定了基础,也让我更加熟悉了MSP430的寄存器配置。

实验二:定时器应用在本实验中,我探索了MSP430的定时器功能。

通过配置定时器的时钟源和计数模式,我实现了定时器中断功能,并利用定时器中断实现了LED灯的闪烁。

这个实验让我更加深入地了解了MSP430的定时器模块,并学会了如何利用定时器进行时间控制。

实验三:模拟信号采集在本实验中,我使用MSP430的模拟信号输入引脚和模数转换模块,成功地将外部的模拟信号转换为数字信号。

通过配置ADC模块的采样速率和精度,我实现了对模拟信号的准确采集,并将采集到的数据通过串口输出。

这个实验让我对MSP430的模拟信号处理有了更深入的了解。

实验四:通信接口应用在本实验中,我使用MSP430的串口通信模块,实现了与外部设备的数据传输。

通过配置串口的波特率和数据格式,我成功地实现了与计算机的串口通信,并通过串口发送和接收数据。

这个实验让我掌握了MSP430与外部设备进行数据交互的方法。

结论:通过一系列的实验,我对MSP430的基本功能和应用有了更深入的了解。

MSP430作为一款低功耗、高性能的微控制器,具备丰富的外设和强大的处理能力,适用于各种嵌入式系统的开发。

通过学习和实践,我掌握了MSP430的GPIO控制、定时器应用、模拟信号采集和通信接口应用等基本技能,为以后的嵌入式系统开发打下了坚实的基础。

未来展望:MSP430作为一款成熟的微控制器,具备广阔的应用前景。

串行通信实验原理

串行通信实验原理

串行通信实验原理序串行通信技术是一种基本的数字通信技术,它已经广泛地应用于现代的数字通信系统中。

与并行通信相比,串行通信在处理速度高、传输距离远、信号线使用少等方面具有很大的优势,因此在现代计算机内部以及计算机与外部设备之间的通信中应用广泛。

串行通信实验是理解串行通信原理和掌握串行通信应用的基本途径之一。

本文将介绍串行通信实验的原理、步骤以及注意事项,希望能够对读者在学习串行通信方面起到一定的帮助。

一、实验原理1.串行通信的基本概念串行通信是一种数据传输的方式,数据信号按照一个比特一个比特地顺序传输,每个比特之间通过同步信号进行分隔。

与之相对应的是并行通信,其数据信号在多根信号线上并行传输。

串行通信具有传输距离远、传输速度快、线路简单等优点,因此被广泛应用于各种数字通信系统中。

2.串行通信的实现串行通信的实现需要用到一些重要的电路,包括移位寄存器、同步信号发生器等。

移位寄存器用于将数据按照顺序存入、读出,并进行位移操作;同步信号发生器则用于发生用于分隔数据的同步信号,使得发送方和接收方的时序保持一致。

三、实验步骤本实验以ASM51单片机为例,演示了串行通信的应用过程。

1.硬件连接将示波器的通道1连接到P1.0引脚上,通道2连接到P3.0引脚上,波形分别对应发送数据和接收数据。

2.编写程序编写程序,对串行通信的数据发送、接收、位移等进行设置和控制,具体实现过程如下:(1) 设置移位寄存器,将需要发送的数据从高位开始存入。

(2) 设置同步信号发生器,发生用于分隔数据的同步信号。

(3) 控制寄存器进行位移操作,将数据按照顺序读出并发送。

(4) 在接收方,需要通过串行口中断方式对接收到的数据进行判断和处理。

3.实验操作按照编写的程序对硬件进行操作,发送一些测试数据,观察示波器上的波形变化,以及数据是否正确接收和处理。

四、实验注意事项1.串行通信实验需要耐心和细心,对硬件和程序进行仔细的连接和设置。

2.在传输数据时,需要保证发送方和接收方的时序保持一致,否则可能会导致数据发送失败或者数据接收错误,因此需要认真设置同步信号发生器。

嵌入式系统串口通信实验

嵌入式系统串口通信实验

实验四串口通信实验一.实验目的:1.掌握ARM的串行口工作原理。

2.学习并编程实现AR,的UART通信。

3.掌握S3C2410X寄存器配置方法。

二、实验设备:PC机一台 ADT IDE集成开发环境 JXARM9-2410教学实验箱三、实验内容:实现查询方式串口的收发功能。

接受来自串口(通过超级终端)的字符,并将接收到的字符发送到超级终端。

四、基础知识:1.异步串行通讯(1)异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。

(2)数据的各不同位可以分时使用同一传输通道,因此串行I/O 可以减少信号连线,最少用一对线即可进行。

接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。

为了恢复发送的信息,双方必须协调工作。

(3)在微型计算机中大量使用异步串行I/O 方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。

但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。

2.异步串行通信中的字符传送格式❑开始前,线路处于空闲状态,送出连续“1”。

传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。

❑每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。

后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。

也可以约定不要奇偶校验,这样就取消奇偶校验位。

最后是表示停止位的“1”信号,这个停止位可以约定持续1 位、1.5 位或2 位的时间宽度。

❑至此一个字符传送完毕,线路又进入空闲,持续为“1”。

经过一段随机的时间后,下一个字符开始传送才又发出起始位。

3.DB-25 DB-9引脚定义DB-25 DB-9引脚说明:RS-232C接口通信的两种基本连接方式:五、实验步骤:1.新建一个工程UART,将对应的文件添加到工程中去。

串口传输实验原理

串口传输实验原理

串口传输实验原理串口传输是一种常见的数据传输方式,它通过串行通信的方式将数据从一个设备传输到另一个设备。

串口传输通常用于连接计算机和外部设备,例如打印机、调制解调器、传感器等。

本文将介绍串口传输的原理和实验方法。

一、串口传输的原理串口传输是一种基于异步通信的数据传输方式。

异步通信是指数据传输时没有固定的时钟信号,而是通过发送和接收方之间的协议来确定数据的传输速率和传输时序。

串口传输通常使用RS-232协议进行通信,该协议定义了数据传输的格式和电气特性。

串口传输的数据传输格式通常包括起始位、数据位、校验位和停止位。

起始位用于标识数据传输的开始,通常为逻辑0。

数据位用于传输实际的数据,通常为8位或9位。

校验位用于检测数据传输的正确性,通常为奇偶校验或循环冗余校验。

停止位用于标识数据传输的结束,通常为逻辑1。

串口传输的电气特性包括信号电平、波特率和数据位宽。

信号电平通常为±12V或±5V,波特率通常为9600bps或115200bps,数据位宽通常为8位或9位。

这些参数需要在发送和接收方之间进行协商,以确保数据传输的正确性和稳定性。

二、串口传输的实验方法为了验证串口传输的原理,我们可以进行一些简单的实验。

下面是一个基于Arduino的串口传输实验。

1. 实验材料- Arduino UNO开发板- USB数据线- 串口调试助手软件2. 实验步骤(1)将Arduino UNO开发板连接到计算机上,并打开Arduino IDE软件。

(2)在Arduino IDE软件中,打开“串口接收器”示例程序,并将波特率设置为9600bps。

(3)将Arduino UNO开发板通过USB数据线连接到计算机上,并上传“串口接收器”示例程序到开发板中。

(4)打开串口调试助手软件,并将波特率设置为9600bps。

在串口调试助手软件中,选择正确的串口号和数据位宽。

(5)在串口调试助手软件中,输入一些字符或数字,并点击“发送”按钮。

串口通信实验报告

串口通信实验报告

串口通信实验报告摘要本实验旨在通过串口通信实现两个设备之间的数据传输。

通过使用串口通信协议,我们能够在不同设备之间进行双向数据传输,实现设备之间的数据交互。

本文将介绍串口通信的基本原理、实验设备和步骤、实验结果以及讨论与总结。

一、引言串口通信是一种常用的通信方式,它被广泛应用于计算机、嵌入式系统、智能设备等领域。

串口通信通过连接计算机或其他设备的串口接口,实现设备之间的数据交换。

串口通信具有传输速度快、稳定可靠、易于实现等优点,因此在实际应用中得到了广泛的应用。

二、实验设备和步骤1. 实验设备本实验使用以下设备进行串口通信实验:- 一台计算机- 一块开发板或者单片机- 两根串口线- 软件串口调试助手2. 实验步骤(1)连接串口线首先,将一根串口线的一个端口连接到计算机的串口接口,另一个端口连接到开发板或者单片机的串口接口。

然后,将另一根串口线的一个端口连接到计算机的另一个串口接口,另一个端口连接到开发板或者单片机的另一个串口接口。

(2)设置串口参数打开软件串口调试助手,在设置界面中选择正确的串口号和波特率,并设置其他参数,如数据位、停止位、奇偶校验等。

(3)发送和接收数据在软件串口调试助手的发送界面中输入要发送的数据,并点击发送按钮。

然后,在接收界面中即可看到接收到的数据。

三、实验结果本实验通过串口通信成功地实现了数据的发送和接收。

在软件串口调试助手的发送界面中,我们输入了一段文本,并成功发送到开发板或者单片机。

在接收界面中,我们成功接收到了从开发板或者单片机发送过来的数据,并正确显示在接收界面上。

四、讨论与总结通过本次实验,我们深入了解了串口通信的基本原理和实验步骤。

串口通信具有不同的参数设置,需要根据实际情况进行调整。

同时,在实际应用中,应注意串口接口的连接问题,确保连接正确、稳定。

另外,在数据传输过程中,也需要注意数据的格式和校验问题,以保证数据的准确性。

在今后的学习和实践中,我们可以进一步探索串口通信的应用领域。

低频卡串口通信实验

低频卡串口通信实验
数据位 这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据
往往不会是8位的,标准的值是6、7和8位。如何设置取决于你想传送的信息。
低频卡串口通信实验
停止位 用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线
上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了 小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟 同步的机会。
实验步骤
3、结果分析
串口操作,读取低频卡信息。 (1)发送十六进制数据:“FF 55 00 00 01 01 00 50 74”,其中FF 55为 通讯协议同步帧;00 00为主从设备地址;01 01 为主从命令码;01为 数据段大小,一个字节;00位命令信息数据,50 74为CRC16校验。 (2)接收十六进制数据:FF 55 00 00 81 01 08 07 50 2A 82 D5 E5 5F 58 C2,其中:有效字节数:07 08 50 2A 82 D5 E5 5F 为读取到的低频 卡信息数据,58 C2为CRC16校验位。
串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进 行通信的端口,这些参数必须匹配。
低频卡串口通信实验
波特率 这是一个衡量符号传输速率的参数。指的是信号被调制以后在单位时间内的
变化,即单位时间内载波参数变化的次数,如每秒钟传送240个字符,而每个字 符格式包含10位(1个起始位,1个停止位,8个数据位),这时的波特率为240Bd。
实验步骤
3、结果分析
串口操作,读取低频卡信息。 (1)发送十六进制数据:“FF 55 00 00 01 01 00 50 74”,其中FF 55为 通讯协议同步帧;00 00为主从设备地址;01 01 为主从命令码;01为 数据段大小,一个字节;00位命令信息数据,50 74为CRC16校验。 (2)接收十六进制数据:FF 55 00 00 81 01 08 07 50 2A 82 D5 E5 5F 58 C2,其中:有效字节数:07 08 50 2A 82 D5 E5 5F 为读取到的低频 卡信息数据,58 C2为CRC16校验位。

单片机串行口实验报告实验总结

单片机串行口实验报告实验总结

单片机串行口实验报告实验总结一、实验目的本实验旨在让学生了解单片机串行口的基本原理和应用,掌握单片机串行口的编程方法,培养学生动手实践和解决问题的能力。

二、实验器材1. STC89C52单片机开发板2. 电脑串口线3. 电脑终端仿真软件Tera Term三、实验原理串行口是单片机与外部设备进行通信的重要接口之一。

串行口通信是指将数据一个位一个地传输,每个数据位之间有一个时钟脉冲来同步传输。

常见的串行通信协议有RS232、RS485、SPI等。

本实验主要涉及到RS232协议。

四、实验内容1. 实现单片机向电脑发送数据并显示。

2. 实现电脑向单片机发送数据并控制LED灯闪烁。

五、实验步骤1. 连接STC89C52单片机开发板和电脑,使用Tera Term打开串口终端。

2. 编写程序,设置单片机的串行口通信参数(波特率、数据位数、停止位数等),并利用SendData函数向电脑发送数据。

3. 在Tera Term中设置相应的串口参数,并打开“local echo”选项,以便观察单片机发送的数据。

4. 编写程序,接收电脑发送的数据,并根据接收到的数据控制LED灯闪烁。

5. 在Tera Term中输入相应的命令,向单片机发送数据,观察LED灯的闪烁情况。

六、实验结果1. 实现了单片机向电脑发送数据并显示。

2. 实现了电脑向单片机发送数据并控制LED灯闪烁。

七、实验总结本实验使我对串行口通信有了更深入的理解,掌握了单片机串行口编程方法。

同时也锻炼了我的动手能力和解决问题的能力。

在实验过程中还需要注意串口参数设置和通信协议选择等问题,加深了我对这些知识点的理解。

串行通信的实验报告

串行通信的实验报告

串行通信的实验报告一、实验目的了解串行通信的基本概念和原理,并通过实际搭建串行通信系统,掌握串行通信的实验过程和操作方法。

二、实验设备1. 一台个人电脑2. 两台串行通信设备3. USB转串口线三、实验原理串行通信是将数据按位顺序传输,相对于并行通信来说,节省了传输线的数量。

串行通信一般采用帧的方式进行数据传输,包括起始位、数据位、校验位和停止位。

在实验中,我们将使用两台串行通信设备通过串口进行数据传输。

四、实验步骤1. 将一台串行通信设备连接到个人电脑的USB转串口线上,使用USB接口将其连接到个人电脑的USB接口上。

2. 打开串行通信设备的电源,并将其与个人电脑连接好。

3. 在个人电脑上打开串行通信软件,根据实际情况选择波特率、数据位、校验位和停止位等参数,并建立通信连接。

4. 在串行通信软件中,输入要发送的数据,并点击发送按钮。

5. 在另一台串行通信设备上观察接收到的数据。

五、实验结果与分析经过实验,我们成功地建立了串行通信系统,并进行了数据传输。

在发送端输入的数据在接收端得到了正确的接收,表明串行通信系统正常工作。

通过实验我们可以得出以下结论:1. 串行通信较并行通信更经济和节省资源,因为它只需一根传输线,而并行通信需要多根。

2. 串行通信的传输速率相对较慢,但可以通过改变波特率提高传输速度。

3. 串行通信的稳定性较强,不容易出现数据冲突和传输错误。

六、实验总结通过本次实验,我们了解到了串行通信的基本概念和原理,并通过搭建串行通信系统实际操作了一次串行通信。

实验结果表明串行通信系统正常工作,实验目的得到了满足。

在实验过程中,我们也注意到了一些问题,例如串行通信的传输速率较慢,不适合传输大量数据;同时,串行通信的配置稍显复杂,需要设置多个参数。

综上所述,本次实验使我们对串行通信有了更深入的理解,并有助于我们在日后的相关研究和应用中更好地应用和掌握串行通信技术。

单片机串口通讯实验报告

单片机串口通讯实验报告

单片机串口通讯实验报告实验报告:单片机串口通讯实验一、实验目的1.掌握单片机串口通讯原理和方法。

2.学习如何通过单片机与计算机进行串口通讯。

3.熟悉串口通讯的相关命令和编程方法。

二、实验原理串口通讯是一种数据交换的方式,通过串口可以将数据从计算机发送到单片机,也可以将数据从单片机发送到计算机。

在单片机中,常用的串口通讯方式有UART和USART。

串口通讯的基本原理是通过两根信号线(TX-发送线和RX-接收线)进行数据的传输。

在本实验中,我们将使用UART通讯方式,通过串口将单片机接收到的数据发送到计算机上,并将计算机发送的数据显示在液晶屏上。

三、实验器材1.STM32F103C8T6开发板一块2.杜邦线若干B转串口模块一块4.计算机一台四、实验步骤1.连接硬件设备:将STM32F103C8T6开发板通过USB转串口模块与计算机相连。

2.配置串口参数:在单片机开发环境中,选择正确的串口号和波特率参数。

3.配置中断优先级:为了确保串口接收中断能够正常工作,需要设置中断优先级。

4.编写程序代码:根据实验要求,编写单片机的串口通讯程序。

5.烧录程序代码:将编写好的程序代码烧录到单片机中。

6.运行程序:在计算机上打开串口调试工具,观察串口通讯是否正常。

五、实验结果通过实验,我们成功实现了单片机与计算机之间的串口通讯。

通过串口调试工具,我们可以在计算机上看到从单片机发送过来的数据,并且可以通过计算机发送数据,从而在液晶屏上显示出相应的结果。

六、实验分析1.串口通讯是一种较为常见且灵活的数据传输方式,能够满足很多实际需求。

2.在编写串口通讯程序时,需要根据具体的芯片和开发环境进行相应的配置。

3.在使用串口调试工具时,需要注意选择正确的串口号和波特率,否则无法正常进行通讯。

4.串口通讯可以在许多领域进行应用,如物联网、机器人控制等。

七、实验总结通过本次实验,我学习到了单片机串口通讯的基本原理和方法,了解了UART通讯方式的具体实现。

rs232串口通信实验报告

rs232串口通信实验报告

计算机网络实验————实现RS232串口通信程序及MODBUS协议的编程一.实验目的:1.熟悉并掌握RS232串口标准及原理。

2.实现PC机通过RS232串口进行数据的收发。

3.掌握MODBUS协议。

4. 掌握MODBUS协议编程的编写二、实验设备PC机一台,RS232串口通信线(9针)一条,跳线一个(一台PC实验时,将其中的2和3短接)三、实验内容界面内容:(1)打开串口与关闭串口按钮(2)信息发送区:信息编辑区,发送信息按钮(3)信息接受区:信息显示区,接收信息按钮四、实验原理rs-232-c :RS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(Electronic Industry Association)代表美国电子工业协会,RS(ecommeded standard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969),在这之前,有RS232B、RS232A。

它规定连接电缆和机械、电气特性、信号功能及传送过程。

常用物理标准还有有EIA&#0;RS-232-C、EIA&#0;RS-422-A、EIA&#0;RS-423A、EIA&#0;RS-485。

这里只介绍EIA&#0;RS-232-C(简称232,RS232)。

例如,目前在IBM PC机上的COM1、COM2接口,就是RS-232C接口。

RS232原理如图1-3。

图1 RS232接口电缆和引脚外观图2 RS232 引脚定义(DB9)RS232接口硬件握手方式1 概述在现代的各种实时监控系统和通信系统中,在Windows 9X/NT下利用VC++对RS-232串口编程是常用的手段。

Windows 9X/NT是抢先式的多任务操作系统,程序对CPU的占用时间由系统决定。

多任务指的是系统可以同时运行多个进程,每个进程又可以同时执行多个线程。

进程是应用程序的运行实例,拥有自己的地址空间。

串口调试实验原理

串口调试实验原理

串口调试实验原理
串口调试实验原理主要涉及到串口通信原理和调试实验原理。

串口通信原理:
串口通信是通过物理串口接口传输数据的一种通信方式。

串口通信使用的是异步通信方式,通信双方之间通过发送和接收数据帧进行交互。

数据帧由起始位、数据位、校验位和停止位组成。

起始位信号由高电平转变为低电平,表示数据帧的开始;数据位用来传输数据;校验位用来检验数据的准确性;停止位信号由低电平转变为高电平,表示数据帧的结束。

调试实验原理:
串口调试实验是指通过串口接口进行调试的实验。

通常使用串口调试助手软件,通过串口与目标设备进行通信,实现数据的发送和接收。

调试实验主要包括发送和接收数据的操作。

发送数据:
1. 打开串口:选择合适的串口号和波特率,进行串口初始化操作,打开串口连接。

2. 设置发送数据:设置要发送的数据,可以是ASCII码字符、16进制数据、二进制数据等。

3. 发送数据:通过串口发送数据帧,将要发送的数据传输给目标设备。

接收数据:
1. 打开串口:选择合适的串口号和波特率,进行串口初始化操作,打开串口连接。

2. 接收数据:通过串口接收数据帧,将目标设备发送的数据传输给计算机。

3. 处理接收数据:对接收到的数据进行解析和处理,可以是显示在界面上、保存到文件中、进行数据分析等操作。

通过串口调试实验可以实现与目标设备之间的数据交互,可以用于测试设备的通讯功能是否正常,检测数据传输是否准确可靠,进行数据处理和分析等操作。

嵌入式系统实验报告

嵌入式系统实验报告

嵌入式系统实验报告一、实验目的本次嵌入式系统实验的主要目的是深入了解嵌入式系统的基本原理和开发流程,通过实际操作和项目实践,提高对嵌入式系统的设计、编程和调试能力。

二、实验设备与环境1、硬件设备嵌入式开发板:_____计算机:_____调试工具:_____2、软件环境操作系统:_____开发工具:_____编译环境:_____三、实验内容1、基础实验熟悉开发板的硬件结构和接口,包括处理器、存储器、输入输出端口等。

学习使用开发工具进行程序编写、编译和下载。

2、中断实验了解中断的概念和工作原理。

编写中断处理程序,实现对外部中断的响应和处理。

3、定时器实验掌握定时器的配置和使用方法。

利用定时器实现定时功能,如周期性闪烁 LED 灯。

4、串口通信实验学习串口通信的协议和编程方法。

实现开发板与计算机之间的串口数据传输。

5、 ADC 转换实验了解 ADC 转换的原理和过程。

编写程序读取 ADC 转换结果,并进行数据处理和显示。

四、实验步骤1、基础实验连接开发板与计算机,打开开发工具。

创建新的项目,选择合适的芯片型号和编译选项。

编写简单的程序,如控制 LED 灯的亮灭,编译并下载到开发板上进行运行和调试。

2、中断实验配置中断相关的寄存器,设置中断触发方式和优先级。

编写中断服务函数,在函数中实现相应的处理逻辑。

连接外部中断源,观察中断的触发和响应情况。

3、定时器实验初始化定时器相关的寄存器,设置定时器的工作模式和定时周期。

在主程序中启动定时器,并通过中断或查询方式获取定时时间到达的标志。

根据定时标志控制 LED 灯的闪烁频率。

4、串口通信实验配置串口相关的寄存器,设置波特率、数据位、停止位等参数。

编写发送和接收数据的程序,实现开发板与计算机之间的双向通信。

使用串口调试助手在计算机上进行数据收发测试。

5、 ADC 转换实验配置 ADC 模块的相关寄存器,选择输入通道和转换精度。

启动 ADC 转换,并通过查询或中断方式获取转换结果。

第四章 stm32 cubemx 串口实验以及proteus仿真(上)

第四章 stm32 cubemx 串口实验以及proteus仿真(上)

第四章stm32 cubemx 串口实验以及proteus仿真(上)文章目录前言一、串口是什么?二、工程配置步骤1.基础配置2.配置引脚3.开启中断,设置中断优先级4.其他配置,生成代码三.找到主函数,加入代码,编译。

HAL库发送的方式加入函数四.Proteus仿真或者烧录可直接看到效果。

五.补充说明1.printf函数中加入了回车换行“\r\n”符。

2.如果串口发送框丢失总结前言这一章我们将学习STM32F103 的串口,教大家如何使用STM32F103 的串口来发送和接收数据。

本章将实现如下功能:STM32F103 通过串口实现板子之间的通信,利用通信来实现板子间的控制,如果STM32F103板子数量有限可利用一块板子两个串口模拟两块板子的通信或者利用Proteus进行仿真,本章依据仿真来讲解串口中断实验。

一、串口是什么?串口作为MCU 的重要外部接口,同时也是软件开发重要的调试手段,其重要性不言而喻。

现在基本上所有的MCU 都会带有串口,STM32 自然也不例外。

STM32 的串口资源相当丰富的,功能也相当强劲。

STM32F103一般都有多路串口,有分数波特率发生器、支持同步单线通信和半双工单线通讯、支持LIN、支持调制解调器操作、智能卡协议和IrDA SIR ENDEC 规范、具有DMA等。

接下来我们将主要从STM32CUBEMX的界面,告诉你如何设置串口,以达到我们最基本的通信功能。

本章,我们将实现利用串口不停的打印信息,同时接收从串口发过来的数据,利用接收到的数据进行一定的控制。

二、工程配置步骤1.基础配置步骤详情参考:第一章stm32 cubemx基础配置实验以及proteus 8的使用1)sys中,选好调试方式,DEBUG中选中Serial Wire,实际上板子测试时会占用PA13和PA14两个I/O口,用作下载或者调试。

2)RCC时钟,晶振选择,选择HSE(外部高速时钟)为Crystal/Ceramic Resonator,外部低速时钟(LSE)可有可无。

UART串口通信实验报告

UART串口通信实验报告

实验四UART串口通信学院:研究生院学号:1400030034姓名:张秋明一、实验目的及要求设计一个UART串口通信协议,实现“串<-->并”转换功能的电路,也就是“通用异步收发器”。

二、实验原理UART是一种通用串行数据总线,用于异步通信。

该总线双向通信,可以实现全双工传输和接收。

在嵌入式设计中,UART用来主机与辅助设备通信,如汽车音响与外接AP之间的通信,与PC机通信包括与监控调试器和其它器件,如EEPROM通信。

UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。

其中各位的意义如下:起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。

资料位:紧接着起始位之后。

资料位的个数可以是4、5、6、7、8等,构成一个字符。

通常采用ASCII码。

从最低位开始传送,靠时钟定位。

奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。

停止位:它是一个字符数据的结束标志。

可以是1位、1.5位、2位的高电平。

由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。

因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。

适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。

波特率:是衡量资料传送速率的指标。

表示每秒钟传送的符号数(symbol)。

一个符号代表的信息量(比特数)与符号的阶数有关。

例如资料传送速率为120字符/秒,传输使用256阶符号,每个符号代表8bit,则波特率就是120baud,比特率是120*8=960bit/s。

这两者的概念很容易搞错。

三、实现程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity uart isport(clk : in std_logic; --系统时钟rst_n: in std_logic; --复位信号rs232_rx: in std_logic; --RS232接收数据信号;rs232_tx: out std_logic --RS232发送数据信号;); end uart;architecture behav of uart iscomponent uart_rx port(clk : in std_logic; --系统时钟rst_n: in std_logic; --复位信号rs232_rx: in std_logic; --RS232接收数据信号clk_bps: in std_logic; --此时clk_bps的高电平为接收数据的采样点bps_start:out std_logic;--接收到数据后,波特率时钟启动置位rx_data: out std_logic_vector(7 downto 0); --接收数据寄存器,保存直至下一个数据来到rx_int: out std_logic --接收数据中断信号,接收数据期间时钟为高电平,传送给串口发送);end component;component speed_select port(clk : in std_logic; --系统时钟rst_n: in std_logic; --复位信号clk_bps: out std_logic; --此时clk_bps 的高电平为接收或者发送数据位的中间采样点bps_start:in std_logic --接收数据后,波特率时钟启动信号置位);end component;component uart_tx port(clk : in std_logic; --系统时钟rst_n: in std_logic; --复位信号rs232_tx: out std_logic; --RS232接收数据信号clk_bps: in std_logic; --此时clk_bps 的高电平为接收数据的采样点bps_start:out std_logic;--接收到数据后,波特率时钟启动置位rx_data: in std_logic_vector(7 downto 0); --接收数据寄存器,保存直至下一个数据来到rx_int: in std_logic --接收数据中断信号,接收数据期间时钟为高电平,传送给串口发送模块,使得串口正在进行接收数据的时候,发送模块不工作,避免了一个完整的数据(1位起始位、8位数据位、1位停止位)还没有接收完全时,发送模块就已经将不正确的数据传输出去);end component;signal bps_start_1:std_logic;signal bps_start_2:std_logic;signal clk_bps_1:std_logic;signal clk_bps_2:std_logic;signal rx_data:std_logic_vector(7 downto 0);signal rx_int:std_logic;beginRX_TOP: uart_rx port map(clk=>clk,rst_n=>rst_n,rs232_rx=>rs232_rx,clk_bps=>clk_bps_1,bps_start=>bps_start_1,rx_data=>rx_data,rx_int=>rx_int);SPEED_TOP_RX: speed_select port map(clk=>clk,rst_n=>rst_n,clk_bps=>clk_bps_1,bps_start=>bps_start_1);TX_TOP:uart_tx port map(clk=>clk, --系统时钟rst_n=>rst_n, --复位信号rs232_tx=>rs232_tx, --RS232发送数据信号clk_bps=>clk_bps_2, --此时clk_bps 的高电平为发送数据的采样点bps_start=>bps_start_2,--接收到数据后,波特率时钟启动置位rx_data=>rx_data, --接收数据寄存器,保存直至下一个数据来到rx_int=>rx_int --接收数据中断信号,接收数据期间时钟为高电平,传送给串口发送模块,使得串口正在进行接收数据的时候,发送模块不工作,避免了一个完整的数据(1位起始位、8位数据位、1位停止位)还没有接收完全时,发送模块就已经将不正确的数据传输出去);SPEED_TOP_TX: speed_select port map(clk=>clk,rst_n=>rst_n,clk_bps=>clk_bps_2,bps_start=>bps_start_2);end behav;-----------------------------------------------------------------------------------------------------------------------3个子模块------------------------------------------------------------------------------异步接收模块-------------------------------------------library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity uart_rx isport(clk : in std_logic; --系统时钟rst_n: in std_logic; --复位信号rs232_rx: in std_logic; --RS232接收数据信号clk_bps: in std_logic; --此时clk_bps的高电平为接收数据的采样点bps_start:out std_logic;--接收到数据后,波特率时钟启动置位rx_data: out std_logic_vector(7 downto 0); --接收数据寄存器,保存直至下一个数据来到rx_int: out std_logic --接收数据中断信号,接收数据期间时钟为高电平,传送给串口发送模块,使得串口正在进行接收数据的时候,发送模块不工作,避免了一个完整的数据(1位起始位、8位数据位、1位停止位)还没有接收完全时,发送模块就已经将不正确的数据传输出去); end uart_rx;architecture behav of uart_rx issignal rs232_rx0: std_logic;signal rs232_rx1: std_logic;signal rs232_rx2: std_logic;signal rs232_rx3: std_logic;signal neg_rs232_rx:std_logic;signal bps_start_r:std_logic;signal num:integer;signal rx_data_r:std_logic_vector(7 downto 0); --串口接收数据寄存器,保存直至下一个数据到来beginprocess(clk,rst_n)beginif (rst_n='0')thenrs232_rx0<='0';rs232_rx1<='0';rs232_rx2<='0';rs232_rx3<='0';elseif (rising_edge(clk)) thenrs232_rx0<=rs232_rx;rs232_rx1<=rs232_rx0;rs232_rx2<=rs232_rx1;rs232_rx3<=rs232_rx2;end if;end if;neg_rs232_rx <=rs232_rx3 and rs232_rx2 and not(rs232_rx1)and not(rs232_rx0);end process;process(clk,rst_n)beginif (rst_n='0')thenbps_start_r<='0';rx_int<='0';elseif (rising_edge(clk)) thenif(neg_rs232_rx='1') then--接收到串口数据线rs232_rx 的下降沿标志信号bps_start_r<='1'; --启动串口准备数据接收rx_int<='1';--接收数据中断信号使能else if((num= 15) and (clk_bps='1')) then --接收完有用数据信息bps_start_r<='0'; --数据接收完毕,释放波特率启动信号rx_int<='0';--接收数据中断信号关闭end if;end if;end if;end if;bps_start<=bps_start_r;end process;process(clk,rst_n)beginif (rst_n='0')thenrx_data_r<="00000000";rx_data<="00000000";num<=0;elseif (rising_edge(clk)) thenif(clk_bps='1')thennum<=num+1;case num iswhen 1=>rx_data_r(0)<=rs232_rx;--锁存第0bitwhen 2=>rx_data_r(1)<=rs232_rx;--锁存第0bitwhen 3=>rx_data_r(2)<=rs232_rx;--锁存第0bitwhen 4=>rx_data_r(3)<=rs232_rx;--锁存第0bitwhen 5=>rx_data_r(4)<=rs232_rx;--锁存第0bitwhen 6=>rx_data_r(5)<=rs232_rx;--锁存第0bitwhen 7=>rx_data_r(6)<=rs232_rx;--锁存第0bitwhen 8=>rx_data_r(7)<=rs232_rx;--锁存第0bitwhen 10=>rx_data<=rx_data_r;when 11=>num<=15;when others=>null;end case;if(num=15) thennum<=0;end if;end if;end if;end if;end process;end behav;---------------------------------波特率控制模块-----------------------------------------library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity speed_select isport(clk : in std_logic; --系统时钟rst_n: in std_logic; --复位信号clk_bps: out std_logic; --此时clk_bps的高电平为接收或者发送数据位的中间采样点bps_start:in std_logic--接收数据后,波特率时钟启动信号置位或者开始发送数据时,波特率时钟启动信号置位);end speed_select;architecture behav of speed_select issignal cnt:std_logic_vector(12 downto 0);signal clk_bps_r:std_logic;constant BPS_PARA:integer:=5207;constant BPS_PARA_2:integer:=2603;beginprocess(clk,rst_n)beginif (rst_n='0')thencnt<="0000000000000";elseif (rising_edge(clk)) thenif((cnt=BPS_PARA)or(bps_start='0')) thencnt<="0000000000000"; --波特率计数器清零elsecnt<=cnt+'1';--波特率时钟计数启动end if;end if;end if;end process;process(clk,rst_n)beginif (rst_n='0')thenclk_bps_r<='0';elseif (rising_edge(clk)) thenif(cnt=BPS_PARA_2) thenclk_bps_r<='1'; --clk_bps_r高电平为接收数据位的中间采样点,同时也作为发送数据的数据改变点elseclk_bps_r<='0'; --波特率计数器清零end if;end if;end if;clk_bps<=clk_bps_r;end process;end behav;---------------------------------异步发送模块-------------------------------------------library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity uart_tx isport(clk : in std_logic; --系统时钟rst_n: in std_logic; --复位信号rs232_tx: out std_logic; --RS232接收数据信号clk_bps: in std_logic; --此时clk_bps的高电平为接收数据的采样点bps_start:out std_logic;--接收到数据后,波特率时钟启动置位rx_data: in std_logic_vector(7 downto 0); --接收数据寄存器,保存直至下一个数据来到rx_int: in std_logic --接收数据中断信号,接收数据期间时钟为高电平,传送给串口发送模块,使得串口正在进行接收数据的时候,发送模块不工作,避免了一个完整的数据(1位起始位、8位数据位、1位停止位)还没有接收完全时,发送模块就已经将不正确的数据传输出去); end uart_tx;architecture behav of uart_tx issignal rx_int0: std_logic;signal rx_int1: std_logic;signal rx_int2: std_logic;signal neg_rx_int:std_logic;signal bps_start_r:std_logic;signal num:integer;signal tx_data:std_logic_vector(7 downto 0); --串口接收数据寄存器,保存直至下一个数据到来beginprocess(clk,rst_n)beginif (rst_n='0')thenrx_int0<='0';rx_int1<='0';rx_int2<='0';elseif (rising_edge(clk)) thenrx_int0<=rx_int;rx_int1<=rx_int0;rx_int2<=rx_int1;end if;end if;neg_rx_int <=not(rx_int1)and (rx_int2);end process;process(clk,rst_n)beginif (rst_n='0')thenbps_start_r<='0';tx_data<="00000000";elseif (rising_edge(clk)) thenif(neg_rx_int='1') then--接收到串口数据线rs232_rx的下降沿标志信号bps_start_r<='1'; --启动串口准备数据接收tx_data<=rx_data;--接收数据中断信号使能else if((num= 15) and (clk_bps='1')) then --接收完有用数据信息bps_start_r<='0'; --数据接收完毕,释放波特率启动信号end if;end if;end if;end if;bps_start<=bps_start_r;end process;process(clk,rst_n)beginif (rst_n='0')thenrs232_tx<='1';num<=0;elseif (rising_edge(clk)) thenif(clk_bps='1')thennum<=num+1;case num iswhen 1=>rs232_tx<='0';when 2=>rs232_tx<=tx_data(0);--发送第1bitwhen 3=>rs232_tx<=tx_data(1);--发送第2bitwhen 4=>rs232_tx<=tx_data(2);--发送第3bitwhen 5=>rs232_tx<=tx_data(3);--发送第4bitwhen 6=>rs232_tx<=tx_data(4);--发送第5bitwhen 7=>rs232_tx<=tx_data(5);--发送第6bitwhen 8=>rs232_tx<=tx_data(6);--发送第7bitwhen 9=>rs232_tx<=tx_data(7);--发送第8bitwhen 10=>rs232_tx<='1';when 11=>num<=15;when others=>null;end case;if(num=15) thennum<=0;end if;end if;end if;end if;end process;end behav;四、实验步骤1、建立新工程UART,选择芯片,型号为cyclone ii EP2C35F484C8。

基于VC++ 6.0的串口通信实验报告

基于VC++ 6.0的串口通信实验报告

网络与通信实验报告题目:串口通行实验班级:0309103学号:*********姓名:***指导老师:付大丰日期:2012-10-21一、实验要求把两台计算机的串口通过串口线连在一起,通过串口实现两台计算机通讯。

可以利用高级语言、C语言编程实现,要求程序界面友好,有发送和接收功能,其接收和发送内容可在屏幕上显示。

二、实验原理串口通讯把数据的字节分解成单个的二进制比特流依次传输,其结构简单,连接线少,应用非常广泛。

实现串口通信的方法很多。

如:利用标准通信函数实现串口通信、利用API实现串口通信和利用ActiveX控件实现。

本文主要采用ActiveX控件Microsoft CommunicationsControl(MSComm)编程,Windows平台先进的ActiveX技术使得对串口编程不再需要处理烦琐的细节。

利用已有的AxtiveX控件,只需要编写少量的代码,就可以轻松高效地完成任务。

以下对ActiveX控件属性进行简单介绍,在ClassWizard中为新创建的通信控件定义成员对象(CMSComm m_comm),通过该对象便可以对串口属性进行设置,MSComm控件共有27个属性,这里只介绍其中几个常用属性:CommPort:设置并回通讯端口号,缺省为COMl。

Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。

PortOpen:设置并返回通讯端口的状态,也可以打开和关闭端口。

Input:从接收缓冲区返回和删除字符。

Output:向发送缓冲区写一个字符串。

InputLen:设置每次Input读入的字符个数,缺省值为0,表明读取接收缓冲区中的全部内容。

InBufferCount:返回接收缓冲区中已接收到的字符数,将其置0可以清除接收缓冲区。

InputMode:定义Input属性获取数据的方式(为0:文本方式;为1:二进制方式)。

RThreshold和SThreshold:表示在OnComm事件发生之前,接收缓冲区或发送缓冲区中可以接收的字符数。

串行应用实验报告

串行应用实验报告

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

2. 掌握串行通信接口的硬件连接和软件编程。

3. 实现两个设备之间的串行通信,验证通信的可靠性。

二、实验原理串行通信是指数据在一条线上按位顺序传输,每传输一位数据后,再传输下一位数据。

与并行通信相比,串行通信具有传输距离远、抗干扰能力强、成本较低等优点。

常用的串行通信方式有RS-232、RS-485等。

三、实验设备1. 电脑一台2. 串口通信模块(如:USB转串口模块)3. 串行通信线(如:串行线、USB线)4. 实验板(如:Arduino板)5. 相关软件(如:串口调试助手)四、实验步骤1. 硬件连接(1)将USB转串口模块连接到电脑,确保模块上的指示灯亮起,表示已正常连接。

(2)将串行通信线的一端连接到USB转串口模块的TXD、RXD、GND引脚,另一端连接到实验板的RXD、TXD、GND引脚。

2. 软件设置(1)打开串口调试助手,设置串行通信参数:- 波特率:9600- 数据位:8- 停止位:1- 校验位:无(2)将实验板上的串行通信模块(如Arduino板)连接到电脑,打开实验板上的电源。

3. 编写程序(1)编写实验板的程序,实现数据的发送和接收。

以下为Arduino板示例程序:```cpp#include <SoftwareSerial.h>SoftwareSerial mySerial(10, 11); // RX, TXvoid setup() {Serial.begin(9600);mySerial.begin(9600);}void loop() {if (mySerial.available()) {char received = mySerial.read();Serial.print("Received: ");Serial.println(received);}if (Serial.available()) {char sent = Serial.read();mySerial.print("Sent: ");mySerial.println(sent);}}```(2)将程序上传到实验板。

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

.
实验报告
课程名称:微机原理与接口技术 指导老师:张军明 成绩:__________________ 实验名称:实验四 串口通信实验 实验类型:________________同组学生姓名:吴越 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理
六、实验结果与分析(必填)
七、讨论、心得
一、实验目的
1、掌握80C51串行口工作方式选择、理解串行口四种通讯模式的区别、波特率发生器的作用及通讯过程中的时序关系。

2、掌握串口初始化的设置方法和串行通信编程的能力。

3、了解PC 机通讯的基本要求,掌握上位机和下位机的通讯方法。

4、编写简单的通信协议(如串行口工作方式、波特率、校验方式、出错处理等)。

二、实验器材
1、Micetek 仿真器一台。

2、实验板一块。

3、PC 机电脑一台。

4、九针串口线一条。

三、实验原理
串口通讯对单片机而言意义重大,不但可以实现将单片机(下位机)的数据传输到PC 端(上位机),
专业:电子信息工程 姓名:彭嘉乔 学号:3130104084 日期:2015.05 地点:东3-409
而且也能实现PC对单片机的控制,51单片机有一个全双工的串行通讯口,所以单片机和PC之间可以方便地进行串口通讯。

进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,本实验采用专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。

3.1 RS232九针串口基本功能简介
九针串口即RS-232接口,是个人计算机上的通讯接口之一,由电子工业协会(Electronic Industries Association,EIA) 所制定的异步传输标准接口。

通常RS-232 接口以9个引脚(DB-9) 或是25个引脚(DB-25) 的型态出现,一般个人计算机上会有两组RS-232接口,分别称为COM1和COM2。

该接口分为公头子和母头子。

九针串口(母头)的功能如下,请见图1:
图1 RS232九针串口母头功能说明
分别为1:载波检测(DCD);2:接收数据(RXD);3:发送数据(TXD);4:数据终端准备好(DTR);5:信号地(GND);6:数据准备好(DSR);7:发送请求(RTS);8:发送清除(CTS);9:振铃指示(RI)接法。

本实验采用三线制连接串口,也就是说和电脑的9针串口只需连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。

这是最简单的连接方法,但是已满足本实验硬件需求,电路如图2所示,MAX232的第11脚和单片机的11脚连接,通过MAX232芯片的电平转换,将T1OUT输出连接板子上9针串口(母头)第2脚的RXD;板子上9针串口(母头)第3脚的TXD与MAX232芯片的第13脚相连,通过RS232电平转换为TTL电平后,将MAX232芯片的第12脚和单片机的10脚连接,同时9针
串口第5脚的GND与单片机的第20脚GND连接。

图2中所示的DTR4与DSR6留空。

图2 RS232通讯接线示意图
3.2 串口助手软件
串口调试助手3.0版是WMD工作室最新研发的智能调试工具,是不折不扣的“串口助手”。

串口调试助手3.0版可以实现的功能包括发送接收16进制数、字符串、传输文件、搜索出空闲串口等,此外,还可以搜索用户自定义设置其他的项目。

串口调试助手为绿色软件,下载后只需要复制到硬盘上的指定目录中即安装完成。

四、实验要求
1、要求单片机串行口选择模式1,并设定合适的波特率。

2、选用定时器T1为波特率发生器,晶振为6M。

3、要求每隔1000ms由上位机向下位机发送一个字节,同时把下位机接收到的数值显示在30H开始的RAM中,并将接收到的数值返回到上位机,并显示在信息窗口中。

五、程序源代码及注释
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV TMOD,#20H 设定时器/计数器T1 为定时器方式2 MOV SCON,#50H 置串行口方式1、接收
MOV TL1,#0FAH 置T1 定时常数(串行口波特率为2604)MOV TH1,#0FAH
MOV R0,#30H 存储地址
SETB TR1 启动定时器
SETB EA 允许中断
CLR ES 不允许串行口中断
MOV PCON,#00H 波特率不倍增
CLR TI
CLR RI
WAIT1: 接收
JNB RI,WAIT1
CLR RI
MOV A,SBUF
MOV @R0,A
MOV SBUF,A 发送
WAIT2:
.
JNB TI,WAIT2
CLR TI
INC R0
SJMP WAIT1
六、实验程序LST文件
ORG 0000H
0000 0130 AJMP MAIN
ORG 0030H
MAIN:
0030 758920 MOV TMOD,#20H
0033 759850 MOV SCON,#50H
0036 758BFA MOV TL1,#0FAH
0039 758DFA MOV TH1,#0FAH
003C 7830 MOV R0,#30H
003E D28E SETB TR1
0040 D2AF SETB EA
0042 C2AC CLR ES
0044 758700 MOV PCON,#00H
0047 C299 CLR TI
0049 C298 CLR RI
WAIT1:
004B 3098FD JNB RI,WAIT1
. 004E C298 CLR RI
0050 E599 MOV A,SBUF
0052 F6 MOV @R0,A
0053 F599 MOV SBUF,A
WAIT2:
0055 3099FD JNB TI,WAIT2
0058 C299 CLR TI
005A 08 INC R0
005B 80EE SJMP WAIT1
符号值类型
AC = 00D6H CONST 常量
ACC = 00E0H CONST 常量
B = 00F0H CONST 常量
CY = 00D7H CONST 常量
DPH = 0083H CONST 常量
DPL = 0082H CONST 常量
EA = 00AFH CONST 常量
ES = 00ACH CONST 常量
ET0 = 00A9H CONST 常量
ET1 = 00ABH CONST 常量
EX0 = 00A8H CONST 常量
EX1 = 00AAH CONST 常量
F1 = 00D1H CONST 常量
IE = 00A8H CONST 常量
IE0 = 0089H CONST 常量IE1 = 008BH CONST 常量IP = 00B8H CONST 常量
IT0 = 0088H CONST 常量
IT1 = 008AH CONST 常量MAIN = 0030H CODE 标号OV = 00D2H CONST 常量P = 00D0H CONST 常量
P0 = 0080H CONST 常量
P1 = 0090H CONST 常量
P2 = 00A0H CONST 常量
P3 = 00B0H CONST 常量PCON = 0087H CONST 常量PS = 00BCH CONST 常量PSW = 00D0H CONST 常量PT0 = 00B9H CONST 常量PT1 = 00BBH CONST 常量PX0 = 00B8H CONST 常量PX1 = 00BAH CONST 常量
REN = 009CH CONST 常量RI = 0098H CONST 常量
RS0 = 00D3H CONST 常量RS1 = 00D4H CONST 常量SBUF = 0099H CONST 常量SCON = 0098H CONST 常量SM0 = 009FH CONST 常量SM1 = 009EH CONST 常量SM2 = 009DH CONST 常量SP = 0081H CONST 常量TB8 = 009BH CONST 常量TCON = 0088H CONST 常量TF0 = 008DH CONST 常量TF1 = 008FH CONST 常量TH0 = 008CH CONST 常量TH1 = 008DH CONST 常量TI = 0099H CONST 常量
TL0 = 008AH CONST 常量TL1 = 008BH CONST 常量TMOD = 0089H CONST 常量TR0 = 008CH CONST 常量
.
TR1 = 008EH CONST 常量
WAIT1 = 004BH CODE 标号
WAIT2 = 0055H CODE 标号
公有符号: 59
私有符号: 0
七、实验感想
本次实验主要参考了教材P177的程序,简化了中断等步骤,使得实验顺利完成。

通过实验我掌握了80C51串行口工作方式选择,理解串行口四种通讯模式的区别、波特率发生器的作用及通讯过程中的时序关系,掌握了串口初始化的设置方法和串行通信编程的能力,了解了PC机通讯的基本要求,掌握上位机和下位机的通讯方法。

相关文档
最新文档