標(biāo)題: 第2章 點(diǎn)亮你的LED 2.1 2.2 2.3 [打印本頁]
作者: 卓然塵世間 時(shí)間: 2026-3-13 11:25
標(biāo)題: 第2章 點(diǎn)亮你的LED 2.1 2.2 2.3
本章的標(biāo)題是點(diǎn)亮LED,雖然任務(wù)很簡(jiǎn)單,但是需要了解的單片機(jī)基礎(chǔ)知識(shí)卻很多,特別是對(duì)于初學(xué)者,剛開始要在頭腦中建立
一個(gè)單片機(jī)的概念,然后通過點(diǎn)亮一個(gè)LED小燈來增加初學(xué)者對(duì)單片機(jī)的興趣和自信。
2.1單片機(jī)的內(nèi)部資源 在這里所講到的單片機(jī)內(nèi)部資源,和傳統(tǒng)單片機(jī)書籍中講單片機(jī)內(nèi)部結(jié)構(gòu)不同,這里講到的內(nèi)部資源,是指作為單片機(jī)用戶,單片機(jī)提供給用戶可使用的東西。總結(jié)起來,主要是三大資源:
(1)Flash——程序存儲(chǔ)空間,早期單片機(jī)是OTPROM。
(2)RAM——數(shù)據(jù)存儲(chǔ)空間。
(3)SFR——特殊功能寄存器。
早期的單片機(jī)中,主要是用OTPROM(One Time Programmable Read-Only Memory,即一次可編程只讀存儲(chǔ)器)來存儲(chǔ)單片機(jī)的程序,程序只能寫入一次,如果發(fā)現(xiàn)錯(cuò)了,沒辦法,只能換一片重新寫入。隨著技術(shù)的發(fā)展,Flash以其可重復(fù)擦寫且容量大、成本低的優(yōu)點(diǎn)成為現(xiàn)在絕大多數(shù)單片機(jī)的程序存儲(chǔ)器。對(duì)于單片機(jī)來說Flash最大的意義是斷電后數(shù)據(jù)不丟失,這個(gè)概念類似于計(jì)算機(jī)的硬盤,保存了電影、文檔、音樂等文件,把電源關(guān)掉后,下次重新開計(jì)算機(jī),所有的文件都還照樣存在。
RAM是單片機(jī)的數(shù)據(jù)存儲(chǔ)空間,用來存儲(chǔ)程序運(yùn)行過程中產(chǎn)生的和需要的數(shù)據(jù),跟計(jì)算機(jī)的內(nèi)存是相似的概念,其實(shí)最典型的比喻是計(jì)算器。用計(jì)算器計(jì)算加減法,一些中間的數(shù)據(jù)都會(huì)保存在RAM里邊,斷電后數(shù)據(jù)丟失,所以每次打開計(jì)
算器都是從歸零開始計(jì)算。但是它的優(yōu)點(diǎn)是讀寫速度非常快,理論上是可無限次寫入的,即壽命無限,不管程序怎么運(yùn)行怎么讀寫,它都不會(huì)壞。
第三個(gè)資源是SFR,特殊功能寄存器。這個(gè)概念可能剛開始理解不了,但需要記住。單片機(jī)有很多很多特殊功能,每個(gè)功能都會(huì)對(duì)應(yīng)一個(gè)或多個(gè)SFR,用戶就是通過對(duì)SFR的讀寫來實(shí)現(xiàn)單片機(jī)的多種多樣的功能的。
講到這里,首先來了解一下51單片機(jī)。通常一說到51單片機(jī),指的都是兼容Intel MCS-51體系架構(gòu)的一系列單片機(jī),而51是它的一個(gè)通俗的簡(jiǎn)稱。全球有眾多的半導(dǎo)體廠商推出了無數(shù)款這一系列的單片機(jī),比如Atmel的AT89C52,NXP(Philips)的P89V51,宏晶科技的STC89C52……具體型號(hào)千差萬別,但它們的基本原理和操作都是一樣的,程序開發(fā)環(huán)境也是一樣的。這里要分清楚51這個(gè)統(tǒng)稱和具體的單片機(jī)型號(hào)之間的關(guān)系。
單片機(jī)內(nèi)部資源的三個(gè)主要部分清楚了,那么就選擇STC89C52RC這款單片機(jī)來進(jìn)行學(xué)習(xí)。STC89C52RC是宏晶科技出品的一款51內(nèi)核的單片機(jī),具有標(biāo)準(zhǔn)的51體系結(jié)構(gòu),全部的51標(biāo)準(zhǔn)功能,程序下載方式簡(jiǎn)單,方便學(xué)習(xí)。它的資源情況:Flash程序空間是8K字節(jié)(1K=1024,1字節(jié)= 8位),RAM數(shù)據(jù)空間是512字節(jié),SFR后邊會(huì)逐一提到并且應(yīng)用。
2.2單片機(jī)最小系統(tǒng) 什么是單片機(jī)最小系統(tǒng)呢?單片機(jī)最小系統(tǒng)是指用最少的原件組成單片機(jī)可以工作的系統(tǒng)。單片機(jī)最小系統(tǒng)的三要素就是電源、晶振、復(fù)位電路,如圖2-1所示。
2-1.png (78.52 KB, 下載次數(shù): 0)
下載附件
2026-3-13 11:14 上傳
圖2-1 單片機(jī)最小系統(tǒng)電路
這張最小系統(tǒng)的電路圖節(jié)選自Kingst51開發(fā)板原理圖,下面就照這張電路圖來具體分析最小系統(tǒng)的三要素。
2.2.1電源
這個(gè)很好理解,電子設(shè)備都需要供電。目前主流單片機(jī)的電源分為5V和3.3V這兩個(gè)標(biāo)準(zhǔn),當(dāng)然現(xiàn)在還有對(duì)電壓要求更低的單片機(jī)系統(tǒng),一般多用在一些特定場(chǎng)合,在學(xué)習(xí)中不做過多的關(guān)注。
STC89C52需要5V的供電系統(tǒng),Kingst51開發(fā)板是使用USB口輸出的5V直流電直接供電的。從圖2-1可以看到,供電電路在38腳和16腳的位置上,38腳接的是+5V,通常也稱為VCC或VDD,代表的是電源正極,16腳接的是GND,也可稱為VSS,代表的是電源的負(fù)極。+5V和GND之間還有個(gè)電容,作用下節(jié)課介紹。
此處普及一個(gè)看電路原理圖的知識(shí)。電路原理圖是為了表達(dá)這個(gè)電路的工作原理而存在的,很多器件在繪制的時(shí)候更多考慮的是方便原理分析,而不是表達(dá)各個(gè)器件實(shí)際位置。比如原理圖中的單片機(jī)引腳圖,引腳的位置是可以隨意放的,但是每個(gè)引腳上有一個(gè)數(shù)字標(biāo)號(hào),這個(gè)數(shù)字標(biāo)號(hào)代表的才是單片機(jī)真正的引腳位置。
單片機(jī)通常有不同的封裝形式,所謂的不同封裝可以理解為,同樣是加了水的面,但是捏成不同的形狀的饅頭,只是表現(xiàn)形式不同,實(shí)現(xiàn)的功能完全一致。在2014年《手把手教你學(xué)51單片機(jī)--C語言版》(第1版)時(shí)所設(shè)計(jì)的Kingst51開發(fā)板采用了DIP40封裝,是一種雙列直插式的封裝形式。目前編寫第3版的時(shí)候,決定采用QFP-44的封裝形式,是一種方形扁平式,如圖2-2所示。
除部分單片機(jī)開發(fā)板還采用DIP40封裝外,當(dāng)前現(xiàn)實(shí)中的產(chǎn)品幾乎見不到這種封裝的身影了。一方面QFP封裝體積更小,密度更高,集成度更高,占據(jù)空間更少;另外一方面產(chǎn)品設(shè)計(jì)要考慮成本,QFP封裝采用SMT表面貼技術(shù)焊接,而DIP封裝采用波峰焊或者手工焊接,后者單個(gè)引腳的焊接費(fèi)用接近前者的10倍。這樣一片DIP40封裝的單片機(jī)的焊接費(fèi)可能都會(huì)超過一片單片機(jī)的價(jià)格,因此在實(shí)際產(chǎn)品開發(fā)當(dāng)中除特殊需求外(比如散熱性能考慮),很少采用DIP封裝形式的芯片了。無限接近實(shí)際項(xiàng)目,從單片機(jī)封裝選擇開始。
圖2-2可以看出,DIP封裝的1腳在其最左上角,逆時(shí)針旋轉(zhuǎn)引腳號(hào)依次增加,一直到右上角是最大引腳號(hào)40腳。QFP封裝中,有一個(gè)小圓圈的位置為1腳,逆時(shí)針旋轉(zhuǎn)引腳號(hào)依次增加,一直旋轉(zhuǎn)一圈到最大引腳號(hào)44腳。圖2-2的封裝圖就是單片機(jī)實(shí)際引腳的位置
2-2-1.png (68.16 KB, 下載次數(shù): 0)
下載附件
2026-3-13 11:14 上傳
2-2-2.png (38.32 KB, 下載次數(shù): 0)
下載附件
2026-3-13 11:14 上傳
圖2-2 單片機(jī)封裝圖
2.2.2晶振
晶振,又叫晶體振蕩器,從這個(gè)名字就可以看出來,它注定一生都要不停振蕩的。它起到的作用是為單片機(jī)系統(tǒng)提供基準(zhǔn)時(shí)鐘信號(hào),類似于部隊(duì)訓(xùn)練時(shí)喊口令的人,單片機(jī)內(nèi)部所有的工作都是以這個(gè)時(shí)鐘信號(hào)為步調(diào)基準(zhǔn)來進(jìn)行工作的。STC89C52RC單片機(jī)的14腳和15腳是晶振引腳,接了一個(gè)11.0592M的晶振(它每秒鐘振蕩11059200次),外加兩個(gè)20pF的電容,電容的作用是幫助晶振起振,并維持振蕩信號(hào)的穩(wěn)定。
2.2.3復(fù)位電路
在圖2-1左側(cè)是一個(gè)復(fù)位電路,接到了單片機(jī)的4腳RST(Reset)復(fù)位引腳上,這個(gè)復(fù)位電路如何起作用后邊再講,現(xiàn)在著重講一下復(fù)位對(duì)單片機(jī)的作用。單片機(jī)復(fù)位一般分為三種情況:上電復(fù)位、手動(dòng)復(fù)位、程序自動(dòng)復(fù)位。
假如單片機(jī)程序有100行,當(dāng)某一次運(yùn)行到第50行的時(shí)候,突然停電了,這個(gè)時(shí)候單片機(jī)內(nèi)部有的區(qū)域數(shù)據(jù)會(huì)丟失,有的區(qū)域數(shù)據(jù)可能還沒丟失。那么下次打開設(shè)備的時(shí)候,用戶希望單片機(jī)能正常運(yùn)行,所以上電后,單片機(jī)要進(jìn)行一個(gè)內(nèi)部的初始化過程,這個(gè)過程就可以理解為上電復(fù)位,上電復(fù)位保證單片機(jī)每次都從一個(gè)固定的相同的狀態(tài)開始工作。這個(gè)過程跟打開計(jì)算機(jī)電源開機(jī)的過程是一致的。
當(dāng)單片機(jī)的程序運(yùn)行時(shí),如果遭受到意外干擾而導(dǎo)致程序死機(jī),或者程序跑飛的時(shí)候,就可以按下一個(gè)復(fù)位按鍵,讓程序重新初始化重新運(yùn)行,這個(gè)過程就叫做手動(dòng)復(fù)位,最典型的就是計(jì)算機(jī)的重啟按鈕(目前大多數(shù)電腦都沒有重啟按鈕了,而是通過長(zhǎng)按開機(jī)鍵關(guān)閉電源的方式)。
當(dāng)程序死機(jī)或者跑飛的時(shí)候,單片機(jī)往往有一套自動(dòng)復(fù)位機(jī)制,比如看門狗,具體應(yīng)用以后再了解。在這種情況下,如果程序長(zhǎng)時(shí)間失去響應(yīng),單片機(jī)看門狗模塊會(huì)自動(dòng)復(fù)位重啟單片機(jī)。還有一些情況是程序故意重啟復(fù)位單片機(jī)。
電源、晶振、復(fù)位構(gòu)成了單片機(jī)最小系統(tǒng)的三要素,也就是說,一個(gè)單片機(jī)具備了這三個(gè)條件,就可以運(yùn)行下載的程序了,其他的比如LED小燈、數(shù)碼管、蜂鳴器等設(shè)備都是屬于單片機(jī)的外部設(shè)備,即外設(shè)。最終完成用戶想要的功能就是通過對(duì)單片機(jī)編程來控制各種各樣的外設(shè)實(shí)現(xiàn)的。
2.3 LED小燈
LED(light-emitting diode),即發(fā)光二極管,俗稱LED小燈,它的種類很多,參數(shù)也不盡相同,Kingst51開發(fā)板上用的是普通的貼片發(fā)光二極管。這種二極管通常的正向?qū)妷菏?/font>1.8V到2.2V之間,工作電流一般在1mA~20mA之間。其中,當(dāng)電流在1mA~5mA之間變化時(shí),隨著通過LED的電流越來越大,肉眼會(huì)明顯感覺到這個(gè)小燈越來越亮,而當(dāng)電流從5mA~20mA之間變化時(shí),看到的發(fā)光二極管的亮度變化就不太明顯了。當(dāng)電流超過20mA時(shí),LED就會(huì)有燒壞的危險(xiǎn)了,電流越大,燒壞的速度也就越快。所以在使用過程中應(yīng)該特別注意它在電流參數(shù)上的設(shè)計(jì)要求。
下面來看一下發(fā)光二極管在Kingst51開發(fā)板上的設(shè)計(jì)應(yīng)用。USB供電接口圖以及電源開關(guān)圖如圖2-3所示。
2-3.png (105.66 KB, 下載次數(shù): 0)
下載附件
2026-3-13 11:14 上傳
圖2-3 USB接口電路和電源開關(guān)電路
圖2-3是Kingst51開發(fā)板上的USB接口電路。通過USB線,電腦給開發(fā)板供電和下載程序以及實(shí)現(xiàn)電腦和開發(fā)板之間的通信。這是一個(gè)標(biāo)準(zhǔn)16引腳的type-C的USB接口,從圖上可以看出,其中A6腳和A7腳是數(shù)據(jù)通信引腳,+5IN為USB電源正極,GND為電源負(fù)極。
將電源開關(guān)左邊的LED部分的電路單獨(dú)摘出來分析,如圖2-4所示。
2-4.png (3.67 KB, 下載次數(shù): 0)
下載附件
2026-3-13 11:14 上傳
圖2-4 LED小燈電路(一)
發(fā)光二極管是二極管中的一種,因此和普通二極管一樣,這個(gè)二極管也有陰極和陽極,習(xí)慣上也稱之為負(fù)極和正極,方向必須接對(duì)了才會(huì)有電流通過讓LED小燈發(fā)光。剛才提到接入的VCC電壓是5V,發(fā)光二極管自身壓降大概是2V,那么在右邊R34這個(gè)電阻上承受的電壓就是3V。現(xiàn)在要求電流范圍是1~20mA的話,就可以根據(jù)歐姆定律R=U/I,把這個(gè)電阻的上限和下限值求出來。
U=3V,當(dāng)電流是1mA的時(shí)候,電阻值是3K;當(dāng)電流是20mA的時(shí)候,電阻值是150歐,也就是R34的取值范圍是150~3K歐姆。這個(gè)電阻值大小的變化,直接可以限制整條通路的電流的大小,因此這個(gè)電阻通常稱之為“限流電阻”。在圖2-3中用的電阻是1K,這條支路電流的大小可以計(jì)算出來了,而這個(gè)發(fā)光二極管在這里的作用,是作為電源指示燈的,使用USB線將開發(fā)板和電腦連起來,這個(gè)燈就會(huì)亮了。
同理,在電源開關(guān)后級(jí)控制的位置,又添加了一個(gè)LED10發(fā)光二極管,當(dāng)打開開關(guān)時(shí),這個(gè)二極管才會(huì)亮起,如圖2-5所示。
2-5.png (26.13 KB, 下載次數(shù): 0)
下載附件
2026-3-13 11:14 上傳
圖2-5 電源開關(guān)電路
把圖2-4進(jìn)行一下變化,把右側(cè)的GND去掉,改成一個(gè)單片機(jī)的I/O口,如圖2-6所示。
2-6.png (2.92 KB, 下載次數(shù): 0)
下載附件
2026-3-13 11:14 上傳
圖2-6 LED小燈電路(二)
圖2-4由于電源從正極到負(fù)極有電壓差,并且電路是導(dǎo)通的,所以就會(huì)有電流通過,LED小燈因?yàn)橛辛穗娏魍ㄟ^,就會(huì)發(fā)光。把右側(cè)的原GND處接到單片機(jī)P0.0引腳上,那么如果單片機(jī)輸出一個(gè)低電平,也就是跟GND一樣的0V電壓,就可以讓LED小燈和圖2-4一樣發(fā)光了。
因?yàn)閱纹瑱C(jī)是可以編程控制的,可以讓P0.0這個(gè)引腳輸出一個(gè)高電平,就是跟VCC一樣的5V電壓,那么這個(gè)時(shí)候,左側(cè)VCC電壓和右側(cè)的P0.0的電壓是一致的,那就沒有電壓差,沒有電壓差就不會(huì)產(chǎn)生電流,沒有電流LED小燈就不會(huì)亮,也就是會(huì)處于熄滅狀態(tài)。下面,就用編程軟件來實(shí)現(xiàn)控制小燈的亮和滅。
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |