找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 18624|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

《STM32和labview不解之緣》之一基于labview的七彩流水燈界面設(shè)計

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:107189 發(fā)表于 2016-3-4 20:07 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 51黑tt 于 2016-3-4 20:11 編輯

                                                                                   
         Labview2013程序設(shè)計分享教程開始了】
         ---ICKEY社區(qū)小雨兒   
        前言          網(wǎng)絡(luò)上各種各樣的labview教程層出不窮,大部分都是講解的labview的仿真應(yīng)用,教程或課件中的VI程序也大部分如此!除了NI公司提供豐富的硬件,可以使用DAQ做數(shù)據(jù)采集,高端的FPGA開發(fā)外,難道真的就沒有更精彩的應(yīng)用了嗎?回答是否定的,labview是可以和MCU、DSP做無縫連接的,就像在仿真程序上和matlab的無縫集成一樣。當(dāng)然,MCU和DSP與labveiw的接口,這個課題范圍太大了,探討起來也是一個很廣泛的話題。時下,最流行的MCU當(dāng)然是ARM公司的CORTEX-MO/M3/M4內(nèi)核,DSP當(dāng)然是TI的TMS320FXXX系列,也就是通常的C2000/C5000/C6000,高端的FPGA平臺中,無論是ATLERA還是XINLIX公司的平臺,其軟核IP大部分也是這些內(nèi)核罷了,CORTER-A8/A9這樣的內(nèi)核已經(jīng)是專門的嵌入式領(lǐng)域了,這里筆者水平有限,也沒有精力去研究這些了。         在工作中,受到大牛和大神們氣氛熏陶,我也逐漸從51、STC/MSP430這樣8位、16位的平臺,過度到32位平臺,期間經(jīng)歷了LM3S的大起大落,C2000/C5000的高富帥,最后到情有獨鐘的STM32。在認識STM32的歲月里,發(fā)現(xiàn)它確實很容易應(yīng)用,價格適中,資料豐富,開發(fā)環(huán)境友好,適合一般的工控應(yīng)用及消費電子應(yīng)用,同時,作為labview的粉絲,我對它也是不離不棄。在這樣的環(huán)境下,我逐漸地將STM32和Labview放在了一起,并在大神的指點下,也有了一些小應(yīng)用。
        下面本版主將推出一系列教程,詳細介紹STM32和labview結(jié)合下的一些應(yīng)用,希望這些應(yīng)用對大家學(xué)習(xí)labview有所幫助,并歡迎大家提出各種意見,
        第一集:基于labview的七彩流水燈界面設(shè)計

        

         流水燈描述
         在開始STM32和labview的應(yīng)用講解之前,先發(fā)一個七彩流水燈的設(shè)計。說到七彩流水燈,大家都覺得很簡單,其實不然。首先,這里有一個思路問題,我們在開發(fā)MCU程序時,要點亮一個LED流水燈,比如8個BIT的流水燈,大家首先想到的就是端口賦值,從BIT7—BIT0依次賦值0x80 0x40 0x20 0x10 0x08 0x040x02 0x01,或者反向賦值,中間插入延時函數(shù)即可,這樣確實是可以的,我剛開始學(xué)習(xí)編程也是這樣做的。在不斷的流水燈的過程中,我們發(fā)現(xiàn)上面編程的代碼量還是不小的,每個賦值后,再加入延時,就是一個16段代碼。后來,長經(jīng)驗了,就學(xué)會了數(shù)據(jù)移位,定義一個變量,讓這個數(shù)初始值是0x01或者是0x80,然后循環(huán)左移或者右移,每次移動后,把變量值賦給端口,采用一個For循環(huán)就能實現(xiàn)了,真是簡便啊,這就是學(xué)到新知識的喜悅。
        在成功的實現(xiàn)了8個BIT位的流水燈,那么16BIT的流水燈呢?在8/16位機上就得占用兩個端口,在32位機上,就得占用一個端口。繼續(xù)向下問,如果是32BIT的流水燈呢?那么就出現(xiàn)了兩種選擇,一種是端口量翻倍,可惜現(xiàn)在的MCU端口都不是太多,筆者手工焊過引腳最多的也就是144PIN,大部分PIN都是有特殊用途,比如地址和數(shù)據(jù)的并行總線,不可能拿出那么多的端口來玩,就得采用第二種,IO擴展,采用邏輯芯片,鎖存器,串并轉(zhuǎn)換等74芯片來做,本質(zhì)就是分時復(fù)用,那樣電路就龐大了。
        在Labview上玩流水燈就簡單多了,而且彩色也豐富,不像實際中,就那么幾種顏色可以選擇。在Labview中,流水燈可以達到64BIT,夠嗨吧,呵呵。下面講解一個20BIT流水燈的界面設(shè)計,作為后續(xù)教程的熱身吧。
        20BIT流水燈思路就是采用了數(shù)據(jù)移位的原理。思路如下:
        建立一個虛擬的20BIT的布爾數(shù)組變量,讓這個布爾數(shù)組的第一個位為布爾值1,其余為布爾值0, 然后讓布爾數(shù)組的布爾值1循環(huán)移動,移動20次后,返回到初始點.這個思路是很簡單,不過實現(xiàn)起來就需要一定的技巧了,要不然,編寫的代碼又會很長哦。具體實現(xiàn)過程:
         20BIT布爾數(shù)組的實現(xiàn)
        我們知道,流水燈要實現(xiàn)一個20BIT的初始化為1的序列,即
        1000 0000 0000 0000 0000 ,0100 0000 0000 0000 0000 ,
        0010 0000 0000 0000 0000 。。。0000 0000 0000 0000 0001.  
        每個位對應(yīng)于一個LED燈。那么如何產(chǎn)生這個序列呢?這里,我們采用了一個判斷語句來實現(xiàn),當(dāng)條件滿足時,產(chǎn)生布爾值1,不滿足時,產(chǎn)生布爾值0,讓這個條件循環(huán)執(zhí)行20次。就會得到我們要實現(xiàn)的這個序列了。那么,應(yīng)該滿足什么條件呢?這里我們采用了一個Labview函數(shù),首次調(diào)用函數(shù)。它位于同步模塊里面,首次調(diào)用函數(shù)的功能:當(dāng)按下運行按鈕第一次調(diào)用時,輸出TRUE,否則為FLASE。
        
        這樣,第一次運行時,判斷函數(shù)就輸出布爾值1,第二次循環(huán)時,判斷函數(shù)就輸出布爾值0了。利用FOR循環(huán)20次,就輸出20個布爾值了,這20個布爾值就可以通過一個自動索引隧道輸出成一個布爾數(shù)組了。
         
         20BIT的布爾燈控件放入簇中
         實現(xiàn)好了20BIT的布爾數(shù)組后,我們在前面板上再定義20個LED燈,做好排列后,放入一簇中,如圖:
        

         利用好循環(huán)移位寄存器
         在前面講到,判斷函數(shù)執(zhí)行20次循環(huán)后,會輸出一個布爾值數(shù)組,這個數(shù)組我們怎么對應(yīng)到簇數(shù)組里并循環(huán)起來,那就要借助移位寄存器了。在循環(huán)結(jié)構(gòu)中經(jīng)常用到一種數(shù)據(jù)處理方式,即把第i次循環(huán)執(zhí)行的結(jié)果作為第i+1次循環(huán)的輸入,我們通過一個while循環(huán),就可以讓20BIT的布爾值序列不停地運行了。
         數(shù)組移位操作函數(shù)和數(shù)組到簇的轉(zhuǎn)換
        通過一維數(shù)組的循環(huán)移位和數(shù)組到簇的轉(zhuǎn)換,我們就可以將布爾數(shù)組不停地移位起來,再加上一個簡單的延時函數(shù),這樣就能顯示出流水燈的效果了。
         
        

         數(shù)組循環(huán)移位函數(shù),這里n=1,即每次循環(huán)移動一位。
        
        加入一個判斷函數(shù),當(dāng)開啟時,正常運行。關(guān)閉時,20BIT燈全部關(guān)閉,就是給簇賦值布爾值0哦。
         程序運行效果圖如下:
        

        點擊紫色按鈕,流水燈關(guān)閉。拉動滑動桿,可以控制流水燈的速度。



        下一集為大家分享一個Labview控制STM32板子上的LED燈的程序設(shè)計。

