訂閱
糾錯
加入自媒體

工業(yè)自動化控制之【03-延時函數(shù)演示流水燈】

大家好,我是『芯知識學(xué)堂』的SingleYork,前一篇文章給大家介紹了“SYK-0806-A2S1 工業(yè)自動化控制之【02-硬件分析&外設(shè)接線圖】”,相信大家對我們的這款板子已不再陌生,那么今天開始,筆者就要來給大家介紹如何使用STC15系列庫函數(shù)來開發(fā)這款工控板,這一篇文章,筆者以點燈為例,來教大家如何對SYK-0806-A2S1這款控制板進行輸出控制,那么我們首先來看下板子的輸出口的IO引腳分布:

從板子的硬件原理圖上我們可知,SYK-0806-A2S1這款工控板的6個輸出口Y00-Y05所使用的GPIO口分別是P32-P27口。另外,在上一篇文章中筆者也跟大家介紹了,SYK-0806-A2S1這款工控板的輸出口需要配置成“推挽輸出”才能正確驅(qū)動MOS管,因此我們在配置GPIO口模式的時候,需要注意這點。由于我們這款板子并不是用來教單片機基礎(chǔ)的,所以,有關(guān)單片機相關(guān)的操作筆者也就不作詳細(xì)介紹了,筆者主要是針對這款開發(fā)板的應(yīng)用來介紹!有關(guān)單片機基礎(chǔ)的相關(guān)知識,還請讀者自行找資料學(xué)習(xí)!

首先,我們來看下這個點燈工程的構(gòu)成:

筆者將這個點燈工程的軟件部分分成了是三個組,他們分別是:USER、SYSTEM和BSP,其中USER里面存放了一個main.c文件,整個項目的運行效果的代碼都放在了這個文件中。

SYSTEM組中主要是存放了STC15系列庫文件,這個項目中只用到了兩個庫,即:delay庫和gpio庫。

BSP組中存放的就是板載配置文件,此處只用到了GPIO輸入輸出的控制,所以這個組中也存放了一個bsp_gpio.c文件。

那么,我們首先來看bsp_gpio.c文件,這個文件里面的內(nèi)容不多,就是對板載輸出引腳的配置,代碼如下:

GPIO_config()這個函數(shù)主要實現(xiàn)了Y00-Y05引腳輸出模式的配置,根據(jù)前一節(jié)介紹到硬件部分,這里需要設(shè)置成推挽模式,即:GPIO_OUT_PP。另外,在將所有輸出引腳配置成推挽模式之后,還需要將所有輸出端引腳的初始電平拉低,否則所有的MOS管在一上電就會被導(dǎo)通了。所以在這個函數(shù)的后面,還添加了Y00_OFF() -- Y05_OFF()這六條語句。

細(xì)心的小伙伴們可能發(fā)現(xiàn)了,筆者這里用到了很多的宏定義,如:Y00_GPIO_PIN、Y00_GPIO以及Y00_OFF()等,這些都是宏定義,這些宏定義是在bsp_gpio.h這個文件中。

      用宏定義雖然有點浪費程序空間,但是對于筆者使用的IAP15W413AS這個單片機來說,這點空間還是微不足道,而使用宏定義的好處,自然卻是不少,不僅讓程序的可讀性變得更加友好,同時對于以后的不同項目之間的移植也是提供了極大的方便,所以,大家以后也可以多多嘗試一下。

      再來看SYSTEM組中的delay.c和gpio.c這兩個文件,這兩個文件是STC官方提供的庫函數(shù),也沒有太多要講的,我們基本上只要會調(diào)用就好了,這里稍微提一下delay.c這個文件中的void  delay_ms(unsigned char ms)函數(shù),因為這個函數(shù)的參數(shù)的數(shù)據(jù)類型使用的是unsigned char類型,所以,這里最大只支持1~255ms的延時,庫文件中也有說明:

當(dāng)然咯,如果大家需要更長時間的延時,可以自行修改一下這個函數(shù),不過筆者建議,如果需要更大延時和更精準(zhǔn)的延時的話,還是使用定時器比較好一些,后續(xù)筆者也會給大家介紹。

輸出引腳配置完成后,我們只需要在主函數(shù)中調(diào)用GPIO_config()這個函數(shù)就可以了,接下來,我們就要開始在主函數(shù)中實現(xiàn)我們想要的流水燈效果,代碼如下:

在這里,細(xì)心的小伙伴們應(yīng)該發(fā)現(xiàn)了一個問題,在主函數(shù)開始的部分,筆者將Y00-Y05全部設(shè)置為OFF了,這是為什么呢?而前面的GPIO_config()函數(shù)中,我們也做了同樣的操作,這樣豈不是多此一舉?其實一開始筆者也沒有這么做,但是發(fā)現(xiàn),板子上電的瞬間,所有輸出口都會全部閃一下然后又滅了!于是,筆者去找STC的技術(shù),技術(shù)告訴我,上電瞬間單片機的IO口是處于不穩(wěn)定狀態(tài)的,初始化完畢后,才會進入設(shè)定的模式運行,而且MOS管是電壓驅(qū)動,上電IO口浮空的時候的電壓足以讓MOS管導(dǎo)通了,所以上電后先將輸出口全部置0再來進行相關(guān)配置,可以避免輸出瞬間閃爍的現(xiàn)象!

我們將代碼編譯沒問題后,我們就可以將程序下載到板上,打開STC-ISP軟件,按照如下設(shè)置并加載keil軟件生產(chǎn)的hex文件,然后點擊“下載/編程”按鈕準(zhǔn)備下載(詳細(xì)下載方法如有不明白的可以參考STC官方手冊):

      當(dāng)出現(xiàn)“正在檢測目標(biāo)單片機”時,我們給板子上電即可開始下載,當(dāng)出現(xiàn)“操作成功”字樣后,說明程序已經(jīng)成功下載到我們的工控板里面了:

      按理說,下載完程序后,我們便會看到輸出端的流水燈效果,然而,實際上我們并未看到這個效果,這是為什么呢?我們仔細(xì)看下輸出端的接線端子絲印,會發(fā)現(xiàn),原來還有兩個V+和V-:

那么這兩個接線端子是用來干嘛的呢?我們再來仔細(xì)看下原理圖:

      從原理圖上我們可以看到,原來,要是輸出端LED燈亮的話,這里還需要接外部電源,那么我們可以直接用電源適配器供電,然后將DC+、DC-端子分別接到V+和V-上即可:

實物連接圖如下圖所示:

      線路連好之后,我們就可以看到程序能正常的運行了,我們想要的流水燈效果如下:

      好了,關(guān)于使用延時函數(shù)實現(xiàn)流水燈的效果筆者就介紹到這里了,有疑問的小伙伴們可以給筆者留言或者直接參與評論,下一節(jié)筆者將給大家介紹如何利用輸入來控制輸出,感謝大家的支持!

聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權(quán)或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

    文章糾錯
    x
    *文字標(biāo)題:
    *糾錯內(nèi)容:
    聯(lián)系郵箱:
    *驗 證 碼:

    粵公網(wǎng)安備 44030502002758號