当前位置:文档之家› 测量仪器课程设计

测量仪器课程设计

《测量仪器》课程设计任务书练习1:温度报警程序,当温度值大于37则报警,小于-5则退出运行状态。

前面板:程序功能及用途:本程序功能为温度报警,温度值超过37就报警,小于-5就退出运行状态。

程序演示:(备注:以下的当前温度值显示格式设置为2位的浮点数,当然也可以设置为其他形式)(1)当温度值大于37°时,红灯亮表示报警。

(备注:以下的温度值)(2)当温度值小于-5°时,程序退出运行状态。

练习2:建立一个实现计算器功能的VI。

前面板有数字控制件用来输入两个数值,有数值显示件用来显示运算结果。

运算方式有加、减、乘、除,可用一个滑动条实现运算方式的设定。

功能:实现加减乘除运算方式的切换,k为滑动杆的值当0<=k&&k<5时,运算方式为加法;当5<=k&&k<10时,运算方式为减法;当10<=k&&k<15时,运算方式为乘法;当15<=k&&k<=20时,运算方式为除法;该题利用公式节点来进行设计前面板:练习三:设计VI,将一个字符串和两个数值联结成为一个字符串(顺序为两头为数值,中间为字符串)。

两字符串间不用空格隔开。

数值形式分别为输入时为四位、二位浮点型,显示时为两位、四位浮点型。

并显示中间字符串长度和组成后的字符串长度。

程序功能及用途:本题要求将两个数值和一个字符串组合成一个新的字符串,对于输入的两个数值有精度要求(数值1,数值2的显示格式分别设置为四位,二位浮点型),对于输出的字符串也有格式要求(显示时为两位,四位浮点型),这可以通过“格式化写入字符串”函数来实现,对于计算中间字符串长度和组成字符串长度可以由“字符串长度”函数来说实现并最终用数值显示控件显示其长度,可以用字符串输出控件输出组合后的字符串。

前面板:综合设计题目一:信号产生、测量与传输系统设计设计内容:在LABVIEW开发平台下,结合测试与信号处理理论设计下述虚拟仪器:函数发生器;频谱分析仪;具体要求:函数发生器输出正弦波、方波、三角波,波形可选择;频率、幅值和初相位可以调节;前面板上显示输出波形。

频谱分析仪采样频率、采样点数、信号频率、幅值和初相位可调;分析正弦波、方波和三角波的频谱特性。

图一、信号发生器设计一个VI,可以得到常见的正弦波、方波、锯齿波三角波信号,并叠加一个均匀白噪声,上面波形图显示基本信号,下面是基本信号和均匀白噪声叠加信号,设计如图所示,添加两个按钮,分别是波形生成和停止生成,来控制该信号发生器。

要求:设计出程序框图。

图二、虚拟滤波器设计在上一题基础上,设计一个虚拟滤波器,可以对有噪声信号的原始信号进行低通滤波处理,添加两个按钮,分别用来产生模拟信号和开始滤波功能。

要求:设计出程序框图图三基于labview和单片机的温度测量系统设计设计一个基于串口的虚拟温度测量系统,其中单片机部分在Proteus中设计,其代码在设计中已经提供,主要设计一个上位机接收程序,将单片机发送的温度值接收并保存起来,下图一给出的是一个示意图,可以按照这个界面来设计,也可以按照别的思路。

主要思想:上位机作为一个接收端,实时接收数据,单片机端的温度用有三个字节的数组成,第一个是一个标志位,如果接收为0则表示接收成功。

第二个是发送实际温度值乘以10后的整型数据的高字节;第三个是发送实际温度值乘以10后的整型数据的低字节;上位机主要利用VISA中的串口接收函数,同时由于单片机中的数据发送过来是以文本形式接收,要进行数据转化。

根据上面的简单描述:设计出该上下位机测量系统要求:(1)分别在Proteus和labview中完成两个实例(2)写出程序设计过程和程序框图(3)完成课程设计报告。

