虚拟仪器课程设计-流水灯(12页).doc
-虚拟仪器课程设计-流水灯-第 8 页电控学院课程设计(论文)课程名称: 虚拟仪器 题 目: 数字流水灯的设计 院 (系): 专业班级: 姓 名: 学 号: 指导教师: 年 月 日基于LabVIEW的流水灯设计摘 要虚拟仪器(virtual instrumention)是基于计算机的仪器。计算机和仪器的密切结合是目前仪器发展的一个重要方向。LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。流水灯是一种生活中比较常见的装饰,本文主要通过labview来设计了一个流水灯系统的上位机界面,通过串口通信实现了其有规律的亮灭,带来一定的观赏效果。关键词:虚拟仪器、上位机、串口通信、流水灯AbstractVirtual Instrument (virtual instrumention) is a computer-based instruments. Close combination of computer and instruments is an important development direction of the current instrument. LabVIEW is a program development environment from National Instruments (NI) developed by the company, similar to C and BASIC development environment, but LabVIEW significantly different from other computer languages are: the use of other computer languages are generated text-based language code, and the use of LabVIEW graphical programming G editing language program is produced in block diagram form.Light water is a relatively common life decorative paper labview mainly through the PC interface to design a light water system through serial communication achieved its regular light off, bring some viewing.Keywords: Virtual Instrument, PC, serial communications, water lights目录1 设计任务12系统方案选择1整体设计1通信协议1下位机设计方案2上位机设计方案23下位机设计3硬件设计3单片机串口发送数据单元4软件设计4跑马灯程序设计5串口发送数据程序设计54上位机设计6前面板设计6后面板设计75系统调试86结论97总结10参考文献11附录121 设计任务1.通过RS232接口进行数据采集。通过RS232接口实现上位机(PC)与下位机(单片机)之间的数据通讯。2.利用上位机实时显示数据。对于界面数据的显示,主要由模拟的LED灯实现。 2系统方案选择整体设计采用单片机串口实现单片机流水灯的运行状态对上位机的发送,并且由上位机接受并且实现状态的显示,使下位机流水灯的运行状态能够直观的在LABVIEW中实现。下位机由单片机通过串口发送PC机,PC机接受信号并且显示到界面。通信协议串口是计算机上一种非常通用的设备通信协议,串口通信协议也可以用于获取远程采集设备的数据,串行通信是计算机和外部设备进行数据交换的重要渠道,由于其成本低,性能稳定并遵循统一的标准,因而在工程中被广泛应用。所谓通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称传输控制规程。目 前较为常用的串口有9针串口和25针串口,通信距离较近时,可以用电缆线直接连接标准RS232端口 ,若距离较远,需附加调制解调器。RS-232是美国电子工业协会正式公布的串行总线标准,也是目前最常用的串行接口标准,用来实现计算机与计算机之间、计算机与外设之间的数据通讯。RS-232串行接口总线适用于:设备之间的通讯距离不大于15m,传输速率最大为20kBps,RS-232协议以-5V-15V表示逻辑1,以+5V15V表示逻辑0。AT89C52单片机具有一个异步串行收发模块USART,其主要特点如下:支持8和9位数据位,1位停止位的串行数据帧结构;由硬件支持的奇偶校验位发生和校验;二个完全独立的中断,TX发送完成RX接收完成;支持多机通信模式;支持倍速异步通信模式,典型的串口用于ASCII码字符的传输。通信使用3根线完成:地线,发送,接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据,其他线用于握手,但是不是必须的。这个系统只是初步采集,自己接触通信接口也不多,所以直接使用比较简单的通讯接口RS232通讯接口,此接口性能完全可以满足此次设计的数据传输要求,所以直接选择RS232通讯接口。下位机设计方案 由ATC89C52最小系统和8个流水灯组成。ATC89C52单片机是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,具有邓杜的内部资源:4kb闪存、128BRAM、32根I/O口线、2个16位定时器/计数器、5个向量两级中断结构、2个全双工的串行口。具有4.25-5.50V的电压工作范围和0-24MHz的工作频率,使用ATM89C52单片机时无须外扩存储器。因此控制流水灯就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机系统。上位机设计方案对于labview处理主要包括前后面板的设计,包括三部分:参数设置部分、命令控制部分及显示部分。其中参数设置主要包括通讯口、波特率、数据位、校验位、停止位及接收周期的设置;命令控制主要包括启停数据接收、显示数据清空及退出运行等;显示界面主要包括接收数据显示、接收数据个数显示、当前下位机流水灯状态实时显示等。上位机接受下位机传送的数据,通过设计前面板以及框图程序的编写,将模拟的跑马灯显示在上位机的前面板上。3下位机设计硬件设计 STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash 存储器。使用高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。本次课程设计下位机使用单片机STC89C52控制流水灯,其硬件原理图如下:图 3-1 STC89C52控制流水灯电路单片机串口发送数据单元 单片机通过串口向上位机发送数据,如图3-2所示为串口连接电路:图3-2所示为串口连接电路软件设计图3-3 下位机软件设计流程图软件程序见附录跑马灯程序设计流水灯点亮顺序表:Uchar code LED=0x00,0x18,0x3c,0x7e,0xff,0xbd,0xdb,0xe7;数据发送程序: for(i=0;i<7;i+) P0=LEDi; fs(LEDi); Delay(1000); for(i=7;i>0;i-) P0=LEDi; fs(LEDi); Delay(1000);串口发送数据程序设计串口初始化子函数:void Com_Init(void) TMOD = 0x20; PCON = 0x00; SCON = 0x50; TH1 = 0xFd; TL1 = 0xFd; TR1 = 1;数据发送子函数:void fs(char p) SBUF = p; while(!TI) TI = 0;4上位机设计对于labview上位机主要包括前后面板的设计,包括三部分:参数设置部分、命令控制部分及显示部分。其中参数设置主要包括通讯口、波特率、数据位、校验位、停止位及接收周期的设置;命令控制主要包括启停数据接收、显示数据清空及退出运行等;显示界面主要包括接收数据显示、接收数据个数显示、当前下位机流水灯状态实时显示等。前面板设计图4-1 上位机前面板设计程序面板设计如下:图4-2 程序设计面板5系统调试将下位机程序下载到单片机并使用串口调试助手对数据通信进行检测,无误后对上位机进行设计。运行结果如下:图5-1 串口调试通过串口程序助手看以查看下位机发送数据是否正常,检查下位机的好坏,避免出现问题找不出是上位机还是下位机的因素。然后通过下位机测试上位机的接收情况、以及程序正确与否。6结论点击labview发送按钮进行数据的发送和流水灯演示,点击清空按钮清空数据接收显示区的数字,点击停止按钮停止数据的发送。可自行设置发送周期、波特率等的设置。下位机发送跑马灯的状态数据,上位机接收显示。前面板的接收到数据后,如下图所示:图6-1 前面板显示图7总结 经过这次虚拟仪器课程设计,是我对于单片机又了进一步的复习,对labview及上下位机之间的通信都有了进一步的认识,尤其是上下位机之间的通信。一个周的课设,也对LabVIEW又有了深一步的了解,LabVIEW入门很容易,如果要深入做下去,就必须懂得各方面的知识。这是一门实践性很强的课,很多知识是从实验中学来的,自己还觉的不错,但真到实际做东西的时候,就会觉得困难重重,这时再去思考一遍,便有了对知识的更深层次的理解。学以促用,用以促学,我们感觉这也是这门课教给我们的重要知识,在整个设计中我学会了在复杂的问题面前怎样去分析,找到问题的关键所在,而且认识到这种能力的重要性。这期间我们带着问题学习才能学到真正的知识。在整个设计中我学会了在复杂的问题面前怎样去分析,找到问题的关键所在,而且认识到这种能力的重要性。 在这次虚拟仪器课程设计过程中,不仅巩固了上课所学的理论知识,也对labview有了更深入的了解和更熟练的操作,最重要的是学会了一种认真的态度,通过几天的不断研究不断改进,做出了自己的流水灯程序并且能够按要求正确的运行,经过诸多坎坷之后得到了成功的喜悦。参考文献1MM.西安科技大学,2012附录1. 硬件原理图和LabVIEW框图程序虚拟仪器课程设计:流水灯上位机下位机通信#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int 流水灯点亮顺序表uchar code LED=0x00,0x18,0x3c,0x7e,0xff,0xbd,0xdb,0xe7;串口初始化子函数void Com_Init(void) TMOD = 0x20; PCON = 0x00; SCON = 0x50; TH1 = 0xFd; TL1 = 0xFd; TR1 = 1;串口数据发送子函数void fs(char p) SBUF = p; while(!TI) TI = 0;延时子函数void Delay(uint x) uchar i; while(x-) for(i=0;i<120;i+);主函数void Main()Com_Init();while(1)int i; for(i=0;i<7;i+) P0=LEDi; fs(LEDi); Delay(1000); for(i=7;i>0;i-) P0=LEDi; fs(LEDi); Delay(1000);