基于labview的多功能秒表設(shè)計(jì)(完整版)_第1頁
基于labview的多功能秒表設(shè)計(jì)(完整版)_第2頁
基于labview的多功能秒表設(shè)計(jì)(完整版)_第3頁
基于labview的多功能秒表設(shè)計(jì)(完整版)_第4頁
基于labview的多功能秒表設(shè)計(jì)(完整版)_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、基于labview的多功能秒表設(shè)計(jì)(完整版)(文檔可以直接使用,也可根據(jù)實(shí)際需要修改使用,可編輯歡迎下載)基于LabVIEW的秒表設(shè)計(jì)摘要數(shù)字式秒表是一種常用的計(jì)時(shí)工具,廣泛用于各種比賽以及各類實(shí)驗(yàn)測(cè)量中。隨著生活節(jié)奏的加快,人們時(shí)間觀念的加強(qiáng),各種計(jì)時(shí)器已經(jīng)成為人們?nèi)粘I钪胁豢苫蛉钡囊徊糠郑⑶胰藗円呀?jīng)不能滿足于單一的某一種功能了。而如何在秒表的基礎(chǔ)上,根據(jù)人們生活的需要增加相應(yīng)的功能以方便人們的生活,便成為秒表設(shè)計(jì)方面的重點(diǎn)。我基于LabVIEW設(shè)計(jì)的的秒表,具有秒表計(jì)時(shí)器、倒計(jì)時(shí)器、節(jié)拍器、時(shí)鐘和鬧鐘的功能。其具有界面美觀,簡單易用,功能強(qiáng)大,精確度高等特點(diǎn)。此秒表的所有功能均可以獨(dú)立

2、運(yùn)行,互不干擾,具有很好的用戶體驗(yàn)。關(guān)鍵詞:秒表,計(jì)時(shí),LabVIEWStopwatchdesignbasedonLabVIEWAbstractDigitalstopwatchisacommonlyusedtoolfortiming.Itiswidelyusedinvariouscompetitionsandavarietyofexperimentalmeasurements.Withtheacceleratedpaceoflifeandthestrengtheningoftheconceptoftime,varietytimerhasbecomeanindispensablepartofev

3、erydaylife,andithasbeenunabletomeetonasinglefeatureofacertainkind.Ithasbecomethefocusofthestopwatchdesignthathowtoaddthecorrespondingfunctionaccordingtotheneedsofpeopleslivesbasedonthestopwatchtoconveniencetopeopleslives.StopwatchwitchIdesignedbasedonLabVIEW,iswithastopwatchtimer,countdowntimer,metr

4、onome,clockandalarmfunctions.Ithasabeautifulinterface,easytouse,powerful,highprecisioncharacteristics.Thisstopwatchsallfunctionscanberunindependently,meanscanwithoutdisturbingeachother,andwithgooduserexperience.Keywords:stopwatch,timer,LabVIEW目錄TOC o 1-5 h z HYPERLINK l bookmark8 緒論0 HYPERLINK l boo

5、kmark10 引言0 HYPERLINK l bookmark12 1.2虛擬儀器的概念及特點(diǎn)0 HYPERLINK l bookmark14 1.2.1虛擬儀器0虛擬儀器的特點(diǎn)0 HYPERLINK l bookmark16 圖形化編程和LabVIEW1 HYPERLINK l bookmark18 圖形化編程簡介1 HYPERLINK l bookmark20 LabVIEW簡介12.2.1前面板錯(cuò)誤!未定義書簽。 HYPERLINK l bookmark24 程序框圖1 HYPERLINK l bookmark26 秒表介紹及程序設(shè)計(jì)2 HYPERLINK l bookmark28 概

6、述2 HYPERLINK l bookmark30 秒表的發(fā)展2 HYPERLINK l bookmark32 秒表的功能設(shè)計(jì)4 HYPERLINK l bookmark34 3.3.1.正計(jì)時(shí)4 HYPERLINK l bookmark36 倒計(jì)時(shí)5 HYPERLINK l bookmark38 節(jié)拍器5時(shí)鐘與鬧鐘5 HYPERLINK l bookmark40 程序?qū)崿F(xiàn)6 HYPERLINK l bookmark42 4.1秒表計(jì)時(shí)器6 HYPERLINK l bookmark44 流程圖6 HYPERLINK l bookmark46 4.1.2程序設(shè)計(jì)7 HYPERLINK l boo

7、kmark68 倒計(jì)時(shí)器20 HYPERLINK l bookmark70 流程圖20 HYPERLINK l bookmark72 4.2.2程序設(shè)計(jì)21 HYPERLINK l bookmark78 節(jié)拍器24 HYPERLINK l bookmark80 流程圖24 HYPERLINK l bookmark82 程序設(shè)計(jì)25 HYPERLINK l bookmark84 時(shí)鐘及鬧鐘27 HYPERLINK l bookmark86 流程圖27程序設(shè)計(jì)27總結(jié)30致謝321.緒論1.1引言LabVIEW是一種程序開發(fā)環(huán)境,由美國國家儀器(NI)公司研制開發(fā)的,類似于C和BASIC開發(fā)環(huán)境,