#include <reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit DQ =P3^6; //定义DS18B20通信端口uchar flag=0;code uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, //0~9的段码0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10, //带小数点0~9的段码0xbf,0xff}; //"-"和"全灭"的段码//uchar pc_command; //只要PC有发过来0x0a过来就算是告诉单片机启动发送指令uchar flag; //正负号标志void delay(unsigned int i) //延时函数{while(i--);}//显示程序void display(uchar bit_count,uchar dat){P2=0x00;P0=table[dat];P2=(0x01)<<bit_count;delay(500);}void dis_Temperature(uint t){uchar i;if(flag==1){i=20;}else{i=21;}display(0,i);i=t/100;display(1,i);i=t%100/10;display(2,i+10);i=t%100%10;display(3,i);}void Init_DS18B20(void) //初始化函数{unsigned char x=0;DQ = 1; //DQ复位delay(8); //稍做延时DQ = 0; //单片机将DQ拉低delay(80); //精确延时大于480usDQ = 1; //拉高总线delay(14);x=DQ; //稍做延时后如果x=0则初始化成功x=1则初始化失败delay(20);}uchar Read(void) //读一个字节{unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i--){DQ = 0; // 给脉冲信号dat>>=1;DQ = 1; // 给脉冲信号if(DQ)dat|=0x80;delay(4);}return(dat);}void Write(unsigned char dat) //写一个字节{unsigned char i;for (i=8; i>0; i--){DQ = 0;DQ = dat&0x01;delay(5);DQ = 1;dat>>=1;}delay(4);}uint ReadTemperature(void) //读取温度{unsigned char a=0;unsigned char b=0;unsigned int t=0;float f_t=0;Init_DS18B20();Write(0xCC); // 跳过读序号列号的操作Write(0x44); // 启动温度转换Init_DS18B20();Write(0xCC); //跳过读序号列号的操作Write(0xBE); //读取温度寄存器等(共可读9个寄存器)前两个就是温度a=Read();b=Read();if(b<127){t=b;t<<=8;t=t|a;flag=0;}else{a=~a;b=~b;t=b;t<<=8;t=t|a;t=t+1;flag=1;}f_t=t*0.0625; //温度值在寄存器中为11位,分辨率为0.0625t=f_t*10+0.5; //乘以10表示小数点后面只取1位,加0.5是四舍五入return(t);}void serial_int(){//设置定时器1的工作方式为方式2TMOD=0x20;//设定定时器1的初值,使串口通讯的波特率为9600bpsTH1=0xfd; TL1=0xfd;SCON=0x50;PCON=0x00;ES=1;EA=1;TR1=1;}main(){uint Temperature;uchar Temp_highbyte,Temp_lowbyte;serial_int();while(1){Temperature=ReadTemperature();dis_Temperature(Temperature);Temp_highbyte=Temperature/256;Temp_lowbyte=Temperature%256;ES=0;SBUF=flag; //发送三个字节while(TI==0);TI=0;SBUF=Temp_highbyte; //发送实际温度值乘以10后的整型数据的高字节while(TI==0);TI=0;SBUF=Temp_lowbyte; //发送实际温度值乘以10后的整型数据的低字节while(TI==0);TI=0;ES=1;}}补充:题目二基于labview的摄像头控制程序理论介绍:在labview中利用电脑配备的 USB 摄像头进行视频监控,要用到两个 API 函数:capCreateCaptureWindow 和 SendMessage。

capCreateCaptureWindow 的作用是创建一个视频窗口,摄像头捕捉到的视频图像在此窗口内显示,函数返回值就是代表此窗口的句柄。

函数表示式如下所示:HWND VFWAPI capCreateCaptureWindow(LPCSTR lpszWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hWnd,int nID);各参数意义如下:lpszWindowName 视频窗口的窗口标题dwStyle 窗口模式,设置值可用下面数值,也可组合使用:WS_Child:视频窗口是子窗口,位于应用程序主窗口内。

否则是独立的窗口WS_Visible:视频窗口可见WS_Caption:视频窗口有标题栏WS_ThickFrame:视频窗口有边框X 视频窗口位置x坐标Y 视频窗口位置y坐标nWidth 视频窗口宽度nHeight 视频窗口高度hwndParent 创建视频窗口的主窗口,设置为:Me.hWndnID 视频ID视频窗口创建后,剩下的事情就是用 SendMessage 向该窗口发送各种消息,实现对摄像头的控制。

函数表示式如下所示:LRESULT SendMessage(HWND hWnd, // handle to destination windowUINT Msg, // messageWPARAM wParam, // first message parameterLPARAM lParam // second message parameter);#define WM_USER 0x0400Const WM_CAP_Connect = WM_User + 10 '连接一个摄像头Const WM_CAP_DisConnect = WM_User + 11 '断开一个摄像头的连接Const WM_CAP_Set_PreView = WM_User + 50 '使预览模式有效或者失效Const WM_CAP_Set_Overlay = WM_User + 51 '使窗口处于叠加模式,也会自动地使预览模式失效。

相关主题