版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、基于LabVIEW的秒表設(shè)計(jì)摘要數(shù)字式秒表是一種常用的計(jì)時工具,廣泛用于各種比賽以及各類實(shí)驗(yàn)測量中。隨著生活節(jié)奏的加快,人們時間觀念的加強(qiáng),各種計(jì)時器已經(jīng)成為人們?nèi)粘I钪胁豢苫蛉钡囊徊糠?,并且人們已?jīng)不能滿足于單一的某一種功能了。而如何在秒表的基礎(chǔ)上,根據(jù)人們生活的需要增加相應(yīng)的功能以方便人們的生活,便成為秒表設(shè)計(jì)方面的重點(diǎn)。我基于LabVIEW設(shè)計(jì)的的秒表,具有秒表計(jì)時器、倒計(jì)時器、節(jié)拍器、時鐘和鬧鐘的功能。其具有界面美觀,簡單易用,功能強(qiáng)大,精確度高等特點(diǎn)。此秒表的所有功能均可以獨(dú)立運(yùn)行,互不干擾,具有很好的用戶體驗(yàn)。關(guān)鍵詞:秒表,計(jì)時,LabVIEWStopwatch design b
2、ased on LabVIEWAbstract Digital stopwatch is a commonly used tool for timing.It is widely used in various competitions and a variety of experimental measurements.With the accelerated pace of life and the strengthening of the concept of time,variety timer has become an indispensable part of everyday
3、life,and it has been unable to meet on a single feature of a certain kind.It has become the focus of the stopwatch design that how to add the corresponding function according to the needs of people's lives based on the stopwatch to convenience to people's lives. Stopwatch witch I designed ba
4、sed on LabVIEW, is with a stopwatch timer, countdown timer, metronome, clock and alarm functions.It has a beautiful interface, easy to use, powerful, high precision characteristics.This stopwatchs all functions can be run independently, means can without disturbing each other, and with good user exp
5、erience.Keywords: stopwatch, timer, LabVIEW 目 錄1.緒 論11.1 引言11.2虛擬儀器的概念及特點(diǎn)11.2.1虛擬儀器11.2.2 虛擬儀器的特點(diǎn)12. 圖形化編程和LabVIEW22.1 圖形化編程簡介22.2 LabVIEW簡介22.2.1前面板22.3.2 程序框圖23.秒表介紹及程序設(shè)計(jì)33.1 概述33.2 秒表的發(fā)展33.3 秒表的功能設(shè)計(jì)53.3.1.正計(jì)時53.3.2 倒計(jì)時63.3.3.節(jié)拍器63.3.4.時鐘與鬧鐘64. 程序?qū)崿F(xiàn)74.1秒表計(jì)時器74.1.1 流程圖74.1.2程序設(shè)計(jì)84.2 倒計(jì)時器214.2.1流程圖2
6、14.2.2程序設(shè)計(jì)224.3節(jié)拍器254.3.1流程圖254.3.2 程序設(shè)計(jì)264.4時鐘及鬧鐘284.4.1流程圖284.4.2 程序設(shè)計(jì)28總 結(jié)31致 謝331.緒 論1.1 引言 LabVIEW是一種程序開發(fā)環(huán)境,由美國國家儀器(NI)公司研制開發(fā)的,類似于C和BASIC開發(fā)環(huán)境,但是LabVIEW與其他計(jì)算機(jī)語言的顯著區(qū)別是:其他計(jì)算機(jī)語言都是采用基于文本的語言產(chǎn)生代碼,而LabVIEW使用的是圖形化編輯語言G編寫程序,產(chǎn)生的程序是框圖的形式。1.2虛擬儀器的概念及特點(diǎn)1.2.1虛擬儀器 LabVIEW程序又稱虛擬儀器,即VI,其外觀和操作均模仿現(xiàn)實(shí)儀器,如示波器和萬用表。每個V
7、I都使用函數(shù)從用戶界面或其它渠道獲取信息輸入,然后將信息顯示或傳輸至其它文件或計(jì)算機(jī)。1.2.2 虛擬儀器的特點(diǎn) 根據(jù)概念創(chuàng)建者美國國家儀器公司(National Instruments)的定義,虛擬儀器(英語:Virtual instrumentation)技術(shù)就是利用高性能的模塊化硬件,結(jié)合高效靈活的軟件來完成各種測試、測量和自動化的應(yīng)用。只有同時擁有高效的軟件、模塊化I/O硬件和用于集成的軟硬件平臺這三大組成部分,才能充分發(fā)揮虛擬 儀器技術(shù)性能高、擴(kuò)展性強(qiáng)、開發(fā)時間少,以及出色的集成這四大優(yōu)勢。2. 圖形化編程和LabVIEW2.1 圖形化編程簡介 圖形化的程序語言,又稱為 “G” 語言
8、。使用這種語言編程時,基本上不寫程序代碼,取而代之的是流程圖或框圖。它可以增強(qiáng)你構(gòu)建自己的科學(xué)和工程系統(tǒng)的能力,提供了實(shí)現(xiàn)儀器編程和數(shù)據(jù)采集系統(tǒng)的便捷途徑。使用它進(jìn)行原理研究、設(shè)計(jì)、測試并實(shí)現(xiàn)儀器系統(tǒng)時,可以大大提高工作效率。2.2 LabVIEW簡介 雙擊LabVIEW快捷圖標(biāo),出現(xiàn)啟動畫面,打開一個新的LabVIEW程序,可以看到它由兩個面板組成。第一個是前面板窗口;第二個是后面板窗口。2.2.1前面板 前面板由輸入控件和顯示控件組成。這些控件是VI的輸入輸出端口。輸入控件模擬儀器的輸入裝置,為VI的程序框圖提供數(shù)據(jù)。顯示控件模擬儀器的輸出裝置,用以顯示程序框圖獲取或生成的數(shù)據(jù)。2.3.2
9、 程序框圖 前面板創(chuàng)建完畢后,便可使用圖形化的函數(shù)添加源代碼來控制前面板上的對象。程序框圖是圖形化源代碼的集合,圖形化源代碼又稱G代碼或程序框圖代碼。前面板上的對象在程序框圖中顯示為接線端。3.秒表介紹及程序設(shè)計(jì)3.1 概述 秒表是一種常用的測時儀器。又可稱"機(jī)械停表"。由暫停按鈕、發(fā)條柄頭、分針等組成。它是利用擺的等時性控制指針轉(zhuǎn)動而計(jì)時的。在它的正面是一個大表盤,上方有小表盤(圖142)。秒針沿大表盤轉(zhuǎn)動,分針沿小表盤轉(zhuǎn)動。分針和秒針?biāo)?的時間和就是所測的時間間隔。在表正上方有一表把,上有一按鈕。旋動按鈕,上緊發(fā)條,這是秒表走動的動力。用大拇指按下按鈕,秒表開始計(jì)時;
10、再按下按鈕, 秒表停止走動,進(jìn)行讀數(shù);再按一次,秒表回零,準(zhǔn)備下一次計(jì)時。秒表的精度一般在0102秒,計(jì)時誤差主要是開表、停表不準(zhǔn)造成的。而使用labview制作的秒表,其精確度可達(dá)到1毫秒。3.2 秒表的發(fā)展 原始人憑天空顏色的變化、太陽的光度來判斷時間。古埃及發(fā)現(xiàn)影子長度會隨時間改變,發(fā)明日晷在早上計(jì)時,他們亦發(fā)現(xiàn)水的流動需要的時間是固定的,因此發(fā)明了水鐘。古代中國人亦有以水來計(jì)時的工具銅壺滴漏,他們亦會用燒香計(jì)時。將香橫放,上面放上連有鋼珠的繩子,有報(bào)時功能。 中國古代燒香的鬧鐘。除了用水流來計(jì)時外,中國古代民間亦有利用燃點(diǎn)線香來計(jì)量時間。龍舟報(bào)時更香就是利用燒香來計(jì)時的儀器,它更設(shè)有定
11、時響鬧的作用。龍舟上掛了數(shù)條兩端系著金屬球的幼線,線下放了燃著的香。每隔一段時間,香便會燒斷一條線子,當(dāng)金屬球跌進(jìn)下面的盛器時,便會發(fā)出報(bào)時響鬧。這種燒香時計(jì)最早 見于宋代(公元12世紀(jì)中葉)的文獻(xiàn)中。用更香來計(jì)算時間的精度不高,但由于它簡單易行,極之適合民間使用,所以曾經(jīng)十分流行。據(jù)文獻(xiàn)記載有些更香可燃燒一畫夜,有些甚至可以燃燒至一個月。此更香是根據(jù)文獻(xiàn)及示圖復(fù)原,沒有原物傳世。 1088年,宋朝的科學(xué)家蘇頌和韓工廉等人制造了史上首座以水力作自動化機(jī)械操作的水運(yùn)儀象臺,它是把渾儀、渾象和機(jī)械計(jì)時器組合起來的裝置。 1276年,中國元代的郭守敬制成大明燈漏。它是利用水力驅(qū)動,通過齒輪系及相當(dāng)復(fù)
12、雜的凸輪結(jié)構(gòu),帶動木偶進(jìn)行“一刻鳴鐘、二刻鼓、三鉦、四鐃”的自動報(bào)時。自宋起,十二時辰分初正即廿四小時系統(tǒng),一刻即今天的十五分鐘,其準(zhǔn)確度較德國之桌鐘早三百多年。 1283年在英格蘭的修道院出現(xiàn)史上首座以砝碼帶動的機(jī)械鐘。 13世紀(jì)意大利北部的僧侶開始建立鐘塔(或稱鐘樓),其目的是提醒人禱告的時間。 1360年詹希元創(chuàng)制“五輪沙漏”,以齒輪、時刻盤合成 16世紀(jì)中在德國開始有桌上的鐘。那些鐘只有一支針,鐘面分成四部分,使時間準(zhǔn)確至最近的十五分鐘。 1657年,惠更斯發(fā)現(xiàn)擺的頻率可以計(jì)算時間,造出了第一個擺鐘。1670年英國人威廉·克萊門特(William Clement)發(fā)明錨形擒縱
13、器。 1797年,美國人伊萊·特里(Eli Terry)獲得一個鐘的專利權(quán)。他被視為美國鐘表業(yè)的始祖。 世界上第一座原子鐘建于1949年,位于美國的國家標(biāo)準(zhǔn)技術(shù)研究所。第一座準(zhǔn)確的原子鐘于1955年建造,位于英國國家物理實(shí)驗(yàn)室。1967年,第十三屆國際度量衡會議采用銫-133原子鐘所發(fā)出特定波長的頻率,作為秒的基準(zhǔn)依據(jù)。當(dāng)此原子鐘某特定波長所發(fā)出 的光振動 9,192,631,770 次所經(jīng)過的時間,定義為一秒。原子鐘相當(dāng)穩(wěn)定,不易受環(huán)境變化影響。 計(jì)時碼表,或稱碼表,是一種有計(jì)時功能的手表,是將秒表的功能結(jié)合于手表之中。計(jì)時碼表于 1720年由英國人 George Graham 發(fā)
14、明。 無論是機(jī)械手表,石英手表,甚至 LCD顯示數(shù)位表,都有計(jì)時碼表的產(chǎn)品。LCD數(shù)位手表的價錢是三者中最低,但計(jì)時功能卻是最為精確,精度可達(dá)百分之一秒或千分之一秒。石英的計(jì)時碼表價錢較貴,精度多數(shù)為十分之一秒 。而機(jī)械計(jì)時碼表的精度是最差,只能以秒計(jì)算,但由于機(jī)芯結(jié)構(gòu)復(fù)雜,因此價錢最為昂貴。3.3 秒表的功能設(shè)計(jì)3.3.1.正計(jì)時我設(shè)計(jì)的秒表的正計(jì)時器首先具有精確到0.01秒的計(jì)時功能,最高可以計(jì)時到99小時59分59秒99,其他功能如下:以LED七段數(shù)碼管的方式顯示時間。在計(jì)時過程中,可以暫停、繼續(xù)計(jì)時。在任意狀態(tài)下,可以執(zhí)行復(fù)位操作,清除所有數(shù)據(jù)。可以在任意狀態(tài)記錄任意次時間。在任意狀態(tài)
15、下,可以實(shí)現(xiàn)單人記圈/多人記名的切換,并且切換后自動復(fù)位。有毫秒指針,每秒轉(zhuǎn)一圈。3.3.2 倒計(jì)時 我設(shè)計(jì)的倒計(jì)時器可以從任意時間開始倒計(jì)時,并在倒計(jì)時結(jié)束時觸發(fā)警報(bào),其他功能如下: 有倒計(jì)時指針顯示剩余時間的百分比,且平滑移動。 以LED七段數(shù)碼管的方式顯示剩余時間。 可以設(shè)置不同的提示音。 精確到1秒。 倒計(jì)時結(jié)束時指針中間會出現(xiàn)紅點(diǎn)。3.3.3.節(jié)拍器我設(shè)計(jì)的節(jié)拍器具有如下功能:開始、暫停節(jié)拍器。設(shè)置節(jié)拍,從20拍/分鐘到240拍/分鐘,間隔為20拍/分鐘。3.3.4.時鐘與鬧鐘我設(shè)計(jì)的時鐘具有以下功能:以指針方式顯示12進(jìn)制的時間。顯示當(dāng)前日期和時間,星期。設(shè)置鬧鐘,并可設(shè)置鬧鐘狀態(tài)
16、。4. 程序?qū)崿F(xiàn)4.1秒表計(jì)時器4.1.1 流程圖通過對秒表原理的理解基礎(chǔ)上,在結(jié)合LabVIEW軟件,秒表計(jì)時器的程序流程圖如圖(4.1)所示:圖4.1程序流程圖4.1.2程序設(shè)計(jì)1. 前面板設(shè)計(jì)程序的前面板如圖4.2所示圖4.2 前面板2.程序框圖 整個秒表計(jì)時器的程序框圖如圖4.3所示圖4.3 程序框圖3. 程序設(shè)計(jì)順序計(jì)數(shù)的實(shí)現(xiàn):建立while循環(huán),將i創(chuàng)建顯示控件,從而將計(jì)數(shù)值顯示到前面板上。在循環(huán)中添加等待時間可以控制計(jì)時精度。如添加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等于特定值時觸發(fā)進(jìn)位
17、3) 使用條件結(jié)構(gòu),當(dāng)i等于特定值時比較器輸出true,激活進(jìn)位4) 算數(shù)計(jì)算由i算出各個數(shù)位使用前三種方案有一個弊端:每增加一個進(jìn)位就會相應(yīng)的增加一個嵌套的循環(huán),而循環(huán)越多越容易出現(xiàn)錯誤和死循環(huán)。于是我選用第四個進(jìn)位方法:算數(shù)方法。由于1秒=1000毫秒,1分鐘=60秒,1小時=60分鐘。我們可以算出,當(dāng)while循環(huán)延遲為1毫秒時,小時數(shù)為(i/60*60*1000)的整數(shù)商。設(shè)i為(i/60*60*1000)的余數(shù),則分鐘數(shù)為(i/60*1000)的整數(shù)商。設(shè)i”為(i/60*1000)的余數(shù),則秒數(shù)為(i”/1000)的商,其余數(shù)即為毫秒數(shù)。市面上的秒表多數(shù)是精確到0.01秒,也就是1
18、0毫秒,所以我把算出的毫秒數(shù)又進(jìn)行了*10,從而得到0.01秒的精確度。實(shí)現(xiàn)算數(shù)進(jìn)位的子vi程序框圖如圖4.4所示,其中x為輸入端,輸出為一個含有4位的時間簇。圖4.4 算數(shù)進(jìn)位函數(shù)暫停計(jì)時的實(shí)現(xiàn): 暫停計(jì)數(shù)要求在計(jì)數(shù)開始后點(diǎn)擊暫停按鈕時暫停計(jì)數(shù),再次點(diǎn)擊時又開始計(jì)數(shù),并且是接著剛才的數(shù)值計(jì)數(shù)。這就要求在整體程序運(yùn)行時,將程序的一部分暫停和恢復(fù)。為了做到這點(diǎn),我先后嘗試了各種結(jié)構(gòu),最終使用了雙層while循環(huán)的嵌套結(jié)構(gòu)。具體是將一個while循環(huán)外再加一個while循環(huán),在內(nèi)層while循環(huán)中加入停止按鈕,并且將停止按鈕的動作設(shè)置為“釋放時轉(zhuǎn)換”,同時將前面板的停止按鈕設(shè)置為開關(guān)的形狀以便于識
19、別。這樣,這個內(nèi)層的停止按鈕就會實(shí)現(xiàn)暫停的功能。 具體程序框圖如圖4.5所示圖4.5 暫停的實(shí)現(xiàn)隨時退出程序的實(shí)現(xiàn): 我的計(jì)數(shù)方案沒有for循環(huán),所以它不會自己停止。如果沿用先前的獨(dú)立停止按鈕的設(shè)計(jì),就會出現(xiàn)一個嚴(yán)重的問題:只能在計(jì)時過程中停止。當(dāng)程序處于計(jì)時狀態(tài)時,內(nèi)部while循環(huán)處于停止?fàn)顟B(tài),點(diǎn)擊停止按鈕會立即得到響應(yīng);而當(dāng)程序處于暫停計(jì)時時,內(nèi)部while循環(huán)處于運(yùn)行狀態(tài),從而外部的事件將無法響應(yīng)。我注意到,當(dāng)在暫停狀態(tài)下點(diǎn)擊停止按鈕后再讓秒表開始計(jì)時,內(nèi)部循環(huán)將會跳出,而停止命令則會得到響應(yīng)。由此想到,如果讓程序在我點(diǎn)擊停止的時候,自動讓內(nèi)部while循環(huán)處于運(yùn)行狀態(tài),那么問題便迎刃
20、而解了。 由此想法,列出了如下的真值表:暫停端停止端內(nèi)部while循環(huán)101111000011不難看出此真值表與或門完全一致。于是便有了如圖4.6所示的設(shè)計(jì)。使用或門將兩個按鈕同時連接到內(nèi)部while循環(huán),并且把觸發(fā)端都放置在最內(nèi)部,消除延遲:圖4.6 停止按鈕設(shè)計(jì)整體框圖如圖4.7所示圖4.7 可以隨時停止的秒表設(shè)計(jì)計(jì)時清零的實(shí)現(xiàn): 對顯示控件的清零有幾種備選方案: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會自動歸零,所以在整個
21、程序外面再加一個while循環(huán)。這樣,可以隨時停止內(nèi)部程序而不中止整個進(jìn)程。而停止內(nèi)部程序則會實(shí)現(xiàn)清零的操作。和停止按鈕一樣,如果沿用先前的獨(dú)立停止按鈕的設(shè)計(jì),就會出現(xiàn)同樣的的問題:只能在計(jì)時過程中清零。當(dāng)程序處于計(jì)時狀態(tài)時,內(nèi)部while循環(huán)處于停止?fàn)顟B(tài),點(diǎn)擊清零按鈕會立即得到響應(yīng);而當(dāng)程序處于暫停計(jì)時時,內(nèi)部while循環(huán)處于運(yùn)行狀態(tài),從而外部的事件將無法響應(yīng)。解決此問題,同樣根據(jù)真值表可以看出,在內(nèi)循環(huán)添加或門,這樣就可以順利觸發(fā)清零。程序框圖如圖4.7所示.圖4.7 帶停止功能的秒表程序框圖記錄功能的實(shí)現(xiàn):秒表的記錄功能要求能夠在計(jì)時的過程中隨時記錄多次的時間。首先,我實(shí)現(xiàn)的是記名。為
22、了能夠顯示一個完整的字符串(如:第1名:0小時0分鐘1秒.20)我使用字符串連接函數(shù)將多個字符串和時間進(jìn)行組合,并使用條件結(jié)構(gòu)控制對數(shù)據(jù)的采集。在最后添加換行符以換行。為了能夠?qū)崿F(xiàn)實(shí)時采集,同樣將采集按鈕放在最內(nèi)層循環(huán),并使用或門與其他按鈕相連。為使程序能夠連續(xù)多次記錄,使用反饋節(jié)點(diǎn)儲存數(shù)據(jù)。程序框圖如圖4.8所示。圖4.8 可以連續(xù)記錄的秒表程序框圖隨著記錄功能而來的一個問題就是清屏。先前的清零只能對時間進(jìn)行重置,而字符串卻不行。開始時,我使用了對顯示控件從新賦值的方法,但這種方法有一個弊端,就是移位寄存器是不可重置的,這樣就會導(dǎo)致在執(zhí)行清零后再記錄時,先前清除的內(nèi)容又顯示回來了。為了解決移
23、位寄存器清零的問題,我轉(zhuǎn)而使用了另一種方法:臨時文件的讀取寫入。臨時文件可以很好的解決清除數(shù)據(jù)與讀取的問題。先將數(shù)據(jù)寫入臨時文件,再從文件中讀取字符串顯示到顯示控件上。每點(diǎn)擊一次采集按鈕,就會在對應(yīng)文件的下一行添加一個記錄字符串。當(dāng)需要清零時只需要刪除文件內(nèi)的數(shù)據(jù)即可。這樣,當(dāng)點(diǎn)擊清零按鈕時,所有顯示控件都會清零,并且沒有數(shù)據(jù)殘留。同樣,將該按鈕放置在內(nèi)循環(huán)并使用或門與其它開關(guān)相連。程序框圖如圖4.9所示.圖4.9 可以清零的秒表程序框圖復(fù)位按鈕的實(shí)現(xiàn):秒表上通常會有一個復(fù)位按鈕,這個按鈕會同時實(shí)現(xiàn)兩個功能:清除所有數(shù)據(jù);使秒表處于停止計(jì)時狀態(tài)。所以我把清零按鈕改為了復(fù)位按鈕,次改進(jìn)需要增加一
24、些觸發(fā)功能。首先,在點(diǎn)擊復(fù)位時會清空臨時文件中的數(shù)據(jù),這一點(diǎn)通過事件結(jié)構(gòu)實(shí)現(xiàn);其次,在清除數(shù)據(jù)時,將開關(guān)置為暫停狀態(tài),為此創(chuàng)建了暫停按鈕局部變量,通過對局部變量的賦值實(shí)現(xiàn)該功能。當(dāng)點(diǎn)擊復(fù)位時,暫停按鈕會被賦值F,從而暫停計(jì)時。事件結(jié)構(gòu)具體如圖4.10所示。圖4.10 復(fù)位的程序框圖切換記名/記圈的實(shí)現(xiàn):切換記名/記圈實(shí)現(xiàn)的功能就是當(dāng)點(diǎn)擊切換按鈕時,程序會在記名模式/記圈模式之間來回切換,并且在切換的同時進(jìn)行復(fù)位。為實(shí)現(xiàn)該功能,我使用了一個條件結(jié)構(gòu),在“真”里面放置“圈”字,在“假”里面放置“名”字,使其共同輸出到一個顯示控件上。同時,在前面板隱藏該顯示控件,并在程序框圖上創(chuàng)建該顯示控件的局部變
25、量,設(shè)置為讀取模式,將其連接到采集數(shù)據(jù)的長字符串里面。這樣,就可以把字符串里面的一個字符在兩個字之間切換了。程序框圖如圖4.11所示為了能夠在切換的同時執(zhí)行復(fù)位,我在復(fù)位按鈕的旁邊增加了一個事件結(jié)構(gòu),設(shè)置觸發(fā)源為切換按鈕值改變,這樣,點(diǎn)擊切換按鈕時,事件結(jié)構(gòu)觸發(fā),輸出一個T,將其和復(fù)位按鈕以或門相連,便可以實(shí)現(xiàn)多個觸發(fā)源觸發(fā)一個功能了。 圖4.11 切換的實(shí)現(xiàn)LED七段數(shù)碼管顯示的實(shí)現(xiàn): 七段數(shù)碼管顯示數(shù)字的效果如圖4.22所示。每一位數(shù)字都是由7個布爾指示燈拼接而成,每兩位形成一組,共同顯示一個小時/分鐘/秒/毫秒數(shù)值。在每兩個位之間,有綠色的雙閃LED燈,每秒閃一下。圖4.12 LED七段
26、數(shù)碼管顯示效果 為了實(shí)現(xiàn)LED數(shù)碼管的顯示,首先需要制作一個數(shù)字轉(zhuǎn)換為LED顯示的子VI,否則程序會很繁雜。該子VI的程序框圖如圖4.13所示,前面板如圖4.14所示。首先,建立一個十進(jìn)制整形的數(shù)值輸入控件,將其連接至一個條件結(jié)構(gòu),在條件結(jié)構(gòu)中添加10個條件分支,分別對應(yīng)09這10個數(shù)字。在條件結(jié)構(gòu)的每個分支中,加入7個布爾常量,并分別創(chuàng)建顯示控件,將顯示控件設(shè)置為方形指示燈,這7個指示燈對應(yīng)7個數(shù)碼管。對這7個指示燈的形狀和大小進(jìn)行調(diào)整,使之成為一個“8”字。接下來對條件結(jié)構(gòu)中的常量進(jìn)行設(shè)定,比如8對應(yīng)的數(shù)碼管就是7個T,因?yàn)?的LED顯示中數(shù)碼管都是亮的。同樣的,對所有10個條件分支進(jìn)行設(shè)
27、定,使每一個數(shù)值對應(yīng)一個LED顯示樣式。因?yàn)楸境绦蚴亲覸I,不宜有太多輸出,故創(chuàng)建局部變量并將其捆綁為簇,實(shí)現(xiàn)單輸入單輸出。圖4.13 LED顯示子VI程序框圖圖4.14 LED顯示子VI前面板在主程序中,需要調(diào)用8次LED顯示函數(shù)。因?yàn)樵摵瘮?shù)一次只能顯示一位,所以要把時間的兩位數(shù)變?yōu)閮蓚€一位數(shù)。對一個兩位數(shù)除10取余和商便可達(dá)到這一目的。將簇解除捆綁之后,把每一位除以10,將商和余數(shù)分別接入LED顯示子VI,并在子VI上創(chuàng)建顯示控件,便可在前面板上顯示出LED的數(shù)字了。程序框圖如圖4.15所示.為實(shí)現(xiàn)每兩個數(shù)字中間的閃爍燈,我在秒的位置增加了除以2的操作,通過余數(shù)來判斷奇偶,當(dāng)?shù)玫狡鏀?shù)時,使
28、用條件結(jié)構(gòu)給8個布爾指示燈賦值T,使之點(diǎn)亮。當(dāng)?shù)玫脚紨?shù)時,使用條件結(jié)構(gòu)給8個布爾指示燈賦值F,使之滅。程序框圖如圖4.15所示。圖4.15 主函數(shù)部分LED顯示圖4.15 閃爍燈程序框圖秒針轉(zhuǎn)盤的實(shí)現(xiàn): 在前面板上創(chuàng)建一個量表,并進(jìn)行自定義,使之成為圖4.16中的樣子,并將其最大值設(shè)置為100.這樣,即可實(shí)現(xiàn)每秒鐘轉(zhuǎn)一圈的秒表指針了。圖4.16 毫秒指針4.2 倒計(jì)時器4.2.1流程圖倒計(jì)時器的流程圖如圖4.17所示。圖4.17 倒計(jì)時器流程圖4.2.2程序設(shè)計(jì)1. 前面板設(shè)計(jì)程序的前面板如圖4.18所示。圖4.18 倒計(jì)時器的前面板2. 程序框圖倒計(jì)時器的程序框圖如圖4.19所示。圖4.19
29、 倒計(jì)時器的程序框圖3. 程序設(shè)計(jì)初始時間設(shè)置的實(shí)現(xiàn): 倒計(jì)時所輸入的時間為小時:分鐘:秒,想將這些時間轉(zhuǎn)化為秒,則需要把小時*3600+分鐘*60+秒。 數(shù)值倒計(jì)的實(shí)現(xiàn): 得到秒的數(shù)值之后,只需要把該數(shù)值減去循環(huán)次數(shù)i就可以實(shí)現(xiàn)倒計(jì)時了。而將while循環(huán)的間隔設(shè)置為1秒就可以實(shí)現(xiàn)每秒減1的倒計(jì)時了。在實(shí)際設(shè)計(jì)中,倒計(jì)時提示會在程序運(yùn)行時響起,因?yàn)榇藭r計(jì)數(shù)數(shù)值也是0.為解決此問題,我在-i之前對數(shù)值*100,在-i之后又進(jìn)行/100取整,并且使用/10取整之前的數(shù)值與1比較,相等時就會觸發(fā)報(bào)警。同時,把while循環(huán)的間隔設(shè)置到10毫秒,這樣計(jì)時還是1秒,同時提高了精確度。程序框圖如圖4.2
30、0所示。圖4.20 倒計(jì)時原理倒計(jì)時暫停/開始的實(shí)現(xiàn): 和秒表一樣,具體是將一個while循環(huán)外再加一個while循環(huán),在內(nèi)層while循環(huán)中加入停止按鈕,并且將停止按鈕的動作設(shè)置為“釋放時轉(zhuǎn)換”,同時將前面板的停止按鈕設(shè)置為開關(guān)的形狀以便于識別。這樣,這個內(nèi)層的停止按鈕就會實(shí)現(xiàn)暫停的功能。倒計(jì)時復(fù)位的實(shí)現(xiàn): 倒計(jì)時的復(fù)位原理同秒表一樣,只不過由于不需要記錄數(shù)據(jù),要比先前簡單很多。在點(diǎn)擊復(fù)位按鈕之后,內(nèi)循環(huán)會停止,同時將暫停/開始按鈕置為暫停狀態(tài)。原理在前面的秒表部分已有敘述,在此不再重復(fù)。倒計(jì)時鈴聲及其切換的實(shí)現(xiàn):該倒計(jì)時器在倒計(jì)時器結(jié)束時會有鈴聲報(bào)警,并且鈴聲是可換的。為了實(shí)現(xiàn)該功能,我先
31、找來兩個wav格式的鈴聲,使用事件結(jié)構(gòu)來判斷是否時間到。時間到時,事件結(jié)構(gòu)執(zhí)行真的部分,播放放在指定路徑下的聲音文件。為了實(shí)現(xiàn)切換提示音,在條件結(jié)構(gòu)內(nèi)在加入一個條件結(jié)構(gòu),并在前面板中加入一個枚舉輸入,從而選擇鈴聲。另外,在倒計(jì)時結(jié)束時,指針中間會有一個紅點(diǎn)出現(xiàn),這使用的是一個圓形指示燈的可見性屬性節(jié)點(diǎn)通過條件結(jié)構(gòu)的賦值所實(shí)現(xiàn)的。其觸發(fā)原理同上。程序框圖如圖4.21所示。圖4.21 倒計(jì)時結(jié)束觸發(fā)整合停止按鈕: 在邏輯上,秒表和倒計(jì)時器的運(yùn)行關(guān)系是并行的,也就是說互不影響,所以要放在同一個程序中。這樣就要求當(dāng)點(diǎn)擊停止按鈕時,它們必須同時停止而不是只有一個框架停止運(yùn)行。為實(shí)現(xiàn)該功能,我隱藏了倒計(jì)時
32、器的停止按鈕,同時使用了一個觸發(fā)源為秒表停止按鈕的事件結(jié)構(gòu)來代替它。這樣,一個停止按鈕就可以停止整個程序了。指針倒計(jì)時的實(shí)現(xiàn):倒計(jì)時指針是一個顯示剩余時間百分比的裝置。所以只需要對剩余時間和設(shè)定時間的秒數(shù)進(jìn)行相除即可。為實(shí)現(xiàn)平滑效果,將其接入-i的前面和后面,這樣指針每10毫秒動一下,人的肉眼幾乎無法察覺。4.3節(jié)拍器4.3.1流程圖節(jié)拍器的流程圖如圖4.22所示。圖4.22 節(jié)拍器流程圖4.3.2 程序設(shè)計(jì)1. 前面板設(shè)計(jì) 程序的前面板如圖4.23所示。圖4.23 節(jié)拍器2. 程序框圖節(jié)拍器的程序框圖如圖4.24所示。圖4.24 節(jié)拍器程序框圖3. 程序設(shè)計(jì)節(jié)拍選擇的實(shí)現(xiàn): 在前面板使用轉(zhuǎn)盤
33、輸入所需節(jié)拍,將其設(shè)置為輸入差值20,最小值20,最大值240。設(shè)需要x拍/分鐘,則每拍就是60/x秒,故用60除以所輸入的數(shù)值即可。為了使得節(jié)拍器可以實(shí)時識別指令,將while循環(huán)的間隔設(shè)為50毫秒,同時對輸出數(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ì)時器和秒表完全相同,故在此不再重復(fù)說明。4.4時鐘及鬧鐘4.4.1流程圖時鐘鬧鐘的流程圖如圖4.25所示。圖4.25 時鐘鬧鐘的流程圖4.4.2 程序設(shè)計(jì)1. 前面板設(shè)計(jì) 程序的前面板如圖4.26所示。圖4.26 時鐘與鬧鐘2. 程序框圖時鐘/鬧鐘的程序框圖如圖4.27所示。圖4.27 時鐘的程序框圖3. 程序設(shè)計(jì)字符串
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二手房按揭買房買賣合同
- 國際公路運(yùn)輸合同范本
- 2025船舶買賣合同書樣本版
- 提高創(chuàng)新能力的技能培訓(xùn)
- 提高人際關(guān)系的培訓(xùn)課程
- 品牌服務(wù)合同范本
- 2024年公共事業(yè)領(lǐng)域投資合同
- 吊車零租賃合同范本
- 鋼釘鐵釘售賣合同
- 2025有限責(zé)任公司銀行貸款擔(dān)保合同
- 管理ABC-干嘉偉(美團(tuán)網(wǎng)COO)
- 基于視覺的工業(yè)缺陷檢測技術(shù)
- 軍事英語詞匯整理
- 家庭教育指導(dǎo)委員會章程
- DB31-T 1440-2023 臨床研究中心建設(shè)與管理規(guī)范
- 老客戶維護(hù)方案
- 高處作業(yè)安全教育培訓(xùn)講義課件
- dk膠原蛋白培訓(xùn)課件
- 萬科物業(yè)管理公司全套制度(2016版)
- 動物檢疫技術(shù)-動物檢疫處理(動物防疫與檢疫技術(shù))
- 英語經(jīng)典口語1000句
評論
0/150
提交評論