一、基礎篇
單片機的基本要素
-
CPU核(如:51核 AVR核 M430核) -
ROM(READ ONLY Memory 繞母) -
RAM(random access Memory 隨機訪問寄存器 ) -
片上外設 -
總線
CPU核:相當于電腦的CPU吧、就是執行從ROM中取指令。這東西有幾個指標非常重要
一、主頻(如51核是2MHZ晶振12分頻過來就是2MHZ、AVR 是20MHZ(快達到DSP水平了)MSP430F1系列的是8MHZ)
二、指令集
三、字長 (就是一次能處理二進制數據的位數
ROM:相當于電腦的硬盤、存儲程序用的指標就是容量
一、容量
二、高級指標 、自編能力(就是程序在運行中可以自己擦出flash然后更改flash中的內容的能力一般我們用不到)
如:51(不具備自編能力)-->8KB
RAM:數據存儲器、相當于計算機的內存、ROM中的程序在運行時快速的存取數據、目前大多數單
一、容量
主要是程序運行時調用一些變量啊調用一些數組等都是存在RAM中的。
片上外設:相當于電腦的接口,鼠標接口、顯示器接口等
如:一下三種價格10元左右的單片機
總線:用于以上四部分之間的傳輸數據的通道、相當于硬盤的IDE線、光驅線等。
單片機能做什么?
單片機無所不能!
所謂的“微電腦控制控制”的核心就是單片機(微電腦控制比較時髦的)
覆蓋工業生產、日常生活、軍事設備、科研儀表儀器等所有智能化的應用場合
例如:智能洗衣機(一般洗衣機不能完成的功能)
定時完成洗衣脫水功能。
可以判斷衣服的干凈程度。
實現洗凈既停的功能。
蒸汽熨燙的功能。
刷卡投幣洗衣
更加智能LG公司的"IPAD"洗衣機一邊洗衣一邊聽歌。
例如:(LED顯示屏)
LED發光二極管構成顯示屏的像素點
單片機負責逐點火逐行掃描,并與電腦通信獲取圖片信息。
例如:(PH/ORP儀表)
用于環境監測、工礦企業、科學研究、水產養殖等場合的PH值的測定
讀取PH傳感器的模擬信號、內部處理后顯示在LCD上。(其實就是讀取液體的PH值)
還有很多數碼產品。。。
還有智能小車(我上大學時就做過這樣一個東西呵呵用ATMEGA8)
一、巡線
二、避障
三、電視機遙控器遙控(接受各個遙控器的鍵碼)
四、LCD顯示
----------------------------------------------------------------------------------
二、單片機的開發工具
- 編程器(燒寫器):將編譯出來的目標代碼固化到單片機的ROM內。(老的把單片機插到編程器上)
- 下載線:作用與編程器相同(ISP 通過一條下載線4根線和單片機通信就可以把代碼下載到單片機、好處不需要把單片機從電路板拔下來)
- 仿真器:對單片機的程序進行單步調試、設置斷點等,便于查找程序中的錯誤。其中JTAG仿真器可以在線仿真調試(它也分為2種一種是傳統的需要把單片機拔下來然后把仿真器的仿真頭插到板子上、通過后再把代碼固化到單片機中然后把單片機放回板子上、最近新型的JTAG仿真器是屬于在線仿真左邊的、你只需要把單片機插到板子上把JTAG跟單片機相連接就可以進行仿真與調試同事JTAG也具有把代碼固化到單片機中的能力、所以有仿真器的話下載線基本可以省了。)
- 軟件開發環境
- 硬件開發環境
AVR單片機簡介
AVR單片機的性價比遠高于51單片機
一、高速 、RISC、主頻最高可達20MHZ(首先主頻就快10倍 RISC又擴大好幾倍。)
二、低功耗、寬電壓(1.8V---5.5V)。最低全速運行功耗<300uA
三、I/O驅動能力強、推拉電流能力均達30mA ,可以直接驅動繼電器、蜂鳴器等。
四、片內資源豐富:外部中斷、定時器/計數器、UART、SPI、IIC、ADC、模擬比較器。
五、型號齊全、而且40腳以下的AVR均具有DIP封裝形式。(8腳到100腳需要的領域基本都有
ATMEGA系列中的ATmega16 應該算是我們用的最多一款因為很多人都是用它學習AVR單片機學習的入門。
選擇AVR開發有一下幾個優點
1、最小系統容易實現設計容易、只需要連接電源 焊接晶振就可以工作(當然如果對時鐘要求不是很嚴格的話
2、很多概念符合初學者的思路、理解起來更容易:例如AVR時鐘源(晶振、內部RC等)不經過分頻直接提供
3、AVR即具有簡單的、可以自制的ISP下載線和Jtage仿真器,又有DIP直插的封裝形式。(51占用一個串口,
4、AVR的C語言編程與C語言教科書上的標準C語言語法是幾乎一樣的,不像51的C語言,一些bit srf 之類的變
實際例子:
電路圖可以看到8個發光二極管可以進行閃爍和顯示二進制顯示等。
的AGND/AVCC/AREF這三個腳是你用到片內模/數轉換 ADC或模擬比較器的時候需要把這三個腳接上電源,如果正常用不到可以懸空就可以了。還有RESET可以懸空。Hander6 是一個簡易的下載線的接口 MOSI ,
下面是如何用萬用板焊接和編譯程序:
這個下載線電路還是比較簡單的,只需要一片 74HC244(也可以直接跟并口相連,用244的原因是因為防止燒壞并口所以接了一個緩沖器,其實就是用并口模擬的時序ISP)
下面我們編譯一個測試代碼:(打開AVR studio下圖)
第一項: ADORD
第二項:AVR GCC
最下面的location 這個是路徑
點擊:finish
下面的這步是選擇仿真調試的工具和將要開發的單片機的型號:如下圖
調試工具由于我們小板上沒有喊JATG ICE接口 如果焊了我們可以選JTAG ICE 選項會如下圖:
因為沒有焊,我們直接下載到單片機運行驗證。所以我們不選 JTAG ICE 選AVR Standlitor 意思就是軟件仿真不用仿真器 然后右邊選AT mega 16
點擊:finish
#include
int main (void ){ //avr GCC的語法呢
//由于發光二極管陽極是接在PD口上 屬于PD口輸出型的所以要把整個PD口都置為輸出
//PD端口方向寄存器 叫做
DDRD =0XFF;//0到7
}
//然后點擊編譯 如下圖
然后用 MuCode ISP
可以看到:如下圖所表現
下面加一些動態效果能夠讓燈閃爍起來 無非是讓產生兩種狀態
#include
int main (void ){ //avr GCC的語法呢
DDRD =0XFF;//方向寄存器
}
編譯驗證下:
可以看到mucode isp 自動就下載進去了。 因為有個選項是下圖
這個勾上后就沒當這個文件更新之后就自動下載到單片機里了。下面可以看到現象每隔1秒閃爍一次
由此說明我們的程序是成功的。今天到此結束。
最后送大家一句話: