親愛的朋友們,本周我們邀請嘉糖給我們講解嵌入式學習系列教程,每天連載更新,學習過程中,有任何疑問,歡迎大家關注微信公衆号ickeybbs提問。
什麼是51單片機?
51單片機是對所有兼容Intel 8031指令系統的單片機的統稱。51單片機是基礎入門的一個單片機,51系列的單片機一般不具備自編程能力。
·8位CPU·4kbytes程序存儲器(ROM) (52為8K)
·128bytes的數據存儲器(RAM) (52有256bytes的RAM)
·32條I/O口線·111條指令,大部分為單字節指令
·21個專用寄存器
·2個可編程定時/計數器·5個中斷源,2個優先級(52有6個)
·一個全雙工串行通信口
·外部數據存儲器尋址空間為64kB
·外部程序存儲器尋址空間為64kB
·邏輯操作位尋址功能·雙列直插40PinDIP封裝
·單一 5V電源供電
CPU:由運算和控制邏輯組成,同時還包括中斷系統和部分外部特殊功能寄存器;
RAM:用以存放可以讀寫的數據,如運算的中間結果、最終結果以及欲顯示的數據;
ROM:用以存放程序、一些原始數據和表格;
I/O口:四個8位并行I/O口,既可用作輸入,也可用作輸出
T/C:兩個定時/記數器,既可以工作在定時模式,也可以工作在記數模式;
五個中斷源的中斷控制系統;
一個全雙工UART(通用異步接收發送器)的串行I/O口,用于實現單片機之間或單片機與微機之間的串行通信;
片内振蕩器和時鐘産生電路,石英晶體和微調電容需要外接。最佳振蕩頻率為6M—12M。
51單片機的時鐘電路?
51單片機的時鐘電路包括兩部分,即芯片内的振蕩器和芯片外跨接的晶振及負載電容器。
定時器計數器
定時器/計數器簡稱定時器,其作用主要包括産生各種時标間隔、記錄外部事件的數量等,是微機中最常用、最基本的部件之一。803l單片機有2個16位的定時器/計數器:定時器0(T0)和定時器1(T1)。
T0由2個定時寄存器TH0和TL0構成,T1則由TH1和TL1構成,它們都分别映射在特殊功能寄存器中,從而可以通過對特殊功能寄存器中這些寄存器的讀寫來實現對這兩個定時器的操作。作定時器時,每一個機器周期定時寄存器自動加l,所以定時器也可看作是計量機器周期的計數器。由于每個機器周期為12個時鐘振蕩周期,所以定時的分辨率是時鐘振蕩頻率的1/12。作計數器時,隻要在單片機外部引腳T0(或T1)有從1到0電平的負跳變,計數器就自動加1。計數的最高頻率一般為振蕩頻率的l/24。
工作方式:
T0或T1無論用作定時器或計數器都有4種工作方式:方式0、方式1、方式2和方式3。除方式3外,T0和T1有完全相同的工作狀态。下面以T1為例,分述各種工作方式的特點和用法。
1、工作方式0:
13位方式由TL1的低5位和TH1的8位構成13位計數器(TL1的高3位無效)。工作方式0的結構見下圖:
定時器T1能否啟動工作,還受到了R1、GATE和引腳信号INT1的控制。由圖中的邏輯電路可知,當GATE=0時,隻要TR1=1就可打開控制門,使定時器工作;當GATE=1時,隻有TR1=1且INT1=1,才可打開控制門。GATE,TR1,C/T的狀态選擇由定時器的控制寄存器TMOD,TCON中相應位狀态确定,INT1則是外部引腳上的信号。
在一般的應用中,通常使GATE=0,從而由TRl的狀态控制Tl的開閉:TRl=1,打開T1;TRl=0,關閉T1。在特殊的應用場合,例如利用定時器測量接于INT1引腳上的外部脈沖高電平的寬度時,可使GATE=1,TRl=1。當外部脈沖出現上升沿,亦即INT1由0變1電平時,啟動T1定時,測量開始;一旦外部脈沖出現下降沿,亦即INT1由l變O時就關閉了T1。
定時器啟動後,定時或計數脈沖加到TLl的低5位,從預先設置的初值(時間常數)開始不斷增1。TL1計滿後,向THl進位。當TL1和THl都計滿之後,置位T1的定時器回零标志TFl,以此表明定時時間或計數次數已到,以供查詢或在打開中斷的條件下,可向CPU請求中斷。如需進一步定時/計數,需用指令重置時間常數。
2、工作方式1:
16位方式。與工作方式0基本相同,區别僅在于工作方式1的計數器TL1和TH1組成16位計數器,從而比工作方式0有更寬的定時/計數範圍。工作方式1的結構見下圖。
8位自動裝入時間常數方式。由TLl構成8位計數器,THl僅用來存放時間常數。啟動T1前,TLl和THl裝入相同的時間常數,當TL1計滿後,除定時器回零标志TFl置位,具有向CPU請求中斷的條件外,THl中的時間常數還會自動地裝入TLl,并重新開始定時或計數。所以,工作方式2是一種自動裝入時間常數的8位計數器方式。由于這種方式不需要指令重裝時間常數,因而操作方便,在允許的條件下,應盡量使用這種工作方式。當然,這種方式的定時/計數範圍要小于方式0和方式1。工作方式2的結構見下圖.
4、工作方式3
2個8位方式。工作方式3隻适用于定時器0。如果使定時器1為工作方式3,則定時器1将處于關閉狀态。
當T0為工作方式3時,THo和TL0分成2個獨立的8位計數器。其中,TL0既可用作定時器,又可用作計數器,并使用原T0的所有控制位及其定時器回零标志和中斷源。TH0隻能用作定時器,并使用T1的控制位TRl、回零标志TFl和中斷源,見下圖。
通常情況下,T0不運行于工作方式3,隻有在T1處于工作方式2,并不要求中斷的條件下才可能使用。這時,T1往往用作串行口波特率發生器(見1.4),TH0用作定時器,TL0作為定時器或計數器。所以,方式3是為了使單片機有1個獨立的定時器/計數器、1個定時器以及1個串行口波特率發生器的應用場合而特地提供的。這時,可把定時器l用于工作方式2,把定時器0用于工作方式3。
控制寄存器
定時器/計數器T0和T1有2個控制寄存器-TMOD和TCON,它們分别用來設置各個定時器/計數器的工作方式,選擇定時或計數功能,控制啟動運行,以及作為運行狀态的标志等。其中,TCON寄存器中另有4位用于中斷系統。
1、定時器方式控制寄存器TMOD
TMOD在特殊功能寄存器中,字節地址為89H,無位地址。TMOD的格式如下圖年示。
由圖可見,TMOD的高4位用于T1,低4使用于T0,4種符号的含義如下:
GATE:門控制位。其作用見圖1.6。GATE和軟件控制位TR、外部引腳信号INT的狀态,共同控制定時器/計數器的打開或關閉。
C/T:定時器/計數器選擇位。C/T=1,為計數器方式;C/T=0,為定時器方式。
M1M0:工作方式選擇位,定時器/計數器的4種工作方式由M1M0設定。
M1M0=00:工作方式0(13位方式)。
M1M0=01:工作方式1(16位方式)。
M1M0=10:工作方式2(8位自動裝入時間常數方式)。
MlM0=11:工作方式3(2個8位方式--僅對T0)。
2.定時器控制寄存器--TCON
TCON在特殊功能寄存器中,字節地址為88H,位地址(由低位到高位)為88H一8FH,由于有位地址,十分便于進行位操作。
TCON的格式如下圖所示。其中,TFl,TRl,TF0和TR0位用于定時器/計數器;IEl,ITl,IEo和IT0位用于中斷系統。
TF:定時器/計數器中斷請求标志位。當定時器計滿回零時,TF=1,并可申請中斷;當CPU響應中斷并進入中斷服務程序後,TF自動清零。如對TF查詢,定時器回零後,要用指令将TF清零。
TR:定時器/計數器開閉控制位。
IEl,ITl用于外部中斷1(1NTl);IE0,IT0用于外部中斷0(1NT0)。兩組符号的含義相同。
IT:下跳沿/低電平引起外部中斷請求的選擇位。IT=1,由下跳沿引起;IT=0,由低電平引起。
IE:外部中斷的中斷申請标志。IE=0,表明無外部中斷請求;IE=1,表明有外部中斷請求。當有外部中斷請求時,IE自動為1,單片機CPU響應此中斷後,IE自動清零。
先要有一個定時器的函數聲明
MCS-51提供了五個中斷源,其中兩個外部中斷源,由INT0、INT1引腳輸入;兩個為片内的定時/計數器T0、T1溢出時産生的中斷請求TF0、TF1;一個片内串行口的發送中斷TI或接收中斷RI。
(1)INT0(P3.2)外部中斷0請求信号輸入端。可由IT0(TCON.0)選擇其為低電平有效還是下降沿有效,當CPU檢測到P3.2引腳上出現信号時,使中斷标志IE0(TCON.1)置1,向CPU申請中斷。
以下是給初學者的一點個人建議!
作為一個初學者,如何單片機入門?
首先把C 語言學好是必須的,51單片機編程對C 語言還是有一定的要求。
然後要把電路搞懂,學會看原理圖,會畫簡單的電路圖,51單片機對原理圖要求不是很高,隻要用心很快就能理解。
個人覺得,你在學51時,不要着急着去敲代碼,先看它的資料文檔,建議看官方的資料,看datasheeed,看它的管腳定義,單片機的使用比較簡單,通俗的說就是給高低電平去控制即可。
了解了51的特性,知道它能幹嘛之後,先從最簡單的點亮LED 開始。不過這裡要求你能後靈活快速的在進制數值之間轉換,給1或者0去控制LED 。通過第一個小項目,你應該對它有一點了解了,這時可以做流水燈,數碼管之類的東西了。
幾個玩意下來,該學它的定時器和中斷了,個人覺得這個是玩51最重要的,沒有這兩個,基本玩不出什麼花樣。這裡就不詳細說它們的原理了,基本走下來就完了吧,這時候玩一些小項目,得靠自己了。比如智能小車,藍牙小車,遠程控制系統等等。
本文屬于原創,如需轉載,請聯系微信公衆号 ickeybbs ,最新電子行業資訊、教程以及開發闆樣片申請,請關注“雲漢電子社區”官方微信公衆号ickeybbs
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!