目前,單片機(jī)型號(hào)種類(lèi)繁多,以其優(yōu)越的控制性能在自動(dòng)化控制領(lǐng)域占有重要地位。如今單片機(jī)無(wú)處不在,像我們的電冰箱、空調(diào)、洗衣機(jī)都是單片機(jī)在內(nèi)部控制,當(dāng)然,他們所用的單片機(jī)是定制的,并不是我們學(xué)習(xí)時(shí)使用的單片機(jī)。除此不同品牌的單片機(jī)芯片采用的內(nèi)核也會(huì)不同,比如INTEL公司的MCS-51內(nèi)核(代表芯片:AT89系列、國(guó)產(chǎn)STC系列等),ARM公司的高性能”Cortex-M3”內(nèi)核(代表芯片:STM32系列)等。因?yàn)閮?nèi)核的差異,使得他們?cè)谑褂弥幸矔?huì)有所不同。
對(duì)于初學(xué)者來(lái)說(shuō),51單片機(jī)中的STC89C52是很不錯(cuò)的選擇,因?yàn)樗阋耍▎纹瑑r(jià)格在8RMB左右),而且相對(duì)容易學(xué)習(xí)。接下來(lái)將以這款芯片為例介紹51單片機(jī)。
![圖片](https://mmbiz.qpic.cn/mmbiz_jpg/Px0x0xOsMVYtRiaptO9smicSJgxvy60V2QAxC1gRj5JBuBMpN1srJ1tNg6NcjNg25ZnNERIxh3iaKIfzZlHXNCvmQ/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1)
首先簡(jiǎn)單介紹這款芯片:
1.STC89C52是STC公司(中國(guó)深圳宏晶科技公司)生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有8K字節(jié)系統(tǒng)可編程Flash存儲(chǔ)器(8K對(duì)單片機(jī)來(lái)說(shuō)不小了,當(dāng)然不能跟我們的手機(jī)比),使用MCS-51內(nèi)核,指令代碼完全兼容傳統(tǒng)8051。
2.工作電壓范圍很廣(這里只介紹5V版本),在3.3V~5.5V之間都能工作,但是電壓越高,工作電流也會(huì)更大,通俗的說(shuō),如果用單片機(jī)點(diǎn)亮一顆LED燈,使用5.5V供電,燈的亮度要比3.3V供電時(shí)亮,耗電也會(huì)更多。
3.通用I/O 口(4x8=32個(gè)),復(fù)位后為:P1/P2/P3 是準(zhǔn)雙向口/弱上拉, P0 口是漏極開(kāi)路輸出,作為 I/O 口用時(shí),需加上拉電阻。(除非某I/0口置零,否則它就輸出高電平)
4.工作頻率范圍:0~40MHz,相當(dāng)于普通8051 的0~80MHz,實(shí)際工作 頻率可達(dá)48MHz,其工作頻率取決于晶振頻率,我們常用的是12MHz、11.0592MHz。
5.ISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程),可通過(guò)串口(RxD/P3.0,TxD/P3.1)直接下載用戶程 序。在學(xué)習(xí)過(guò)程中,我們只要使用ISP即可,也就是制作好電路板之后,只要把RxD/P3.0,TxD/P3.1通過(guò)排針引出來(lái),我們就可以通過(guò)USB-TTL把程序燒錄到單片機(jī),不需要再把單片機(jī)芯片從系統(tǒng)板上取出來(lái)。
6.共3 個(gè)16 位定時(shí)器/計(jì)數(shù)器。即定時(shí)器T0、T1、T2
其他參數(shù)就不詳細(xì)介紹,其資料可自行在網(wǎng)上查閱。
首先需要了解這款芯片的引腳圖,才能根據(jù)引腳連接各種元件。(暫時(shí)只標(biāo)注常用的的功能)
接下來(lái)詳細(xì)探討各模塊:
** 1,I/O口**
I/O口即輸入輸出口,是單片機(jī)用來(lái)輸出或者輸入信號(hào)的端口。STC89C52共有四組(P0、P1、P2、P3),每組8個(gè)(每組I/O口能同時(shí)輸出8位二進(jìn)制數(shù)。其CPU計(jì)算時(shí)的數(shù)據(jù)寬度正好也是八位,所以該芯片為8位控制器),共32個(gè)I/O口。
單片機(jī)所有I/O口默認(rèn)狀態(tài)都是高點(diǎn)平,除非在程序里將其置0,這樣的設(shè)定可以讓單片機(jī)運(yùn)行更穩(wěn)定。
通常,I/O口都會(huì)連接上拉電阻,其目的一是使單片機(jī)運(yùn)行穩(wěn)定,二是提高單片機(jī)驅(qū)動(dòng)能力,即讓單片機(jī)能控制更大的負(fù)載。上拉電阻我們常用阻值為10K的9P排阻即可(其大小在1~10K都可,電阻小可提高驅(qū)動(dòng)能力,電阻大可以降低功耗)。它有9個(gè)引腳,一個(gè)為公共端,另外八個(gè)引腳與I/O口相連。其結(jié)構(gòu)及接線圖如下圖所示。注意,除了上拉電阻,還有下拉電阻,上拉電阻的公共端是接VCC,下拉電阻的公共端是接GND。
2.時(shí)鐘電路
這里的時(shí)鐘并不是我們所說(shuō)的鐘表,而是指一種信號(hào)(理想的時(shí)鐘信號(hào)就是矩形波,或者說(shuō)脈沖波)。從數(shù)字電子技術(shù)中學(xué)習(xí)知道,在邏輯電路中,必須依靠時(shí)鐘信號(hào)才能工作(例如觸發(fā)器,每收到一個(gè)時(shí)鐘信號(hào),就動(dòng)作一次),單片機(jī)其實(shí)就可以看成就是一個(gè)集成化的邏輯電路。所以我們需要外接時(shí)鐘電路,來(lái)讓單片機(jī)工作。
時(shí)鐘電路的核心是晶振,它是一種可以產(chǎn)生穩(wěn)定震蕩頻率的電子元件。它的基本參數(shù)是震蕩頻率,單位為MHz,其參數(shù)決定了單片機(jī)的工作頻率。其數(shù)值一般刻在晶振元件上面。常用的單片機(jī)晶振主要有12.000MHz和11.0592MHz,當(dāng)程序中使用了定時(shí)器,使用11.0592MHz晶振可以定時(shí)更準(zhǔn)確。
時(shí)鐘電路除了晶振還有兩個(gè)瓷片電容(30pF),這兩個(gè)電阻可以起到微調(diào)頻率的作用。
晶振電路有兩個(gè)端口XT1和XT2,將這兩個(gè)端口分別與單片機(jī)的18腳(XTAL2)、19腳(XTAL1)相連即可為單片機(jī)提供時(shí)鐘信號(hào)(這兩個(gè)端口沒(méi)有順序,可以隨意連接)。
3.復(fù)位電路
復(fù)位電路說(shuō)白了就是用來(lái)重啟單片機(jī),使單片機(jī)初始化,重新開(kāi)始執(zhí)行程序。當(dāng)單片機(jī)因程序問(wèn)題出現(xiàn)故障(比如程序中出現(xiàn)不可控的死循環(huán)),可通過(guò)復(fù)位電路向單片機(jī)第9腳RET發(fā)送一個(gè)復(fù)位信號(hào),單片機(jī)就可自行復(fù)位。這個(gè)復(fù)位信號(hào)是一個(gè)連續(xù)2個(gè)機(jī)器周期(24個(gè)時(shí)鐘周期)的高電平。也就是單片機(jī)的RES腳如果連續(xù)兩個(gè)機(jī)器周期都是被置于高電平,單片機(jī)就會(huì)自動(dòng)復(fù)位。
所以最簡(jiǎn)單的復(fù)位電路就是上圖所示。按下開(kāi)關(guān)K,VCC接入單片機(jī)RST,兩個(gè)機(jī)器周期后,單片機(jī)復(fù)位。(實(shí)際使用中,你按下按鈕立刻松開(kāi),這段時(shí)間已經(jīng)遠(yuǎn)超過(guò)兩個(gè)機(jī)器周期,所以按下復(fù)位鍵不需要停頓再松開(kāi))如果一直按著復(fù)位鍵,單片機(jī)則不會(huì)進(jìn)入工作狀態(tài),只有松開(kāi)復(fù)位鍵單片機(jī)才開(kāi)始工作。
一般來(lái)說(shuō),單片機(jī)上電以后自動(dòng)從程序開(kāi)頭執(zhí)行,所有寄存器也是初始值,上電之后立即執(zhí)行程序本是沒(méi)有問(wèn)題的。但是在一些復(fù)雜的電路中,單片機(jī)的外接電路很多,有時(shí)候會(huì)有電容電感之類(lèi)的,他們上電之后并不能立即進(jìn)入工作狀態(tài),他們有個(gè)“充電”過(guò)程,雖然時(shí)間短,但是單片機(jī)執(zhí)行一條指令是微秒級(jí)的,很容易讓單片機(jī)誤判,出現(xiàn)意想不到的錯(cuò)誤。如何避免這種現(xiàn)象?
請(qǐng)?jiān)O(shè)想:如果單片機(jī)上電之后,不立即進(jìn)入工作狀態(tài),而是停頓“一會(huì)兒”,等其他元件充電完畢,再進(jìn)入工作狀態(tài),那就可以躲開(kāi)上電初期的不穩(wěn)定因素,從而避免誤判。
那如何實(shí)現(xiàn)這個(gè)停頓呢?這就依賴于復(fù)位電路的上電自動(dòng)復(fù)位了。
上面是單片機(jī)常用的復(fù)位電路。
其原理涉及到電路原理中的KCL定律和一階電路的零狀態(tài)響應(yīng),不感興趣可略過(guò)。
上電后,電解電容C1充電,其電壓變化為 [式1],
而RET處的電位即對(duì)地電壓,可以看到,電阻R9的電壓在數(shù)值上正好等于RET的電位,
根據(jù)基爾霍夫電壓定律,R9的電壓=電源電壓-電容C1電壓,即,
式中的τ為時(shí)間常數(shù),其值為τ=RC=1000X22/1000000=22ms,其電壓變化曲線如圖(簡(jiǎn)略繪制,僅供參考):
可以看到在很長(zhǎng)一段時(shí)間里(其實(shí)不到20ms),Ur都保持在較高的電位,也就是RET為高電平(3.7V以上電壓?jiǎn)纹瑱C(jī)都認(rèn)為是高電平),在這段時(shí)間,足夠單片機(jī)躲過(guò)上電初期的不穩(wěn)定。當(dāng)Ur的電壓減小到不足以讓單片機(jī)判定為高點(diǎn)平,復(fù)位失效,單片機(jī)工作。
可以看到這種復(fù)位電路也能手動(dòng)復(fù)位,按下開(kāi)關(guān)S1,電容C1通過(guò)R10放電,松開(kāi)S1,電容C1又開(kāi)始充電,其情形與上電復(fù)位相同,RET接收到高電平,單片機(jī)復(fù)位。
所以復(fù)位電路的作用一是開(kāi)機(jī)自動(dòng)復(fù)位,躲過(guò)上電時(shí)的不穩(wěn)定;二是手動(dòng)復(fù)位,在單片機(jī)運(yùn)行出錯(cuò)時(shí)使用。
4.其他引腳
并行串口:第10、11腳是單片機(jī)的并行串口,作用就是燒錄程序。注意這兩腳是P3.0、P3.1復(fù)用了。燒錄程序需要用到燒錄工具USB-TTL。
實(shí)際的USB-TTL有很多型號(hào),有的型號(hào)有10個(gè)引腳,但燒錄程序只需用到四個(gè)(VCC、GND、RXD、TXD)。所以我們需要四根杜邦線,首先,將轉(zhuǎn)換工具上的VCC、GND與單片機(jī)系統(tǒng)板的VCC、GND連接,然后把燒錄工具的RXD與單片機(jī)的TXD連接,燒錄工具的TXD與單片機(jī)的RXD連接。因?yàn)閮蓚€(gè)引腳一個(gè)是發(fā)送數(shù)據(jù),一個(gè)是接收數(shù)據(jù),轉(zhuǎn)換工具發(fā)送數(shù)據(jù)(TXD),單片機(jī)自然是接收數(shù)據(jù)(RXD),反之同理。另外,燒錄程序還需用到軟件STC-ISP,這是專(zhuān)門(mén)用于STC系列單片機(jī)的燒錄軟件。
存儲(chǔ)器選通:?jiǎn)纹瑱C(jī)的31腳是存儲(chǔ)器選通EA,單片機(jī)內(nèi)部存儲(chǔ)空間很小,如果需要擴(kuò)展空間,就需要用到這個(gè)功能。當(dāng)EA置于高電平,單片機(jī)從內(nèi)部存儲(chǔ)器開(kāi)始執(zhí)行程序;當(dāng)EA置于低電平,單片機(jī)則從外部存儲(chǔ)器開(kāi)始執(zhí)行程序。對(duì)初學(xué)者來(lái)說(shuō),我們使用內(nèi)部存儲(chǔ)器就足夠了,所以可以直接將EA接VCC。
同樣,第30腳ALE為地址鎖存信號(hào),也是在有外部存儲(chǔ)器是使用,不用時(shí)將其懸空即可;29腳PSEN為外部存儲(chǔ)器讀選通信號(hào),同樣將其懸空。另外的40腳、20腳分別接電源正極、負(fù)極(地)不用多說(shuō)了。
-
微控制器
+關(guān)注
關(guān)注
48文章
7542瀏覽量
151316 -
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7484瀏覽量
163761 -
STC89C52
+關(guān)注
關(guān)注
41文章
330瀏覽量
82041 -
51單片機(jī)
+關(guān)注
關(guān)注
274文章
5702瀏覽量
123490
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論