Philips 8位元P89C51單晶片基本電路與一般傳統的8051電路大致相同,電路包括:電源電路、時脈電路(Clock)、重置電路(Reset)。由於P89C51具有串列式線上下載程式功能(ISP),因此必須額外加入一組與PC電腦連接的串列通訊界面,才能執行程式下載功能。以下將電路分為基本電路,串列通訊電路,以及輸出入介面電路三部份做介紹。
P89C51基本電路
Philips公司出品的P89C51Rx2晶片有三種包裝型式,我們採用傳統40PIN DIP包裝IC,本電路使用的腳位如表4-1所示。基本電路結構如圖4-1,相關說明如下:
l 電源電路(電源/接地)︰在Vcc/Vss(40腳,20腳),分別連接5V直流電源與接地。一般為了讓單晶片系統電源品質,建議使用MC7805CT,額外加入穩壓電路,將提供穩定5V的電源,如圖4-2所示。(註圖左端的圓形接點是使用一般變壓器電源的圓形插孔)
l 系統時脈的振盪電路(Clock):在XTAL1/2 (18腳,19腳),時脈反相放大器輸出/入端,連接兩個20PF的電容與石英振盪器。P8C51RX2的最大頻率可用到33MHz,通常使用12MHz。由於考量使用串列通訊時,希望獲得更精確的傳輸率(baud rate) ,因此我們使用11.0592MHz的石英振盪器。(請參照本章4-7節的說明)
l 重置電路(RESET):在RESET (9腳),使用10KΩ電阻與10uF電容組成一RC電路,電容並接一按鍵開關,提供系統重置時,RESET接腳提昇到高電位的觸發信號,並保持一足夠的延遲時間。
串列通訊電路
在P89C51Rx2單晶片電路中加入串列通訊界面,透過RS-232連接到PC電腦,除了可提供單晶片線上下載程式功能(ISP)之外,還可以利用此資料傳輸通道,使用PC對單晶片系統做遠端控制的功能。相關界面電路製作的說明如下:
l 串列傳輸界面(UART):在RXD/TXD(10腳,11腳),使用ICL232的EIA界面(或MAX232),做為串列傳輸界面。這是因為遠距離串列傳輸容易受到雜訊干擾,加入ICL232的目的是將準位0V轉換為-8V~-15V,將準位5V轉換為8V~15V。
l 使用9PIN的RS-232標準接頭,將其中三支重要的接腳Pin2,Pin3,Pin5(接收、傳送與接地),連接ICL232的T2(Out)、R2(In)接腳,方便P89C51與PC的RS-232串列埠連接。
l 串列傳輸指示燈:在RXD/TXD(10腳,11腳),另外跨接一組LED指示燈。當程式下載或串列通訊傳輸時,可由指示燈顯示。
l 程式線上下載切換開關:在 (29腳)加入ISP_SW切換開關。當開關閉合時,
l 低電位狀態,可執行程式燒錄工作;當開關打開時,單晶片進入程式執行狀態。
輸出入界面電路
使用8PIN的腳座將P89C51的輸出入埠P0埠(32~39腳)、P1埠(1~8腳)、P2埠(21~28腳),可依照使用者的需求,搭配不同的輸出入界面電路,彈性運用這些輸出入埠。例如,LED、SW、LCD、鍵盤、ADC轉換、感測電路、馬達驅動電路…等。此外,P3埠(10~17腳)除了RXD/TXD做串列傳輸之外,還有INT0/INT1、T0/T1,亦可做拉出腳座,提供外部中斷與計數使用。本章稍後會介紹幾種常用的輸出入介面的應用實例。
表4-1:P89C51基本電路的相關腳位
接腳 |
說明 |
Vcc /Vss <40,20> |
電源(5V)/ 接地 |
XTAL1/2 <18,19> |
時脈反相放大器輸出/入端, 接石英振盪器(11.0592MHz) |
RESET <9> |
高電位動作, 系統重置, PC回到0000H(PB1) |
EA/Vpp/Psen <31> |
若系統讀取外部程式,接低電位(接+5v) |
PSEN <29> |
程式儲存致能ISP功能開啟需接地才能執行 (ISP_SW) |
P0.0~P0.7 <32-39> |
8位元I/O埠,外接記憶體做資料位址線 |
P1.0~P1.7 <1-8> |
8位元I/O埠 |
P2.0~P2.7 <21-28> |
8位元I/O埠,外接記憶體可做位址線 |
RXD/TXD <10,11> |
串列通訊輸出/入(P3.0, P3.1) |
INT0/1 <12,13> |
外部中斷輸入 (P3.2, P3.3) |
T0/T1 <14,15> |
計時計數器的輸入(P3.4, P3.5) |
WR/RD <16,17> |
外部資料的讀取/寫入(P3.7, P3.8) |
圖4-1:P89C51基本電路
圖4-2:P89C51的穩壓電路
【範例4-1】 P89C51基本電路測試:
測試P89C51電路是否正常,可以將P0埠連結一組LED BAR,並使用Keil uVision2 撰寫一個簡單的P0埠輸出程式,經組譯連結後的HEX檔,再使用Flash Magic將它下載測試電路上的P89C51,並觀察LED BAR是否正常顯示,以確認電路是否正確。操作步驟如下:
步驟1:依照圖4-3,製作單晶片89C51測試電路。P0埠加入測試電路。所需零件清單如表4-2。
圖4-3: 8個LED輸出做基本電路測試
表4-2: C51 P89C51基本電路的零件清單
零件名稱 |
規格 |
數量 |
備註 |
P89C51單晶片 |
P89C51RD2 |
1 |
CPU |
石英振盪器 |
11.059MHz |
1 |
時脈電路 |
鎝質電容 |
20P |
2 |
時脈電路 |
電解質電容 |
25v/10uf |
1 |
重置電路 |
重置開關 |
可復歸式開關 |
1 |
重置電路 |
ICL232 |
EIA界面/準位轉換 |
1 |
串列通訊電路 |
MC7805 |
|
|
穩壓電路 |
LED |
|
8 |
輸出測試用 |
電阻(排阻) |
330 |
|
輸出測試用 |
步驟2:開啟Keil μVision2,建立一新專案ch4_1。加入ch4_1.c檔案,輸入下列程式:
//範例4-1:P89C51基本電路測試
//檔名:ch4_1.C
#include
void main()
{
P0=0x52; // P0埠=01010010B
}
步驟3:執行ch4_1專案的編譯與連結。產生ch4_1.hex。
步驟4:將P89C51電路測試的串列通訊埠,經由RS-232傳輸線連接到PC電腦上。開啟測試電路電源,切換到程式下載狀態。
步驟5:開啟Flash Magic程式,設定晶片種類,選擇ch4_1.hex檔案,將測試程式下載到測試電路的P89C51晶片上。(Flash Magic程式的操作方式,請參照第2章2-6節的說明)
步驟6:將測試電路切換到執行狀態。觀察P0埠的8個LED燈號。顯示是否如下圖4-4。如果無法確顯示,重新檢查電路與程式下載動作是否,直到正確顯示為止。
圖4-4: P0埠的8個LED輸出測試結果