今年暑假,我留校學習了8位單片機的知識,當時只是無聊到想打發一個暑假。隨著學習的深入,我發現單片機是一個很實用的東西。一個小小的芯片,通過改變引腳的電壓值,就可以控制外圍的設備和電路。通過燒寫一些程序,我們可以讓單片機實現一些特定的功能,這點和FPGA板子有異曲同工之處。在日常生活中,單片機的應用無處不在,一些比較簡單的機器,如洗衣機,電冰箱,空調甚至非智能汽車都會以單片機作為核心模塊而擴展成一個具有特殊功能的工具。可以說成千上萬片單片機構成了電子產品的世界。我們電腦中的CPU從某種程度上也可以理解為某種特殊化的單片機,那應當算上是比較高端的單片機了,其功能之強大能達到每秒計算的千萬40次。
記得暑假時買的8位dofly單片機,適合于初學者和業余愛好者把玩的東東。一個筆記本大小的板子上焊上了不下于40個芯片,共同構成了多功能的外部電路,其核心是STC51單片機,DIP封裝,也就一個手指大小的芯片,市場價僅5元左右,卻包含了今年我們所學的微機原理實驗板上的所有內容。通過特定的編程和燒寫軟件,下載到單片機中,用杜邦線連接好外圍電路,就可以實現目標功能。舉一個簡單的例子,C語言是大家都學過的高級編程語言,之所以說它高級完完全全是因為它離我們用戶比較接近,而離計算機較遠(距離計算機較近的語言是匯編,機器語言則是對計算機直接操作了),這種語言的好處就是易于理解和使用,但是由于需要轉換成低級語言的緣故,所以效率比較低下。先用C語言舉一個最簡單的例子:
如果我想讓板子上的一個LED發光,我只需要在LED的正端加上一個合適的電壓即可。那么我在對單片機編程時只需要寫如下的代碼:
#include
main()
{
while(1)
0x80=0;
}
把這個代碼下載到單片機中就OK了,0X80是十六進制的單片機P1口地址,將它賦值為0(負邏輯,實際相當于賦予1),就會送出一個電壓,將P1口連接到LED上,LED就會發光了。
當然使一個LED發光只是最簡單的例子,你可以加入其它語句使其完成更復雜的效果,同樣相同的電壓加在不同的元件上會有不同的效果,如果這個電壓加在蜂鳴器端子上,蜂鳴器就會發聲了,這從某種程度上就實驗了報警。先來上幾張8位單片機的效果圖,先一睹為快:
STC51-02A.jpg (171 KB, 下載次數: 67)
下載附件
2013-7-12 19:09 上傳
→以上是8位單片機部分
32位單片機是在8位單片機上進一步發展的新型單片機,可實現更為復雜的功能,這就好比早期的CPU8086與今天電腦普遍采用的CPU 酷睿系列一樣。32位單片機實現的功能十分強大,已經可以運行一些比較智能的操作系統,相當于一臺配置低端的電腦,今天之所以寫這篇文章,完完全全是為了給現在這個32位機子上的操作系統拍個遺照,因為今晚我就要將它清除去完成我自己的實驗了,先來上幾張圖,晚上拍的,效果不太好,不過可以看出大概:
190057g3oxefixdhxnfd3n.jpg (116.84 KB, 下載次數: 48)
下載附件
2013-7-12 19:09 上傳
32位單片機的電路板,中間的那個正方形芯片就是STM32單片機
190059lesy2ftqao2ptiza.jpg (75.41 KB, 下載次數: 54)
下載附件
2013-7-12 19:09 上傳
網上可以購買的觸摸電容屏,我們手機上使用的就是這種,通過手指的壓力是屏幕上的某點與屏幕下的感電層接觸,進而檢測到這點被按下,實現一定功能。
190102wfj99t7kl5t8b75d.jpg (24.24 KB, 下載次數: 48)
下載附件
2013-7-12 19:09 上傳
攝像機鏡頭模塊。這是一個攝像頭,把它連接到板子上在編一個啟動代碼就可以進行圖像采集。
190105nxx792oi4494lli9.jpg (41.11 KB, 下載次數: 52)
下載附件
2013-7-12 19:09 上傳
J-link模塊,功能是硬件下載,調試程序不可少的工具。
串口通訊線,可以實現多臺具有串口通信功能的機器之間的通訊,用它連接單片機與電腦,可實現兩者之間信息的傳輸。
USB線,供電和連接使用。這個不必解釋。
特定的J-link模塊傳輸線。下載時使用的連接工具。
190106lgn8iddgf2lmw2cz.jpg (39.75 KB, 下載次數: 57)
下載附件
2013-7-12 19:09 上傳
紅外遙控器,代碼編好后可遙控單片機完成特殊功能。
190108d8j95o9vs474gk7g.jpg (34.57 KB, 下載次數: 63)
下載附件
2013-7-12 19:09 上傳
- -這個就不用說名字了吧,任天堂紅白機適用的游戲機手柄,可以在單片機上打游戲,當然這個游戲也是得我們自己寫出來,或者從原本的小霸王游戲機的NES游戲中轉換,寫入單片機實現的。
好吧,開機,屏幕上顯現電路板各部分的狀態。
190453x0dhahbq7a4n343z.jpg (106.58 KB, 下載次數: 56)
下載附件
2013-7-12 19:09 上傳
即使是會說哈的湯姆貓,也可以在單片機上運行。
190054b0ar0e5x9en33q0d.jpg (89.8 KB, 下載次數: 52)
下載附件
2013-7-12 19:09 上傳
用單片機來打小霸王游戲超級瑪麗,也是不錯的選擇, 就是速度有點慢,因為我的晶振頻率貌似低了。
以上的所有效果都需要我們自己寫入,包括在屏幕哪個地方顯示菜單,都需要自己預先把坐標值寫好,寫入hex文件中,再用J-link燒進去, 這是一個十分漫長的過程。因為這么多的代碼需要不停地敲得話也得需要一整天,更別說每個功能之間的調試了,當時為了燒這個程序搞了我一晚沒睡覺。我在想,如果在搞畢業論文的設計時,我以這個為方向,自己焊接一個電路板,以市場上出售的單片機為核心,外部焊接上晶振,電容,電阻,顯示屏,通訊模塊,電話卡插槽,是否就能把手機做出來,當然這個是一個較為困難的選擇。簡單一點的,我有個學長正在嘗試做收音機,當然這個都不是說說才能做出來的,即使是失敗,也不能輕易放棄,因為成功始終在失敗的后方。
|