实验3:串口实验一、实验目的1.了解串口的定义及串口通信的特点2.了解MAX232串口3.了解80C51串行口工作的原理及工作方式并且能够掌握其程序设计二、实验内容利用8051串行口发送和接受数据,用来判断接收数据和发送数据是否一致三、实验原理串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到计算机端,而且也能实现计算机对单片机的控制。由于其所需电缆线少,接线简单,所以在较远距离传输中,得到了广泛的运用。本实验主要是用单片机按一定的时间间隔向主机发送字符串,结果在虚拟终端上显示。由于没有串口线的连接因此只能进行仿真,当数据从CPU经过串行端口(仿真时是通过虚拟驱动软件和串口调试助手设置的虚拟串口实现)发送出去时,字节数据转换为串行的位,在接收数据时,串行的位被转换为字节数据并在虚拟终端上显示。串口:串行接口简称串口(通常指COM口),是采用串行通信方式的扩展接口。串口是计算机上一种非通用设备通信的协议。大多数两个基于RS232的串口。如左图是串口原理图。MAX232介绍:MAX232一款兼容RS232标准的芯片,是TTL-RS232电平转换的典型芯片。由于电脑串口RS232电平是-10V与+10V,而一般单片机系统的信号电压是TTL电平0与+5V,该器件包含2个驱动器、2个接收器和一个电压发生器电路提供TIA/EIA-232-F电平。RS232介绍:RS232接口是制定用于串行通讯的标准。该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。DB25的串口一般只用到的管脚只有2(RXD)、3(TXD)、7(GND)这三个,随着设备的不断改进,现在DB25针很少看到了,代替他的是DB9的接口,DB9所用到的管脚比DB25有所变化,是2(RXD)、3(TXD)、5(GND)这三个。因此现在都把RS232接口叫做DB9。串口通信的原理:串行端口的本质功能是作为CPU和串行设备间的编码转换器。串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成:地线、发送、接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配:①波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率=(2SMOD/32)T1的溢出率②数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。③停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。③奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位为1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。通信协议的使用:通信协议是通信设备在通信前的约定。单片机、计算机有了协议这种约定,通信双方才能明白对方的意图,以进行下一步动作。假定我们需要在PC机与单片机之间进行通信,在双方程式设计过程中,有如下约定:0xA1:单片机读取P0端口数据,并将读取数据返回PC机;0xA2:单片机从PC机接收一段控制数据;0xA3:单片机操作成功信息。在系统工作过程中,单片机接收到PC机数据信息后,便查找协议,完成相应的操作。当单片机接收到0xA1时,读取P0端口数据,并将读取数据返回PC机;当单片机接收到0xA2时,单片机等待从PC机接收一段控制数据;当PC机接收到0xA3时,就表明单片机操作已经成功。硬件连接:51单片机有一个全双工的串行通讯口,所以单片机和计算机之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如计算机的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换。我们采用了三线制连接串口,也就是说和计算机的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。三、实验设备电脑(装有ProteusISIS7Professional应用程序、Keil应用程序、串口调试助手、虚拟驱动软件)、51芯片、MAX232、串口线1、用C语言(或者汇编)编写一个程序,实现从电脑键盘上键入一个数据/字符,单片机显示该数据/字符。在keil上建立一个工程,先创建一个project,命名为“串口”。再建立的是C语言程序,命名为“串口.c”编好的程序添加到工程中进行调试并产生hex文件。2、进行仿真⑴、打开Proteus7Professional应用程序,在其中找到元器件(AT89C51、九针连接器COMPIM、虚拟终端VIRTUALTERMINAL)按下图连接好(3)设置九针连接器的属性为COM4,如下图所示:双击compim元件,编辑属性。(4)安装虚拟驱动软件和串口调试助手。打开虚拟驱动软件,并将COM3与COM4。运行串口调试助手,选择发送的串口为COM3(或者COM4也可,根据接收的串口而定),键入要发送的字符或者数据,选择自动发送,打开串口,如下图所示:(5)双击仿真电路图中的AT89C51并添加产生的hex文件,点击运行按钮“”后会自动弹出虚拟终端,具体仿真如下图所示:(6)当出现下图所示情况时表示虚拟串口打开,可以实现通信。五、实验总结1、在安装虚拟终端软件时,由于软件版本太低,所以无法安装,我们下载了一个新的版的软件,重新安装好后,在进行仿真。2、在做虚拟终端串口和串口调试时,要先设置好哪一个是接受串口,哪一个是发送串口,否则不能成功接收和发送数据。串口调试时,其波特率统一为9600.