基于51單片機(jī)的酒精濃度測試儀設(shè)計(jì)(液晶)
基于51單片機(jī)的酒精濃度測試儀設(shè)計(jì)(液晶),基于,51,單片機(jī),酒精,濃度,測試儀,設(shè)計(jì),液晶
AT89S52
1
主要性能
l 與MCS-51單片機(jī)產(chǎn)品兼容
l 8K字節(jié)在系統(tǒng)可編程Flash存儲器
l 1000次擦寫周期
l 全靜態(tài)操作:0Hz~33MHz
l 三級加密程序存儲器
l 32個可編程I/O口線
l 三個16位定時器/計(jì)數(shù)器
l 八個中斷源
l 全雙工UART串行通道
l 低功耗空閑和掉電模式
l 掉電后中斷可喚醒
l 看門狗定時器
l 雙數(shù)據(jù)指針
l 掉電標(biāo)識符
功能特性描述
AT89S52是一種低功耗、高性能CMOS8位微控制器,具有
8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非
易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完
全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于
常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)
可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提
供高靈活、超有效的解決方案。
AT89S52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM,
32 位I/O 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個16 位
定時器/計(jì)數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,
片內(nèi)晶振及時鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏
輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU
停止工作,允許RAM、定時器/計(jì)數(shù)器、串口、中斷繼續(xù)工
作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),
單片機(jī)一切工作停止,直到下一個中斷或硬件復(fù)位為止。
R
8 位微控制器
8K 字節(jié)在系統(tǒng)可編程
Flash
AT89S52
Rev. 1919-07/01
AT89S52
2
引腳結(jié)構(gòu)
AT89S52
3
方框圖
引腳功能描述
AT89S52
4
VCC : 電源
GND: 地
P0 口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏
輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。
當(dāng)訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,
P0具有內(nèi)部上拉電阻。
在flash編程時,P0口也用來接收指令字節(jié);在程序校驗(yàn)時,輸出指令字節(jié)。程序校驗(yàn)
時,需要外部上拉電阻。
P1 口:P1 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅(qū)動4 個
TTL 邏輯電平。對P1 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入
口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。
此外,P1.0和P1.2分別作定時器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2)和時器/計(jì)數(shù)器2
的觸發(fā)輸入(P1.1/T2EX),具體如下表所示。
在flash編程和校驗(yàn)時,P1口接收低8位地址字節(jié)。
引腳號第二功能
P1.0 T2(定時器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入),時鐘輸出
P1.1 T2EX(定時器/計(jì)數(shù)器T2的捕捉/重載觸發(fā)信號和方向控制)
P1.5 MOSI(在系統(tǒng)編程用)
P1.6 MISO(在系統(tǒng)編程用)
P1.7 SCK(在系統(tǒng)編程用)
P2 口:P2 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動4 個
TTL 邏輯電平。對P2 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入
口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。
在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX @DPTR)
時,P2 口送出高八位地址。在這種應(yīng)用中,P2 口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用
8位地址(如MOVX @RI)訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內(nèi)容。
在flash編程和校驗(yàn)時,P2口也接收高8位地址字節(jié)和一些控制信號。
P3 口:P3 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,p2 輸出緩沖器能驅(qū)動4 個
TTL 邏輯電平。對P3 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入
口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。
P3口亦作為AT89S52特殊功能(第二功能)使用,如下表所示。
在flash編程和校驗(yàn)時,P3口也接收一些控制信號。
AT89S52
5
引腳號第二功能
P3.0 RXD(串行輸入)
P3.1 TXD(串行輸出)
P3.2 INT0(外部中斷0)
P3.3 INT0(外部中斷0)
P3.4 T0(定時器0外部輸入)
P3.5 T1(定時器1外部輸入)
P3.6 WR(外部數(shù)據(jù)存儲器寫選通)
P3.7 RD(外部數(shù)據(jù)存儲器寫選通)
RST: 復(fù)位輸入。晶振工作時,RST腳持續(xù)2 個機(jī)器周期高電平將使單片機(jī)復(fù)位。看門
狗計(jì)時完成后,RST 腳輸出96 個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上
的DISRTO位可以使此功能無效。DISRTO默認(rèn)狀態(tài)下,復(fù)位高電平有效。
ALE/PROG:地址鎖存控制信號(ALE)是訪問外部程序存儲器時,鎖存低8 位地址
的輸出脈沖。在flash編程時,此引腳(PROG)也用作編程輸入脈沖。
在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時器或
時鐘使用。然而,特別強(qiáng)調(diào),在每次訪問外部數(shù)據(jù)存儲器時,ALE脈沖將會跳過。
如果需要,通過將地址為8EH的SFR的第0位置“1”,ALE操作將無效。這一位置“1”,
ALE 僅在執(zhí)行MOVX 或MOVC指令時有效。否則,ALE 將被微弱拉高。這個ALE 使
能標(biāo)志位(地址為8EH的SFR的第0位)的設(shè)置對微控制器處于外部執(zhí)行模式下無效。
PSEN:外部程序存儲器選通信號(PSEN)是外部程序存儲器選通信號。
當(dāng)AT89S52從外部程序存儲器執(zhí)行外部代碼時,PSEN在每個機(jī)器周期被激活兩次,而
在訪問外部數(shù)據(jù)存儲器時,PSEN將不被激活。
EA/VPP:訪問外部程序存儲器控制信號。為使能從0000H 到FFFFH的外部程序存儲器
讀取指令,EA必須接GND。
為了執(zhí)行內(nèi)部程序指令,EA應(yīng)該接VCC。
在flash編程期間,EA也接收12伏VPP電壓。
XTAL1:振蕩器反相放大器和內(nèi)部時鐘發(fā)生電路的輸入端。
XTAL2:振蕩器反相放大器的輸出端。
AT89S52
6
表1 AT89S52 特殊寄存器映象及復(fù)位值
特殊功能寄存器
特殊功能寄存器(SFR)的地址空間映象如表1所示。
并不是所有的地址都被定義了。片上沒有定義的地址是不能用的。讀這些地址,一般將
得到一個隨機(jī)數(shù)據(jù);寫入的數(shù)據(jù)將會無效。
用戶不應(yīng)該給這些未定義的地址寫入數(shù)據(jù)“1”。由于這些寄存器在將來可能被賦予新的
功能,復(fù)位后,這些位都為“0”。
定時器2 寄存器:寄存器T2CON 和T2MOD 包含定時器2 的控制位和狀態(tài)位(如表2
和表3所示),寄存器對RCAP2H和RCAP2L是定時器2的捕捉/自動重載寄存器。
中斷寄存器:各中斷允許位在IE寄存器中,六個中斷源的兩個優(yōu)先級也可在IE中設(shè)置。
AT89S52
7
表2 T2CON:定時器/計(jì)數(shù)器2控制寄存器
T2CON 地址為0C8H 復(fù)位值:0000 0000B
位可尋址
TF2 EXF2 RLCLK TCLK EXEN2 TR2
7 6 5 4 3 2 1 0
符號功能
TF2 定時器2 溢出標(biāo)志位。必須軟件清“0”。RCLK=1 或TCLK=1 時,TF2
不用置位。
EXF2
定時器2 外部標(biāo)志位。EXEN2=1 時,T2EX 上的負(fù)跳變而出現(xiàn)捕捉或重
載時,EXF2 會被硬件置位。定時器2 打開,EXF2=1 時,將引導(dǎo)CPU
執(zhí)行定時器2 中斷程序。EXF2 必須如見清“0”。在向下/向上技術(shù)模式
(DCEN=1)下EXF2不能引起中斷。
RCLK
串行口接收數(shù)據(jù)時鐘標(biāo)志位。若RCLK=1,串行口將使用定時器2 溢出
脈沖作為串行口工作模式1 和3 的串口接收時鐘;RCLK=0,將使用定
時器1計(jì)數(shù)溢出作為串口接收時鐘。
TCLK
串行口發(fā)送數(shù)據(jù)時鐘標(biāo)志位。若TCLK=1,串行口將使用定時器2 溢出
脈沖作為串行口工作模式1 和3 的串口發(fā)送時鐘;TCLK=0,將使用定
時器1計(jì)數(shù)溢出作為串口發(fā)送時鐘。
EXEN2
定時器2外部允許標(biāo)志位。當(dāng)EXEN2=1時,如果定時器2沒有用作串行
時鐘,T2EX(P1.1)的負(fù)跳變見引起定時器2 捕捉和重載。若EXEN2
=0,定時器2將視T2EX端的信號無效
TR2 開始/停止控制定時器2。TR2=1,定時器2開始工作
定時器2 定時/計(jì)數(shù)選擇標(biāo)志位。=0,定時; =1,外部事
件計(jì)數(shù)(下降沿觸發(fā))
捕捉/重載選擇標(biāo)志位。當(dāng)EXEN2=1時, =1,T2EX出現(xiàn)負(fù)脈沖,
會引起捕捉操作;當(dāng)定時器2溢出或EXEN2=1時T2EX出現(xiàn)負(fù)跳變,都
會出現(xiàn)自動重載操作。=0 將引起T2EX 的負(fù)脈沖。當(dāng)RCKL=1
或TCKL=1時,此標(biāo)志位無效,定時器2溢出時,強(qiáng)制做自動重載操作。
雙數(shù)據(jù)指針寄存器:為了更有利于訪問內(nèi)部和外部數(shù)據(jù)存儲器,系統(tǒng)提供了兩路16位
數(shù)據(jù)指針寄存器:位于SFR中82H~83H的DP0和位于84H~85。特殊寄存器AUXR1
中DPS=0 選擇DP0;DPS=1 選擇DP1。用戶應(yīng)該在訪問數(shù)據(jù)指針寄存器前先初始化
AT89S52
8
DPS至合理的值。
表3a AUXR:輔助寄存器
AUXR 地址:8EH 復(fù)位值:XXX00XX0B
不可位尋址
- - - WDIDLE DISRTO - - DISALE
7 6 5 4 3 2 1 0
- 預(yù)留擴(kuò)展用
DISALE ALE使能標(biāo)志位
DISALE 操作方式
0 ALE 以1/6晶振頻率輸出信號
1 ALE 只有在執(zhí)行MOVX 或MOVC指令時激活
DISRTO 復(fù)位輸出標(biāo)志位
DISRTO
0 看門狗(WDT)定時結(jié)束,Reset 輸出高電平
1 Reset 只有輸入
WDIDLE 空閑模式下WDT使能標(biāo)志位
WDIDLE
0 空閑模式下,WDT繼續(xù)計(jì)數(shù)
1 空閑模式下,WDT停止計(jì)數(shù)
掉電標(biāo)志位:掉電標(biāo)志位(POF)位于特殊寄存器PCON的第四位(PCON.4)。上電期
間POF置“1”。POF可以軟件控制使用與否,但不受復(fù)位影響。
表3b AUXR1:輔助寄存器1
AUXR1 地址:A2H 復(fù)位值:XXXXXXX0B
不可位尋址
- - - - - - - DPS
7 6 5 4 3 2 1 0
- 預(yù)留擴(kuò)展用
DPS 數(shù)據(jù)指針選擇位
DPS
0 選擇DPTR寄存器DP0L和DP0H
1 選擇DPTR寄存器DP1L和DP1H
AT89S52
9
存儲器結(jié)構(gòu)
MCS-51器件有單獨(dú)的程序存儲器和數(shù)據(jù)存儲器。外部程序存儲器和數(shù)據(jù)存儲器都可以
64K尋址。
程序存儲器:如果EA引腳接地,程序讀取只從外部存儲器開始。
對于89S52,如果EA 接VCC,程序讀寫先從內(nèi)部存儲器(地址為0000H~1FFFH)開
始,接著從外部尋址,尋址地址為:2000H~FFFFH。
數(shù)據(jù)存儲器:AT89S52 有256 字節(jié)片內(nèi)數(shù)據(jù)存儲器。高128 字節(jié)與特殊功能寄存器重
疊。也就是說高128字節(jié)與特殊功能寄存器有相同的地址,而物理上是分開的。
當(dāng)一條指令訪問高于7FH 的地址時,尋址方式?jīng)Q定CPU 訪問高128 字節(jié)RAM 還是特
殊功能寄存器空間。直接尋址方式訪問特殊功能寄存器(SFR)。
例如,下面的直接尋址指令訪問0A0H(P2口)存儲單元
MOV 0A0H , #data
使用間接尋址方式訪問高128 字節(jié)RAM。例如,下面的間接尋址方式中,R0 內(nèi)容為
0A0H,訪問的是地址0A0H的寄存器,而不是P2口(它的地址也是0A0H)。
MOV @R0 , #data
堆棧操作也是簡介尋址方式。因此,高128字節(jié)數(shù)據(jù)RAM也可用于堆棧空間。
看門狗定時器
WDT是一種需要軟件控制的復(fù)位方式。WDT 由13位計(jì)數(shù)器和特殊功能寄存器中的看
門狗定時器復(fù)位存儲器(WDTRST)構(gòu)成。WDT 在默認(rèn)情況下無法工作;為了激活
WDT,戶用必須往WDTRST 寄存器(地址:0A6H)中依次寫入01EH 和0E1H。當(dāng)
WDT激活后,晶振工作,WDT在每個機(jī)器周期都會增加。WDT計(jì)時周期依賴于外部
時鐘頻率。除了復(fù)位(硬件復(fù)位或WDT溢出復(fù)位),沒有辦法停止WDT工作。當(dāng)WDT
溢出,它將驅(qū)動RSR引腳一個高個電平輸出。
WDT的使用
為了激活WDT,用戶必須向WDTRST寄存器(地址為0A6H的SFR)依次寫入0E1H
和0E1H。當(dāng)WDT激活后,用戶必須向WDTRST寫入01EH和0E1H喂狗來避免WDT
溢出。當(dāng)計(jì)數(shù)達(dá)到8191(1FFFH)時,13 位計(jì)數(shù)器將會溢出,這將會復(fù)位器件。晶振正
常工作、WDT激活后,每一個機(jī)器周期WDT 都會增加。為了復(fù)位WDT,用戶必須向
WDTRST 寫入01EH 和0E1H(WDTRST 是只讀寄存器)。WDT 計(jì)數(shù)器不能讀或?qū)憽?
當(dāng)WDT 計(jì)數(shù)器溢出時,將給RST 引腳產(chǎn)生一個復(fù)位脈沖輸出,這個復(fù)位脈沖持續(xù)96
個晶振周期(TOSC),其中TOSC=1/FOSC。為了很好地使用WDT,應(yīng)該在一定時間
內(nèi)周期性寫入那部分代碼,以避免WDT復(fù)位。
掉電和空閑方式下的WDT
在掉電模式下,晶振停止工作,這意味這WDT也停止了工作。在這種方式下,用戶不
必喂狗。有兩種方式可以離開掉電模式:硬件復(fù)位或通過一個激活的外部中斷。通過硬
件復(fù)位退出掉電模式后,用戶就應(yīng)該給WDT 喂狗,就如同通常AT89S52 復(fù)位一樣。
通過中斷退出掉電模式的情形有很大的不同。中斷應(yīng)持續(xù)拉低很長一段時間,使得晶振
AT89S52
10
穩(wěn)定。當(dāng)中斷拉高后,執(zhí)行中斷服務(wù)程序。為了防止WDT在中斷保持低電平的時候復(fù)
位器件,WDT 直到中斷拉低后才開始工作。這就意味著WDT 應(yīng)該在中斷服務(wù)程序中
復(fù)位。
為了確保在離開掉電模式最初的幾個狀態(tài)WDT不被溢出,最好在進(jìn)入掉電模式前就復(fù)
位WDT。
在進(jìn)入待機(jī)模式前,特殊寄存器AUXR的WDIDLE位用來決定WDT是否繼續(xù)計(jì)數(shù)。
默認(rèn)狀態(tài)下,在待機(jī)模式下,WDIDLE=0,WDT繼續(xù)計(jì)數(shù)。為了防止WDT在待機(jī)模
式下復(fù)位AT89S52,用戶應(yīng)該建立一個定時器,定時離開待機(jī)模式,喂狗,再重新進(jìn)
入待機(jī)模式。
UART
在AT89S52 中,UART 的操作與AT89C51 和AT89C52 一樣。為了獲得更深入的關(guān)于
UART 的信息,可參考ATMEL 網(wǎng)站(http://www.atmel.com)。從這個主頁,選擇
“Products”,然后選擇“8051-Architech Flash Microcontroller”,再選擇“Product
Overview”即可。
定時器0 和定時器1
在AT89S52 中,定時器0 和定時器1 的操作與AT89C51 和AT89C52 一樣。為了獲得
更深入的關(guān)于UART 的信息,可參考ATMEL 網(wǎng)站(http://www.atmel.com)。從這個主
頁,選擇“Products”,然后選擇“8051-Architech Flash Microcontroller”,再選擇“Product
Overview”即可。
定時器2
定時器2是一個16位定時/計(jì)數(shù)器,它既可以做定時器,又可以做事件計(jì)數(shù)器。其工作
方式由特殊寄存器T2CON中的C/T2位選擇(如表2所示)。定時器2有三種工作模式:
捕捉方式、自動重載(向下或向上計(jì)數(shù))和波特率發(fā)生器。如表3 所示,工作模式由
T2CON中的相關(guān)位選擇。定時器2 有2 個8位寄存器:TH2和TL2。在定時工作方式
中,每個機(jī)器周期,TL2 寄存器都會加1。由于一個機(jī)器周期由12 個晶振周期構(gòu)成,
因此,計(jì)數(shù)頻率就是晶振頻率的1/12。
表3 定時器2工作模式
RCLK+TCLK CP/RL2 TR2 MODE
0 0 1 16位自動重載
0 1 1 16位捕捉
1 × 1 波特率發(fā)生器
× × 0 (不用)
在計(jì)數(shù)工作方式下,寄存器在相關(guān)外部輸入角T2 發(fā)生1 至0 的下降沿時增加1。在這
AT89S52
11
種方式下,每個機(jī)器周期的S5P2期間采樣外部輸入。一個機(jī)器周期采樣到高電平,而
下一個周期采樣到低電平,計(jì)數(shù)器將加1。在檢測到跳變的這個周期的S3P1 期間,新
的計(jì)數(shù)值出現(xiàn)在寄存器中。因?yàn)樽R別1-0的跳變需要2個機(jī)器周期(24個晶振周期),
所以,最大的計(jì)數(shù)頻率不高于晶振頻率的1/24。為了確保給定的電平在改變前采樣到
一次,電平應(yīng)該至少在一個完整的機(jī)器周期內(nèi)保持不變。
捕捉方式
在捕捉模式下,通過T2CON中的EXEN2來選擇兩種方式。如果EXEN2=0,定時器2
時一個16位定時/計(jì)數(shù)器,溢出時,對T2CON 的TF2標(biāo)志置位,TF2引起中斷。如果
EXEN2=1,定時器2做相同的操作。除上述功能外,外部輸入T2EX引腳(P1.1)1至
0的下跳變也會使得TH2和TL2中的值分別捕捉到RCAP2H和RCAP2L中。除此之外,
T2EX 的跳變會引起T2CON 中的EXF2 置位。像TF2 一樣,T2EX 也會引起中斷。捕
捉模式如圖5所示。
圖5 定時器的捕捉模式
自動重載
當(dāng)定時器2 工作于16 位自動重載模式,可對其編程實(shí)現(xiàn)向上計(jì)數(shù)或向下計(jì)數(shù)。這一功
能可以通過特殊寄存器T2MOD(見表4)中的DCEN(向下計(jì)數(shù)允許位)來實(shí)現(xiàn)。通
過復(fù)位,DCEN 被置為0,因此,定時器2 默認(rèn)為向上計(jì)數(shù)。DCEN 設(shè)置后,定時器2
就可以取決于T2EX向上、向下計(jì)數(shù)。
如圖6 所示,DCEN=0 時,定時器2 自動計(jì)數(shù)。通過T2CON 中的EXEN2 位可以選擇
兩種方式。如果EXEN2=0,定時器2計(jì)數(shù),計(jì)到0FFFFH后置位TF2溢出標(biāo)志。計(jì)數(shù)
溢出也使得定時器寄存器重新從RCAP2H 和RCAP2L 中加載16 位值。定時器工作于
捕捉模式,RCAP2H和RCAP2L的值可以由軟件預(yù)設(shè)。如果EXEN2=1,計(jì)數(shù)溢出或在
外部T2EX(P1.1)引腳上的1到0的下跳變都會觸發(fā)16位重載。這個跳變也置位EXF2
中斷標(biāo)志位。
如圖6所示,置位DCEN,允許定時器2向上或向下計(jì)數(shù)。在這種模式下,T2EX引腳
控制著計(jì)數(shù)的方向。T2EX上的一個邏輯1使得定時器2向上計(jì)數(shù)。定時器計(jì)到0FFFFH
AT89S52
12
溢出,并置位TF2。定時器的溢出也使得RCAP2H和RCAP2L中的16位值分別加載到
定時器存儲器TH2和TL2中。
T2EX 上的一個邏輯0 使得定時器2 向下計(jì)數(shù)。當(dāng)TH2 和TL2 分別等于RCAP2H 和
RCAP2L中的值的時候,計(jì)數(shù)器下溢。計(jì)數(shù)器下溢,置位TF2,并將0FFFFH加載到定
時器存儲器中。
定時器2上溢或下溢,外部中斷標(biāo)志位EXF2 被鎖死。在這種工作模式下,EXF2不能
觸發(fā)中斷。
圖6 定時器2重載模式(DCEN=0)
表4 T2MOD-定時器2控制寄存器
T2MOD 地址:0C9H 復(fù)位值:XXXXXX00B
不可位尋址
- - - - - - T2OE DCEN
7 6 5 4 3 2 1 0
符號功能
- 無定義,預(yù)留擴(kuò)展
T2OE 定時器2輸出允許位
DCEN 置1后,定時器2可配置成向上/向下計(jì)數(shù)
AT89S52
13
圖7 定時器2自動重載(DCEN=1)
圖8 定時器2 波特率發(fā)生器模式
AT89S52
14
波特率發(fā)生器
通過設(shè)置T2CON(見表2)中的TCLK或RCLK可選擇定時器2 作為波特率發(fā)生器。
如果定時器2作為發(fā)送或接收波特率發(fā)生器,定時器1可用作它用,發(fā)送和接收的波特
率可以不同。如圖8 所示,設(shè)置RCLK 和(或)TCLK 可以使定時器2 工作于波特率
產(chǎn)生模式。
波特率產(chǎn)生工作模式與自動重載模式相似,因此,TH2 的翻轉(zhuǎn)使得定時器2 寄存器重
載被軟件預(yù)置16位值的RCAP2H和RCAP2L中的值。
模式1和模式3的波特率由定時器2溢出速率決定,具體如下公式:
模式1和模式3波特率=
16
2溢出率定時器
定時器可設(shè)置成定時器,也可為計(jì)數(shù)器。在多數(shù)應(yīng)用情況下,一般配置成定時方式
(CP/T2=0)。定時器2 用于定時器操作與波特率發(fā)生器有所不同,它在每一機(jī)器周期
(1/12晶振周期)都會增加;然而,作為波特率發(fā)生器,它在每一機(jī)器狀態(tài)(1/2晶振
周期)都會增加。波特率計(jì)算公式如下:
模式1和模式3的波特率=
)] 2 , 2 ( 65536 [ 32 L RCAP H RCAP - ′
晶振頻率*原文少半個括號“(”
其中,(RCAP2H,RCAP2L)是RCAP2H和RCAP2L組成的16位無符號整數(shù)。
定時器2 作為波特率發(fā)生器,如圖8 所示。圖中僅僅在T2CON 中RCLK 或TCLK=1
才有效。特別強(qiáng)調(diào),TH2的翻轉(zhuǎn)并不置位TF2,也不產(chǎn)生中斷; EXEN2置位后,T2EX
引腳上1~0的下跳變不會使(RCAP2H,RCAP2L)重載到(TH2,TL2)中。因此,
定時器2作為波特率發(fā)生器,T2EX也還可以作為一個額外的外部中斷。
定時器2處于波特率產(chǎn)生模式,TR2=1,定時器2正常工作。TH2或TL2不應(yīng)該讀寫。
在這種模式下,定時器在每一狀態(tài)都會增加,讀或?qū)懢筒粫?zhǔn)確。寄存器RCAP2可以
讀,但不能寫,因?yàn)閷懣赡芎椭剌d交迭,造成寫和重載錯誤。在讀寫定時器2 或RCAP2
寄存器時,應(yīng)該關(guān)閉定時器(TR2清0)。
可編程時鐘輸出
如圖9 所示,可以通過編程在P1.0 引腳輸出一個占空比為50%的時鐘信號。這個引腳
除了常規(guī)的I/O 角外,還有兩種可選擇功能。它可以通過編程作為定時器/計(jì)數(shù)器2 的
外部時鐘輸入或占空比為50%的時鐘輸出。當(dāng)工作頻率為16MHZ時,時鐘輸出頻率范
圍為61HZ到4HZ。
為了把定時器2配置成時鐘發(fā)生器,位C/T2(T2CON.1)必須清0,位T2OE(T2MOD.1)
必須置1。位TR2(T2CON.2)啟動、停止定時器。時鐘輸出頻率取決于晶振頻率和定
時器2捕捉寄存器(RCAP2H,RCAP2L)的重載值,如公式所示:
時鐘輸出頻率=
] 2 , 2 65536 [ 4 ) -(
晶振頻率
L RCAP H RCAP ′
在時鐘輸出模式下,定時器2不會產(chǎn)生中斷,這和定時器2用作波特率發(fā)生器一樣。定
AT89S52
15
時器2也可以同時用作波特率發(fā)生器和時鐘產(chǎn)生。不過,波特率和輸出時鐘頻率相互并
不獨(dú)立,它們都依賴于RCAP2H和RCAP2L。
圖9 定時器2時鐘輸出模式
中斷
AT89S52 有6個中斷源:兩個外部中斷(INT0 和INT1),三個定時中斷(定時器0、1、
2)和一個串行中斷。這些中斷如圖10所示
每個中斷源都可以通過置位或清除特殊寄存器IE 中的相關(guān)中斷允許控制位分別使得中
斷源有效或無效。IE還包括一個中斷允許總控制位EA,它能一次禁止所有中斷。
如表5所示,IE.6位是不可用的。對于AT89S52,IE.5位也是不能用的。用戶軟件不應(yīng)
給這些位寫1。它們?yōu)锳T89系列新產(chǎn)品預(yù)留。
定時器2可以被寄存器T2CON中的TF2和EXF2的或邏輯觸發(fā)。程序進(jìn)入中斷服務(wù)后,
這些標(biāo)志位都可以由硬件清0。實(shí)際上,中斷服務(wù)程序必須判定是否是TF2 或EXF2激
活中斷,標(biāo)志位也必須由軟件清0。
定時器0和定時器1標(biāo)志位TF0 和TF1在計(jì)數(shù)溢出的那個周期的S5P2被置位。它們的
值一直到下一個周期被電路捕捉下來。然而,定時器2 的標(biāo)志位TF2 在計(jì)數(shù)溢出的那
個周期的S2P2被置位,在同一個周期被電路捕捉下來。
AT89S52
16
表4 中斷允許控制寄存器(IE)
(MSB) (LSB)
EA - ET2 ES ET1 EX1 ET0 EX0
中斷允許控制位=1,允許中斷
中斷允許控制位=0,禁止中斷
符號位地址功能
EA IE.7 中斷總允許控制位。EA=0,中斷總禁止;EA=1,各中斷由各
自的控制位設(shè)定
- IE.6 預(yù)留
ET2 IE.5 定時器2中斷允許控制位
ES IE.4 串行口中斷允許控制位
ET1 IE.3 定時器1中斷允許控制位
EX1 IE.2 外部中斷1允許控制位
ET0 IE.1 定時器0中斷允許控制位
EX0 IE.0 外部中斷1允許控制位
圖10 中斷源
AT89S52
17
晶振特性
如圖10 所示,AT89S52 單片機(jī)有一個用于構(gòu)成內(nèi)部振蕩器的反相放大器,XTAL1 和
XTAL2 分別是放大器的輸入、輸出端。石英晶體和陶瓷諧振器都可以用來一起構(gòu)成自
激振蕩器。從外部時鐘源驅(qū)動器件的話,XTAL2 可以不接,而從XTAL1 接入,如圖
12 所示。由于外部時鐘信號經(jīng)過二分頻觸發(fā)后作為外部時鐘電路輸入的,所以對外部
時鐘信號的占空比沒有其它要求,最長低電平持續(xù)時間和最少高電平持續(xù)時間等還是要
符合要求的。
圖11 內(nèi)部振蕩電路連接圖圖12 外部振蕩電路連接圖
石英晶振C1,C2=30PF±10PF
陶瓷諧振器C1,C2=40PF±10PF
空閑模式
在空閑工作模式下,CPU 處于睡眠狀態(tài),而所有片上外部設(shè)備保持激活狀態(tài)。這種狀
態(tài)可以通過軟件產(chǎn)生。在這種狀態(tài)下,片上RAM和特殊功能寄存器的內(nèi)容保持不變。
空閑模式可以被任一個中斷或硬件復(fù)位終止。
由硬件復(fù)位終止空閑模式只需兩個機(jī)器周期有效復(fù)位信號,在這種情況下,片上硬件禁
止訪問內(nèi)部RAM,而可以訪問端口引腳??臻e模式被硬件復(fù)位終止后,為了防止預(yù)想
不到的寫端口,激活空閑模式的那一條指令的下一條指令不應(yīng)該是寫端口或外部存儲
器。
掉電模式
在掉電模式下,晶振停止工作,激活掉電模式的指令是最后一條執(zhí)行指令。片上RAM
AT89S52
18
和特殊功能寄存器保持原值,直到掉電模式終止。掉電模式可以通過硬件復(fù)位和外部中
斷退出。復(fù)位重新定義了SFR 的值,但不改變片上RAM 的值。在VCC未恢復(fù)到正常
工作電壓時,硬件復(fù)位不能無效,并且應(yīng)保持足夠長的時間以使晶振重新工作和初始化。
表6 空閑模式和掉電模式下的外部引腳狀態(tài)
模式程序存儲器ALE PSEN PORT0 PORT1 PORT2 PORT3
空閑內(nèi)部1 1 數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)
空閑外部1 1 浮空數(shù)據(jù)地址數(shù)據(jù)
掉電內(nèi)部0 0 數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)
掉電外部0 0 浮空數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)
程序存儲器的加密位
AT89S52有三個加密位不可編程(U)和可編程獲得下表所示的功能。
表7 加密位保護(hù)模式
加密位1(LB1)編程后,EA 引腳的邏輯值被采樣,并在復(fù)位期間鎖存。如果器件復(fù)
位,而沒有復(fù)位,將鎖存一個隨機(jī)值,直到復(fù)位為止。為了器件功能正常,鎖存到的
EA值必須和這個引腳的當(dāng)前邏輯電平一致。
Flash編程―并行模式
AT89S52 帶有用作編程的片上Flash 存儲器陣列。編程接口需要一個高電壓(12V)編
程使能信號,并且兼容常規(guī)的第三方*(原文:third-party,不知道對不對)Flash或EPROM
編程器。
AT89S52程序存儲陣列采用字節(jié)式編程。
編程方法
對AT89S52編程之前,需根據(jù)Flash編程模式表和圖13、圖14對地址、數(shù)據(jù)和控制信
號設(shè)置??刹捎孟铝胁襟E對AT89S52編程:
AT89S52
19
1.在地址線上輸入編程單元地址信號
2.在數(shù)據(jù)線上輸入正確的數(shù)據(jù)
3.激活相應(yīng)的控制信號
4.把EA/Vpp升至12V
5.每給Flash寫入一個字節(jié)或程序加密位時,都要給ALE/PROG一次脈沖。字節(jié)寫周
期時自身定制的,典型值僅僅50us。改變地址、數(shù)據(jù)重復(fù)第1步到第5步,知道全
部文件結(jié)束。
Data Polling
AT89S52用Data Polling作為一個字節(jié)寫周期結(jié)束的標(biāo)志特征。
譯者注:
后面全是編程的時序問題,實(shí)在譯不下去了。感興趣的接著翻啊。
收藏
編號:3969572
類型:共享資源
大?。?span id="w27qic8" class="font-tahoma">38.35MB
格式:ZIP
上傳時間:2019-12-25
25
積分
- 關(guān) 鍵 詞:
-
基于
51
單片機(jī)
酒精
濃度
測試儀
設(shè)計(jì)
液晶
- 資源描述:
-
基于51單片機(jī)的酒精濃度測試儀設(shè)計(jì)(液晶),基于,51,單片機(jī),酒精,濃度,測試儀,設(shè)計(jì),液晶
展開閱讀全文
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,未經(jīng)上傳用戶書面授權(quán),請勿作他用。