24小時(shí)聯(lián)系電話(huà):18217114652、13661815404
中文
- 您當前的位置:
- 首頁(yè)>
- 電子資訊>
- 技術(shù)專(zhuān)題>
- 單片機編程分步指南
技術(shù)專(zhuān)題
單片機編程分步指南
單片機編程分步指南
對于那些希望從微控制器編程開(kāi)始的人,這是一個(gè)循序漸進(jìn)的指南。本文首先介紹了將在本指南中使用的一些基本術(shù)語(yǔ),一系列工具,編程語(yǔ)言,最后是可下載代碼的示例以及逐步指南,可用于實(shí)踐微控制器編程。
但是在進(jìn)入微控制器編程之前。讓我們定義前兩個(gè)基本術(shù)語(yǔ):硬件和軟件。
硬件由系統中的物理組件組成,例如芯片,鍵盤(pán),鼠標,監視器,內存,I / O設備。與軟件相比,硬件更難開(kāi)發(fā),必須針對非常特定的應用程序進(jìn)行設計,并且它是高速系統中非常有效且完美的解決方案。
軟件是在硬件上運行的非物理組件或應用程序,例如操作系統,計算機游戲和網(wǎng)絡(luò )應用程序。軟件是高度可配置的,易于開(kāi)發(fā)且開(kāi)發(fā)速度較快,與硬件相比也非常便宜。
什么是微控制器
要了解什么是微控制器,我們首先需要了解什么是微處理器或CPU(中央處理單元)。CPU是任何計算機系統的心臟,就像執行任務(wù)時(shí)的人腦一樣。我們基本上可以將其分為兩個(gè)基本部分:
控制單元:該單元用于從內存中獲取數據。
執行單元:該單元用于執行或運行數據。
處理器類(lèi)型
處理器有很多類(lèi)別,例如通用處理器,專(zhuān)用系統處理器和多處理器系統。通用處理器有多種類(lèi)型:
?微處理器
?單片機
?嵌入式處理器
?數字信號處理器
微處理器是半導體設備或芯片上的計算機,而不是功能齊全的計算機。其中央處理器單元包含
?ALU
?程序計數器
?寄存器
?其他電路(時(shí)鐘時(shí)間,中斷)
微控制器是一種IC,其中包含微處理器和一些外圍設備,這些外圍設備將構成完整的功能計算機,例如ADC,RAM,ROM,DAC等外圍設備。
單片機的歷史
最初,英特爾公司是第一家制造微控制器的公司。第一個(gè)微控制器于1971年在美國生產(chǎn)。它是一個(gè)名為i4004的4位微控制器。后來(lái),英特爾當時(shí)使用8位微控制器生產(chǎn)了更復雜的模型,此后,東芝開(kāi)發(fā)了12位微控制器。
微控制器的應用
微控制器在許多行業(yè)中都有許多應用,例如汽車(chē),醫療,工業(yè)自動(dòng)化,航空航天,機器人技術(shù)。
例如,在汽車(chē)工業(yè)中,當今的現代汽車(chē)具有100多個(gè)微處理器,用于諸如空調,ABS,EBD和ADAS之類(lèi)的系統,或者諸如自適應居里控制器和車(chē)道輔助系統之類(lèi)的高級駕駛輔助系統,以下是ECU的圖像或電子控制單元。
在醫療領(lǐng)域,有些醫療設備包括微控制器,例如MRI,葡萄糖測試儀,便攜式EKG。下圖是葡萄糖測試設備。
在航空航天領(lǐng)域,大多數飛機都采用微控制器設計了新的航空電子系統。此外,還有所有基于微控制器的飛行控制系統,空中交通控制系統,導航和氣象系統。
流行的微控制器
微控制器的類(lèi)型和平臺很多,但是選擇微控制器取決于許多因素:
?申請
?預算
?表現
?GPIO引腳數
?內存大小
?工作環(huán)境溫度
?耗電量
AVR微控制器
下圖包含AVE12DA的框圖,AVE12DA是最流行的微控制器之一-AVR微控制器:
AVR微控制器由Atmel公司(現為Microchip)生產(chǎn)。Atmel擁有6個(gè)系列的AVR微控制器,4個(gè)系列的通用微控制器和2個(gè)專(zhuān)用的微控制器。通用微控制器是:
?8位–大型AVR
?8位– AT Tiny
?8位和16位– AVR Xmega
?32位– AVR
專(zhuān)用微控制器是:
?汽車(chē)AVR
?電池管理
車(chē)載AVR,顧名思義,是為汽車(chē)應用而開(kāi)發(fā)的。它可以在高達150攝氏度的高溫下工作,并且包括用于短路問(wèn)題的保護系統。
電池管理微控制器是為電池管理系統開(kāi)發(fā)的,以確保充電和放電操作的安全。
AVR平臺示例
?Arduino UNO
?Adafruit藍色水果微
?Raspduino
?Digispark Pro
ARM微處理器/微控制器
ARM微處理器是世界上最受歡迎的處理器,尤其是在消費類(lèi)應用中。您可能擁有基于ARM處理器的設備,但您不知道!在大多數成功的32位嵌入式系統中,ARM幾乎都是關(guān)鍵組件。第一個(gè)ARM于1985年開(kāi)發(fā)。
RISC技術(shù)
ARM使用了RISC技術(shù),RISC代表精簡(jiǎn)指令集計算機,這是一種在單個(gè)周期內交付簡(jiǎn)單指令的設計理念。它更多地依賴(lài)于軟件。另一方面,CISC技術(shù)更多地依賴(lài)于硬件。
RISC技術(shù)致力于減少處理器的指令集。另一方面,CISC處理器具有指令集的非固定編號。
ARM功能
Arm具有每個(gè)嵌入式系統設計人員想要的許多功能,例如,由于其緊湊的尺寸而降低了功耗,而且由于我們正在開(kāi)發(fā)嵌入式系統,因此高代碼密度是另一個(gè)功能,在大多數情況下,我們的資源將有限。
基于ARM的微控制器的內部結構
該圖顯示了大多數基于ARM的設備的內部結構:
框代表功能,線(xiàn)代表總線(xiàn)。讓我們詳細討論每個(gè)組件:
?ARM處理器是它負責處理操作的核心組件
?控制器用于協(xié)調系統功能,如存儲和中斷控制器
?外圍設備用于提供系統輸入和輸出
?總線(xiàn)用于在系統中不同組件之間交換數據
ARM平臺的例子
有許多具有手臂微處理器的設備和嵌入式平臺,例如
?Arduino到期
?樹(shù)莓派
?STM32F103C8T6
?恩智浦LPC1768
其他微控制器和平臺
正如我們在選擇微控制器或平臺之前所說(shuō)的,這取決于許多因素(預算,引腳數等)。還有其他微控制器和平臺,例如
?PIC微控制器
?8051
?ESP32
?摩托羅拉微控制器
單片機軟件和硬件工具
自從創(chuàng )建微控制器以來(lái),已經(jīng)有許多類(lèi)型的軟件和硬件開(kāi)發(fā)工具。當然,某些工具可以在各種微控制器類(lèi)型中使用,但是某些工具對于每個(gè)微控制器來(lái)說(shuō)都是非常特定的。在開(kāi)始微控制器編程之前,您可能需要熟悉微控制器編程工具以及最后但并非最不重要的開(kāi)發(fā)過(guò)程。
使用嵌入式開(kāi)發(fā)工具,我們可能需要以下工具:
組裝工
它是一個(gè)軟件工具,可以將匯編中的源代碼轉換為機器代碼,例如(GNU匯編器)。
編譯器
它是一個(gè)軟件程序,可以將高級編程語(yǔ)言的源代碼轉換為匯編語(yǔ)言或機器代碼。編譯可以是:
?本機:這意味著(zhù)您在同一臺計算機上運行編譯器和生成的代碼
?交叉:這意味著(zhù)您在計算機上運行編譯器,而生成的代碼在另一臺計算機(處理器體系結構)上運行。
鏈接器和定位器
鏈接器是一個(gè)程序,它收集和鏈接編譯和匯編操作并生成單個(gè)exe。
定位器是一種程序工具,可用于更改鏈接器輸出的內存映射。
仿真器
它是一個(gè)模擬真實(shí)場(chǎng)景的程序,它產(chǎn)生實(shí)時(shí)系統的近似值。使用模擬器:
?如果實(shí)際硬件不可用
?在危險的測試環(huán)境和場(chǎng)景中
調試器
它是一種軟件程序和硬件設備,可以與我的PC連接到嵌入式目標。使用調試器:
?設置斷點(diǎn)
?跟蹤執行
?轉儲內存
硬件調試器可以
?在線(xiàn)調試器
?調試板載代理軟件
閃存裝載器
它是一種程序和硬件設備,可用于:
?程序ROM /閃存
?觀(guān)察變量
?擦除ROM /閃存
探查器
Profiler是監視軟件代碼性能的工具
集成開(kāi)發(fā)環(huán)境
它是一個(gè)軟件程序,其中包含大多數工具。它可能包括
?文字編輯器
?編譯器
?調試器
?分析器
?模擬器
?鏈接器
單片機軟件語(yǔ)言
我們可以將它們分為兩種類(lèi)型:
高水平
?C / C ++
?Java
?艾達
使用此類(lèi)型將提供硬件級別的抽象
低級
機器碼
它是0和1,很難被人寫(xiě),但是很容易讓計算機理解
集會(huì )
它是一個(gè)助記碼和偽指令,以提高可讀性
例子:
一條指令由助記符(操作碼)+操作數組成
操作碼是機器處理器執行的操作
操作數是最終目標;操作碼必須執行一個(gè)操作。
匯編語(yǔ)言比機器代碼更具可讀性和可理解性,但是您需要在特定的處理器上使用匯編語(yǔ)言并了解其體系結構。
C / C ++編程語(yǔ)言
高級語(yǔ)言具有以下功能
?易于編寫(xiě)
?靈活
?獨立于處理器
?高生產(chǎn)率
使用AVR ATMEGA16的單片機編程示例
ATmega 16具有以下功能:
?16 Kb系統內自可編程閃存
?512字節EEPROM
?1 KB內部SRAM
?編程鎖的安全性
外圍功能
?帶有獨立振蕩器的實(shí)時(shí)計數器
?可編程串行USART
?四個(gè)PWM通道
?8通道10位ADC
?片內振蕩器
?開(kāi)機休息和掉電檢測
?內部RC振蕩器和中斷源
?電壓(2.7v至5.5v)