8、但是LabVIEW與其他計(jì)算機(jī)語言的顯著區(qū)別是:其他計(jì)算機(jī)語言都是采用基于文本的語言產(chǎn)生代碼,而LabVIEW使用的是圖形化編輯語言G編寫程序,產(chǎn)生的程序是框圖的形式。1.2虛擬儀器的概念及特點(diǎn)1.2.1虛擬儀器LabVIEW程序又稱虛擬儀器,即VI,其外觀和操作均模仿現(xiàn)實(shí)儀器,如示波器和萬用表。每個(gè)VI都使用函數(shù)從用戶界面或其它渠道獲取信息輸入,然后將信息顯示或傳輸至其它文件或計(jì)算機(jī)。1.2.2虛擬儀器的特點(diǎn)根據(jù)概念創(chuàng)建者美國國家儀器公司(NationalInstruments)的定義,虛擬儀器(英語:Virtualinstrumentation)技術(shù)就是利用高性能的模塊化硬件,結(jié)合高效靈活

9、的軟件來完成各種測(cè)試、測(cè)量和自動(dòng)化的應(yīng)用。只有同時(shí)擁有高效的軟件、模塊化I/O硬件和用于集成的軟硬件平臺(tái)這三大組成部分,才能充分發(fā)揮虛擬儀器技術(shù)性能高、擴(kuò)展性強(qiáng)、開發(fā)時(shí)間少,以及出色的集成這四大優(yōu)勢(shì)。圖形化編程和LabVIEW2.1圖形化編程簡介圖形化的程序語言,又稱為“G”語言。使用這種語言編程時(shí),基本上不寫程序代碼,取而代之的是流程圖或框圖。它可以增強(qiáng)你構(gòu)建自己的科學(xué)和工程系統(tǒng)的能力,提供了實(shí)現(xiàn)儀器編程和數(shù)據(jù)采集系統(tǒng)的便捷途徑。使用它進(jìn)行原理研究、設(shè)計(jì)、測(cè)試并實(shí)現(xiàn)儀器系統(tǒng)時(shí),可以大大提高工作效率。2.2LabVIEW簡介雙擊LabVIEW快捷圖標(biāo),出現(xiàn)啟動(dòng)畫面,打開一個(gè)新的LabVIEW程

10、序,可以看到它由兩個(gè)面板組成。第一個(gè)是前面板窗口;第二個(gè)是后面板窗口。2.2.1前面板前面板由輸入控件和顯示控件組成。這些控件是VI的輸入輸出端口。輸入控件模擬儀器的輸入裝置,為VI的程序框圖提供數(shù)據(jù)。顯示控件模擬儀器的輸出裝置,用以顯示程序框圖獲取或生成的數(shù)據(jù)。2.3.2程序框圖前面板創(chuàng)建完畢后,便可使用圖形化的函數(shù)添加源代碼來控制前面板上的對(duì)象。程序框圖是圖形化源代碼的集合,圖形化源代碼又稱G代碼或程序框圖代碼。前面板上的對(duì)象在程序框圖中顯示為接線端。秒表介紹及程序設(shè)計(jì)3.1概述秒表是一種常用的測(cè)時(shí)儀器。又可稱機(jī)械停表。由暫停按鈕、發(fā)條柄頭、分針等組成。它是利用擺的等時(shí)性控制指針轉(zhuǎn)動(dòng)而計(jì)時(shí)

11、的。在它的正面是一個(gè)大表盤,上方有小表盤(圖142)。秒針沿大表盤轉(zhuǎn)動(dòng),分針沿小表盤轉(zhuǎn)動(dòng)。分針和秒針?biāo)傅臅r(shí)間和就是所測(cè)的時(shí)間間隔。在表正上方有一表把,上有一按鈕。旋動(dòng)按鈕,上緊發(fā)條,這是秒表走動(dòng)的動(dòng)力。用大拇指按下按鈕,秒表開始計(jì)時(shí);再按下按鈕,秒表停止走動(dòng),進(jìn)行讀數(shù);再按一次,秒表回零,準(zhǔn)備下一次計(jì)時(shí)。秒表的精度一般在0102秒,計(jì)時(shí)誤差主要是開表、停表不準(zhǔn)造成的。而使用labview制作的秒表,其精確度可達(dá)到1毫秒。3.2秒表的發(fā)展原始人憑天空顏色的變化、太陽的光度來判斷時(shí)間。古埃及發(fā)現(xiàn)影子長度會(huì)隨時(shí)間改變,發(fā)明日晷在早上計(jì)時(shí),他們亦發(fā)現(xiàn)水的流動(dòng)需要的時(shí)間是固定的,因此發(fā)明了水鐘。古代中

12、國人亦有以水來計(jì)時(shí)的工具銅壺滴漏,他們亦會(huì)用燒香計(jì)時(shí)。將香橫放,上面放上連有鋼珠的繩子,有報(bào)時(shí)功能。中國古代燒香的鬧鐘。除了用水流來計(jì)時(shí)外,中國古代民間亦有利用燃點(diǎn)線香來計(jì)量時(shí)間。龍舟報(bào)時(shí)更香就是利用燒香來計(jì)時(shí)的儀器,它更設(shè)有定時(shí)響鬧的作用。龍舟上掛了數(shù)條兩端系著金屬球的幼線,線下放了燃著的香。每隔一段時(shí)間,香便會(huì)燒斷一條線子,當(dāng)金屬球跌進(jìn)下面的盛器時(shí),便會(huì)發(fā)出報(bào)時(shí)響鬧。這種燒香時(shí)計(jì)最早見于宋代(公元12世紀(jì)中葉)的文獻(xiàn)中。用更香來計(jì)算時(shí)間的精度不高,但由于它簡單易行,極之適合民間使用,所以曾經(jīng)十分流行。據(jù)文獻(xiàn)記載有些更香可燃燒一畫夜,有些甚至可以燃燒至一個(gè)月。此更香是根據(jù)文獻(xiàn)及示圖復(fù)原,沒有

13、原物傳世。1088年,宋朝的科學(xué)家蘇頌和韓工廉等人制造了史上首座以水力作自動(dòng)化機(jī)械操作的水運(yùn)儀象臺(tái),它是把渾儀、渾象和機(jī)械計(jì)時(shí)器組合起來的裝置。1276年,中國元代的郭守敬制成大明燈漏。它是利用水力驅(qū)動(dòng),通過齒輪系及相當(dāng)復(fù)雜的凸輪結(jié)構(gòu),帶動(dòng)木偶進(jìn)行“一刻鳴鐘、二刻鼓、三鉦、四鐃”的自動(dòng)報(bào)時(shí)。自宋起,十二時(shí)辰分初正即廿四小時(shí)系統(tǒng),一刻即今天的十五分鐘,其準(zhǔn)確度較德國之桌鐘早三百多年。1283年在英格蘭的修道院出現(xiàn)史上首座以砝碼帶動(dòng)的機(jī)械鐘。13世紀(jì)意大利北部的僧侶開始建立鐘塔(或稱鐘樓),其目的是提醒人禱告的時(shí)間。1360年詹希元?jiǎng)?chuàng)制“五輪沙漏”,以齒輪、時(shí)刻盤合成16世紀(jì)中在德國開始有桌上的鐘

14、。那些鐘只有一支針,鐘面分成四部分,使時(shí)間準(zhǔn)確至最近的十五分鐘。1657年,惠更斯發(fā)現(xiàn)擺的頻率可以計(jì)算時(shí)間,造出了第一個(gè)擺鐘。1670年英國人威廉克萊門特(WilliamClement)發(fā)明錨形擒縱器。1797年,美國人伊萊特里(EliTerry)獲得一個(gè)鐘的專利權(quán)。他被視為美國鐘表業(yè)的始祖。世界上第一座原子鐘建于1949年,位于美國的國家標(biāo)準(zhǔn)技術(shù)研究所。第一座準(zhǔn)確的原子鐘于1955年建造,位于英國國家物理實(shí)驗(yàn)室。1967年,第十三屆國際度量衡會(huì)議采用銫-133原子鐘所發(fā)出特定波長的頻率,作為秒的基準(zhǔn)依據(jù)。當(dāng)此原子鐘某特定波長所發(fā)出的光振動(dòng)9,192,631,770次所經(jīng)過的時(shí)間,定義為一秒。

15、原子鐘相當(dāng)穩(wěn)定,不易受環(huán)境變化影響。計(jì)時(shí)碼表,或稱碼表,是一種有計(jì)時(shí)功能的手表,是將秒表的功能結(jié)合于手表之中。計(jì)時(shí)碼表于1720年由英國人GeorgeGraham發(fā)明。無論是機(jī)械手表,石英手表,甚至LCD顯示數(shù)位表,都有計(jì)時(shí)碼表的產(chǎn)品。LCD數(shù)位手表的價(jià)錢是三者中最低,但計(jì)時(shí)功能卻是最為精確,精度可達(dá)百分之一秒或千分之一秒。石英的計(jì)時(shí)碼表價(jià)錢較貴,精度多數(shù)為十分之一秒。而機(jī)械計(jì)時(shí)碼表的精度是最差,只能以秒計(jì)算,但由于機(jī)芯結(jié)構(gòu)復(fù)雜,因此價(jià)錢最為昂貴。3.3秒表的功能設(shè)計(jì)3.3.1.正計(jì)時(shí)我設(shè)計(jì)的秒表的正計(jì)時(shí)器首先具有精確到0.01秒的計(jì)時(shí)功能,最高可以計(jì)時(shí)到99小時(shí)59分59秒99,其他功能如下

16、:以LED七段數(shù)碼管的方式顯示時(shí)間。在計(jì)時(shí)過程中,可以暫停、繼續(xù)計(jì)時(shí)。在任意狀態(tài)下,可以執(zhí)行復(fù)位操作,清除所有數(shù)據(jù)??梢栽谌我鉅顟B(tài)記錄任意次時(shí)間。在任意狀態(tài)下,可以實(shí)現(xiàn)單人記圈/多人記名的切換,并且切換后自動(dòng)復(fù)位。有毫秒指針,每秒轉(zhuǎn)一圈。3.3.2倒計(jì)時(shí)我設(shè)計(jì)的倒計(jì)時(shí)器可以從任意時(shí)間開始倒計(jì)時(shí),并在倒計(jì)時(shí)結(jié)束時(shí)觸發(fā)警報(bào),其他功能如下:有倒計(jì)時(shí)指針顯示剩余時(shí)間的百分比,且平滑移動(dòng)。以LED七段數(shù)碼管的方式顯示剩余時(shí)間??梢栽O(shè)置不同的提示音。精確到1秒。倒計(jì)時(shí)結(jié)束時(shí)指針中間會(huì)出現(xiàn)紅點(diǎn)。3.3.3.節(jié)拍器我設(shè)計(jì)的節(jié)拍器具有如下功能:開始、暫停節(jié)拍器。設(shè)置節(jié)拍,從20拍/分鐘到240拍/分鐘,間隔為2

