毕业论文基于LabVIEW的多功能秒表设计计时器+倒计时+节拍器+日历+时钟Word文档下载推荐.docx
- 文档编号:5018620
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:28
- 大小:1.43MB
毕业论文基于LabVIEW的多功能秒表设计计时器+倒计时+节拍器+日历+时钟Word文档下载推荐.docx
《毕业论文基于LabVIEW的多功能秒表设计计时器+倒计时+节拍器+日历+时钟Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《毕业论文基于LabVIEW的多功能秒表设计计时器+倒计时+节拍器+日历+时钟Word文档下载推荐.docx(28页珍藏版)》请在冰点文库上搜索。
图形化的程序语言,又称为“G”语言。
使用这种语言编程时,基本上不写程序代码,取而代之的是流程图或框图。
它可以增强你构建自己的科学和工程系统的能力,提供了实现仪器编程和数据采集系统的便捷途径。
使用它进行原理研究、设计、测试并实现仪器系统时,可以大大提高工作效率。
2.2LabVIEW简介
双击LabVIEW快捷图标,出现启动画面,打开一个新的LabVIEW程序,可以看到它由两个面板组成。
第一个是前面板窗口;
第二个是后面板窗口。
2.2.1前面板
前面板由输入控件和显示控件组成。
这些控件是VI的输入输出端口。
输入控件模拟仪器的输入装置,为VI的程序框图提供数据。
显示控件模拟仪器的输出装置,用以显示程序框图获取或生成的数据。
2.3.2程序框图
前面板创建完毕后,便可使用图形化的函数添加源代码来控制前面板上的对象。
程序框图是图形化源代码的集合,图形化源代码又称G代码或程序框图代码。
前面板上的对象在程序框图中显示为接线端。
3.秒表介绍及程序设计
3.1概述
秒表是一种常用的测时仪器。
又可称"
机械停表"
。
由暂停按钮、发条柄头、分针等组成。
它是利用摆的等时性控制指针转动而计时的。
在它的正面是一个大表盘,上方有小表盘(图1.4-2)。
秒针沿大表盘转动,分针沿小表盘转动。
分针和秒针所指的时间和就是所测的时间间隔。
在表正上方有一表把,上有一按钮。
旋动按钮,上紧发条,这是秒表走动的动力。
用大拇指按下按钮,秒表开始计时;
再按下按钮,秒表停止走动,进行读数;
再按一次,秒表回零,准备下一次计时。
秒表的精度一般在0.1-0.2秒,计时误差主要是开表、停表不准造成的。
而使用labview制作的秒表,其精确度可达到1毫秒。
3.2秒表的发展
原始人凭天空颜色的变化、太阳的光度来判断时间。
古埃及发现影子长度会随时间改变,发明日晷在早上计时,他们亦发现水的流动需要的时间是固定的,因此发明了水钟。
古代中国人亦有以水来计时的工具——铜壶滴漏,他们亦会用烧香计时。
将香横放,上面放上连有钢珠的绳子,有报时功能。
中国古代烧香的闹钟。
除了用水流来计时外,中国古代民间亦有利用燃点线香来计量时间。
龙舟报时更香就是利用烧香来计时的仪器,它更设有定时响闹的作用。
龙舟上挂了数条两端系著金属球的幼线,线下放了燃著的香。
每隔一段时间,香便会烧断一条线子,当金属球跌进下面的盛器时,便会发出报时响闹。
这种烧香时计最早见于宋代(公元12世纪中叶)的文献中。
用更香来计算时间的精度不高,但由于它简单易行,极之适合民间使用,所以曾经十分流行。
据文献记载有些更香可燃烧一画夜,有些甚至可以燃烧至一个月。
此更香是根据文献及示图复原,没有原物传世。
1088年,宋朝的科学家苏颂和韩工廉等人制造了史上首座以水力作自动化机械操作的水运仪象台,它是把浑仪、浑象和机械计时器组合起来的装置。
1276年,中国元代的郭守敬制成大明灯漏。
它是利用水力驱动,通过齿轮系及相当复杂的凸轮结构,带动木偶进行“一刻鸣钟、二刻鼓、三钲、四铙”的自动报时。
自宋起,十二时辰分初正即廿四小时系统,一刻即今天的十五分钟,其准确度较德国之桌钟早三百多年。
1283年在英格兰的修道院出现史上首座以砝码带动的机械钟。
13世纪意大利北部的僧侣开始建立钟塔(或称钟楼),其目的是提醒人祷告的时间。
1360年詹希元创制“五轮沙漏”,以齿轮、时刻盘合成
16世纪中在德国开始有桌上的钟。
那些钟只有一支针,钟面分成四部分,使时间准确至最近的十五分钟。
1657年,惠更斯发现摆的频率可以计算时间,造出了第一个摆钟。
1670年英国人威廉·
克莱门特(WilliamClement)发明锚形擒纵器。
1797年,美国人伊莱·
特里(EliTerry)获得一个钟的专利权。
他被视为美国钟表业的始祖。
世界上第一座原子钟建于1949年,位于美国的国家标准技术研究所。
第一座准确的原子钟于1955年建造,位于英国国家物理实验室。
1967年,第十三届国际度量衡会议采用铯-133原子钟所发出特定波长的频率,作为秒的基准依据。
当此原子钟某特定波长所发出的光振动9,192,631,770次所经过的时间,定义为一秒。
原子钟相当稳定,不易受环境变化影响。
计时码表,或称码表,是一种有计时功能的手表,是将秒表的功能结合于手表之中。
计时码表于1720年由英国人GeorgeGraham发明。
无论是机械手表,石英手表,甚至LCD显示数位表,都有计时码表的产品。
LCD数位手表的价钱是三者中最低,但计时功能却是最为精确,精度可达百分之一秒或千分之一秒。
石英的计时码表价钱较贵,精度多数为十分之一秒。
而机械计时码表的精度是最差,只能以秒计算,但由于机芯结构复杂,因此价钱最为昂贵。
3.3秒表的功能设计
3.3.1.正计时
我设计的秒表的正计时器首先具有精确到0.01秒的计时功能,最高可以计时到99小时59分59秒99,其他功能如下:
以LED七段数码管的方式显示时间。
在计时过程中,可以暂停、继续计时。
在任意状态下,可以执行复位操作,清除所有数据。
可以在任意状态记录任意次时间。
在任意状态下,可以实现单人记圈/多人记名的切换,并且切换后自动复位。
有毫秒指针,每秒转一圈。
3.3.2倒计时
我设计的倒计时器可以从任意时间开始倒计时,并在倒计时结束时触发警报,其他功能如下:
有倒计时指针显示剩余时间的百分比,且平滑移动。
以LED七段数码管的方式显示剩余时间。
可以设置不同的提示音。
精确到1秒。
倒计时结束时指针中间会出现红点。
3.3.3.节拍器
我设计的节拍器具有如下功能:
开始、暂停节拍器。
设置节拍,从20拍/分钟到240拍/分钟,间隔为20拍/分钟。
3.3.4.时钟与闹钟
我设计的时钟具有以下功能:
以指针方式显示12进制的时间。
显示当前日期和时间,星期。
设置闹钟,并可设置闹钟状态。
4.程序实现
4.1秒表计时器
4.1.1流程图
通过对秒表原理的理解基础上,在结合LabVIEW软件,秒表计时器的程序流程图如图(4.1)所示:
图4.1程序流程图
4.1.2程序设计
1.前面板设计
程序的前面板如图4.2所示
图4.2前面板
2.程序框图
整个秒表计时器的程序框图如图4.3所示
图4.3程序框图
3.程序设计
顺序计数的实现:
建立while循环,将i创建显示控件,从而将计数值显示到前面板上。
在循环中添加等待时间可以控制计时精度。
如添加10毫秒等待则是精确到0.01秒。
进位的实现:
进位的实现有几种备选方案:
1)for循环指定循环次数
2)事件结构中设置比较器,当i等于特定值时触发进位
3)使用条件结构,当i等于特定值时比较器输出true,激活进位
4)算数计算由i算出各个数位
使用前三种方案有一个弊端:
每增加一个进位就会相应的增加一个嵌套的循环,而循环越多越容易出现错误和死循环。
于是我选用第四个进位方法:
算数方法。
由于1秒=1000毫秒,1分钟=60秒,1小时=60分钟。
我们可以算出,当while循环延迟为1毫秒时,小时数为(i/60*60*1000)的整数商。
设i’为(i/60*60*1000)的余数,则分钟数为(i’/60*1000)的整数商。
设i”为(i’/60*1000)的余数,则秒数为(i”/1000)的商,其余数即为毫秒数。
市面上的秒表多数是精确到0.01秒,也就是10毫秒,所以我把算出的毫秒数又进行了*10,从而得到0.01秒的精确度。
实现算数进位的子vi程序框图如图4.4所示,其中x为输入端,输出为一个含有4位的时间簇。
图4.4算数进位函数
暂停计时的实现:
暂停计数要求在计数开始后点击暂停按钮时暂停计数,再次点击时又开始计数,并且是接着刚才的数值计数。
这就要求在整体程序运行时,将程序的一部分暂停和恢复。
为了做到这点,我先后尝试了各种结构,最终使用了双层while循环的嵌套结构。
具体是将一个while循环外再加一个while循环,在内层while循环中加入停止按钮,并且将停止按钮的动作设置为“释放时转换”,同时将前面板的停止按钮设置为开关的形状以便于识别。
这样,这个内层的停止按钮就会实现暂停的功能。
具体程序框图如图4.5所示
图4.5暂停的实现
随时退出程序的实现:
我的计数方案没有for循环,所以它不会自己停止。
如果沿用先前的独立停止按钮的设计,就会出现一个严重的问题:
只能在计时过程中停止。
当程序处于计时状态时,内部while循环处于停止状态,点击停止按钮会立即得到响应;
而当程序处于暂停计时时,内部while循环处于运行状态,从而外部的事件将无法响应。
我注意到,当在暂停状态下点击停止按钮后再让秒表开始计时,内部循环将会跳出,而停止命令则会得到响应。
由此想到,如果让程序在我点击停止的时候,自动让内部while循环处于运行状态,那么问题便迎刃而解了。
由此想法,列出了如下的真值表:
暂停端
停止端
内部while循环
1
不难看出此真值表与或门完全一致。
于是便有了如图4.6所示的设计。
使用或门将两个按钮同时连接到内部while循环,并且把触发端都放置在最内部,消除延迟:
图4.6停止按钮设计
整体框图如图4.7所示
图4.7可以随时停止的秒表设计
计时清零的实现:
对显示控件的清零有几种备选方案:
1)事件结构
2)条件结构
3)嵌套while循环
经过多次实验,发现事件结构和条件结构容易在while循环中形成死循环无法跳出,故采用嵌套while循环来实现清零功能。
由于在前面的程序中停止程序并重启后i会自动归零,所以在整个程序外面再加一个while循环。
这样,可以随时停止内部程序而不中止整个进程。
而停止内部程序则会实现清零的操作。
和停止按钮一样,如果沿用先前的独立停止按钮的设计,就会出现同样的的问题:
只能在计时过程中清零。
当程序处于计时状态时,内部while循环处于停止状态,点击清零按钮会立即得到响应;
解决此问题,同样根据真值表可以看出,在内循环添加或门,这样就可以顺利触发清零。
程序框图如图4.7所示.
图4.7带停止功能的秒表程序框图
记录功能的实现:
秒表的记录功能要求能够在计时的过程中随时记录多次的时间。
首先,我实现的是记名。
为了能够显示一个完整的字符串(如:
第1名:
0小时0分钟1秒.20)我使用字符串连接函数将多个字符串和时间进行组合,并使用条件结构控制对数据的采集。
在最后添加换行符以换行。
为了能够实现实时采集,同样将采集按钮放在最内层循环,并使用或门与其他按钮相连。
为使程序能够连续多次记录,使用反馈节点储存数据。
程序框图如图4.8所示。
图4.8可以连续记录的秒表程序框图
随着记录功能而来的一个问题就是清屏。
先前的清零只能对时间进行重置,而字符串却不行。
开始时,我使用了对显示控件从新赋值的方法,但这种方法有一个弊端,就是移位寄存器是不可重置的,这样就会导致在执行清零后再记录时,先前清除的内容又显示回来了。
为了解决移位寄存器清零的问题,我转而使用了另一种方法:
临时文件的读取写入。
临时文件可以很好的解决清除数据与读取的问题。
先将数据写入临时文件,再从文件中读取字符串显示到显示控件上。
每点击一次采集按钮,就会在对应文件的下一行添加一个记录字符串。
当需要清零时只需要删除文件内的数据即可。
这样,当点击清零按钮时,所有显示控件都会清零,并且没有数据残留。
同样,将该按钮放置在内循环并使用或门与其它开关相连。
程序框图如图4.9所示.
图4.9可以清零的秒表程序框图
复位按钮的实现:
秒表上通常会有一个复位按钮,这个按钮会同时实现两个功能:
清除所有数据;
使秒表处于停止计时状态。
所以我把清零按钮改为了复位按钮,次改进需要增加一些触发功能。
首先,在点击复位时会清空临时文件中的数据,这一点通过事件结构实现;
其次,在清除数据时,将开关置为暂停状态,为此创建了暂停按钮局部变量,通过对局部变量的赋值实现该功能。
当点击复位时,暂停按钮会被赋值F,从而暂停计时。
事件结构具体如图4.10所示。
图4.10复位的程序框图
切换记名/记圈的实现:
切换记名/记圈实现的功能就是当点击切换按钮时,程序会在记名模式/记圈模式之间来回切换,并且在切换的同时进行复位。
为实现该功能,我使用了一个条件结构,在“真”里面放置“圈”字,在“假”里面放置“名”字,使其共同输出到一个显示控件上。
同时,在前面板隐藏该显示控件,并在程序框图上创建该显示控件的局部变量,设置为读取模式,将其连接到采集数据的长字符串里面。
这样,就可以把字符串里面的一个字符在两个字之间切换了。
程序框图如图4.11所示
为了能够在切换的同时执行复位,我在复位按钮的旁边增加了一个事件结构,设置触发源为切换按钮值改变,这样,点击切换按钮时,事件结构触发,输出一个T,将其和复位按钮以或门相连,便可以实现多个触发源触发一个功能了。
图4.11切换的实现
LED七段数码管显示的实现:
七段数码管显示数字的效果如图4.22所示。
每一位数字都是由7个布尔指示灯拼接而成,每两位形成一组,共同显示一个小时/分钟/秒/毫秒数值。
在每两个位之间,有绿色的双闪LED灯,每秒闪一下。
图4.12LED七段数码管显示效果
为了实现LED数码管的显示,首先需要制作一个数字转换为LED显示的子VI,否则程序会很繁杂。
该子VI的程序框图如图4.13所示,前面板如图4.14所示。
首先,建立一个十进制整形的数值输入控件,将其连接至一个条件结构,在条件结构中添加10个条件分支,分别对应0~9这10个数字。
在条件结构的每个分支中,加入7个布尔常量,并分别创建显示控件,将显示控件设置为方形指示灯,这7个指示灯对应7个数码管。
对这7个指示灯的形状和大小进行调整,使之成为一个“8”字。
接下来对条件结构中的常量进行设定,比如8对应的数码管就是7个T,因为8的LED显示中数码管都是亮的。
同样的,对所有10个条件分支进行设定,使每一个数值对应一个LED显示样式。
因为本程序是子VI,不宜有太多输出,故创建局部变量并将其捆绑为簇,实现单输入单输出。
图4.13LED显示子VI程序框图
图4.14LED显示子VI前面板
在主程序中,需要调用8次LED显示函数。
因为该函数一次只能显示一位,所以要把时间的两位数变为两个一位数。
对一个两位数除10取余和商便可达到这一目的。
将簇解除捆绑之后,把每一位除以10,将商和余数分别接入LED显示子VI,并在子VI上创建显示控件,便可在前面板上显示出LED的数字了。
程序框图如图4.15所示.
为实现每两个数字中间的闪烁灯,我在秒的位置增加了除以2的操作,通过余数来判断奇偶,当得到奇数时,使用条件结构给8个布尔指示灯赋值T,使之点亮。
当得到偶数时,使用条件结构给8个布尔指示灯赋值F,使之灭。
程序框图如图4.15所示。
图4.15主函数部分LED显示
图4.15闪烁灯程序框图
秒针转盘的实现:
在前面板上创建一个量表,并进行自定义,使之成为图4.16中的样子,并将其最大值设置为100.这样,即可实现每秒钟转一圈的秒表指针了。
图4.16毫秒指针
4.2倒计时器
4.2.1流程图
倒计时器的流程图如图4.17所示。
图4.17倒计时器流程图
4.2.2程序设计
程序的前面板如图4.18所示。
图4.18倒计时器的前面板
倒计时器的程序框图如图4.19所示。
图4.19倒计时器的程序框图
初始时间设置的实现:
倒计时所输入的时间为小时:
分钟:
秒,想将这些时间转化为秒,则需要把小时*3600+分钟*60+秒。
数值倒计的实现:
得到秒的数值之后,只需要把该数值减去循环次数i就可以实现倒计时了。
而将while循环的间隔设置为1秒就可以实现每秒减1的倒计时了。
在实际设计中,倒计时提示会在程序运行时响起,因为此时计数数值也是0.为解决此问题,我在-i之前对数值*100,在-i之后又进行/100取整,并且使用/10取整之前的数值与1比较,相等时就会触发报警。
同时,把while循环的间隔设置到10毫秒,这样计时还是1秒,同时提高了精确度。
程序框图如图4.20所示。
图4.20倒计时原理
倒计时暂停/开始的实现:
和秒表一样,具体是将一个while循环外再加一个while循环,在内层while循环中加入停止按钮,并且将停止按钮的动作设置为“释放时转换”,同时将前面板的停止按钮设置为开关的形状以便于识别。
倒计时复位的实现:
倒计时的复位原理同秒表一样,只不过由于不需要记录数据,要比先前简单很多。
在点击复位按钮之后,内循环会停止,同时将暂停/开始按钮置为暂停状态。
原理在前面的秒表部分已有叙述,在此不再重复。
倒计时铃声及其切换的实现:
该倒计时器在倒计时器结束时会有铃声报警,并且铃声是可换的。
为了实现该功能,我先找来两个wav格式的铃声,使用事件结构来判断是否时间到。
时间到时,事件结构执行真的部分,播放放在指定路径下的声音文件。
为了实现切换提示音,在条件结构内在加入一个条件结构,并在前面板中加入一个枚举输入,从而选择铃声。
另外,在倒计时结束时,指针中间会有一个红点出现,这使用的是一个圆形指示灯的可见性属性节点通过条件结构的赋值所实现的。
其触发原理同上。
程序框图如图4.21所示。
图4.21倒计时结束触发
整合停止按钮:
在逻辑上,秒表和倒计时器的运行关系是并行的,也就是说互不影响,所以要放在同一个程序中。
这样就要求当点击停止按钮时,它们必须同时停止而不是只有一个框架停止运行。
为实现该功能,我隐藏了倒计时器的停止按钮,同时使用了一个触发源为秒表停止按钮的事件结构来代替它。
这样,一个停止按钮就可以停止整个程序了。
指针倒计时的实现:
倒计时指针是一个显示剩余时间百分比的装置。
所以只需要对剩余时间和设定时间的秒数进行相除即可。
为实现平滑效果,将其接入-i的前面和后面,这样指针每10毫秒动一下,人的肉眼几乎无法察觉。
4.3节拍器
4.3.1流程图
节拍器的流程图如图4.22所示。
图4.22节拍器流程图
4.3.2程序设计
程序的前面板如图4.23所示。
图4.23节拍器
节拍器的程序框图如图4.24所示。
图4.24节拍器程序框图
节拍选择的实现:
在前面板使用转盘输入所需节拍,将其设置为输入差值20,最小值20,最大值240。
设需要x拍/分钟,则每拍就是60/x秒,故用60除以所输入的数值即可。
为了使得节拍器可以实时识别指令,将while循环的间隔设为50毫秒,同时对输出数值*20。
节拍的提示方式:
该节拍器通过判断循环次数i与所需节拍是否为整除关系来判断是否报警,通过条件结构实现。
节拍提示采用系统自带的提示音,使用发声控件实现。
节拍的暂停/继续与停止:
此处的原理与倒计时器和秒表完全相同,故在此不再重复说明。
4.4时钟及闹钟
4.4.1流程图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业论文 基于 LabVIEW 多功能 秒表 设计 计时器 倒计时 节拍器 日历 时钟
链接地址:https://www.bingdoc.com/p-5018620.html