訂閱
糾錯(cuò)
加入自媒體

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

那么這兩個(gè)接線端子是用來干嘛的呢?我們?cè)賮碜屑?xì)看下原理圖:

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

實(shí)物連接圖如下圖所示:

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

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

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

發(fā)表評(píng)論

0條評(píng)論,0人參與

請(qǐng)輸入評(píng)論內(nèi)容...

請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字

您提交的評(píng)論過于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無評(píng)論

暫無評(píng)論

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

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