17、0拍/分鐘。3.3.4.時(shí)鐘與鬧鐘我設(shè)計(jì)的時(shí)鐘具有以下功能:以指針方式顯示12進(jìn)制的時(shí)間顯示當(dāng)前日期和時(shí)間,星期。設(shè)置鬧鐘,并可設(shè)置鬧鐘狀態(tài)。程序?qū)崿F(xiàn)4.1秒表計(jì)時(shí)器4.1.1流程圖通過對(duì)秒表原理的理解基礎(chǔ)上,在結(jié)合LabVIEW軟件,秒表計(jì)時(shí)器的程序流程圖如圖(4.1)所示:點(diǎn)::吊式圖4.1程序流程圖4.1.2程序設(shè)計(jì)前面板設(shè)計(jì)程序的前面板如圖4.2所示秒表倒計(jì)時(shí)節(jié)拍器時(shí)鐘IIIINIIllII12LILI(JLI:00圖4.2前面板程序框圖整個(gè)秒表計(jì)時(shí)器的程序框圖如圖4.3所示ft2耐:SairnMtaulJ3也X2.hrP3-ra:FdUCh-曠nr_El蘭Hi卜apwiiarieig

18、iMft凰田FRte吋唱些何必叫IMH-lBCT二吾厲r門“尉忻吐饒【I卜卻enww加1iwI”#嘗出務(wù)甫rfc-旳閆處坤引啟mat1-0|lDAE-CftHdpgniorfrBte!寸Lr卜Opennre誑圖4.3程序框圖程序設(shè)計(jì)順序計(jì)數(shù)的實(shí)現(xiàn):建立while循環(huán),將i創(chuàng)建顯示控件,從而將計(jì)數(shù)值顯示到前面板上。在循環(huán)中添加等待時(shí)間可以控制計(jì)時(shí)精度。如添加10毫秒等待則是精確到0.01秒。進(jìn)位的實(shí)現(xiàn):進(jìn)位的實(shí)現(xiàn)有幾種備選方案:1)for循環(huán)指定循環(huán)次數(shù)2)事件結(jié)構(gòu)中設(shè)置比較器,當(dāng)i等于特定值時(shí)觸發(fā)進(jìn)位3)使用條件結(jié)構(gòu),當(dāng)i等于特定值時(shí)比較器輸出true,激活進(jìn)位4)算數(shù)計(jì)算由i算出各個(gè)數(shù)位使用

19、前三種方案有一個(gè)弊端:每增加一個(gè)進(jìn)位就會(huì)相應(yīng)的增加一個(gè)嵌套的循環(huán),而循環(huán)越多越容易出現(xiàn)錯(cuò)誤和死循環(huán)。于是我選用第四個(gè)進(jìn)位方法:算數(shù)方法。由于1秒=1000毫秒,1分鐘=60秒,1小時(shí)=60分鐘。我們可以算出,當(dāng)while循環(huán)延遲為1毫秒時(shí),小時(shí)數(shù)為(i/60*60*1000)的整數(shù)商。設(shè)i為(i/60*60*1000)的余數(shù),則分鐘數(shù)為(i/60*1000)的整數(shù)商。設(shè)i”為G/60*1000)的余數(shù),貝V秒數(shù)為(i”/1000)的商,其余數(shù)即為毫秒數(shù)。市面上的秒表多數(shù)是精確到0.01秒,也就是10毫秒,所以我把算出的毫秒數(shù)又進(jìn)行了*10,從而得到0.01秒的精確度。實(shí)現(xiàn)算數(shù)進(jìn)位的子vi程序框

20、圖如圖4.4所示,其中x為輸入端,輸出為一個(gè)含有4位的時(shí)間簇。圖4.4算數(shù)進(jìn)位函數(shù)暫停計(jì)時(shí)的實(shí)現(xiàn):暫停計(jì)數(shù)要求在計(jì)數(shù)開始后點(diǎn)擊暫停按鈕時(shí)暫停計(jì)數(shù),再次點(diǎn)擊時(shí)又開始計(jì)數(shù),并且是接著剛才的數(shù)值計(jì)數(shù)。這就要求在整體程序運(yùn)行時(shí),將程序的一部分暫停和恢復(fù)。為了做到這點(diǎn),我先后嘗試了各種結(jié)構(gòu),最終使用了雙層while循環(huán)的嵌套結(jié)構(gòu)。具體是將一個(gè)while循環(huán)外再加一個(gè)while循環(huán),在內(nèi)層while循環(huán)中加入停止按鈕,并且將停止按鈕的動(dòng)作設(shè)置為“釋放時(shí)轉(zhuǎn)換”,同時(shí)將前面板的停止按鈕設(shè)置為開關(guān)的形狀以便于識(shí)別。這樣,這個(gè)內(nèi)層的停止按鈕就會(huì)實(shí)現(xiàn)暫停的功能。具體程序框圖如圖4.5所示我的計(jì)數(shù)方案沒有for循環(huán),

