在科技的浩瀚宇宙中,51 單片機就像一顆獨特的星辰,散發著神秘而迷人的光芒。對于無數電子愛好者而言,點亮 51 單片機上的第一顆 LED 燈,不僅僅是一次簡單的操作,更像是開啟了一扇通往新世界的大門。這小小的 LED 燈,宛如黑暗中的啟明星,承載著我們對電子技術的好奇與憧憬,照亮了我們探索科技未知領域的道路 。
在接下來的篇章里,讓我們一同回溯這段充滿挑戰與驚喜的旅程,看看這顆 LED 燈如何點燃了我們心中對技術追求的熊熊烈火。
一,單片機的內部結構和工作原理
在單片機入門階段,我們只需要對其結構有個大概的了解就足夠了,等后期隨著單片機的深入學習,我們再回頭來對其結構進行深入的了解。我在這里也是給大家進行簡單的講解,不會太過深入,防止大家失去學習的信心。如圖所示:
FLASH就相當于硬盤,SRAM就相當于內存。對于硬盤和內存的概念我就默認大家熟知了,不懂的朋友們可以自行搜索一下這個視頻?<內存和硬盤的區別>進行了解。前面,咱們講過單片機就是一種集成電路,其實在單片機的內部就是如上圖所示的結構。單片機內核就是CPU處理器。我們寫的程序最終被存放在FLASH程序存儲器里面,我們創建的變量被存儲在SRAM數據存儲器里面。當單片機開始運行的時候,單片機就會從FLASH程序存儲器里面調取運行指令,這里告訴大家:FLASH程序存儲器是只讀存儲器,在單片機運行的過程中,產生的一切數據不會再放入FLASH里面,而是存放在數據存儲器里面,就是為了防止程序發生錯誤,引起單片機的工作異常。CPU會根據指令進行運算,會從數據存儲器里面調用數據。數據存儲器就是CPU用來調取和存放數據,存放中間計算結果的地方,SRAM掉電就會丟失數據,所以為了防止這種情況的發生,一般都會配有看門狗來進行監管,當看門狗檢測到電壓低于某一個范圍時,就會立馬讀取SRAM里面的數據進行存儲。然后,CPU把計算的數據再發送給寄存器(GPIO外設),寄存器根據數據再輸出1或0,各個引腳再根據1或0輸出對應的高低電平,來控制外圍設備,讀取外部數據也是如此,通過引腳的高低電平變化,寄存器來進行的1或0的數據存儲,再發給CPU根據指令進行處理。我們操作單片機,其實本質上就是操作各個引腳對應的寄存器。大家進行簡單的了解即可。
二,單片機的引腳介紹
我們就以我們要講解的DIP封裝的51單片機來展示。其它封裝的單片機會多出來4個引腳,多出來的引腳時P4口引腳,這不影響我們的單片機的講解。如圖所示:
?我們從外觀上可以看到上面,有個半圓的缺口。在所以的單片機里面,半圓缺口左邊對應單片機的第一號引腳,逆時針依次排號。
20號引腳和40號引腳分別為單片機的GND和VCC。
51單片機有4組I/O,分別為P0,P1,P2和P3,每組對用8個引腳,也就是說,我們控制這32個引腳來進行外圍設備的控制。大家可以看到有些引腳會有個表示,比如T2/P1.0,帶有‘ / ’表示這個引腳的功能是可以復用的,也就是說這個引腳有兩個功能。沒標識的引腳就是普通的I/O口。
T2,T0,T1這些為定時器或計數器引腳(后面會講解的)。
RXD和TXD為單片機的串口通信引腳,也是我們的程序下載引腳。
INT0和INT1為外部中斷引腳。
XTAL1和XTAL2為單片機的外部晶振引腳。
WR(寫信號)和 RD(讀信號)引腳主要用于外部數據存儲器(如 RAM)和 I/O 接口芯片的讀寫控制。它們是實現單片機與外部設備之間數據傳輸的關鍵信號引腳。
EA 引腳用于控制單片機是訪問內部程序存儲器還是外部程序存儲器。這是 51 單片機程序存儲選擇的關鍵引腳,當 EA 引腳接高電平時,單片機先從內部程序存儲器讀取程序指令。如果程序計數器(PC)的值超過了內部程序存儲器的容量范圍(對于 8051 單片機,內部程序存儲器一般為 4KB),那么它會自動轉向外部程序存儲器讀取剩余的程序指令。當 EA 引腳接低電平時,單片機忽略內部程序存儲器,直接從外部程序存儲器讀取所有的程序指令。這種方式適用于程序代碼量較大,需要外部擴展大容量程序存儲器(如 EPROM、Flash 等)的情況。由于現在我們的單片機都有內部的ROM所以我們不需要讀取外部ROM,所以我們直接接高電平就OK了。
ALE 引腳主要用于在訪問外部存儲器時,鎖存低 8 位地址信號。在 51 單片機訪問外部存儲器(包括數據存儲器和程序存儲器)的過程中,地址總線是分時復用的,它既用于傳輸地址信息又用于傳輸數據信息。當單片機訪問外部存儲器時,P0 口會先輸出低 8 位地址信息,此時 ALE 引腳會輸出一個正脈沖。這個正脈沖可以被外部的地址鎖存器(如 74LS373)用來鎖存 P0 口輸出的低 8 位地址,使得地址信息在數據傳輸階段能夠保持穩定。現在,單片機內部都自帶豐富的RAM,不再需要擴展RAM,所以這個引腳用處不大。
PSEN 引腳是程序存儲器讀選通信號,用于控制對外部程序存儲器的讀取操作。它是單片機從外部程序存儲器讀取指令時的關鍵控制信號。當單片機從外部程序存儲器讀取指令時,PSEN 引腳會輸出一個低電平脈沖。這個低電平信號用于選通外部程序存儲器,使其將存儲的程序指令輸出到數據總線上,然后單片機就可以從數據總線上讀取這些指令并執行。
P0口比較特殊,它要接上拉電阻才能驅動,至于什么是上拉電阻? 它是怎樣的電路? 我們都會在數碼管那個章節講到的。
總結:以上引腳大家先做了解就足夠了,后面學習到的時候,我都會進行詳細的講解的。
三,最小系統單片機的電路介紹
最小的單片機系統是由電源,主控芯片,晶振電路和復位電路組成的。先給大家看電路圖:
?復位電路的作用:
- 系統初始化
- 復位電路的主要作用是使單片機內部的各個寄存器和電路恢復到初始狀態。當單片機復位時,程序計數器(PC)被清零,這意味著單片機從程序存儲器的起始地址(對于 51 單片機來說,一般是 0000H)開始執行程序。同時,其他特殊功能寄存器(SFR),如累加器 A、寄存器 B、PSW(程序狀態字)等也會被初始化為固定的值。
- 例如,PSW 寄存器在復位后被設置為 00H,這使得單片機進入初始的工作狀態,如默認選擇工作寄存器組 0。這種初始化功能確保了每次單片機上電或者手動復位后,系統都能以一個確定的、一致的狀態開始運行,就像將系統進行了一次 “歸零” 操作。
- 解決程序異常情況
- 比如,在一個工業控制環境中,周圍可能存在較強的電磁干擾。當干擾導致單片機程序出錯時,按下復位按鈕,復位電路就能讓單片機重新啟動,避免了設備長時間故障,保障了系統的可靠性和穩定性。
- 在單片機運行過程中,可能會由于干擾、程序錯誤或者其他突發情況導致系統出現異常。例如,程序進入了死循環,或者數據被錯誤地修改,導致系統無法正常工作。此時,復位電路可以通過外部復位信號(如手動復位按鍵)使單片機重新復位,恢復到正常的工作狀態。
晶振電路的作用:
- 提供時鐘信號
- 晶振電路為單片機提供了穩定的時鐘信號。51 單片機內部的各種操作,如指令執行、數據傳輸、定時器 / 計數器工作等,都需要時鐘信號來進行同步。時鐘信號就像是單片機的 “心跳”,它決定了單片機的工作速度和時序。
- 例如,51 單片機的一個機器周期是由 12 個時鐘周期組成的。晶振頻率的高低直接影響了單片機的機器周期時間。如果晶振頻率為 12MHz,那么一個機器周期就是 1 微秒()。這種精確的時鐘信號使得單片機能夠按照設計好的時序和速度來執行程序指令。
- 保證系統時序穩定
- 單片機在與外部設備通信或者進行內部模塊之間的協同工作時,需要嚴格的時序控制。晶振電路提供的穩定時鐘信號是保證這些時序的基礎。
- 例如,在使用 51 單片機的定時器 / 計數器功能時,定時器的計數頻率是由晶振頻率經過內部時鐘分頻電路得到的。如果晶振頻率不穩定,定時器的定時精度就會受到影響,進而導致與定時器相關的功能(如定時采樣、定時控制等)出現錯誤。穩定的晶振電路可以確保這些功能的準確性和可靠性。
四,成為“點燈大師”
講解了那么多的單片機的基礎知識了,也該進行實操了。今天,咱們就來點亮人生中的第一顆LED燈。在點燈之前,咱先認識一下LED電路。
大家知道,我們能控制單片機的引腳輸出高低電平 ,給引腳為邏輯1,它就會輸出高電平,給0就會輸出低電平。上圖的LED燈是共陽極的,它的正極都接在一起,8顆LED燈分別與單片機的P1口接在一起,每一個引腳對應一顆LED燈。當我們給0時,就會輸出低電平,LED就會正向的導通,LED就會亮,反之就滅。我們使用的時STC國產宏晶提供的芯片安裝包,接下來我教大家怎么安裝STC提供的芯片安裝包,我們需要先下載好stc-isp燒錄軟件,這個文件我放在文章頂部了,各位可以自行下載。進行如下操作:
OK各位,接下來進行代碼演示:
#include <STC89C5xRC.H>
void main()
{P10=0; //STC的頭文件里面,我們可以直接進行I/O的操作
}
進行頭文件的展示:?
?各位至于Keil5怎么使用,怎么下載我就不再這多講了,大家可以自行搜索相關視頻。接下里看實驗現象: