基于labview单片机串口通信设计课程设计.docx
《基于labview单片机串口通信设计课程设计.docx》由会员分享,可在线阅读,更多相关《基于labview单片机串口通信设计课程设计.docx(17页珍藏版)》请在冰点文库上搜索。
基于labview单片机串口通信设计课程设计
开放性实验课程设计
题目:
基于LabVIEW的单片机之间串口通信设计
摘要
虚拟仪器是现代计算机技术同仪器技术深层次结合的全新概念仪器,实质是利用计算机显示器的显示功能模拟传统仪器的控制面板,以多种形式表达输出测量结果,利用计算机强大的软件功能实现信号数据的运算、分析和处理,完成各种测试功能的一种计算机仪器系统。
本文介绍了利用LabView语言来实现上、下位机之间通信的方法,并从软、硬件两个方面阐述了设计思想。
在简要介绍图形化虚拟仪器平台LabView的基础上,分析STC12C5A60S2单片机与LabView之间的串口通信模式,并结合该设计中设计的温度检测系统给出串口通信的软、硬件设计。
应用先进的虚拟仪器软件LabView,大大降低了串口通讯复杂程度,减小了软件设计的工作量,能够大大降低投资成本。
在实际应用中有巨大的使用价值。
关键词:
MCS51单片机,LabView,串口通信
目录
前言5
第一章绪论6
1.1研究的背景及意义6
1.2课题发展状况7
1.3设计任务7
第二章系统总体设计8
2.1系统方案设计8
2.2系统硬件选择8
第三章系统硬件设计9
3.1元器件的介绍9
3.1.1主控制器9
3.1.2单片机10
3.2硬件电路图设计10
3.2.1mcu及复位电路10
3.2.2串口电路11
3.2.3晶振电路12
3.2.4led输出电路13
3.2.5PCB版13
第4章系统软件设计15
4.1单片机接口程序设计15
4.2单片机串口通讯协议17
参考文献19
附录20
前言
本设计的主要研究内容以单片机为核心,用以串行通信接口电路,并编写相关控制程序。
设计基于串行通信的协议,实现和LabView的通信功能。
LabView是一种用图标代替文本行创建应用程序的图形化编程语言。
LabView没有常规仪器的控制面板,而是利用计算机强大的图形环境,采用可视化的图形编程语言和平台,以在计算机屏幕上建立图形化的软面板来替代常规的传统仪器面板。
软面板上具有与实际仪器相似的旋钮、开关、指示灯及其他控制部件。
在操作时,用户通过鼠标或键盘操作软面板,来检验仪器的通信和操作。
而利用LabView设计的数据采集系统,可模拟采集各种实际信号,并对其疾行分析得出有用信息。
通过开放的LabView环境和与之无缝集成的硬件,能够方便地将设计从理论阶段、完成系统辨识、控制设计、动态系统仿真以及实时系统实现。
图0-1LabView软件总体结构框图
第1章绪论
1.1研究的背景及意义
1.1.1研究的背景
目前以计算机为上位机和以单片机为下位机的集散式控制系统被广泛的应用于工业检测和控制系统中。
由于PC机的分析处理能力强,处理速度快,而单片机价格低廉、体积小、使用灵活方便,所以主机一般采用PC机,而从机则采用单片机。
串行通信是一种常用的数据传输方法,虽然它的传输速度慢,但它占用的通信线路少,成本低,在工程的通信方式上仍有重要地位。
通过PC机的RS-232串行接口与单片机之间串行通信是主要的通信手段。
1.1.2课题研究意义
虚拟仪器与传统仪器技术不同,虚拟仪器在通用计算机平台上通过数据采集设备,然后根据用户的实际需求就可以构建起不同的系统。
所以虚拟仪器实际上是一个按照用户的实际需求组成的数据采集系统。
具体来说,虚拟仪器有以下特点:
(1)虚拟仪器利用了计算机丰富的软件资源。
另外,计算机还能实时、直接地对测试数据进行各种分析与处理。
(2)因为虚拟仪器融合了计算机的硬件资源,计算机来直接处理这些应用,这样就大大的增强了传统仪器的功能,突破了传统仪器在数据处理、显示、传输、存储等方面的限制。
(3)虚拟仪器基于计算机总线和模块化仪器的总线,这样就使仪器的硬件实现了模块化,就可以方便地构建模块化的虚拟仪器。
(4)当今世界的计算机技术和相关的技术发展十分迅速,虚拟仪器也是建立在此基础上的,因此虚拟仪器随着计算机更新的速度快,功能越来与强大。
(5)由于计算机的体系是开放式的,所以虚拟仪器的硬件和软件都具有开放性、可重复使用的特点,而且硬件还可以互换,这样就使虚拟仪器系统更为灵活。
1.2课题发展的状况
在虚拟仪器出现之前,传统仪器设备就是普通的模拟测量设备。
每一种仪器就是一种完全封闭的专用系统。
随着计算机技术的发展,虚拟仪器的发展大致经历了以下几个阶段。
第一阶段是使用计算机增强传统仪器的功能。
由于计算机技术的长足发展和接口的统一,只要把仪器和计算机通过特定的接口相连接,用户就可以通过计算机控制仪器的功能,这使得用计算机控制测控仪器成为一种趋势。
第二阶段是开放式的通用接口和仪器硬件构成。
随着时代的发展,仪器的硬件出现了技术进步:
插入式的计算机数据采集卡和仪器总线标准的确立。
这些新的技术使仪器的构成和接口得以统一和不断开放,这样就慢慢地消除了原来由用户定义和供应商定义的仪器功能的区别。
第三阶段,虚拟仪器构架和结构得到了广泛认同和采用。
在硬件和软件领域产生许多行业标准,有几个虚拟仪器平台已经得到广泛的应用并有趋势逐渐成为虚拟仪器行业标准。
第四阶段,虚拟仪器编程的行业标准产生了,接口、总线、传输等都有通过统一的标准,虚拟仪器的作者只要把大部分精力放在程序的开发和仪器功能的设计上就可以了,就不需要考虑这些问题。
在以上阶段中,可以看出在虚拟仪器技术发展中有两个特别突出的标志:
一个是各种总线标准的建立和应用,它从硬件标准上为虚拟仪器铺平了道路;另一个是图形化编程语言的出现,用户不再面对枯燥的代码,这就使用户把更多的精力放在程序的流程和效率上面。
1.3设计任务
1、设计单片机及其相关电路,编写控制程序
2、设计基于串行通信的协议,实现和LabView的通信功能
第2章系统方案设计
2.1系统总体方案设计
利用C51单片机的最小系统,控制一个简单的LED电路。
即:
P1口控制8盏LED。
使用C语言编写一段程序,可以接收上位机发来的数据,并显示出来。
同时,利用LabVIEW8.6软件,编写一个上位机界面。
通过这个上位机界面能够控制这个LED电路,根据电脑输入的数字,点亮相应位的LED。
图0.0总体设计
2.2系统硬件的选择
控制器选用STC12C5A60S2,该单片机具有8路10位AD,双串口,该单片机有1024字节的扩展RAM,同时,该单片机采用了不分频执行机器周期,同晶振频率下,运行速度是普通51单片机的12倍,可不用进行初始化设置,就可进行在常用波特率下的串口通信。
第3章系统硬件设计
3.1元器件的介绍
3.1.1主控制器
STC12C5A60S2单片机中包含中央处理器(CPU)、程序存储器(Flash)、数据存储器(SRAM)、定时/计数器、UART串口、串口2、I/O接口、告诉A/D转换、SPI接口、PCA和外部晶体振荡电路等模块。
STC12C5A6060S2系列单片机几乎包含了数据采集和控制中所需的所有单元模块,可称得上一个偏上系统。
下图为该系列单片机引脚图:
图3.1STC12C5A60S2单片机引脚图
STC12C5A60S2是STC生产的单时钟/机器周期(1T)的单片机,是高速、低功耗、超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。
内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换,针对电机控制,强干扰场合。
3.1.2单片机
C51单片机是对所有兼容Intel8031指令系统的单片机的统称。
图3.2c51单片机
3.2硬件电路图设计
3.2.1MCU及复位电路
复位电路,就是利用它把电路恢复到起始状态。
就像计算器的清零按钮的作用一样,以便回到原始状态,重新进行计算。
和计算器清零按钮有所不同的是,复位电路启动的手段有所不同。
一是在给电路通电时马上进行复位操作;二是在必要时可以由手动操作;三是根据程序或者电路运行的需要自动地进行。
复位电路都是比较简单的大都是只有电阻和电容组合就可以办到了。
再复杂点就有三极管等等配合程序来进行了。
为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。
一般微机电路正常工作需要供电电源为5V±5%,即4.75~5.25V。
由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才会撤除,微机电路开始正常工作。
图3.3MCU及复位电路
3.2.2串口电路
串口通信电路采用的是USB接口与上位机通信。
它不是一种新的总线标准,而是应用在PC领域的接口技术。
串行通讯又分为异步通讯和同步通讯两种方式。
在单片机中,主要使用异步通讯方式。
MCS_51单片机有一个全双工串行口。
全双工的串行通讯只需要一根输出线和一根输入线。
数据的输出又称发送数据(TXD),数据的输入又称接收数据(RXD)。
串行通讯中主要有两个技术问题,一个是数据传送、另一个是数据转换。
数据传送主要解决传送中的标准、格式及工作方式等问题。
数据转换是指数据的串并行转换。
图3.4串口电路
3.2.3晶振电路
晶振是为单片机合格的时钟信号流。
单片机电路是由无数的门电路组成,而门电路工作时就需要时钟信号作为触发,过来一个脉冲,门电路就执行一次,过来多少个脉冲,门电路就执行多少次。
所以,在同样电路的情况下,脉冲频率越高,单片机性能也越高。
晶振就是在整个电路的时序中提供一个基本时钟,时序电路中时钟源必不可少。
图3.5晶振电路
3.2.4LED输出电路
LED的显示原理可知,一个数据显示在LED大屏幕的过程分为:
从存储器中读出数据与送入到LED板中显示两个步骤。
这一过程需要产生如下控制信号:
数据地址送入存储器,存储器读信号,锁存器开通及LED单元板中的行信号、HC595的SCK移位、RCK锁存、E使能信号等。
这些必需信号的产生增加了数据显示过程的时间。
如果能够复用其中的信号,势必减少这一过程的延时。
在LED显示系统中,常把显示数据按行存储到外部ROM/RAM中的办法即是一例。
该办法设定存储器的高位并接到LED的行控制线上,数据按行储存,送入数据地址后,按行读出数据,并同时开通了行控制信号。
下面的信号复用方案也是类似的原理。
图3.6LED输出电路
3.2.5PCB板
印制电路板的设计是以电路原理图为蓝本,实现电路使用者所需要的功能。
印刷电路板的设计主要指版图设计,需要内部电子元件、金属连线、通孔和外部连接的布局、电磁保护、热耗散、串音等各种因素。
优秀的线路设计可以节约生产成本,达到良好的电路性能和散热性能。
简单的版图设计可以用手工实现,但复杂的线路设计一般也需要借助计算机辅助设计(CAD)实现,而著名的设计软件有OrCAD、Pads(也即PowerPCB)、Altiumdesigner(也即Protel)、FreePCB、CAM350等
图3.7PCB板
第4章系统软件设计
4.1单片机接口程序设计
单片机接口程序采用C51语言编写,这是专门为51系列单片机设计的高效率C语言编译器,符合ANSI标准,生成的程序代码运行速度极高,所需要的存储器空间极小,汇编语言更简单易用。
接口程序编写时,首先进行串口的初始化,即在SCON寄存器中赋值#050H,将波特率设置为9600,用定时器1产生波特率,串口工作在方式2。
下面为串口通信程序流程图:
图4.1上位机
图4.2上位机
图4.3上位机
只有上位机能够主动发命令。
也就是说在下位机接收到上位机的命令后,才进行发数据或进行相关的动作,它不能主动向上位机发送数据。
单片机在接收到上位机的数字后,返回这个数字,并由PC显示出来。
数字的起始符是数字00,结束符是数字FF。
4.2单片机串口通讯协议
单片机通过串口每次向上位机传送3个有效数据:
AD1、AD2、8位按键。
为保证接收时上位机能正确识别其顺序,这里在每次发送数据前加发一个0x00作为起始位。
然后把AD1、AD2的值均加1。
再加上按键值一次发送4个字节的数据。
上位机接收时检测到0时,即将其后的第1~2位减1,然后和其后第3位一并作为AD1、AD2、8位按键的值。
由此可见,上位机显示的AD值最高为参考值的254/255,另外由于按键按下为0,这个协议将会在8个按键全按下的时候出错。
但这种情况不多见。
如果一定要保证协议的可靠性,可以屏蔽一个按键,只使用7个按键。
课设总结
LabView作为一个专为测试测量设计的编程语言,使用了工程师们最熟悉的图形化的编程方式,能够帮助用户高效和快速的开发测试应用。
串口是常用的计算机与外部串行设备之间的数据传输通道,通过USB串口总线与PC计算机组成虚拟仪器系统,是目前虚拟仪器的构成方式之一,它具有接口简单,使用方便的特点。
本次设计为PC与单片机串口通信,课题完成的工作总结如下:
(1)进行了系统的硬件和软件方面的设计,设计的主要内容包括USB串口的连接,STC12C5A60S2单片机连接和数据传输,Labview串口程序设计,C语言程序的设计等等。
(2)采用USB串口数据线连接PC机与单片机,用LabVIEW8.0作为开发环境,实现了上位机PC机与下位机单片机之间的串口通信。
连接PC和单片机构成单片机应用系统,PC发送数据给单片机,并将数据返还回来,PC接收并验证返还的数据。
实践证明应用先进的虚拟仪器软件LabView,大大降低了串口通讯复杂程度,减小了软件设计的工作量,大大降低了投资成本。
本次设计实现了LabView下的串口通信,达到了预期的目标。
然而,本次设计还有一定的不足之处。
用LabView软件强大的编辑功能,配合下位机智能仪器,能够实现数据的传输功能。
在这次设计中,只是初步的研究了PC机和单片机之间的通信方法,实现简单的数据发送和接收。
对于复杂数据的传输和更强大功能的开发还有待发掘。
参考文献
[1]胡汉才,单片机原理及其接口技术[M].清华大学出版社,1996.
[2]JEFFREYTRAVIS.LabVIEW大学实用教程[M].电子工业出版社,2008.
[3]赵亮,侯国锐.单片机C语言编程与实例[M].人民邮电出版社,2003.
[4]张毅刚.单片机原理及应用[M].北京:
高等教育出版社,2003.
[5]何立民.单片机与嵌入式系统应用.北京航空航天出版社,2003.
[6]张桐,陈国顺,王正林.精通LabVIEW程序设计[M].电子工业出版社,2008.
[7]袁新艳.计算机外设与接口技术[M].高等教育出版社,2009.
[8]张迎新.《单片微型计算机原理》、《及接口技术》.北京:
国防工业出版社[9]张靖武,周灵彬.《单片机系统的PROTEUS设计与仿真》[M].北京:
电子工业出版社,2007
[10]孙践知.PC硬件技术基础教程[M].北京:
科技出版社,2003.
[11]何立民,单片机应用系统设计[M].北京:
北京航空航天大学出版社,1993.
[12]戴胜华,等.单片机原理与应用[M].北京:
清华大学出版社,2005.
[13]周向红.《51系列单片机应用与实践教程》.北京:
北京航天航空大学出版社
[14]郭天祥.《新概念51单片机C语言教程》.北京:
电子工业出版社
[15]马淑华,王凤文,张美金.《单片机原理与接口技术》[M].北京:
北京邮电大学出版社2007.
附录
程序代码
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharx,flag;
voidserial_init()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SM0=0;
SM1=1;
REN=1;
ES=1;
EA=1;
}
voidmain()
{
serial_init();
while
(1)
{
if(flag==1)
{
ES=0;
SBUF=x;
while(TI==0);
TI=0;
ES=1;
flag=0;
}
switch(x)
{
case0x30:
P1=0xff;break;
case0x31:
P1=0xfe;break;
case0x32:
P1=0xfc;break;
case0x33:
P1=0xf8;break;
case0x34:
P1=0xf0;break;
case0x35:
P1=0xe0;break;
case0x36:
P1=0xc0;break;
case0x37:
P1=0x80;break;
case0x38:
P1=0x00;break;
}
}
}
voidserial()interrupt4
{
RI=0;
x=SBUF;
flag=1;
}