21、所以它不會(huì)自己停止。如果沿用先前的獨(dú)立停止按鈕的設(shè)計(jì),就會(huì)出現(xiàn)一個(gè)嚴(yán)重的問題:只能在計(jì)時(shí)過程中停止。當(dāng)程序處于計(jì)時(shí)狀態(tài)時(shí),內(nèi)部while循環(huán)處于停止?fàn)顟B(tài),點(diǎn)擊停止按鈕會(huì)立即得到響應(yīng);而當(dāng)程序處于暫停計(jì)時(shí)時(shí),內(nèi)部while循環(huán)處于運(yùn)行狀態(tài),從而外部的事件將無法響應(yīng)。我注意到,當(dāng)在暫停狀態(tài)下點(diǎn)擊停止按鈕后再讓秒表開始計(jì)時(shí),內(nèi)部循環(huán)將會(huì)跳出,而停止命令則會(huì)得到響應(yīng)。由此想到,如果讓程序在我點(diǎn)擊停止的時(shí)候,自動(dòng)讓內(nèi)部while循環(huán)處于運(yùn)行狀態(tài),那么問題便迎刃而解了。由此想法,列出了如下的真值表:暫停端停止端內(nèi)部while循環(huán)101111000011不難看出此真值表與或門完全一致。于是便有了如圖4.6所

22、示的設(shè)計(jì)。使用或門將兩個(gè)按鈕同時(shí)連接到內(nèi)部while循環(huán),并且把觸發(fā)端都放置在最內(nèi)部,消除延遲:圖4.6停止按鈕設(shè)計(jì)整體框圖如圖4.7所示EP圖4.7可以隨時(shí)停止的秒表設(shè)計(jì)計(jì)時(shí)清零的實(shí)現(xiàn):對(duì)顯示控件的清零有幾種備選方案:1)事件結(jié)構(gòu)2)條件結(jié)構(gòu)3)嵌套while循環(huán)經(jīng)過多次實(shí)驗(yàn),發(fā)現(xiàn)事件結(jié)構(gòu)和條件結(jié)構(gòu)容易在while循環(huán)中形成死循環(huán)無法跳出,故采用嵌套while循環(huán)來實(shí)現(xiàn)清零功能。由于在前面的程序中停止程序并重啟后i會(huì)自動(dòng)歸零,所以在整個(gè)程序外面再加一個(gè)while循環(huán)。這樣,可以隨時(shí)停止內(nèi)部程序而不中止整個(gè)進(jìn)程。而停止內(nèi)部程序則會(huì)實(shí)現(xiàn)清零的操作。和停止按鈕一樣,如果沿用先前的獨(dú)立停止按鈕的設(shè)計(jì)

23、,就會(huì)出現(xiàn)同樣的的問題:只能在計(jì)時(shí)過程中清零。當(dāng)程序處于計(jì)時(shí)狀態(tài)時(shí),內(nèi)部while循環(huán)處于停止?fàn)顟B(tài),點(diǎn)擊清零按鈕會(huì)立即得到響應(yīng);而當(dāng)程序處于暫停計(jì)時(shí)時(shí),內(nèi)部while循環(huán)處于運(yùn)行狀態(tài),從而外部的事件將無法響應(yīng)。解決此問題,同樣根據(jù)真值表可以看出,在內(nèi)循環(huán)添加或門,這樣就可以順利觸發(fā)清零。程序框圖如圖4.7所示.清零lg芝話二三云二二茴超停SJBI:右小時(shí)rlFcBFlIio*圖4.7帶停止功能的秒表程序框圖記錄功能的實(shí)現(xiàn):秒表的記錄功能要求能夠在計(jì)時(shí)的過程中隨時(shí)記錄多次的時(shí)間。首先,我實(shí)現(xiàn)的是記名。為了能夠顯示一個(gè)完整的字符串(如:第1名:0小時(shí)0分鐘1秒.20)我使用字符串連接函數(shù)將多個(gè)字符

24、串和時(shí)間進(jìn)行組合,并使用條件結(jié)構(gòu)控制對(duì)數(shù)據(jù)的采集。在最后添加換行符以換行。為了能夠?qū)崿F(xiàn)實(shí)時(shí)采集,同樣將采集按鈕放在最內(nèi)層循環(huán),并使用或門與其他按鈕相連。為使程序能夠連續(xù)多次記錄,使用反饋節(jié)點(diǎn)儲(chǔ)存數(shù)據(jù)。程序框圖如圖4.8所示。00I.23二+斗亠:,.;:丄工圖4.8可以連續(xù)記錄的秒表程序框圖隨著記錄功能而來的一個(gè)問題就是清屏。先前的清零只能對(duì)時(shí)間進(jìn)行重置,而字符串卻不行。開始時(shí),我使用了對(duì)顯示控件從新賦值的方法,但這種方法有一個(gè)弊端,就是移位寄存器是不可重置的,這樣就會(huì)導(dǎo)致在執(zhí)行清零后再記錄時(shí),先前清除的內(nèi)容又顯示回來了。為了解決移位寄存器清零的問題,我轉(zhuǎn)而使用了另一種方法:臨時(shí)文件的讀取寫入

