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