工業(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é)筆者將給大家介紹如何利用輸入來控制輸出,感謝大家的支持!
發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
最新活動(dòng)更多
-
3月27日立即報(bào)名>> 【工程師系列】汽車電子技術(shù)在線大會(huì)
-
4月30日立即下載>> 【村田汽車】汽車E/E架構(gòu)革新中,新智能座艙挑戰(zhàn)的解決方案
-
限時(shí)免費(fèi)下載立即下載 >>> 2024“機(jī)器人+”行業(yè)應(yīng)用創(chuàng)新發(fā)展藍(lán)皮書
-
即日-5.15立即報(bào)名>>> 【在線會(huì)議】安森美Hyperlux™ ID系列引領(lǐng)iToF技術(shù)革新
-
5月15日立即下載>> 【白皮書】精確和高效地表征3000V/20A功率器件應(yīng)用指南
-
5月16日立即參評(píng) >> 【評(píng)選啟動(dòng)】維科杯·OFweek 2025(第十屆)人工智能行業(yè)年度評(píng)選