步驟1:什么是微控制器?
在使用微控制器進行設計之前,您確實需要知道什么是微控制器。盡管您可能還沒有意識到,但微控制器仍然在您身邊。許多人似乎對微控制器的想法感到不知所措。不久前,我和一個女人交談,當我告訴她我使用微控制器時,她回答說那些事情遠遠超出了她。我回答說也許她還不能與他們一起設計,但是她一直在使用那些小型計算機。她似乎以為我很瘋狂地建議她甚至可以以任何方式參與這種“高科技”的工作。這些微控制器是家庭和辦公室中許多產(chǎn)品的大腦。這些微控制器可以在手表,微波爐,電話,汽車和卡車,DVD播放器和機器人中找到,實際上,幾乎每個帶有顯示器的產(chǎn)品都將至少使用其中一種。因此,即使在工業(yè)化國家/地區(qū),大多數(shù)人已經(jīng)是微控制器用戶,即使他們不這樣認為。
什么是計算機?
微控制器是一種計算機,那么什么是計算機?所有計算機都由四個主要單元組成。這些包括輸入單元,輸出單元,中央處理單元和存儲單元。輸入單元是計算機獲取將用來執(zhí)行其工作的數(shù)據(jù)的方式。大多數(shù)人都知道臺式計算機上連接的輸入設備,鍵盤和鼠標等設備。中央處理單元執(zhí)行運行計算機程序的工作。它由一個控制單元和一個算術/邏輯單元(也稱為ALU)組成。這兩個單元共同構成了中央處理器單元(CPU)。在工作時,CPU將其指令或程序以及正在工作的數(shù)據(jù)保存在內(nèi)存單元中。計算機完成計算后,它將通過輸出單元顯示該工作的結果。連接到臺式計算機的某些輸出設備將是視頻顯示器和打印機。微處理器將計算機CPU的兩個部分(控制單元和ALU)組合到一個集成電路(IC)或芯片中。
計算機可以完成大量不同的工作。您可能最熟悉的計算機是坐在辦公桌上或辦公桌旁并運行Windows或Linux或MacOS的計算機。這些通用計算機將幫助您鍵入信函或學期票據(jù),平衡支票簿或會計賬簿,或者通過瀏覽Web來研究不同的主題。計算機的另一種工作是運行(或控制)一件設備。通過將計算機輸入單元中的電線連接到不同的開關或傳感器,并將該計算機輸出單元中的電線連接到燈,電動機和其他此類設備,計算機可以控制組裝線,微波爐,立體聲,甚至是飛機或太空飛船。實際上,任何可以由一個或多個開關操作的東西都可以連接到輸出線并由計算機控制。這些專用于設備控制的計算機稱為控制計算機,或簡稱為控制器。
就像微處理器將控制單元的兩個部分組合到一個IC中一樣,微處理器將計算機的四個部分組合到一個IC中–這些IC經(jīng)過特殊設計,包含了對控制設備。因此,它們被稱為微控制器。
如您所見,微控制器沒有內(nèi)在的復雜性。它們只是集成在單個芯片上的小型控制計算機。 Tiny2313實驗系統(tǒng)上的微控制器是Atmel的IC(或芯片),稱為AVR ATtiny2313A。
步驟2:告訴我您想做什么。
計算機僅在兩次使用之間像門擋一樣有用,而沒有程序告訴它該怎么做。給出計算機指令以執(zhí)行任務的過程稱為編程。程序幾乎只是計算機的指令列表。由于計算機僅知道電壓水平的存在或不存在,因此Tiny2313芯片使用電壓水平來告知其操作。 Tiny2313內(nèi)部的所有指令和數(shù)據(jù)實際上都是(約)5伏或0伏的電壓電平。為了方便起見,我們將這些電壓電平表示為1和0,而不是為了方便計算機。但是,盡管這些表示形式很好,但對于人類來說仍然不是很容易。在計算機開始出現(xiàn)后不久,人們編寫了工具來幫助對這些機器進行編程。最早的一些工具是語言翻譯器,它采用了更像人類的語言,并將其翻譯為計算機的一和零。高級語言或更接近人類語言的語言使程序員更容易告訴計算機該怎么做。將這些“高級”語言轉換為計算機的機器語言的過程稱為編譯。
MCS Electronics為Atmel的AVR系列生產(chǎn)了一種稱為BASCOM-AVR的語言編譯器。 BASCOM是BASIC編程語言的一種變體。這種語言是由達特茅斯學院的兩位教授于1960年代專門為初學者發(fā)明的。實際上,名稱BASIC是首字母縮寫,代表初學者通用符號指令代碼;換句話說,它是通用的(通用)代碼,供初學者向計算機提供執(zhí)行作業(yè)的符號指令。它的設計易于學習,并允許非計算機專業(yè)的學生快速編寫適用于大學計算機系統(tǒng)的程序。此BASIC的免費試用版僅受程序大小的限制。該限制為4K字節(jié),這使BASCOM-AVR成為學習Tiny-2313微控制器的便捷之選。您可以從MCS網(wǎng)站下載該語言。
獲取最新版本
在本書中,我們將安裝和使用BASCOM- AVR。您需要從發(fā)布商MCS Electronics獲得最新版本:
1。上網(wǎng)訪問http://www.mcselec.com,然后單擊屏幕左側的“下載”。
2。在“下載”頁面上,單擊頁面右側“下載”列表底部的BASCOM鏈接。
3。在BASCOM頁面上,單擊下載列表頂部的BASCOM-AVR鏈接。
4。在此頁面上,單擊鏈接以下載BASCOM-AVR演示版本。
5。在“條款和條件”頁面上,單擊“我同意”單選按鈕,然后單擊該按鈕繼續(xù)。這將打開下載對話框,確保選中“保存文件”單選按鈕,然后單擊“確定”按鈕。
6。在“保存到”對話框中,選擇您的桌面,然后單擊“保存”按鈕。
7。單擊瀏覽器上的后退按鈕以返回到BASCOM AVR下載頁面,并下載該手冊。這有很多信息,并且組織得很好。 8.另外,在BASCOM-AVR頁面上,您將找到有關BASCOM-AVR的更多信息,包括有關此編譯器的文章。
9。關閉或最小化您的瀏覽器。
10。遵循說明安裝BASCOM-AVR(您可以遵循MCS Electronics或電子書中的說明。)
步驟3:您正在駕駛我的螺母。
在PC上編寫Tiny2313程序時,您需要將該程序轉移到Tiny2313芯片上,本身,以便讓控制器運行程序。要將程序放入微控制器,您必須有某種方法將程序從PC上獲取到芯片中。工程師過去常常這樣做的方法是拿起芯片并將其放入稱為編程器的特殊設備中。上面是我舊的用于ATtiny2313控制器的Fun Card AVR編程器的圖片。運行編程軟件后,您將把裝有程序的芯片放入電路中。如果或者更確切地說,當您發(fā)現(xiàn)程序中的錯誤時,您可以將芯片從電路中取出,將其放入專用設備中以擦除程序(通常需要幾個小時),然后將其放回編程器中,然后啟動程序。整個過程再次。這會一遍又一遍地發(fā)生,直到您使程序正確無誤,或者(通常)您只是累了而退出。
我們將使用稱為ISP下載器電纜的電纜。 ISP的縮寫代表In System Programmer。這是工程師開發(fā)的一種方法,可以繞過使用專用程序員的舊方法。我們在微控制器板上有一個特殊的ISP連接器,只需將編程電纜連接到板上即可下載程序。所有編程活動均在電路板和微控制器芯片本身上完成。無需拉出芯片并移動它。
與套件一起訂購的ISP被稱為USBASP編程器。在談論如何設置BASCOM-AVR時,我們前面提到了程序員。(如果您購買了其他型號,則需要適當?shù)匦薷拇薎nstructable。)
為了使計算機能夠運行要使用硬件,您需要告訴它如何。您執(zhí)行此操作的方式是加載程序,稱為驅動程序。驅動程序只是一個程序,它告訴您的計算機如何與連接的設備通信。 Windows中內(nèi)置有一些驅動程序,用來告訴您的計算機如何使用鼠標,如何閱讀鍵盤,如何在屏幕上顯示圖片和文本。雖然不是所有人都使用USBASP編程器,所以我們需要為該編程器安裝驅動程序。
與使用BASCOM編譯器本身一樣,您將需要為USBASP下載驅動程序。程序員。為此,請按照電子書中的說明進行操作,或訪問以下網(wǎng)址:http://www.protostack.com/blog/2011/05/usbasp-driver-for-windows-7-and-windows-vista-x64/。/p》
第4步:讓我們構建一個東西。
從面包板開始。
如果您不想獲得套件, ,您將需要構建自己的開發(fā)套件(開發(fā)套件)。開發(fā)套件的最佳入門是使用無焊面包板。如果您不知道面包板是什么,請看一下我的面包板頁面:http://projects.granzeier.com/what-is-a-breadboar 。..您將需要使用上面的圖示來查看哪里放置跳線。您只需要三個組件:編程器連接器,ATtiny2313本身以及用于復位按鈕的SPST,常開瞬時按鈕開關。我使用了一個AVR面包板適配器(https://www.tindie.com/products/Granzeier/breadboard-avr-isp-adapter-kit/),但您也可以使用Real Eliot的USB Ghetto開發(fā)環(huán)境(https://www.instructables.com/id/EDRQZ56F5LD8KDX/,或任何其他AVR編程系統(tǒng)。
將組件放置在試驗板上后,只需將點連接起來即可。您可能需要使用AVR ATtiny2313數(shù)據(jù)表(http://www.atmel.com/Images/doc8246.pdf-2313和2313A非常相似,在接線方面沒有區(qū)別。只需對程序進行一些微小的更改(該程序在每個地方提到Tiny2313A的地方,如果您使用的是較舊的芯片,則只使用Tiny2313。)
步驟5:將您的2313連接到世界-點1。
讓我們大放異彩
LED是一種僅允許電流向一個方向流動的裝置,當電流確實流動時,它會發(fā)出光。您可以學習在我的商店中了解有關LED及其工作原理的更多信息:https://www.tindie.com/products/Granzeier/led-prototyping-pack/。)
帶上LED并將引線修整到大約1/4英寸(或大約1厘米)。用黑色記號筆或一滴手指標記LED的陰極(負極引線)是個好主意指甲油-可以在切割導線后幫助您識別陰極。您將把LED的導線跨到面包板中,跨越兩行。將一個360歐姆電阻(大約在220歐姆至470歐姆之間的任何地方都可以正常工作)的電阻放置在該行的其中一個孔中,并帶有LED陰極和接地電源軌。陽極(或LED的正極)將空出,以便您可以將LED連接到Tiny2313微控制器。看看面包板上的LED/電阻對的照片,以了解我的描述。
下一步,將電路板向下移動(遠離Tiny2313電路)約1英寸,并添加第二對LED/電阻。現(xiàn)在,在電路板下方再增加一英寸,再增加一對LED/電阻。這將為您提供三個LED,供您的微控制器打開和關閉。
盡管我在開發(fā)套件和商店的Tiny2313實驗系統(tǒng)中都使用了所有綠色的LED,但沒有理由您無法使用其他顏色的LED。實際上,您甚至可以使用三種不同的彩色LED。
步驟6:將2313連接到世界-Pt。 2。
您真的知道如何按下我的按鈕。
要為您的Tiny2313提供輸入,我們將使用簡單的按鈕開關。這些稱為常開(NO)SPST,瞬時按鈕開關。如果您看一下上面的開關的示意圖,您會發(fā)現(xiàn)該開關由兩個端子和一根小導體組成。當您按下按鈕時,小導體被壓在兩個端子上,從而允許電流流動。稍后,我們將看到這如何使Tiny2313能夠知道何時按下了按鈕。
看看上面的照片,您會看到將按鈕像放置在面包板上一樣LED。使用短跳線將交換機的一個端子接地,而讓另一端子自由連接至Tiny2313。將該開關電路從面包板上的最后一個LED/電阻對向下放置。
再重復一次,以便有兩個按鈕開關電路。
第7步:將您的2313連接到世界-鉑。 3。
這是我耳中的音樂(至少是噪音)。
這是最后一步構建開發(fā)套件。拿起揚聲器,然后將其安裝在面包板上,距離最后一個按鈕開關僅幾步之遙。像開關一樣,您將需要使用短跨接線將其中一個端子接地。您無法在圖片中看到它,但它在揚聲器下面,位于揚聲器的下方-將揚聲器的左端子接地。您將在另一端使用面包板連接器行將揚聲器連接到Tiny2313。
您的開發(fā)套件現(xiàn)已完成。如果您想使其更加穩(wěn)定和持久,則可以使用小滴膠水將組件固定在面包板上。如果選擇此選項,請小心避免在任何面包板孔內(nèi)粘任何膠水。
最后一個可選步驟(如果要使用永久版本)是您可以選擇一個魔術筆并突出顯示面包板排用于LED,開關和揚聲器的未連接引線。
第8步:這是我的小亮點。..
大多數(shù)程序員在學習一種新的編程語言時,都會從一個名為“ Hello World”的程序開始程序。這幾乎是用任何給定計算機的語言編寫的最簡單的程序。它所做的全部工作是將短語 Hello World 輸出到輸出設備上。這樣做的唯一目的是快速取得成功,并向新程序員表明該語言確實有效。在控制器領域,事實證明,要做的事情遠比輸出一些文本簡單得多。實際上,有時輸出文本可能非常復雜,所以我們做的事情要簡單得多。
微控制器世界中的Hello World等效項只是點亮一個LED。對于此Hello World實驗,請首先研究上面的示意圖。示意圖只是表示電子電路的圖片。在原理圖的頂部,我們有一個指向右邊的箭頭。該符號表示Tiny2313的輸出引腳的輸入(至電路)。從那里,我們有一條線向右移一點,然后調(diào)低。這只是代表將輸入連接到下一個組件的導線。該組件看起來像一個三角形,底部帶有一條橫條,左側有幾個小箭頭。此符號代表發(fā)光二極管(LED);如上所述,該設備在電流從底部(帶有條形)流到頂部時會發(fā)光。 LED的底部與之字形符號的頂部之間還有另一根導線。此曲折符號表示一個電阻;電阻器可保護LED和Tiny2313免受過多電流的影響。最后,還有另一根線連接到3條水平線的符號;
現(xiàn)在,使用上面的Tiny2313的引腳圖,您需要從Tiny2313的PB.0引腳連接跳線(第一行,第二行)。 (從右)到最左邊的LED的陽極。上圖顯示了用藍線連接的LED。現(xiàn)在,別笑得太厲害-畢竟,我是一名工程專業(yè)人員,而不是一名藝術家。無論如何,請繼續(xù),然后將短跳線插入面包板。這就是準備第一個微控制器程序所需要做的全部工作。
步驟9:開始編程。
現(xiàn)在我們已經(jīng)連接好組件,我們將在程序上工作。確保您沒有將電池或其他電源連接到面包房,這將使您的實驗系統(tǒng)從ISP插頭獲得電源。將USB編程器插入計算機上的USB插孔,并將電纜端插入Tiny2313面包板上的10針公接頭。
雙擊BASCOM-AVR圖標啟動BASCOM-AVR。在編輯窗口(BASCOM-AVR中最大的白色窗口)中,鍵入以下內(nèi)容:
‘標題:
’作者:Art Granzeier,GranzTronix
‘日期:
’說明:
‘配置節(jié)
$ regfile =“ ATtiny2313a.dat”’指定micro
$ crystal = 1000000‘內(nèi)部RC時鐘的頻率
$ hwstack = 32’默認-將32用于硬件堆棧
$ swstack = 10‘默認-將10用于SW堆棧
$ framesize = 40’默認-將40用于幀空間
‘主程序
結束
在“作者”中使用您的名字而不是我的名字
(位于下面所附的Template.bas文件中。您可以將Template.bas中的內(nèi)容復制并粘貼到BASCOM的編程窗口中。)
這稱為模板;它只是一個骨架,我們可以在其上構建真實的程序。我們將使用此模板啟動每個新程序,然后不必擔心基本的“內(nèi)務管理”。單擊“文件”,然后單擊“另存為”,保存您的模板。在“另存為”對話框中,將其命名為“ template”。從現(xiàn)在開始,每當您要為Tiny2313實驗系統(tǒng)創(chuàng)建新程序時,都將從加載模板開始,然后更改名稱。如果您不小心刪除或覆蓋了模板,則可以再次執(zhí)行上述步驟來重新創(chuàng)建模板。
像Tiny2313A這樣的計算機通常會從頂部開始執(zhí)行程序,然后在整個程序中進行下去。這稱為“自上而下”的程序執(zhí)行。這確實非常容易,就像您遵循某人的書面指示一樣;您可以從頂部開始,然后按照指示進行操作,就像正常閱讀一樣。
讓我們仔細看看這里發(fā)生的情況。請注意,前四行都以撇號(單引號或’)開頭,這告訴BASCOM編譯器該行上的所有內(nèi)容都是注釋,而忽略它。將注釋添加到程序中,以便程序員(您)可以知道程序在做什么。在開始時,我們只是提供有關程序的標識信息。實際上,這稱為程序的標識部分。
下一部分以另一條注釋行開頭,其中包含所謂的指令。這些行以美元符號($)開頭,它們指示BASCOM編譯器如何進行設置。如注釋行所示,這是配置部分的開始。前五行確實超出了本介紹的范圍,但是如果您看一下剛剛輸入的行,您已經(jīng)可以對這些指令有所了解。第一條指令,其中包含Tiny2313實驗系統(tǒng)上微控制器的名稱。由于BASCOM可以將您的BASIC程序轉換為Atmel AVR系列中許多不同的微控制器,因此它需要準確地知道目標芯片。此命令指示BASCOM將您的程序轉換為ATtiny2313。現(xiàn)在,您只需保留上面配置部分的指令行即可。
模板中的最后一行是End語句。每個程序都必須以End語句結尾,以防止程序因內(nèi)置的重置而重新開始。
現(xiàn)在我們有了這個框架,模板,設置,我們可以繼續(xù)編寫自己的程序了。 –完成框架后,這將非常簡單。在編輯屏幕中,使用模板(如上所示,請記住,使用您的名字作為作者,而不是我的名字),通過單擊“文件”菜單然后單擊“另存為。..”條目來啟動新程序。當“另存為”對話框出現(xiàn)時,通過在文件名字段中鍵入LED Test 01為程序命名,然后單擊對話框底部的“保存”按鈕。請注意,在BASCOM窗口頂部的藍色標題欄中,BASCOM正在顯示新程序的名稱。現(xiàn)在您就可以開始輸入新程序了。
像這樣更新程序的標識部分開始:
‘標題:LED Test 01
’作者:Art Granzeier,GranzTronix(再次使用您的名字)
‘日期:13 Oct 13(使用今天的日期)
’說明:打開LED燈
接下來,轉到配置部分的底部(在$ framesize指令的正下方)并添加以下行:
Config PortB = Output
在主程序注釋行中,添加以下行:
set
PortB.0‘打開LED
因此,您的整個程序應如下所示:
’標題:LED測試
‘作者:Art Granzeier,GranzTronix(再次使用您的名字)
’日期: 2013年10月13日(再次使用今天的日期)
‘說明:打開LED
’配置部分
$ regfile =“ ATtiny2313a.dat”‘指定micro
$ crystal = 1000000’內(nèi)部RC時鐘的頻率
$ hwstack = 32‘默認-使用32作為硬件堆棧
$ swstack = 10’默認-SW堆棧使用10
$ framesize = 40‘默認-幀空間使用40
Config PortB =輸出
’主程序
設置PortB.0‘打開LED
結束
在將其下載到Tiny2313中之前,讓我們仔細看一下這些行。標識部分與我們所討論的一樣。對您來說,這只是一系列注釋,目的是讓您知道該程序應該執(zhí)行的操作。配置部分的開頭(至少是指令語句)與我們之前所述的相同。配置部分中唯一的新增內(nèi)容是對我們來說是新的聲明。該行( Config PortB = Output )告訴控制器將端口B設置為輸出端口。可以將端口引腳設置為讀取引腳上的電壓電平(0V或5V),稱為輸入,或者在引腳上施加電壓(0V或5V),這稱為輸出。對于此程序,我們希望將引腳作為輸出;因此我們將端口設置為輸出。我們可以控制端口的各個引腳,但是在本例中,將整個端口設置為輸出會更容易。
最后,我們要解決問題了。該程序的最新行( set PortB.0 )實際上是完成工作的部分。 set語句告訴控制器將引腳設為高電平,或將其設置為加5伏。該語句的其余部分告訴Tiny2313控制器哪個引腳設置為高電平,即PortB.0。看一下Tiny2313芯片的示意圖;請注意,芯片上的引腳號12標記為PB0。 P的部分告訴我們,它是一個端口-這是一系列引腳,每個引腳都可以設置為感測電壓(0V或5V)并對電壓做出反應(該引腳在輸入時稱為輸入)這樣做),或者它可以輸出一個電壓(0V或5V),該電壓可以控制燈,繼電器,電動機或其他東西(該引腳稱為輸出)。正如在該行中提到的那樣,這將點亮LED。在那個別針上。端口B是Tiny2313上可用的四個端口之一。
現(xiàn)在,我們已經(jīng)編寫了程序,我們需要將其轉換為機器代碼,然后將程序發(fā)送至控制器(或下載該程序)。 )請記住,從前,將程序從類似于人的語言(例如BASIC)轉換為機器語言的過程稱為編譯。為了編譯程序,您需要單擊“程序”菜單,然后單擊“編譯”。這將啟動編譯器,并將您的程序轉換為’2313芯片可以理解的內(nèi)容,并且機器程序存儲在BASCOM的緩沖區(qū)中,準備發(fā)送到Tiny2313芯片。
現(xiàn)在,您的機器語言程序已經(jīng)存儲在緩沖區(qū)中,需要將緩沖區(qū)發(fā)送到微控制器芯片。再次單擊程序菜單,然后單擊菜單底部附近的發(fā)送到芯片。這將打開一個新的Programmer窗口。您可以在Programmer窗口的主窗口中看到緩沖區(qū)。要將緩沖區(qū)發(fā)送到微控制器,請單擊“芯片”菜單,然后單擊“自動編程”。您的程序將被發(fā)送到Tiny2313,然后Programmer窗口將消失。
看看您的Tiny2313實驗器系統(tǒng);請注意,最右邊的LED現(xiàn)在已點亮。恭喜恭喜。事情進展順利,是吧?
步驟10:剛剛發(fā)生了什么?
請參閱上面的示意圖,再一次。注意,按照該圖,我們將從Tiny2313取得一個輸出,并將其連接到LED,然后通過電阻將其連接到地。對?
什么?怎么了?
-
微控制器
+關注
關注
48文章
7547瀏覽量
151331
發(fā)布評論請先 登錄
相關推薦
評論