上一課我們的第一個項目完成了,可能有懂C語言的朋友會說,"這和PC機上的C語言沒有多大的區別呀"。的確沒有太大的區別,C語言只是一種程序語言的統稱,針對不同的處理器相關的C語言都會有一些細節的改變。編寫PC機的C程序時,如要對硬件編程你就必須對硬件要有一定的認識,51單片機編程就更是如此,因它的開發應用是不可與硬件脫節的,所以我們先要來初步認識一下51苾片的結構和引腳功能。MSC51架構的芯片種類很多,具體特點和功能不盡相同(在以后編寫的附錄中會加入常用的一些51芯片的資料列表),在此后的教程中就以Atmel公司的AT89C51和AT89C2051為中心對象來進行學習,兩者是AT89系列的典型代表,在愛好者中使用相當的多,應用資料很多,價格便宜,是初學51的首選芯片。嘿嘿,口水多多有點賣廣告之嫌了。

AT89C51 |
AT89C2051 |
4KB可編程Flash存儲器(可擦寫1000次) |
2KB可編程Flash存儲器(可擦寫1000次) |
三級程序存儲器保密 |
兩級程序存儲器保密 |
靜態工作頻率:0Hz-24MHz |
靜態工作頻率:0Hz-24MHz |
128字節內部RAM |
128字節內部RAM |
2個16位定時/計數器 |
2個16位定時/計數器 |
一個串行通訊口 |
一個串行通訊口 |
6個中斷源 |
6個中斷源 |
32條I/O引線 |
15條I/O引線 |
片內時種振蕩器 |
1個片內模擬比較器 |
1.電源引腳
Vcc 40 電源端
GND 20 接地端
*工作電壓為5V,另有AT89LV51工作電壓則是2.7-6V, 引腳功能一樣。
2.外接晶體引腳

XTAL2 18
XTAL1是片內振蕩器的反相放大器輸入端,XTAL2則是輸出端,使用外部振蕩器時,外部振蕩信號應直接加到XTAL1,而XTAL2懸空。內部方式時,時鐘發生器對振蕩脈沖二分頻,如晶振為12MHz,時鐘頻率就為6MHz。晶振的頻率可以在1MHz-24MHz內選擇。電容取30PF左右。
*型號同樣為AT89C51的芯片,在其后面還有頻率編號,有12,16,20,24MHz可選。大家在購買和選用時要注意了。如AT89C51 24PC就是最高振蕩頻率為24MHz,40P6封裝的普通商用芯片。
3.復位 RST 9
在振蕩器運行時,有兩個機器周期(24個振蕩周期)以上的高電平出現在此引腿時,將使單片機復位,只要這個腳保持高電平,51芯片便循環復位。復位后P0-P3口均置1引腳表現為高電平,程序計數器和特殊功能寄存器SFR全部清零。當復位腳由高電平變為低電平時,芯片為ROM的00H處開始運行程序。常用的復位電路如圖2-3所示。
*復位操作不會對內部RAM有所影響。

