51單片機C語(yǔ)言學(xué)習(第二課 初步認識51芯片)
上一課我們的第一個(gè)項目完成了,可能有懂C語(yǔ)言的朋友會(huì )說(shuō),"這和PC機上的C語(yǔ)言沒(méi)有多大的區別呀"。的確沒(méi)有太大的區別,C語(yǔ)言只是一種程序語(yǔ)言的統稱(chēng),針對不同的處理器相關(guān)的C語(yǔ)言都會(huì )有一些細節的改變。編寫(xiě)PC機的C程序時(shí),如要對硬件編程你就必須對硬件要有一定的認識,51單片機編程就更是如此,因它的開(kāi)發(fā)應用是不可與硬件脫節的,所以我們先要來(lái)初步認識一下51苾片的結構和引腳功能。MSC51架構的芯片種類(lèi)很多,具體特點(diǎn)和功能不盡相同(在以后編寫(xiě)的附錄中會(huì )加入常用的一些51芯片的資料列表),在此后的教程中就以Atmel公司的AT89C51和AT89C2051為中心對象來(lái)進(jìn)行學(xué)習,兩者是AT89系列的典型代表,在愛(ài)好者中使用相當的多,應用資料很多,價(jià)格便宜,是初學(xué)51的首選芯片。嘿嘿,口水多多有點(diǎn)賣(mài)廣告之嫌了。:P
圖2-1 AT89C51和AT89C2051引腳功能圖
表2-1 AT89C51和AT89C2051主要性能表
AT89C51 |
AT89C2051 |
4KB可編程Flash存儲器(可擦寫(xiě)1000次) |
2KB可編程Flash存儲器(可擦寫(xiě)1000次) |
三級程序存儲器保密 |
兩級程序存儲器保密 |
靜態(tài)工作頻率:0Hz-24MHz |
靜態(tài)工作頻率:0Hz-24MHz |
128字節內部RAM |
128字節內部RAM |
2個(gè)16位定時(shí)/計數器 |
2個(gè)16位定時(shí)/計數器 |
一個(gè)串行通訊口 |
一個(gè)串行通訊口 |
6個(gè)中斷源 |
6個(gè)中斷源 |
32條I/O引線(xiàn) |
15條I/O引線(xiàn) |
片內時(shí)種振蕩器 |
1個(gè)片內模擬比較器 |
圖2-1中是AT89C51和AT89C2051的引腳功能圖。而表2-1中則是它們的主要性能表。以上可以看出它們是大體相同的,由于A(yíng)T89C2051的IO線(xiàn)很少,導致它無(wú)法外加RAM和程序ROM,片內Flash存儲器也少,但它的體積比AT89C51小很多,以后大家可根據實(shí)際需要來(lái)選用。它們各有其特點(diǎn)但其核心是一樣的,下面就來(lái)看看AT89C51的引腳具體功能。
1.電源引腳
Vcc 40 電源端
GND 20 接地端
?。ぷ麟妷簽?V,另有AT89LV51工作電壓則是2.7-6V, 引腳功能一樣。
2.外接晶體引腳
圖2-2 外接晶體引腳
XTAL1 19
XTAL2 18
XTAL1是片內振蕩器的反相放大器輸入端,XTAL2則是輸出端,使用外部振蕩器時(shí),外部振蕩信號應直接加到XTAL1,而XTAL2懸空。內部方式時(shí),時(shí)鐘發(fā)生器對振蕩脈沖二分頻,如晶振為12MHz,時(shí)鐘頻率就為6MHz。晶振的頻率可以在1MHz-24MHz內選擇。電容取30PF左右。
?。吞柾瑯訛锳T89C51的芯片,在其后面還有頻率編號,有12,16,20,24MHz可選。大家在購買(mǎi)和選用時(shí)要注意了。如AT89C51 24PC就是最高振蕩頻率為24MHz,40P6封裝的普通商用芯片。
3.復位 RST 9
在振蕩器運行時(shí),有兩個(gè)機器周期(24個(gè)振蕩周期)以上的高電平出現在此引腿時(shí),將使單片機復位,只要這個(gè)腳保持高電平,51芯片便循環(huán)復位。復位后P0-P3口均置1引腳表現為高電平,程序計數器和特殊功能寄存器SFR全部清零。當復位腳由高電平變?yōu)榈碗娖綍r(shí),芯片為ROM的00H處開(kāi)始運行程序。常用的復位電路如圖2-3所示。
?。獜臀徊僮鞑粫?huì )對內部RAM有所影響。
圖2-3 常用復位電路
4.輸入輸出引腳
(1) P0端口[P0.0-P0.7] P0是一個(gè)8位漏極開(kāi)路型雙向I/O端口,端口置1(對端口寫(xiě)1)時(shí)作高阻抗輸入端。作為輸出口時(shí)能驅動(dòng)8個(gè)TTL。
對內部Flash程序存儲器編程時(shí),接收指令字節;校驗程序時(shí)輸出指令字節,要求外接上拉電阻。
在訪(fǎng)問(wèn)外部程序和外部數據存儲器時(shí),P0口是分時(shí)轉換的地址(低8位)/數據總線(xiàn),訪(fǎng)問(wèn)期間內部的上拉電阻起作用。
(2) P1端口[P1.0-P1.7] P1是一個(gè)帶有內部上拉電阻的8位雙向I/0端口。輸出時(shí)可驅動(dòng)4個(gè)TTL。端口置1時(shí),內部上拉電阻將端口拉到高電平,作輸入用。
對內部Flash程序存儲器編程時(shí),接收低8位地址信息。
(3) P2端口[P2.0-P2.7] P2是一個(gè)帶有內部上拉電阻的8位雙向I/0端口。輸出時(shí)可驅動(dòng)4個(gè)TTL。端口置1時(shí),內部上拉電阻將端口拉到高電平,作輸入用。
對內部Flash程序存儲器編程時(shí),接收高8位地址和控制信息。
在訪(fǎng)問(wèn)外部程序和16位外部數據存儲器時(shí),P2口送出高8位地址。而在訪(fǎng)問(wèn)8位地址的外部數據存儲器時(shí)其引腳上的內容在此期間不會(huì )改變。
(4) P3端口[P3.0-P3.7] P2是一個(gè)帶有內部上拉電阻的8位雙向I/0端口。輸出時(shí)可驅動(dòng)4個(gè)TTL。端口置1時(shí),內部上拉電阻將端口拉到高電平,作輸入用。
對內部Flash程序存儲器編程時(shí),接控制信息。除此之外P3端口還用于一些專(zhuān)門(mén)功能,具體請看 表2-2.。
?。狿1-3端口在做輸入使用時(shí),因內部有上接電阻,被外部拉低的引腳會(huì )輸出一定的電流。
P3引腳 |
兼用功能 |
P3.0 |
串行通訊輸入(RXD) |
P3.1 |
串行通訊輸出(TXD) |
P3.2 |
外部中斷0( INT0) |
P3.3 |
外部中斷1(INT1) |
P3.4 |
定時(shí)器0輸入(T0) |
P3.5 |
定時(shí)器1輸入(T1) |
P3.6 |
外部數據存儲器寫(xiě)選通WR |
P3.7 |
外部數據存儲器寫(xiě)選通RD |
呼!一口氣說(shuō)了那么多,停一下吧。嗯,什么?什么叫上拉電阻?上拉電阻簡(jiǎn)單來(lái)說(shuō)就是把電平拉高,通常用4.7-10K的電阻接到Vcc電源,下拉電阻則是把電平拉低,電阻接到GND地線(xiàn)上。具體說(shuō)明也不是這里要討論的,接下來(lái)還是接著(zhù)看其它的引腳功能吧。
5.其它的控制或復用引腳
(1) ALE/PROG 30 訪(fǎng)問(wèn)外部存儲器時(shí),ALE(地址鎖存允許)的輸出用于鎖存地址的低位字節。即使不訪(fǎng)問(wèn)外部存儲器,ALE端仍以不變的頻率輸出脈沖信號(此頻率是振蕩器頻率的1/6)。在訪(fǎng)問(wèn)外部數據存儲器時(shí),出現一個(gè)ALE脈沖。對Flash存儲器編程時(shí),這個(gè)引腳用于輸入編程脈沖PROG
(2) PSEN 29 該引是外部程序存儲器的選通信號輸出端。當AT89C51由外部程序存儲器取指令或常數時(shí),每個(gè)機器周期輸出2個(gè)脈沖即兩次有效。但訪(fǎng)問(wèn)外部數據存儲器時(shí),將不會(huì )有脈沖輸出。
(3) EA/Vpp 31 外部訪(fǎng)問(wèn)允許端。當該引腳訪(fǎng)問(wèn)外部程序存儲器時(shí),應輸入低電平。要使AT89C51只訪(fǎng)問(wèn)外部程序存儲器(地址為0000H-FFFFH),這時(shí)該引腳必須保持低電平。對Flash存儲器編程時(shí),用于施加Vpp編程電壓。Vpp電壓有兩種,類(lèi)似芯片最大頻率值要根據附加的編號或芯片內的特征字決定。具體如表2-3所列。
表2-3 Vpp與芯片型號和片內特征字的關(guān)系
看到這您對AT89C51引腳的功能應該有了一定的了解了,引腳在編程和校驗時(shí)的時(shí)序我們在這里就不做詳細的探討,通常情況下我們也沒(méi)有必要去撐握它,除非你想自己開(kāi)發(fā)編程器。下來(lái)的課程我們要開(kāi)始以一些簡(jiǎn)單的實(shí)例來(lái)講述C程序的語(yǔ)法和編寫(xiě)方法技巧,中間穿插相關(guān)的硬件知識如串口,中斷的用法等等。
存儲器相關(guān)文章:存儲器原理
上拉電阻相關(guān)文章:上拉電阻原理
評論