25、。臨時(shí)文件可以很好的解決清除數(shù)據(jù)與讀取的問題。先將數(shù)據(jù)寫入臨時(shí)文件,再從文件中讀取字符串顯示到顯示控件上。每點(diǎn)擊一次采集按鈕,就會(huì)在對(duì)應(yīng)文件的下一行添加一個(gè)記錄字符串。當(dāng)需要清零時(shí)只需要?jiǎng)h除文件內(nèi)的數(shù)據(jù)即可。這樣,當(dāng)點(diǎn)擊清零按鈕時(shí),所有顯示控件都會(huì)清零,并且沒有數(shù)據(jù)殘留。同樣,將該按鈕放置在內(nèi)循環(huán)并使用或門與其它開關(guān)相連。程序框圖如圖4.9所示.KD:l.txtjBtd*:;1.0000畫D1bd:Ztxt卜”LSLt-NO:l.txt卜endTJH?-Vd-tid|-=OT-.mF.1-ji導(dǎo)止嚴(yán)一.剝lUmJi:I誥0-|二:4浮琢,網(wǎng).於I|II:圖4.9可以清零的秒表程序框圖復(fù)位按鈕的

26、實(shí)現(xiàn):秒表上通常會(huì)有一個(gè)復(fù)位按鈕,這個(gè)按鈕會(huì)同時(shí)實(shí)現(xiàn)兩個(gè)功能:清除所有數(shù)據(jù);使秒表處于停止計(jì)時(shí)狀態(tài)。所以我把清零按鈕改為了復(fù)位按鈕,次改進(jìn)需要增加一些觸發(fā)功能。首先,在點(diǎn)擊復(fù)位時(shí)會(huì)清空臨時(shí)文件中的數(shù)據(jù),這一點(diǎn)通過事件結(jié)構(gòu)實(shí)現(xiàn);其次,在清除數(shù)據(jù)時(shí),將開關(guān)置為暫停狀態(tài),為此創(chuàng)建了暫停按鈕局部變量,通過對(duì)局部變量的賦值實(shí)現(xiàn)該功能。當(dāng)點(diǎn)擊復(fù)位時(shí),暫停按鈕會(huì)被賦值F,從而暫停計(jì)時(shí)。事件結(jié)構(gòu)具體如圖4.10所示。切換記名/記圈的實(shí)現(xiàn):切換記名/記圈實(shí)現(xiàn)的功能就是當(dāng)點(diǎn)擊切換按鈕時(shí),程序會(huì)在記名模式/記圈模式之間來回切換,并且在切換的同時(shí)進(jìn)行復(fù)位。為實(shí)現(xiàn)該功能,我使用了一個(gè)條件結(jié)構(gòu),在“真”里面放置“圈”字,

27、在“假”里面放置“名”字,使其共同輸出到一個(gè)顯示控件上。同時(shí),在前面板隱藏該顯示控件,并在程序框圖上創(chuàng)建該顯示控件的局部變量,設(shè)置為讀取模式,將其連接到采集數(shù)據(jù)的長字符串里面。這樣,就可以把字符串里面的一個(gè)字符在兩個(gè)字之間切換了。程序框圖如圖4.11所示為了能夠在切換的同時(shí)執(zhí)行復(fù)位,我在復(fù)位按鈕的旁邊增加了一個(gè)事件結(jié)構(gòu),設(shè)置觸發(fā)源為切換按鈕值改變,這樣,點(diǎn)擊切換按鈕時(shí),事件結(jié)構(gòu)觸發(fā),輸出一個(gè)T,將其和復(fù)位按鈕以或門相連,便可以實(shí)現(xiàn)多個(gè)觸發(fā)源觸發(fā)一個(gè)功能了。切換ft圖4.11切換的實(shí)現(xiàn)LED七段數(shù)碼管顯示的實(shí)現(xiàn):七段數(shù)碼管顯示數(shù)字的效果如圖4.22所示。每一位數(shù)字都是由7個(gè)布爾指示燈拼接而成,每

28、兩位形成一組,共同顯示一個(gè)小時(shí)/分鐘/秒/毫秒數(shù)值。在每兩個(gè)位之間,有綠色的雙閃LED燈,每秒閃一下。vva.lara.Ir*ifIliJJIHlJl1二ULJ*LJLJjUZ):?8圖4.12LED七段數(shù)碼管顯示效果為了實(shí)現(xiàn)LED數(shù)碼管的顯示,首先需要制作一個(gè)數(shù)字轉(zhuǎn)換為LED顯示的子VI,否則程序會(huì)很繁雜。該子VI的程序框圖如圖4.13所示,前面板如圖4.14所示。首先,建立一個(gè)十進(jìn)制整形的數(shù)值輸入控件,將其連接至一個(gè)條件結(jié)構(gòu),在條件結(jié)構(gòu)中添加10個(gè)條件分支,分別對(duì)應(yīng)09這10個(gè)數(shù)字。在條件結(jié)構(gòu)的每個(gè)分支中,加入7個(gè)布爾常量,并分別創(chuàng)建顯示控件,將顯示控件設(shè)置為方形指示燈,這7個(gè)指示燈對(duì)應(yīng)7

