labwindowscvi6第七章串行口通信和网络数据传输.pptx
- 格式:pptx
- 大小:300.45 KB
- 文档页数:12
第7章串行通信接口(SCI)目前几乎所有的台式电脑都带有9芯的异步串行通信口,简称串行口或COM口。
有的台式电脑带有两个串行口,分别称为COM1、COM2口。
大部分的笔记本电脑也带有串行口。
随着USB接口的普及,串行口的地位逐渐变低了。
但是,作为设备间的一种简便的通信方式,在相当长的时间内,串行口还不会消失。
因为简单且常用的串行通信只需要三根线(发送线、接收线和地线),所以,串行通信可以作为MCU与外界通信的简便方式之一。
大部分嵌入式MCU都具有串行通信接口(Serial Communication Interface,SCI),掌握SCI的编程是学习MCU的重要内容之一。
本章从掌握规范的SCI基本编程角度讨论串行通信编程,把与芯片型号相关内容和与芯片型号无关内容区别开来,便于读者融会贯通与实际应用。
本章7.1、7.2节是与芯片无关的有关串行通信的通用基础知识,只有理解这些基础知识,才能进行串行通信的应用。
7.3、7.4节阐述GP32芯片的SCI模块的编程方法,在此基础上,重点掌握7.5节给出的编程实例。
注意,在汇编程序中,只有初始化子程序与GP32相关,收发程序在整个08系列中是通用的,在C程序中,只有初始化子程序与GP32相关,收发程序对任何芯片是通用的。
当然,要注意头文件SCI.h相关位的定义。
关于串口程序的测试,最好利用教学资料中提供的PC机方的高级语言源程序进行。
根据自己对高级语言的熟悉程度选用VB、C#、VC或其他高级语言。
实际上,掌握一门PC机方的高级语言编程对嵌入式系统开发是必要的。
7.1异步串行通信的基础知识本节简要概括了串行通信中的通常使用的相关基本概念,为学习MCU的串行接口编程做准备。
对于已经了解这方面知识的读者,可以略读本节。
7.1.1基本概念“位”(bit)是单个二进制数字的简称,是可以拥有两种状态的最小二进制值,分别用“0”和“1”表示。
在计算机中,通常一个信息单位用8位二进制表示,称为一个“字节”(byte)。
LabWindows/CVI串口通信函数LabWindows/CVI提供的RS-232函数库主要包括以下几类函数:串行口打开/关闭 (Open/Close)函数,串行口输入/输出(Input/Output)函数,串行口控制(Control)函数,串行口状态查询(Status)函数和串行口事件处理(Callbacks)函数。
下面分别予以介绍。
1.串行口打开/关闭函数1)OpenCom函数功能:表示以默认的参数设置方式打开一个串口。
该函数原型为:int OpenCom (int COM_Port,char Device_Name[ ] )其中,参数COM_Port为整型变量,用于指定串口号,有效范围为1~1000;Device_Name[]为字符型数组,是用ASCⅡ码字符串表示的串口名。
2)OpenComConfig函数功能:用来打开一个串行口并进行相关的参数设置。
该函数原型为:int OpenComConfig(int COM_Port,char Device_Name[],long Baud_Rate,int Parity,int Data_Bits,int Stop_Bits,int Input_Queue_Size,int Output_Queue_Size)其中,参数COM_Port为整型变量,用于指定串口号,有效范围为1~1000;Device_Name[]为字符型数组,是用ASCⅡ码字符串表示的串口名。
例如,以“COM1”来代替端口1,如果输入值为NULL或一个空字符串,则以COM_Port号作为指定端口号。
Baud_Rate为长整型变量,用来设置串行口的传输速率,标准的传输速率有110、300、600、1200、2400、4800、9600、19200b/s等;默认值为9600。
Parity为整型变量,用来指定奇偶校验模式。
0表示无奇偶校验,1表示奇校验,2表示偶校验;Data_Bits为整型变量,用来指定每帧信息中数据位的个数,可选5、6、7、8;Stop_Bits为整型变量,用来指定每帧信息中停止位的个数,可选1、1.5或2;Input_Queue_Size为整型变量,用来指定串行口输入队列的大小;Output_Queue_Size为整型变量,用来指定串行口输出队列的大小。
手把手教你labview串口通信我也是一个labview的初学者,这个例子介绍了一个最最简单的串口通信的上位机的例子。
单片机不断向串口发送数据。
上位机之显示串口发来的数据。
一.先在前面板添加一个VISA资源名称添加上之后前面板会出现在后面板会出现一.在后面板添加一个串口配置的控件接下来对对串口配置控件进行配置1.“启用终止符”-——-—-—-----配置布尔型变量“T”,就是取真.2.“终止符”--—-----———-我们不对其进行配置,选择默认终止符—-“\n”3。
’’超时'—--——-----为其配置10000的常量4。
资源名称与“VISA资源名称“控件相连接5。
波特率这里我们为其配置大小为“115200“的常量6。
其余各项不进行配置,默认系统设置上图为配置完成的结果二.接下来创建一个平铺式结构2.在平铺式顺序结构中添加一个延时控件ﻬ3.把串口配置控件的“错误输出“端、VISA资源名称输出端分别连接在平铺式顺序结构的两边上。
并给延时控件配置大小为100的常量。
如下图..三.1。
创建一个条件结构控件2.在条件结构控件中添加一个VISA读取控件3。
添加一个“VISA串口字节数“控件4。
将VISA串口字节数“控件”的“错误输入“端与上一环节中引出的”表示错误输出“的黄线连接。
5.将VISA串口字节数“控件”的“引用”端与上一环节中引出的代表VISA资源名称的线连接6. 将VISA串口字节数“控件”的“错误输出“端与“VISA读取”控件的“错误输入"连接7.将VISA串口字节数“控件"的“引用输出“与“VISA读取”控件的“VISA资源名称“的线连接。
..8。
字节数配置常量4,读者可根据自己数据大小任意配置。
四.1。
在条件结构外侧建立一个“VISA关闭“控件2.将VISA关闭“控件的错误输入、VISA资源名称端分别于“VISA读取”控件的对应端连接.3.建立一个简易错误处理器,将其错误输入端与串口关闭控件的错误输出端连接,如图,3.选择天剑结构控件“假”4。
Lab windowsCVI平台上实现带有握手机制的串行通信1 系统总体设计单片机和PC机的串行通信采用RS-232接口,系统工作时,单片机上电完成初始化设置后,等待PC机发送询问信号“?”(ASCII码是3FH),单片机接收到3FH后,就通过串口向PC机发送回答信号“.”(ASCII码是2EH),PC机收到回答信号“.”后,发送确认信号“!”(ASCII码是21H),到此就完成了软件握手,下面单片机开始发送数据,PC机接收并显示数据。
2 硬件设计系统中PC机作为上位机,单片机为下位机。
单片机的时钟振荡频率选择11.059MHz。
通过常用电平转换芯片MAX232实现PC机串口和单片机串口的连接,如图1所示。
单片机P2口接8位拨?a开关,通过拨码开关可以设置不同的波特率,如表1所示。
在单片机上电前将拨码开关打到相应位置完成单片机串口波特率的设定。
3 软件设计3.1 通信协议通信协议设定帧格式为:1位起始位,8位数据位,1位停止位,不设奇偶校验位。
有效的通信传输字节只是中间的8位数据位。
单片机的波特率设置由P2口内容设定,PC机的波特率由界面中的波特率选择控件决定,二者的波特率必须保持一致。
3.2 PC机程序设计PC机程序设计部分利用Lab windows/CVI平台进行,使用 Lab windows/CVI首先需建立一个项目文件,包含有用户界面文件(.uir)、C 源码文件(.c)、头文件(.h)、3个部分。
接下来调试好系统软件以后,使用Lab windows/CVI的Distribution Kit工具将项目文件生成应用文件(.EXE)。
3.2.1 用户界面设计创建一个新的工程文件,在工程文件中添加一个新的用户界面文件(.uir),在.uir文件中创建一个面板(panel)和若干控件。
面板和主要控件的属性设置则如表2所示。
设置好以后,还需要按照下面步骤修改设置一些控件属性:设置COMPORT控件的Label/Value属性:向控件Label中添加COM1、COM2、COM3、COM4,相应的Value值设为1、2、3、4,数据类型为int型;设置BAUDRATE 控件的Label/Value值:2400、4800、9600、19200,数据类型同样设为int型;设置CLEAR、READ、TEXTBOX、QUIT、FLUSHOUTQ、FLUSHINQ控件的Dimmed属性的初始值为TRUE[2]。
LabWindowsCVI串口通信函数LabWindows/CVI串口通信函数LabWindows/CVI提供的RS-232函数库主要包括以下几类函数:串行口打开/关闭(Open/Close)函数,串行口输入/输出(Input/Output)函数,串行口控制(Control)函数,串行口状态查询(Status)函数和串行口事件处理(Callbacks)函数。
下面分别予以介绍。
1.串行口打开/关闭函数1)OpenCom函数功能:表示以默认的参数设置方式打开一个串口。
该函数原型为:int OpenCom (int COM_Port,char Device_Name[ ] )其中,参数COM_Port为整型变量,用于指定串口号,有效范围为1~1000;Device_Name[]为字符型数组,是用ASCⅡ码字符串表示的串口名。
2)OpenComConfig函数功能:用来打开一个串行口并进行相关的参数设置。
该函数原型为:int OpenComConfig(int COM_Port,char Device_Name[],long Baud_Rate,int Parity,int Data_Bits,int Stop_Bits,int Input_Queue_Size,int Output_Queue_Size)其中,参数COM_Port为整型变量,用于指定串口号,有效范围为1~1000;Device_Name[]为字符型数组,是用ASCⅡ码字符串表示的串口名。
例如,以“COM1”来代替端口1,如果输入值为NULL或一个空字符串,则以COM_Port号作为指定端口号。
Baud_Rate为长整型变量,用来设置串行口的传输速率,标准的传输速率有110、300、600、1200、2400、4800、9600、19200b/s等;默认值为9600。
Parity为整型变量,用来指定奇偶校验模式。
0表示无奇偶校验,1表示奇校验,2表示偶校验;Data_Bits为整型变量,用来指定每帧信息中数据位的个数,可选5、6、7、8;Stop_Bits为整型变量,用来指定每帧信息中停止位的个数,可选1、1.5或2;Input_Queue_Size为整型变量,用来指定串行口输入队列的大小;Output_Queue_Size为整型变量,用来指定串行口输出队列的大小。