很多接觸機器人或單片機不久的朋友面對種類繁多的單片機常會困惑,到底它們之間有何不同,?制作機器人到底用哪種單片機控制比較好,?當我們選擇了一種 單片機后,,有何捷徑能迅速掌握并應用這種單片機,?本文嘗試用一種通俗易懂的方法解讀上述問題,并設(shè)計了一種有深度的單片機控制機器人的實例,,希望能起到拋 磚引玉的作用,。我與大家分享我使用單片機的一些經(jīng)驗,希望能讓初學者少些迷茫,,讓已經(jīng)入門的朋友思維開闊,。
寫本文時我僅有3年單片機實踐經(jīng)驗,比較了解51系列和AVR系列單片機,,因此著重討論了AVR單片機,,我經(jīng)驗有限,有錯誤在所難免,,希望朋友們批評指正,!
一 單片機和CPU、個人電腦的區(qū)別和聯(lián)系
這部分內(nèi)容比較初級,,但很多朋友剛接觸單片機時或許對下面的問題不是很清楚,。
1 什么是CPU?
CPU中文名稱為“中央處理器”,,典型代表為英特爾8086處理器,,現(xiàn)在的奔騰X處理器都是8086的直系后代。處理器,,顧名思義,,其功能是處理數(shù)據(jù), 對于中央處理器,,就是在數(shù)據(jù)處理中處于核心地位的處理器,,聽起來似乎很復雜,但實際上核心就是一個ALU“算術(shù)邏輯單元”,。這個單元由一些數(shù)字門電路組 成,,僅能完成括加、減,、乘,、除四則運算,與,、或,、非、異或等邏輯操作,,以及移位,、比較和傳送等操作,。CPU內(nèi)部包含ALU,除此之外CPU還有時鐘電 路,,CPU運行的基本原理是:時鐘電路產(chǎn)生計數(shù)脈沖,,這個脈沖控制著一個累加器,即每產(chǎn)生一個時鐘脈沖,,累加器加1,,這個累加值以16進制數(shù)字的形式通過 地址總線唯一選通程序儲存器中一個儲存單元(在CPU外部),這個單元將內(nèi)部儲存的程序命令代碼通過數(shù)據(jù)總線送到ALU中,,ALU根據(jù)代碼不同執(zhí)行不同操 作,,比如把某寄存器數(shù)值和某數(shù)值相加等,然后將計算結(jié)果輸出到IO口或者各個總線上,。
總之,,CPU的工作就是把程序中的命令代碼翻譯成不同任務(wù),然后執(zhí)行,,輸出執(zhí)行結(jié)果,。CPU在一切數(shù)字計算機中都發(fā)揮了核心作用,即計算機都有CPU,。
2 什么是個人電腦?
由于CPU只有計算功能,,其計算的結(jié)果需要通過顯示器,、音箱輸出,而其工作的依據(jù),,即程序命令則依靠硬盤儲存,,其執(zhí)行任務(wù)時動態(tài)存取的數(shù)據(jù)要保存在內(nèi)存中,而人可以通過鍵盤控制程序命令的執(zhí)行過程,,把所有這些CPU的外設(shè)組合在一起就叫做“個人電腦”,。
3 什么是單片機?
個人電腦功能強大,,計算速度快,,是較為理想的計算機。但當我們需要用一個小裝置控制微波爐定時開關(guān)時,,個人電 腦就顯得笨重和昂貴,。因此人們設(shè)計出一種濃縮型電腦,大的有幾平方厘米,,小的比米粒還小,,它們叫做“單片機”——單片微型計算機。CPU是一個芯片,,單片 機也是一個芯片,,看起來外觀差不多,,它們有什么不同呢?答案是:單片機內(nèi)除了集成有CPU外,,還集成了程序儲存器ROM(可理解為硬盤),、數(shù)據(jù)儲存器 RAM(可理解為內(nèi)存),輸入輸出接口(可理解為顯示器,、鍵盤插座),,有的單片機內(nèi)還集成了電機驅(qū)動電路、視頻解碼電路,、AD轉(zhuǎn)換器,、無線傳輸電路等,使 得單片機功能變得非常強大,。單片機的特長在于可以用單個芯片和簡單外部電路去實現(xiàn)復雜的控制操作,,因此非常適合機器人控制。其實在絕大多數(shù)機器人中都有單片機的影子,。簡單的和中等復雜的機器人可以用單片機直接控制,,高度復雜的機器人用“個人電腦”或者“超級計算機”指揮許多單片機來完成機器人控制。
4 學習單片機的捷徑是什么,?
所謂捷徑就是少走彎路,。我剛開始學單片機時走了不少彎路,很多朋友和我都有相似的經(jīng)歷,,剛開始接觸單片機,,面對琳瑯滿目的圖書教材,不知選擇哪本,;想實踐時不知到哪買單片機,;不知如何編程下載程序……
A 對于初學者仔細看本文就是學習單片機的捷徑之一。
B 到圖書館或者書店在數(shù)十本單片機書中選一本你能看懂,,而且覺得案例有趣的“實在,、生動、活潑”的單片機書做為你的入門讀物,。
C 建議先從51單片機學起,。掌握51后再學AVR,然后學ARM,、DSP等,。
D 在學習過程中實踐非常必要。你需要一臺電腦,。如果是臺式電腦,,你可以花十幾元購買25針并口下載線,如果是筆記本電腦,你只能購買幾十元到幾百元的USB ISP編程器,。
E 用萬用板自己焊一個單片機最小系統(tǒng),,或者購買開發(fā)板。沒有必要使用昂貴的仿真器,。
F 你需要上網(wǎng)下載單片機編程軟件,,比如51用Keil編程,AVR用CVAVR編程,,在編程軟件中編好程序,,然后生成HEX文件,再上網(wǎng)下載并口燒程序軟件 或者USB ISP燒程序軟件,,用燒程序軟件加載HEX文件,,然后將編程線查到你的單片機電路板上,即可把程序燒到單片機中,。
G 拔下編程線,,然后接通單片機板電源,你可以看到單片機系統(tǒng)在運行,。
H 如果系統(tǒng)不能正常運行,,首先檢查電路是否接錯,然后檢查程序是否燒錯,,如果以上都沒毛病,,研究程序是否編錯。有時系統(tǒng)不能正常運行并不意味著有什么地方錯 了,,只是某些參數(shù)沒設(shè)置好,,你需要不斷運行、修改程序,、調(diào)試參數(shù)、再運行如此往復,,直到你對系統(tǒng)運行滿意為止,。有時這是一個非常艱苦的重復勞動,調(diào)整數(shù)百 次上千次,,你無法回避,,只能堅定信念,勇往直前,。
I 到淘寶網(wǎng)上買東西更方便,、更便宜。
二 在單片機誕生前人們用什么控制機器人
1 模擬計算機
在數(shù)字計算機誕生前,,人們用電子管,、電容器和電感線圈、電阻搭建模擬計算機,能夠完成許多簡單的計算和控制任務(wù),。所謂模擬計算機就是其計算采用的信號不是 1,、0數(shù)字信號,而是電壓連續(xù)變換的模擬信號,,類似于自動控制原理中的各種控制器采用的運算,。別小看了模擬計算機,上世紀80年代中東戰(zhàn)爭時,,阿拉伯國家使用的蘇制全自動自行防空炮內(nèi)采用模擬計算機實現(xiàn)計算飛機軌跡并控制火炮射擊目標,。
2 齒輪和凸輪組成的控制器
在模擬計算機誕生前,也就是蒸汽機時代,,有些機械天才硬是用數(shù)百個齒輪和凸輪搭建出機械計算機,,人們通過轉(zhuǎn)動印有數(shù)字的各種齒輪,另一些齒輪就將運算結(jié) 果顯示出來,。機械計算機在人類史上上曾經(jīng)是高科技產(chǎn)品,,第二次世界大戰(zhàn)時,德國著名的密碼機就是一種機電混合式計算機,,它當時是最保密的通信工具,。
3 發(fā)條和秒表和繼電器組成的控制器
在電氣時代開始時,人們用鐘表內(nèi)機械的旋轉(zhuǎn)分時控制一些繼電器的通斷,,從而控制一些機床和生產(chǎn)線的運行,。這種裝置類似于早期洗衣機內(nèi)的定時器。
三 入門首選 AT89S51系列單片機
1 簡介
1980,,英特爾公司開 發(fā)出一種簡易的8031CPU,,在當時該CPU性能不比8086差很多,但價格較便宜,,因此被很多低端應用選中,。由于市場看好,ATMEL公司購買了 8031的內(nèi)核,,把Flash存儲器和加強型IO口融入進去開發(fā)出了AT89系列單片機,。所有兼容8031指令和內(nèi)核相似的單片機統(tǒng)稱為51單片機,它是 目前應用最廣泛的8位單片機之一,。因51單片機結(jié)構(gòu)簡單,,指令易學,應用廣泛,,因此是初學單片機首選機型,。如果有人想不學51,直接學AVR,,那么此人一 定會遇到很多難題,,困惑和郁悶將伴隨著學習過程。如果學了51再學AVR和其他單片機,人們會發(fā)現(xiàn)“所謂單片機都不過如此”,。
2 性能
根據(jù)任務(wù)具體需要選擇最合適的單片機,,使單片機資源充分利用,使系統(tǒng)性價比達到最高,,同時兼顧未來擴展需要,,不一味追求高性能單片機,這就是選單片機的原則,。
AT89S51有4K的Flash程序存儲器,,128字節(jié)的RAM,32條IO口,,中斷系統(tǒng)具有6個中斷源,、5個終端矢量、2個中斷優(yōu)先級的中斷結(jié)構(gòu),; 串行口是一個全雙工的串行通信口,;AT89S51的電源電壓為4.0-5.5V,AT89LS51的電源電壓為2.7-4.0V,;振蕩器頻率 0-33MHz(AT89S51),,0-16MHz(AT89LS51); 有ISP 在線編程功能,這個功能的優(yōu)勢在于改寫單片機存儲器內(nèi)的程序不需要把芯片從工作環(huán)境中剝離,。是一個強大易用的功能,。
AT89S52程序儲存器容量為8KB,還有AT89S55,,ROM容量更大,。
有很多公司生產(chǎn)了很多擴展型51系列單片機,有的帶有AD轉(zhuǎn)換器,,有的帶有比較器,,有的帶有PWM,讀者可以根據(jù)自身需要選擇合適的51單片機,,但要注意他們的管腳定義和編程方式,。
3 使用方法
AT89S51 適于做單片機學習板、電子時鐘,、超聲波測距儀等不需要采集模擬量和控制大功率外部元件的電路,。S51與過去的C51的區(qū)別在于S51支持ISP在線編程,, 即C51需要幾百元的編程器編程,,而S51僅需一條25針并口線和非常簡單的轉(zhuǎn)換電路即可接在臺式電腦打印機接口燒程序,下載燒程序小軟件即實現(xiàn)可對 S51單片機編程,。對51單片機編程一般選用Keil軟件,,可采用C語言或者匯編語言,編完程后選擇輸出HEX文件,然后用燒程序小軟件讀取HEX文件,, 再燒寫到單片機中,。
4 實踐經(jīng)驗
A 剛開始看書時,按照書上的電路圖連線然后通電調(diào)試,,但總不成功,,將自己的電路和書上的電路仔細對照發(fā)現(xiàn)不了問題。原因在于很多書上的電路圖都是“簡化 圖”,,即省略了一些電路,,而這些被省略的電路卻關(guān)乎系統(tǒng)的運行。比如,,當單片機書講到AD轉(zhuǎn)換電路,,給出的電路圖多省略了晶振和復位電路,按照AD轉(zhuǎn)換電 路圖搭出來的系統(tǒng)自然不能運行,。
B 51單片機P0口輸出信號時需要上拉電阻,,我經(jīng)常忘記加電阻,導致電路不好使,。
C 51單片機31引腳需要接正極,,以選擇采用內(nèi)部程序存儲器。如果忘記給這個引腳以正確的電壓,,你的單片機可能不能執(zhí)行程序,。
4 應用舉例