20140228204209_62580.jpg (45.55 KB, 下載次數(shù): 115)

20140228204209_62580.jpg

基于Labview的七彩流水燈-小雨兒.rar

11.79 KB, 下載次數(shù): 90, 下載積分: 黑幣 -5

評分

參與人數(shù) 1黑幣 +5 收起 理由
mmm1994 + 5 東西真的實用

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:218208 發(fā)表于 2017-7-12 11:14 | 只看該作者
后續(xù)還有沒有?期待中!
回復(fù)

使用道具 舉報

板凳
ID:255018 發(fā)表于 2017-11-29 09:22 | 只看該作者
好想下載可是沒有金幣怎么辦啊
回復(fù)

使用道具 舉報

地板
ID:306732 發(fā)表于 2018-4-22 16:25 | 只看該作者
還有嗎?后面那集
回復(fù)

使用道具 舉報

5#
ID:411681 發(fā)表于 2018-10-18 14:12 | 只看該作者
實用的資料!謝謝
回復(fù)

使用道具 舉報

6#
ID:411681 發(fā)表于 2018-10-18 14:13 | 只看該作者
實用的東西!謝謝!期待后續(xù)更新
回復(fù)

使用道具 舉報

7#
ID:422413 發(fā)表于 2018-11-7 16:18 來自觸屏版 | 只看該作者
學(xué)習(xí)學(xué)習(xí),謝謝!
回復(fù)

使用道具 舉報

8#
ID:321841 發(fā)表于 2019-9-20 15:22 | 只看該作者
小白小白求助 怎么連接labview和stm32
回復(fù)

使用道具 舉報

9#
ID:321841 發(fā)表于 2019-9-20 15:23 | 只看該作者
不明白怎么將 labview 和stm32 開發(fā)板連接起來
回復(fù)

使用道具 舉報

10#
ID:337203 發(fā)表于 2022-8-24 23:29 | 只看該作者
好東西借監(jiān)一下
回復(fù)

使用道具 舉報

11#
ID:337203 發(fā)表于 2022-8-24 23:29 | 只看該作者
港0港 發(fā)表于 2019-9-20 15:23
不明白怎么將 labview 和stm32 開發(fā)板連接起來

要買軟件的
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表