C語言的應(yīng)用編程在單片機(jī)的領(lǐng)域占了很大一部分,使用的比較多的51單片機(jī)和STM32單片機(jī)都可以使用MDK軟件編寫固件。
單片機(jī)燒寫了固件后可以點(diǎn)亮LED燈,可以驅(qū)動(dòng)ADC檢測(cè)電壓,也可以驅(qū)動(dòng)蜂鳴器發(fā)聲,這就是簡(jiǎn)單地控制硬件。稍微復(fù)雜一點(diǎn)的,可以驅(qū)動(dòng)NRF2401進(jìn)行無線的連接,也可以使用ESP8266這類wifi芯片連接網(wǎng)絡(luò)。
接下來,簡(jiǎn)單地講講如何使用C語言控制硬件。
1、電路連接
簡(jiǎn)單的模塊可以直接使用高低電平來控制,比如紅外線發(fā)射模塊,當(dāng)你在驅(qū)動(dòng)引腳上的電壓達(dá)到3.3v,就能發(fā)出紅外線;然后將電平設(shè)置為0v,紅外線發(fā)射就停止了。
一般而言,單片機(jī)的引腳輸出電壓能夠達(dá)到3.3v,也是可以點(diǎn)亮紅外線LED,但是可能會(huì)導(dǎo)致電流不穩(wěn)定的問題,所以一般會(huì)使用一個(gè)三極管接在引腳和LED之間放大電流的驅(qū)動(dòng)能力。
從原理來說,通過加在LED上的電平不停的變化,并且嚴(yán)格按照一定的時(shí)間設(shè)置為高電平,然后變更為低電平,如此的反復(fù)循環(huán),那就能夠發(fā)出一段紅外線控制碼。只要手速夠快,時(shí)間夠精準(zhǔn)完全能夠控制家里的電視機(jī)、空調(diào)。
2、單片機(jī)控制硬件
上面說到純手工控制模塊遙控電視機(jī)、空調(diào),但是實(shí)際上誰有這樣的手速呢,即便有這樣的手速那開關(guān)也受不了這樣的操作頻率。
到了這會(huì)我們的單片機(jī)該閃亮登場(chǎng)了。以常用的51單片機(jī)而言,頻率可以達(dá)到12MHZ。翻譯成大白話就是,一秒鐘可以按下開關(guān)12x10的6次方次。這簡(jiǎn)直是魔鬼手速,不僅快而且精準(zhǔn)。關(guān)鍵是價(jià)錢也不太貴。比如,diy一個(gè)遙控器,電路板上IC的價(jià)格不過3塊錢。
單片機(jī)在這里就替代了手的作用,那么C語言就相當(dāng)于控制手的大腦。
其實(shí)這里只是舉例了硬件控制中最常用的IO控制,實(shí)際的應(yīng)用情況中除了IO控制,還有常用的ADC控制,這個(gè)就相當(dāng)于單片機(jī)替你把使用萬用表測(cè)量電壓的活給干了。
3、C語言控制單片機(jī)
如果要從原理上來說,C語言并不能直接控制單片機(jī)。C語言是高級(jí)語言,是給我們?nèi)祟悂砜吹?,單片機(jī)作為機(jī)器自然不懂這個(gè)。它只懂機(jī)器語言,說白了就是高低電平。但是為了減少歧義,就將這高低電平規(guī)格化了,變成了數(shù)字的0和1。
編譯器的工作其實(shí)就是將我們編寫的C原因翻譯成了數(shù)字0和1存到單片機(jī)里面。然后,單片機(jī)就按照這個(gè)固定的模式去比對(duì),然后去執(zhí)行。有點(diǎn)像上學(xué)時(shí),老師在臺(tái)上點(diǎn)名的意思。
總的來說,C語言控制單片機(jī),單片機(jī)控制硬件
-
單片機(jī)
+關(guān)注
關(guān)注
6026文章
44452瀏覽量
630784 -
硬件
+關(guān)注
關(guān)注
11文章
3161瀏覽量
66003 -
C語言
+關(guān)注
關(guān)注
180文章
7581瀏覽量
135541
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論