一、嵌入式
1、概念:
????????以應用為中心,以計算機技術為基礎,軟硬件可裁剪的專用計算機系統
以應用為中心:
- 系統設計的起點是 “具體應用場景”,按照應用需求出發
以計算機技術為基礎:????????
- 硬件技術:嵌入式處理器(如 ARM 芯片)、存儲器、傳感器、執行器
- 相當于 “系統的身體”,負責數據計算、存儲、與物理世界交互
- 軟件技術:嵌入式操作系統(如 Linux 嵌入式版、RTOS)、驅動程序、應用程序
- 相當于 “系統的大腦”,管理硬件資源、執行核心邏輯
- 軟硬件協同技術 硬件驅動適配、資源調度優化 確保軟硬件高效配合,避免資源浪費
- 硬件技術:嵌入式處理器(如 ARM 芯片)、存儲器、傳感器、執行器
軟硬件可裁剪的專用計算機系統:
- “可裁剪” 是該系統實現 “高效、低成本、低功耗” 的核心手段,指硬件模塊和軟件功能可根據應用需求 “增刪”,不保留冗余組件
- 降低成本、降低功耗、縮小體積、提高穩定性
- 專用計算機系統:該系統是為某一類或某一個特定應用場景設計的 “定制化計算機”,不具備通用計算機的 “多場景兼容能力”
- “可裁剪” 是該系統實現 “高效、低成本、低功耗” 的核心手段,指硬件模塊和軟件功能可根據應用需求 “增刪”,不保留冗余組件
????????以具體應用需求為出發點,依托計算機軟硬件技術,通過裁剪冗余組件,為特定場景(如智能設備、工業控制、汽車電子)打造的‘專機專用、高效精簡’的定制化計算機系統”,其本質是 “用最小的資源(成本、功耗、體積)滿足特定應用的核心需求”,這也是嵌入式系統區別于通用計算機的核心特征
二、51單片機
1、起源與發展
????????基于馮?諾依曼架構,通過執行存儲在內部程序存儲器中的指令,實現對數據的處理和外部設備的控制
????????1980年,由Intel公司MCS-51系列:8051型號單片機(工業控制領域),由MCU轉型到CPU
Atmel(AT89C51)、Philip(P89V51系列單片機,增強型單片機?ISP在線編程)、STC?宏晶半導體(STC89C51???STC89C52??STC89C52RC)
2、相關概念
????????CPU:Central?Processing?Unit(中央處理器)數據運算、指令處理,CPU性能越高,完成指令處理和數據運算的速度越快
MCU:Micro?Ctronller?Unit(微控制器),集成度比較高,將所有功能集成到芯片中(CPU、RAM、ROM、定時器、UART、IO),簡單控制,?成本低
MPU:Micro?Processing?Unit(微處理器),集成度低,只有一塊單獨的CPU,需外接外設、存儲模塊,復雜應用領域,跑Linux操作系統,成本高
GPU:Graphics?Processing?Unit(圖形處理器),圖形處理、圖形渲染(GPU性能越好,圖形顯示的質量越好)
NPU:Neural?Processing?Unit(神經網絡處理器),AI推理、硬件加速,神經網絡處理(卷積運算)->?華為Mate60?達芬奇NPU?AI自動優化照片
FPU:Floating?Point?Unit(浮點數運算單元),完成浮點數的運算和處理(完全遵循IEEE?754),大部分集成在CPU內部
SOC:System?On?Chip(片上系統),集成度比較高,將多個芯片集成到一塊芯片上(存儲芯片、外設芯片)????
3、RAM和ROM? ??
????????外存:主要存放程序、代碼、指令,掉電數據不丟失,讀寫速度慢,價格便宜(移動硬盤?1T?300)
內存:主要存放程序運行過程中的臨時變量、掉電數據丟失,讀寫速度快,價格昂貴(內存條??16G??300)
ROM:Read-Only?Memory,只讀存儲器,存放單片機程序,指令,掉電數據不丟失
RAM:Random??Access?Memory,隨機訪問存儲器,存放臨時變量、臨時數據,掉電數據丟失
4、單片機芯片內部結構:
????????CPU、RAM、ROM、Timer、PWM、IO、中斷、UART
CPU(中央處理器)
單片機的核心運算和控制單元,負責指令的讀取、譯碼和執行,處理算術運算(加、減、乘、除等)和邏輯運算(與、或、非等),并協調內部各模塊的工作。51 單片機的 CPU 為 8 位,一次可處理 8 位二進制數據。
RAM(隨機存取存儲器)
用于臨時存儲程序運行過程中的變量、中間結果和堆棧數據,特點是讀寫速度快,但斷電后數據會丟失。
ROM(只讀存儲器)
用于存儲用戶編寫的程序代碼和固定數據,斷電后數據不會丟失。
Timer(定時器 / 計數器)
兼具定時和計數功能:
????????定時模式:通過內部時鐘脈沖計數,實現精確延時(如毫秒級、秒級定時),用于控制 LED 閃爍頻率、周期性采樣等。
????????計數模式:對外部輸入引腳的脈沖信號計數,可用于測量頻率、統計脈沖個數等。
51 單片機通常包含 2 個 16 位定時器 / 計數器(T0、T1),增強型可能增加更多。
PWM(脈沖寬度調制)
部分單片機集成 PWM 模塊(或可通過定時器模擬),通過輸出占空比可調的方波信號,實現對外部設備的無級調速或調壓(如控制電機轉速、LED 亮度)。占空比越大,輸出平均電壓越高。
IO(輸入 / 輸出端口)
單片機與外部設備交互的接口,通常為并行端口(如 51 單片機的 P0~P3 口),可配置為輸入或輸出模式:
????????輸出:通過控制引腳電平(高電平 / 低電平)驅動 LED、繼電器等。
????????輸入:讀取外部信號(如按鍵狀態、傳感器數據)。
部分 IO 口還可復用為其他功能(如串口、定時器引腳)。
中斷系統
用于響應外部或內部緊急事件的機制,可暫停當前程序,優先執行中斷服務程序,處理完畢后返回原程序。常見中斷源包括:外部引腳觸發(如按鍵中斷)、定時器溢出、串口數據收發等。51 單片機支持 5 個中斷源(基礎型號),增強型可擴展更多。
?UART(通用異步收發傳輸器)
用于串行通信的接口,通過一根發送線(TXD)和一根接收線(RXD)實現單片機與其他設備(如電腦、傳感器、另一塊單片機)的異步數據傳輸,無需時鐘線同步,廣泛應用于數據監控、指令交互等場景
5、原理圖
? ? ? ? HC6800-MS原理圖
MCU單片機芯片:
????????STC89C52RC、DIP40?封裝:雙列直插式,40個引腳,劃分成4組(端口?寄存器?unsigned?char?P2;)
????????網絡編號:在實際電路中的一個編號,避免物理連線,相同網絡的編號的引腳在實際電路中是彼此互通
????????LED模塊:
????????發光二極管:具有單向導通性,分為共陽極和共陰極二極管
????????共陽極發光二極管的特性:
????????將所有發光二極管的陽極接到電源正極(VCC),陰極接到單片機的引腳。此時發光二級管陽極會輸出高電平(VCC?5V),如果發光二級陰極輸出一個低電平(0V),?陽極和陰極之間會形成一個正向的電壓差,滿足發光二極管的單向導通性,所以電流就會從陽極流向陰極,發光二級就被點亮
6、位運算
1、|:將二進制中的對應位的bit進行比較,如果有一個bit為1,結果為1;如果都為0,結果為0;
應用場景:指定位置1
unsigned?char?t?=?0x64;
將bit0和bit7置1:
t?|=?(1?<<?0)?|?(1?<<?7);
2、?&:將二進制中的對應位的bit進行比較,如果全為1,結果為1;如果有一個0,結果為0;
應用場景:指定位清0
unsigned?char?t?=?0xFF;
將bit?0?和?bit7?清0:?
t?&=?~(1?<<?0);
t?&=?~?(1?<<?7);
7、單片機程序創建、編寫、編譯、下載流程:
(1)安裝Keil4軟件
(2)點擊"Project"??->?"New?Project"??->?選擇路徑?(為工程起一個名字)
(3)選擇單片機芯片型號:Atmel->AT89C51,點擊"否",不拷貝啟動代碼
(4)向Group中添加C語言文件:??點擊左上方text按鈕,ctrl?+?S將文件保存到工程對應的目錄(為文件起一個名字,如?main.c),雙擊左側Grpup,點擊Add?將文件加入到對應的Group下
(5)編寫單片機程序:
#include?<reg51.h>,?加入51單片機頭文件
需要加入while(1)避免程序跑飛
(6)編譯單片機程序:
點擊"Target?Options"按鈕,點擊"Output"選項中的"Create?HEX?FILE"選項,生成hex文件
點擊左上方"Build"編譯單片機工程
會在對應目錄下生成xxx.hex十六進制文件
(7)下載單片機程序:
打開ISP軟件,連接串口線
選擇單片機芯片型號:STC89C52/C51/C52RC
8、發光二極管分類及其特點
????????按發光顏色:單色(紅 / 綠 / 藍等,波長單一、成本低,作指示燈)、白光(混光或熒光粉實現,可調色,用于照明)、全彩(RGB 組成,可變色,供舞臺 / 屏顯);
????????按結構:直插(引腳外露、簡單,作設備指示燈)、貼片(小體積、散熱好,主流用)、功率型(高亮度、帶散熱,作強光照明)、COB(發光勻,供面板燈);
????????共性:節能、長壽、環保,高溫易衰減需散熱。
二、練習
1、點燈
2、呼吸燈
main.c
led.c
led.h
delay.c
delay.h
3、數碼管顯示
實現從0—9999的刷新顯示
計算數字分別亮起來的對應的16進制的值
eg:顯示數字 0
亮起來的分別是:a、b、c、d、e、f、
對應的二進制是:0011 1111
對應的十六進制:0x3F
其他數字依次如此
main.c
digital.c
digital.h