29、個(gè)數(shù)碼管。對(duì)這7個(gè)指示燈的形狀和大小進(jìn)行調(diào)整,使之成為一個(gè)“8”字。接下來對(duì)條件結(jié)構(gòu)中的常量進(jìn)行設(shè)定,比如8對(duì)應(yīng)的數(shù)碼管就是7個(gè)T,因?yàn)?的LED顯示中數(shù)碼管都是亮的。同樣的,對(duì)所有10個(gè)條件分支進(jìn)行設(shè)定,使每一個(gè)數(shù)值對(duì)應(yīng)一個(gè)LED顯示樣式。因?yàn)楸境绦蚴亲覸I,不宜有太多輸出,故創(chuàng)建局部變量并將其捆綁為簇,實(shí)現(xiàn)單輸入單輸出。帶在爾圖4.13LED顯示子VI程序框圖圖4.14LED顯示子VI前面板在主程序中,需要調(diào)用8次LED顯示函數(shù)。因?yàn)樵摵瘮?shù)一次只能顯示一位,所以要把時(shí)間的兩位數(shù)變?yōu)閮蓚€(gè)一位數(shù)。對(duì)一個(gè)兩位數(shù)除10取余和商便可達(dá)到這一目的。將簇解除捆綁之后,把每一位除以10,將商和余數(shù)分別接入

30、LED顯示子VI,并在子VI上創(chuàng)建顯示控件,便可在前面板上顯示出LED的數(shù)字了。程序框圖如圖4.15所示.為實(shí)現(xiàn)每兩個(gè)數(shù)字中間的閃爍燈,我在秒的位置增加了除以2的操作,通過余數(shù)來判斷奇偶,當(dāng)?shù)玫狡鏀?shù)時(shí),使用條件結(jié)構(gòu)給8個(gè)布爾指示燈賦值T,使之點(diǎn)亮。當(dāng)?shù)玫脚紨?shù)時(shí),使用條件結(jié)構(gòu)給8個(gè)布爾指示燈賦值F,使之滅。程序框圖如圖4.15所示。Ifl.二E-ia輸出簇孑輔出假5輸出簇創(chuàng)輸出簇Eiia輸出簇勺口C3圖4.15主函數(shù)部分LED顯示布爾布爾3布爾布爾3圖4.15閃爍燈程序框圖秒針轉(zhuǎn)盤的實(shí)現(xiàn):在前面板上創(chuàng)建一個(gè)量表,并進(jìn)行自定義,使之成為圖4.16中的樣子,并將其最大值設(shè)置為100這樣,即可實(shí)現(xiàn)每秒

31、鐘轉(zhuǎn)一圈的秒表指針了。圖4.16毫秒指針4.2倒計(jì)時(shí)器4.2.1流程圖倒計(jì)時(shí)器的流程圖如圖4.17所示。圖4.17倒計(jì)時(shí)器流程圖4.2.2程序設(shè)計(jì)前面板設(shè)計(jì)程序的前面板如圖4.18所示。秒卷倒計(jì)時(shí)節(jié)拍器時(shí)鐘Illeli1*111JuiIJU圖4.18倒計(jì)時(shí)器的前面板程序框圖倒計(jì)時(shí)器的程序框圖如圖4.19所示。程序設(shè)計(jì)初始時(shí)間設(shè)置的實(shí)現(xiàn):倒計(jì)時(shí)所輸入的時(shí)間為小時(shí):分鐘:秒,想將這些時(shí)間轉(zhuǎn)化為秒,則需要把小時(shí)*3600+分鐘*60+秒。數(shù)值倒計(jì)的實(shí)現(xiàn):得到秒的數(shù)值之后,只需要把該數(shù)值減去循環(huán)次數(shù)i就可以實(shí)現(xiàn)倒計(jì)時(shí)了。而將while循環(huán)的間隔設(shè)置為1秒就可以實(shí)現(xiàn)每秒減1的倒計(jì)時(shí)了。在實(shí)際設(shè)計(jì)中,倒計(jì)

32、時(shí)提示會(huì)在程序運(yùn)行時(shí)響起,因?yàn)榇藭r(shí)計(jì)數(shù)數(shù)值也是0為解決此問題,我在-i之前對(duì)數(shù)值*100,在-i之后又進(jìn)行/100取整,并且使用/10取整之前的數(shù)值與1比較,相等時(shí)就會(huì)觸發(fā)報(bào)警。同時(shí),把while循環(huán)的間隔設(shè)置到10毫秒,這樣計(jì)時(shí)還是1秒,同時(shí)提高了精確度。程序框圖如圖4.20所示。圖4.20倒計(jì)時(shí)原理倒計(jì)時(shí)暫停/開始的實(shí)現(xiàn):和秒表一樣,具體是將一個(gè)while循環(huán)外再加一個(gè)while循環(huán),在內(nèi)層while循環(huán)中加入停止按鈕,并且將停止按鈕的動(dòng)作設(shè)置為“釋放時(shí)轉(zhuǎn)換”,同時(shí)將前面板的停止按鈕設(shè)置為開關(guān)的形狀以便于識(shí)別。這樣,這個(gè)內(nèi)層的停止按鈕就會(huì)實(shí)現(xiàn)暫停的功能。倒計(jì)時(shí)復(fù)位的實(shí)現(xiàn):倒計(jì)時(shí)的復(fù)位原理同