(1) P0端口[P0.0-P0.7] P0是一個8位漏極開路型雙向I/O端口,端口置1(對端口寫1)時作高阻抗輸入端。作為輸出口時能驅動8個TTL。
對內部Flash程序存儲器編程時,接收指令字節;校驗程序時輸出指令字節,要求外接上拉電阻。
在訪問外部程序和外部數據存儲器時,P0口是分時轉換的地址(低8位)/數據總線,訪問期間內部的上拉電阻起作用。
(2) P1端口[P1.0-P1.7] P1是一個帶有內部上拉電阻的8位雙向I/0端口。輸出時可驅動4個TTL。端口置1時,內部上拉電阻將端口拉到高電平,作輸入用。
對內部Flash程序存儲器編程時,接收低8位地址信息。
(3) P2端口[P2.0-P2.7] P2是一個帶有內部上拉電阻的8位雙向I/0端口。輸出時可驅動4個TTL。端口置1時,內部上拉電阻將端口拉到高電平,作輸入用。
對內部Flash程序存儲器編程時,接收高8位地址和控制信息。
在訪問外部程序和16位外部數據存儲器時,P2口送出高8位地址。而在訪問8位地址的外部數據存儲器時其引腳上的內容在此期間不會改變。
(4) P3端口[P3.0-P3.7] P2是一個帶有內部上拉電阻的8位雙向I/0端口。輸出時可驅動4個TTL。端口置1時,內部上拉電阻將端口拉到高電平,作輸入用。
對內部Flash程序存儲器編程時,接控制信息。除此之外P3端口還用于一些專門功能,具體請看表2-2.。
*P1-3端口在做輸入使用時,因內部有上接電阻,被外部拉低的引腳會輸出一定的電流。
P3引腳 |
兼用功能 |
P3.0 |
串行通訊輸入(RXD) |
P3.1 |
串行通訊輸出(TXD) |
P3.2 |
外部中斷0(INT0) |
P3.3 |
外部中斷1(INT1) |
P3.4 |
定時器0輸入(T0) |
P3.5 |
定時器1輸入(T1) |
P3.6 |
外部數據存儲器寫選通WR |
P3.7 |
外部數據存儲器寫選通RD |
5.其它的控制或復用引腳
(1) ALE/PROG 30 訪問外部存儲器時,ALE(地址鎖存允許)的輸出用于鎖存地址的低位字節。即使不訪問外部存儲器,ALE端仍以不變的頻率輸出脈沖信號(此頻率是振蕩器頻率的1/6)。在訪問外部數據存儲器時,出現一個ALE脈沖。對Flash存儲器編程時,這個引腳用于輸入編程脈沖PROG
(2) PSEN 29 該引是外部程序存儲器的選通信號輸出端。當AT89C51由外部程序存儲器取指令或常數時,每個機器周期輸出2個脈沖即兩次有效。但訪問外部數據存儲器時,將不會有脈沖輸出。
(3) EA/Vpp 31 外部訪問允許端。當該引腳訪問外部程序存儲器時,應輸入低電平。要使AT89C51只訪問外部程序存儲器(地址為0000H-FFFFH),這時該引腳必須保持低電平。對Flash存儲器編程時,用于施加Vpp編程電壓。Vpp電壓有兩種,類似芯片最大頻率值要根據附加的編號或芯片內的特征字決定。具體如表2-3所列。
|
Vpp =12V |
Vpp =5V |
||
印刷在芯片面上的型號 |
AT89C51 xxxx YYWW |
AT89LV51 xxxx YYWW |
AT89C51 xxxx-5 YYWW |
AT89LV51 xxxx-5 YYWW |
片內特征字 |
030H=1EH |
030H=1EH |
030H=1EH |
030H=1EH |
031H=51H |
031H=61H |
031H=51H |
031H=61H |
|
032H=FFH |
032H=FFH |
032H=05H |
032H=05H |
Tags:單片機,c語言教程,51芯片
責任編輯:adminESP32單片機入門篇
超聲波測距+溫度+報警的單片機代碼_51單片機超聲波測距C語言程序
七段數碼管顯示原理研究_數碼管顯示0~9對應的段碼
單片機C語言編程入門教程 流水燈程序示例
基于51單片機—多功能秒表,多功能計時器C語言程序
STC89C52單片機數字電流表電壓表源碼與電路圖 51單片機電流電壓
自學stm32單片機四個步驟,實用又高效!
先學51還是先學STM32?STM32和51單片機的區別
單片機最小系統介紹及電路設計 STM32單片機最小系統
什么是PIC單片機
為什么51單片機的晶振一般使用11.0592? 51單片機常用波特率初值表
51單片機寄存器功能一覽表
單片機寫延時程序的幾種方法
自學單片機編程之中斷與時鐘程序
哈佛結構與馮·諾伊曼結構區別以及X86體系
單片機萬年歷:公歷日期與農歷日期的相互轉換程序
AVR定時器1的CTC模式設置
單片機超聲波視覺識別系統的測量軟件開發,超聲波測距
LCD1602的單片機驅動詳解
- · 自學單片機編程之中斷與時鐘程序
- · 哈佛結構與馮·諾伊曼結構區別以及X86體
- · RS485通信和Modbus協議
- · 單片機時鐘,8位數碼管數字鐘的制作
- · 簡單流水燈的實現程序
- · 51單片機按鍵程序中 while(!key)的作用
- · 51單片機制作的經濟、安全的電子密碼鎖
- · 看門狗電路圖
- · 單片機數字時鐘 89C2051數字鐘套件
- · 認識單片機引腳【詳解】
- · 89C2051實現的電子鐘
- · 單片機4×4矩陣鍵盤設計方案
- · C51的中斷編程
- · c51中斷函數的介紹
- · 匯編:單片機驅動LED數碼管電路及編程
- · 單片機匯編:音樂盒DIY—生日快樂歌程序
- · 51單片機指令功能表
- · 電熱水器定時控制器設計,單片機運用
- · 單片機發展的歷史
- · MCS-51系列單片機指令表
- · 51單片機匯編程序集