通過本實例了解和熟悉以下知識:
1、51單片機I/O端口的輸出操作;
2、了解單片機最小系統的組成;
3、了解單片機程序的基本框架;
4、了解LED發光二極管的特性。
電路設計思路:將一個發光二極管的一端連接到51單片機的一個I/O端口(P1端口)上,發光二極管的另一端連接到電源正極。
程序設計思路:編寫程序,通過程序控制連接發光二極管的I/O端口輸出高電平(或低電平)來控制發光二極管的點亮(或熄滅)。
本實例用到的基礎知識有以下幾方面:
1、51單片機P1端口結構及使用方法;
2、51單片機最小系統的電路組成;
3、發光二極管(LED)的工作原理及使用方法;
4、51單片機的基本程序框架。
下面我們來分別學習一下這些基礎知識。
首先我們來看看51單片機長什么樣,以及在電路圖中51單片機的標識符號,如圖1,圖2所示。
圖1 51單片機實物圖
圖2 51單片機的電路符號
51單片機有4個8位的并行I/O端口,分別是P0、P1、P2、P3。這4個端口分別有不同的電路結構及用途。本例中用到的是P1端口,所以我們先來了解一下51單片機P1端口的內部結構及工作原理。置于P0,P2,P3口的內部結構及工作原理,我們在后續的例子中陸續學習。
圖3所示是51單片機P1口的引腳內部結構。
圖3 51單片機P1端口內部結構圖
51單片機的P1端口只能作為普通的通用I/O口使用(P0,P2,P3口除了作為通用I/O口功能外,還有第二功能,接下來的實例中會講解)。
從圖3中可以看出,在其輸出端接有上拉電阻,所以它可以直接輸出高電平或者低電平,不需要外接上拉電阻了。
當P1口作為輸入口時,必須先向內部鎖存器寫“1”,這樣使場效應管VT截止,才能夠從讀引腳位置處獲取端口的電平狀態,否則場效應管如果處于導通狀態,就不能夠獲取正確的引腳電平狀態了。
我們知道,想要讓一個電路能夠正常工作,必須滿足它的最基本的工作條件,同樣的,對于單片機電路來說,想讓單片機電路工作起來,必須滿足其最基本的要求,這些要求有:電源,時鐘電路,復位電路。
51單片機的最小系統圖如圖4所示。
圖4 51單片機最小系統電路圖
對于電子產品來說,首先必須給它提供正常的電源才能工作,沒有一個穩定的、適配的電源,它就不能工作。對于51單片機來說,它需要5V的穩定直流電源供電。
單片機必須在穩定的時鐘脈沖下才能穩定的工作,就像我們列隊操練,必須在統一的“一二一”的口令下,才能夠保持隊型不亂,步伐一致。
單片機復位電路也是必須的,因為單片機開始工作時,需要先將單片機內部的數據、狀態配置在一個初始狀態下,才能夠按照程序設計的流程正常工作,比如單片機數據存儲區(RAM)中的數值都需要按照確定的初始化的默認值開始執行,如果每次不初始化,則這些數值可能每次單片機啟動時都不一樣,這樣就會導致程序執行出現問題。
發光二極管(LED)是單片機學習中最常見的兩種元器件(另一個元器件是按鍵,使用LED和按鍵就可以把單片機的大部分基礎功能實現,在后面的實例中我們會對此有深切體會)。
常見發光二極管的外形接結構圖如圖5所示。
圖5 發光二極管(LED)實物圖
發光二極管(LED)和普通二極管的特性一樣,都具備單向導電性,不同的是,當加在發光二極管兩端的電壓超過它的導通電壓(一般為1.7~1.9V)后,發光二極管導通,當流過它的電流超過一定值時(一般是2~3mA,不同顏色的發光二極管發光電流不一樣),開始發光。
任何程序的編寫都要遵循一定的規則和流程,對于單片機程序來說,同樣如此,單片機程序的一般框架如下。
#include <AT89X52.h> //頭文件包含
//全局變量聲明和定義
//函數聲明
int main(void)
{
//初始化設置
while(1)
{
//程序內容
}
}
本實例的電路如圖6所示。單片機的P1.0端口接發光二極管的負極,發光二極管的正極通過限流電阻接到電源的VCC端。
圖6 基于proteus的51單片機開發實例(1)--點亮一個小燈
本電路中發光二極管的驅動電路是典型的“灌電流”電路,具體原理是,當P1.0輸出高電平時,D1兩端都是高電平,所以發光二極管上無壓差,不會導通,也就不會發光;當P1.0輸出低電平時,D1兩端就有了壓差,從而導通,發光二極管開始發光。從電流流向來說,電流是從VCC經過限流電阻,到達發光二極管的正極,然后從發光二極管的負極流入到單片機的P1.0口,就好像是電流“灌入”了單片機的P1.0端口,所以稱為“灌電流”電流。(與之對應的,還有拉電流電路,下一個例子我們就采用拉電流的方式)
需要注意的是,該電路圖并不適合正式產品使用,因為單片機端口的輸入或者輸出電流的能力都是有限的,并且通常的單片機系統不可能只有一個發光二極管。在后面的例子中,我們會介紹更符合實際應用的發光二極管驅動電路。
本實例的程序代碼如下。
#include <AT89X52.h> //頭文件包含
int main(void)
{
P1=0xfe;//P1.0口輸出低電平
while(1)
{
//程序一直在此循環
}
}
對于程序中#include <AT89X52.h>這句話的作用,我們可以通過將該語句屏蔽后,編譯程序提示的錯誤信息來了解。
將該語句屏蔽后,編譯程序,會出現如圖6所示的錯誤提示,根據這個提示,我們知道,頭文件的其中一個作用就是將P1進行了預定義,只有這樣我們才能在程序中使用P1而不會出錯。
單片機程序編譯完成后,將生成的hex文件裝載到用proteus建立的仿真電路中,點擊開始仿真按鈕,就可以看到程序的運行結果了,可以看到LED被點亮了。如圖6所示。
圖6 仿真現象:發光二極管點亮
拓展:大家可以試著在proteus環境下,將電阻R2的阻值或者發光二極管D1的導通電流修改一下,然后再看看發光二極管的亮度會有什么變化。
發光二極管是單片機學習中最方便、最直接的指示程序運行結果的器件。所以我們要對發光二極管的特性和工作原理有充分的理解。在后面的實例中,我們將會經常看到使用發光二極管的點亮、熄滅、閃爍等狀態指示程序的運行狀態。
本系列實例基本都基于keil和proteus兩個軟件。所以大家需要熟悉如何在keil環境下編寫51單片機程序,如何在proteus環境下建立51單片機仿真項目。
程序寫好,如果有硬件,可以直接刷,如果沒有,我建議還是用仿真軟件,這樣調試時不用考慮硬件問題,把軟件調好,就可以慢慢調硬件了。
以后這是我們仿真的主戰場了。我們輸入網址labcenter,進入官網。
點擊下方的download,進入下載頁面,然后點擊藍色的下載演示版,此頁面中文是由瀏覽器自己翻譯的。
下載完,安裝方法可按提示進行,我電腦已安裝,就不演示了。如果覺得麻煩,可以私信我,我直接給你現成的。百度資源也可以。
獲取文件后,要解壓到文件夾。
打開壓縮文件,點解壓到。
解壓后,雙擊打開中間的文件。
接著看到下圖畫面,點擊"next"。
點擊"Yes"。進入下一步
這里選擇"Use a locally installed Licence Key"就是添加證書的意思點"Next"。
彈出下圖窗口,點擊紅框處"Browse For Key File"。
找到你一開始解壓的文件夾。雙擊打開,里面只會看到一個文件:LICENCE.lxk。雙擊該文件。
然后應該出現下圖,點擊"Install"。
出現新的對話框后。不要按回車鍵,這里需要注意的是,要手動選擇選擇》是
證書導入成功,然后就點擊"Close"。
成功后,點擊繼續
此時選擇你的安裝路徑(可以默認不改),如果你換了路徑,也就是裝到了別的盤里,要記住新的路徑,因為后面破解的時候需要你的安裝路徑。盡量不要讓文件夾出現中文名。會出錯
出現了下圖,不用點什么東西,就點"Next"就行了。
如有其它,點下一步就好,程序就會開始安裝。
至此,安裝完成,點"Finish"。隨后彈出的頁面關閉即可。到這一步只是把程序安裝好了,但是還沒有破解,所以還不能用,點擊"Finish"之后不要馬上就打開程序。
安裝完成之后,就是綠化了。回到你開始解壓出來的文件夾,找到破解這個文件。
打開破解程序后,如果你前面沒有修改安裝路徑的話,點升級就行了。如果改了,那么這里就把路徑改為你的安裝路徑。
然后就破解成功了。關閉破解程序。這時就算大功告成了,可以打開proteus了。
需要注意的是proteus默認是不會在桌面生成快捷方式的,需要的話請自己成。打開proteus的方法是在開始菜單,點"所有程序"(在下方),找到"Proteus 7Professional"這個文件夾,里面藍色圖標那個ISIS 7Professional就是Proteus的主程序。點擊就可以打開。
可以右鍵單擊,發送到桌面快捷方式,下次就打開方便了,接下來我們看下簡單的使用方法。
先是打開軟件,界面如下,跟我們的CAD、PS等界面基本一致,之前如果使用過類似軟件,那么這個軟件,上手就比較快了。
中間是編輯區,上邊和左邊是工具欄。
左側第二個,是電子元件的添加,以后會經常使用
在這個界面,單擊左側的P小按鈕,就可以出現,元件添加選項框,然后可以在選項框中,輸入需要的元件。這里我們演示的是輸入了一個單片機,選擇我們需要的型號后,單擊右下角的確定。
回到編輯區后,待添加的元件會出現一個紅色虛框,表示添加元件的位置,單擊左鍵即可添加。
添加完成后,可以通過滾輪進行放大和縮小。方便查看針腳。此時我們如果把鼠標放到針腳的端部,就會出現紅色虛框,如P2.0,21針腳處。
然后單擊左鍵,就可以繪制導線了,到達元件時,可以直接連接,若需要繪制一段導線,繪制完成后,雙擊即可。
就會在導線端部,形成圓點。接著可以添加其他元件。元件添加需要查表或者記住主要的元件名稱,都是英文的。后期會發布一個常用元件對照表,可以查詢。
下方還有添加正極和負極的,仿真軟件為我們提供了電源,電壓為5V,所以添加設備時默認電源已經接好,如果需要額外的電壓源,就需要添加電壓 或接地即可
在單片機上,右鍵單擊或左鍵雙擊,會出現編輯對話框。
如果我們需要添加程序,就需要在這個框中,單擊打開中間那個黃色的文件夾符號,選擇自己保存程序的位置。
然后,添加.hex格式的程序文件,如果你還沒有寫程序,或者寫了沒有編譯,又或者,也編譯了但是沒有在keil中選擇輸出.hex文件,那么你就什么也找不到。
成功后,會顯示文件名,如果你用的是11.0592晶振,下邊的晶振還需要更改下。默認是12.
然后確定后,單擊左下角的運行,就會開始程序的仿真了。我們可以通過元件的變化或者針腳電位的變化,來判斷是否正常運行。高電位是紅色,低電位是藍色,高阻態或不確定狀態為灰色。
到這里其實就基本可以完成一般的簡單仿真了,后期文章會詳細介紹具體的仿真程序演示。
如果你需要軟件,可以私信我,私信回復軟件或單片機,即可領取keil和仿真軟件。若領取失敗,還可以到公/眾/號-電氣學苑回復軟件或單片機,同樣可以領取。謝謝關注,我們一起加油。
更多多內容,歡迎關注百家號:小亮談電氣。微信公眾號:電氣學苑。