33、秒表一樣,只不過由于不需要記錄數(shù)據(jù),要比先前簡單很多。在點(diǎn)擊復(fù)位按鈕之后,內(nèi)循環(huán)會(huì)停止,同時(shí)將暫停開始按鈕置為暫停狀態(tài)。原理在前面的秒表部分已有敘述,在此不再重復(fù)。倒計(jì)時(shí)鈴聲及其切換的實(shí)現(xiàn):該倒計(jì)時(shí)器在倒計(jì)時(shí)器結(jié)束時(shí)會(huì)有鈴聲報(bào)警,并且鈴聲是可換的。為了實(shí)現(xiàn)該功能,我先找來兩個(gè)wav格式的鈴聲,使用事件結(jié)構(gòu)來判斷是否時(shí)間到。時(shí)間到時(shí),事件結(jié)構(gòu)執(zhí)行真的部分,播放放在指定路徑下的聲音文件。為了實(shí)現(xiàn)切換提示音,在條件結(jié)構(gòu)內(nèi)在加入一個(gè)條件結(jié)構(gòu),并在前面板中加入一個(gè)枚舉輸入,從而選擇鈴聲。另外,在倒計(jì)時(shí)結(jié)束時(shí),指針中間會(huì)有一個(gè)紅點(diǎn)出現(xiàn),這使用的是一個(gè)圓形指示燈的可見性屬性節(jié)點(diǎn)通過條件結(jié)構(gòu)的賦值所實(shí)現(xiàn)的。其

34、觸發(fā)原理同上。程序框圖如圖4.21所示。圖4.21倒計(jì)時(shí)結(jié)束觸發(fā)整合停止按鈕:在邏輯上,秒表和倒計(jì)時(shí)器的運(yùn)行關(guān)系是并行的,也就是說互不影響,所以要放在同一個(gè)程序中。這樣就要求當(dāng)點(diǎn)擊停止按鈕時(shí),它們必須同時(shí)停止而不是只有一個(gè)框架停止運(yùn)行。為實(shí)現(xiàn)該功能,我隱藏了倒計(jì)時(shí)器的停止按鈕,同時(shí)使用了一個(gè)觸發(fā)源為秒表停止按鈕的事件結(jié)構(gòu)來代替它。這樣,一個(gè)停止按鈕就可以停止整個(gè)程序了。指針倒計(jì)時(shí)的實(shí)現(xiàn):倒計(jì)時(shí)指針是一個(gè)顯示剩余時(shí)間百分比的裝置。所以只需要對(duì)剩余時(shí)間和設(shè)定時(shí)間的秒數(shù)進(jìn)行相除即可。為實(shí)現(xiàn)平滑效果,將其接入-i的前面和后面,這樣指針每10毫秒動(dòng)一下,人的肉眼幾乎無法察覺。4.3節(jié)拍器4.3.1流程圖

35、節(jié)拍器的流程圖如圖4.22所示。圖4.22節(jié)拍器流程圖4.3.2程序設(shè)計(jì)前面板設(shè)計(jì)程序的前面板如圖4.23所示。秒表閩計(jì)時(shí)掃拍話時(shí)鐘口設(shè)置節(jié)姑(拍/分鐘)圖4.23節(jié)拍器程序框圖節(jié)拍器的程序框圖如圖4.24所示。圖4.24節(jié)拍器程序框圖程序設(shè)計(jì)節(jié)拍選擇的實(shí)現(xiàn):在前面板使用轉(zhuǎn)盤輸入所需節(jié)拍,將其設(shè)置為輸入差值20,最小值20,最大值240。設(shè)需要x拍/分鐘,則每拍就是60/x秒,故用60除以所輸入的數(shù)值即可。為了使得節(jié)拍器可以實(shí)時(shí)識(shí)別指令,將while循環(huán)的間隔設(shè)為50毫秒,同時(shí)對(duì)輸出數(shù)值*20。節(jié)拍的提示方式:該節(jié)拍器通過判斷循環(huán)次數(shù)i與所需節(jié)拍是否為整除關(guān)系來判斷是否報(bào)警,通過條件結(jié)構(gòu)實(shí)現(xiàn)。節(jié)拍提示采用系統(tǒng)自帶的提示音,使用發(fā)聲控件實(shí)現(xiàn)。節(jié)拍的暫停/繼續(xù)與停止:此處的原理與倒計(jì)時(shí)器和秒表完全相同,故在此不再重復(fù)說明。4.4時(shí)鐘及鬧鐘4.4.1流程圖時(shí)鐘鬧鐘的流程圖如圖4.25所示。開始1顯示時(shí)間和E期11設(shè)買鬧鈴時(shí)間點(diǎn)擊鬧鈴開關(guān)開巖鬧鈴爭(zhēng)擊鬧靜開萊關(guān)閉鬧鈴鬧憐晌起圖4.25時(shí)鐘鬧鐘的流程圖4.4.2程序設(shè)計(jì)1.前面板設(shè)計(jì)程序的前面板如圖4.26所示。時(shí)坤襁耒倒計(jì)盯節(jié)招器1112、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論