第25節(jié):用LED燈和按鍵來(lái)模擬工業(yè)自動(dòng)化設(shè)備的運(yùn)動(dòng)控制
從業(yè)將近十年!手把手教你單片機(jī)程序框架 第24講:
開(kāi)場(chǎng)白:
前面三節(jié)講了獨(dú)立按鍵控制跑馬燈的各種狀態(tài),這一節(jié)我們要做一個(gè)機(jī)械手控制程序,這個(gè)機(jī)械手可以左右移動(dòng),最左邊有一個(gè)開(kāi)關(guān)感應(yīng)器,最右邊也有一個(gè)開(kāi)關(guān)感應(yīng)器。它也可以上下移動(dòng),最下面有一個(gè)開(kāi)關(guān)感應(yīng)器。左右移動(dòng)是通過(guò)一個(gè)氣缸控制,上下移動(dòng)也是通過(guò)一個(gè)氣缸控制。而單片機(jī)控制氣缸,本質(zhì)上是通過(guò)三極管把信號(hào)放大,然后控制氣缸上的電磁閥。這個(gè)系統(tǒng)機(jī)械手驅(qū)動(dòng)部分的輸出和輸入信號(hào)如下:
2個(gè)輸出IO口,分別控制2個(gè)氣缸。對(duì)于左右移動(dòng)的氣缸,當(dāng)IO口為0時(shí)往左邊跑,當(dāng)IO口為1時(shí)往右邊跑。對(duì)于上下移動(dòng)的氣缸,當(dāng)IO口為0時(shí)往上邊跑,當(dāng)IO口為1時(shí)往下邊跑。
3個(gè)輸入IO口,分別檢測(cè)3個(gè)開(kāi)關(guān)感應(yīng)器。感應(yīng)器沒(méi)有被觸發(fā)時(shí),IO口檢測(cè)為高電平1。被觸發(fā)時(shí),IO口檢測(cè)為低電平0。
這一節(jié)繼續(xù)要教會(huì)大家兩個(gè)知識(shí)點(diǎn):
第一點(diǎn):如何用軟件進(jìn)行開(kāi)關(guān)感應(yīng)器的抗干擾處理。
第二點(diǎn):如何用Switch語(yǔ)句搭建工業(yè)自動(dòng)控制的程序框架。還是那句話,我們只要以Switch語(yǔ)句為支點(diǎn),再?gòu)?fù)雜再繁瑣的程序都可以輕松地編寫(xiě)出來(lái)。
具體內(nèi)容,請(qǐng)看源代碼講解。
(1)硬件平臺(tái):基于朱兆祺51單片機(jī)學(xué)習(xí)板。用矩陣鍵盤(pán)中的S1鍵作為啟動(dòng)獨(dú)立按鍵,用S5按鍵模擬左邊的開(kāi)關(guān)感應(yīng)器,用S9按鍵模擬右邊的開(kāi)關(guān)感應(yīng)器,用S13按鍵模擬下邊的開(kāi)關(guān)感應(yīng)器。記得把輸出線P0.4一直輸出低電平,模擬獨(dú)立按鍵的觸發(fā)地GND。
(2)實(shí)現(xiàn)功能:
開(kāi)機(jī)默認(rèn)機(jī)械手在左上方的原點(diǎn)位置。按下啟動(dòng)按鍵后,機(jī)械手從左邊開(kāi)始往右邊移動(dòng),當(dāng)機(jī)械手移動(dòng)到最右邊時(shí),機(jī)械手馬上開(kāi)始往下移動(dòng),最后機(jī)械手移動(dòng)到最右下角的位置時(shí),延時(shí)1秒,然后原路返回,一直返回到左上角的原點(diǎn)位置。注意:?jiǎn)?dòng)按鍵必須等機(jī)械手處于左上角原點(diǎn)位置時(shí),啟動(dòng)按鍵的觸發(fā)才有效。
(3)源代碼講解如下:
總結(jié)陳詞:
前面花了很多節(jié)內(nèi)容在講按鍵和跑馬燈的關(guān)系,但是一直沒(méi)涉及到人機(jī)界面,在大多數(shù)的實(shí)際項(xiàng)目中,人機(jī)界面是必不可少的。人機(jī)界面的程序框架該怎么樣寫(xiě)?欲知詳情,請(qǐng)聽(tīng)下回分解-----在主函數(shù)while循環(huán)中驅(qū)動(dòng)數(shù)碼管的動(dòng)態(tài)掃描程序。