课程设计(论文)-基于labview的一阶系统的时域动态响应分析.docx_第1页
课程设计(论文)-基于labview的一阶系统的时域动态响应分析.docx_第2页
课程设计(论文)-基于labview的一阶系统的时域动态响应分析.docx_第3页
课程设计(论文)-基于labview的一阶系统的时域动态响应分析.docx_第4页
课程设计(论文)-基于labview的一阶系统的时域动态响应分析.docx_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于labview的一阶系统的时域动态响应分析院(系):电子信息工程学院专业:测控技术与仪器班级:测控121201 学号: 姓名: 指导教师: 2016 年 1 月1摘要labview(laboratory virtual instrument engineering workbench)是一种用图标代替文本行创建应用程序的图形化编程语言。传统文本编程语言根据语句和指令的先后顺序决定程序执行顺序,而 labview 则采用数据流编程方式,程序框图中节点之间的数据流向决定了vi及函数的执行顺序。vi指虚拟仪器,是 labview 的程序模块。系统在施加一定形式的输入信号后,研究系统的输出量随时间的变化规律。控制系统的时域响应由动态过程和稳态过程两部分组成,其中动态过程是指系统从初始状态经历了一段时间的变化,达到最终状态的响应过程;稳态响应过程是指动态过程结束后系统的稳定输出状态。其中,瞬态响应:系统受到外加作用的激励后,从初始状态到最终状态的响应过程称为瞬态响应。稳态相应:时间趋于无穷大时,系统的输出状态为稳态响应。关键词:labview 系统响应激励 摘要一、设计任务与要求1二、 总体框图2三、 ad转换pcf85912四、 数码管显示6 五、测量结果.11六、心得体会11附录:程序121、main.c122、i2c.c133、delay.c164、display.c17应变片课程设计一、设计任务与要求应用力学知识(理论力学、材料力学),运用软件ansys分析简支梁受力集中区,确定测点布置位置,采用钢板尺作为测试对象,验证理论分析和仿真分析及实验分析的结果一致性。以上力学分析,结构分析需回答并完成以下问题:(1) 运用力学理论分析其受力情况;(2) 将3d图导入ansys分析软件进行仿真分析;(3) 并运用应变片粘贴工艺知识,选取相应的粘合剂;(4) 完成相应的应变片粘贴过程,并进行粘贴质量检查;(5) 导线的连接与固定,并对粘贴后的应变片进行标定;(6) 布线和组桥方法,多个应变片误差的计算;2、 总体框图图1、总体框图3、 ad转换pcf85911 、特性l 单电源供电l 工作电压:2.5 v 6 vl 待机电流低l i2c总线串行输入/输出l 通过3个硬件地址引脚编址l 采样速率取决于i2c总线速度l 4个模拟输入可编程为单端或差分输入l 自动增量通道选择l 模拟电压范围:vssvddl 片上跟踪与保持电路l 8位逐次逼近式a/d转换l 带一个模拟输出的乘法dac2 、应用l 闭环控制系统l 用于远程数据采集的低功耗转换器l 电池供电设备l 在汽车、音响和tv应用方面的模拟数据采集3 、概述pcf8591是单片、单电源低功耗8位cmos数据采集器件,具有4个模拟输入、一个输出和一个串行i2c总线接口。3个地址引脚a0、a1 和a2 用于编程硬件地址,允许将最多8个器件连接至i2c总线而不需要额外硬件。器件的地址、控制和数据通过两线双向i2c总线传输。器件功能包括多路复用模拟输入、 片上跟踪和保持功能、 8位模数转换和8位数模拟转换。 最大转换速率取决于i2c总线的最高速率。4、引脚图3、 引脚图 (dip16)l 电源电压典型值为5v。ain0ain3:模拟信号输入端。a0a3:引脚地址端。vdd、vss:电源端。(2.56v)sda、scl:i2c总线的数据线、时钟线。osc:外部时钟输入端,内部时钟输出端。l ext:内部、外部时钟选择线,使用内部时钟时ext接地。l agnd:模拟信号地。aout:d/a转换输出端。vref:基准电源端。5、功能描述6.1 地址i2c 总线系统中的每一片 pcf8591 通过发送有效地址到该器件来激活。该地址包括固定部分和可编程部分。 可编程部分必须根据地址引脚a0、 a1和a2来设置。 在i2c总线协议中地址必须是起始条件后作为第一个字节发送。地址字节的最后一位是用于设置以后数据传输方向的读/写位。 (见图4、5)图4、地址图5、读模式的总线协议a/d转换6.2 控制字发送到 pcf8591 的第二个字节将被存储在控制寄存器,用于控制器件功能。 控制寄存器的高半字节用于允许模拟输出,和将模拟输入编程为单端或差分输入。低半字节选择一个由高半字节定义的模拟输入通道。如果自动增量(auto-increment)标志置1,每次a/d 转换后通道号将自动增加。如果自动增量(auto-increment)模式是使用内部振荡器的应用中所需要的,那么控制字中模拟输出允许标志应置1。 这要求内部振荡器持续运行, 因此要防止振荡器启动延时的转换错误结果。 模拟输出允许标志可以在其他时候复位以减少静态功耗。选择一个不存在的输入通道将导致分配最高可用的通道号。所以,如果自动增量(auto-increment)被置1,下一个被选择的通道将总是通道0。两个半字节的最高有效位(即bit 7和bit 3)是留给未来的功能,必须设置为逻辑0。控制寄存器的所有位在上电复位后被复位为逻辑0。d/a转换器和振荡器在节能时被禁止。模拟输出被切换到高阻态。6、原理图 pcf8591在51开发板上的原理图如下图6、硬件连接原理图ain0连接由放大电路传来的电压,scl和sda分别接52单片机的p3.4和p3.5,通过i2c来传送数据。4、 数码管显示1、数码管简介 数码管是一种半导体发光器件,其基本单元是发光二极管,是单片机系统中最常用的一种显示输出,主要用于单片机控制中的数据输出和状态信息显示。 数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(com)的数码管。共阳数码管在应用时应将公共极com接到+5v,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(com)的数码管。共阴数码管在应用时应将公共极com接到地线gnd上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。2、动态显示驱动数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极com增加位选通控制电路,位选通由各自独立的i/o线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通com端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的com端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的i/o端口,而且功耗更低。3、 原理图 单片机板上的原理图如下:图7、数码管连接原理图5、 测量结果 用苹果作为砝码。 表一、测量结果砝码(个)0123读数27389103113读数37590103113 从表中可以看出,随着砝码的个数增加,示数的增加基本为线性的。不太准确的结果可能是由于砝码的质量稍有偏差,测量时钢尺没按稳,每次测量时手按的钢尺位置不一样。六、心得体会 通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。这也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响。通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。我觉得作为一名自动化专业的学生,单片机的课程设计是很有意义的。更重要的是如何把自己平时所学的东西应用到实际中。虽然自己对于这门课懂的并不多,很多基础的东西都还没有很好的掌握,觉得很难,也没有很有效的办法通过自身去理解,但是靠着这一个多礼拜的“学习”,在小组同学的帮助和讲解下,渐渐对这门课逐渐产生了些许的兴趣,自己开始主动学习并逐步从基础慢慢开始弄懂它。我认为这个收获应该说是相当大的。觉得课程设计反映的是一个从理论到实际应用的过程,但是更远一点可以联系到以后毕业之后从学校转到踏上社会的一个过程。小组人员的配合相处,以及自身的动脑和努力,都是以后工作中需要的。附录:程序1、main.c#include #include i2c.h#include delay.h#include display.h#define addwr 0x90 /写数据地址 #define addrd 0x91 /读数据地址extern bit ack;unsigned char readadc(unsigned char chl);/*- 主程序-*/main() unsigned char num=0; init_timer0();while (1) /主循环 num=readadc(0); tempdata0=duanmanum/100; tempdata1=duanma(num%100)/10; tempdata2=duanma(num%100)%10; delayms(100);/*-读ad转值程序,输入参数 chl 表示需要转换的通道,范围从0-3返回值范围0-255-*/unsigned char readadc(unsigned char chl) unsigned char val; start_i2c(); /启动总线 sendbyte(addwr); /发送器件地址 if(ack=0)return(0); sendbyte(0x40|chl); /发送器件子地址 if(ack=0)return(0); start_i2c(); sendbyte(addwr+1); if(ack=0)return(0); val=rcvbyte(); noack_i2c(); /发送非应位 stop_i2c(); /结束总线 return(val); 2、i2c.c#include i2c.h#include delay.h#define _nop() _nop_() /定义空指令 bit ack; /应答标志位sbit sda=p35;sbit scl=p34;/*-启动总线-*/void start_i2c() sda=1; /发送起始条件的数据信号 _nop(); scl=1; _nop(); /起始条件建立时间大于4.7us,延时 _nop(); _nop(); _nop(); _nop(); sda=0; /发送起始信号 _nop(); /起始条件锁定时间大于4 _nop(); _nop(); _nop(); _nop(); scl=0; /钳住i2c总线,准备发送或接收数据 _nop(); _nop();/*-结束总线-*/void stop_i2c() sda=0; /发送结束条件的数据信号 _nop(); /发送结束条件的时钟信号 scl=1; /结束条件建立时间大于4 _nop(); _nop(); _nop(); _nop(); _nop(); sda=1; /发送i2c总线结束信号 _nop(); _nop(); _nop(); _nop();/*- 字节数据传送函数 函数原型: void sendbyte(unsigned char c);功能: 将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对 此状态位进行操作.(不应答或非应答都使ack=0 假) 发送数据正常,ack=1; ack=0表示被控器无应答或损坏。-*/void sendbyte(unsigned char c) unsigned char bitcnt; for(bitcnt=0;bitcnt8;bitcnt+) /要传送的数据长度为8位 if(cbitcnt)&0x80)sda=1; /判断发送位 else sda=0; _nop(); scl=1; /置时钟线为高,通知被控器开始接收数据位 _nop(); _nop(); /保证时钟高电平周期大于4 _nop(); _nop(); _nop(); scl=0; _nop(); _nop(); sda=1; /8位发送完后释放数据线,准备接收应答位 _nop(); _nop(); scl=1; _nop(); _nop(); _nop(); if(sda=1)ack=0; else ack=1; /判断是否接收到应答信号 scl=0; _nop(); _nop();/*- 字节数据传送函数 函数原型: unsigned char rcvbyte();功能: 用来接收从器件传来的数据,并判断总线错误(不发应答信号), 发完后请用应答函数。 -*/unsigned char rcvbyte() unsigned char retc; unsigned char bitcnt; retc=0; sda=1; /置数据线为输入方式 for(bitcnt=0;bitcnt8;bitcnt+) _nop(); scl=0; /置时钟线为低,准备接收数据位 _nop(); _nop(); /时钟低电平周期大于4.7us _nop(); _nop(); _nop(); scl=1; /置时钟线为高使数据线上数据有效 _nop(); _nop(); retc=retc1; if(sda=1)retc=retc+1; /读数据位,接收的数据位放入retc中 _nop(); _nop(); scl=0; _nop(); _nop(); return(retc);/*- 非应答子函数原型: void noack_i2c(void);-*/void noack_i2c(void) sda=1; _nop(); _nop(); _nop(); scl=1; _nop(); _nop(); /时钟低电平周期大于4 _nop(); _nop(); _nop(); scl=0; /清时钟线,钳住i2c总线以便继续接收 _nop(); _nop(); 3、 delay.c#include delay.h/*- us延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0255 这里使用晶振12m,精确延时请使用汇编,大致延时 长度如下 t=tx2+5 us -*/void delayus2x(unsigned char t) while(-t);/*- ms延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0255 这里使用晶振12m,精确延时请使用汇编-*/void delayms(unsigned char t) while(t-) /大致延时1ms delayus2x(245); delayus2x(245); 4、display.c#includedisplay.h#includedelay.h#define dataport p0 /定义数据端口 unsigned char code duanma10=0xc0,0xf9,0xa4,0xb0,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论