基于51單片機(jī)的酒精濃度測(cè)試儀設(shè)計(jì)(液晶)
基于51單片機(jī)的酒精濃度測(cè)試儀設(shè)計(jì)(液晶),基于,51,單片機(jī),酒精,濃度,測(cè)試儀,設(shè)計(jì),液晶
特點(diǎn)
? 兼容MCS - 51?產(chǎn)品
? ?4K字節(jié)的系統(tǒng)內(nèi)可編程(ISP)快閃記憶體
– 耐力:1000寫/擦除周期
? 4.0V至5.5V工作電壓范圍v
? 全靜態(tài)操作:0 Hz至33 MHz的
? 三個(gè)級(jí)別的程序存儲(chǔ)器鎖定
? 128×8位內(nèi)部RAM
? 32個(gè)可編程輸入/輸出線
? 2個(gè)16位定時(shí)器/計(jì)數(shù)器
? 六個(gè)中斷源
? 全雙工異步串行通道
? 低功耗空閑和掉電模式
? 從掉電模式下的中斷恢復(fù)
? 看門狗計(jì)時(shí)器
? 雙數(shù)據(jù)指針
? 斷電標(biāo)志
? 快速編程
? 靈活的ISP編程(字節(jié)和頁(yè)模式)
介紹
AT89S 51是一種低功耗,高性能的芯片與一個(gè)8位微控制器字節(jié)的系統(tǒng)內(nèi)可編程快閃記憶體。該設(shè)備的生產(chǎn)使用公司的高密度非易失性存儲(chǔ)器技術(shù)和兼容的行業(yè)—標(biāo)準(zhǔn)80C 51指令集和引腳。片上閃存允許程序存儲(chǔ)器重新編程在系統(tǒng)或常規(guī)非易失性存儲(chǔ)器編程。結(jié)合靈活的8位處理器的系統(tǒng)內(nèi)可編程閃存上單片AT89S 51,愛(ài)特梅爾是一個(gè)功能強(qiáng)大的微控制器提供了一個(gè)高度靈活和成本效益的解決方案的許多嵌入式控制應(yīng)用。AT89S 51提供以下特征:一個(gè)字節(jié),128個(gè)字節(jié)32內(nèi)存,輸入/輸出線,看門狗定時(shí)器,雙數(shù)據(jù)指針,2個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè) 5 向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。此外,AT89S 51設(shè)計(jì)與靜態(tài)的邏輯操作下降到零頻率和支持軟件可選的節(jié)電模式??臻e模式下停止中央處理器,同時(shí)允許存儲(chǔ)器,定時(shí)器/計(jì)數(shù)器,串行端口,和中斷系統(tǒng)繼續(xù)工作。在掉電模式節(jié)省內(nèi)存的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè)硬件復(fù)位。
8位
微控制器4K字節(jié)
的系統(tǒng)內(nèi)可編程
快閃記憶體
AT89S51
Rev. 2487A–10/01
1
Pin Configurations
PDIP
P1.0
P1.1
P1.2
P1.3
P1.4
(MOSI) P1.5
(MISO) P1.6
(SCK) P1.7
RST
(RXD) P3.0
(TXD) P3.1
(INT0) P3.2
(INT1) P3.3
(T0) P3.4
(T1) P3.5
(WR) P3.6
(RD) P3.7
XTAL2
XTAL1
GND
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
VCC
P0.0 (AD0)
P0.1 (AD1)
P0.2 (AD2)
P0.3 (AD3)
P0.4 (AD4)
P0.5 (AD5)
P0.6 (AD6)
P0.7 (AD7)
EA/VPP
ALE/PROG
PSEN
P2.7 (A15)
P2.6 (A14)
P2.5 (A13)
P2.4 (A12)
P2.3 (A11)
P2.2 (A10)
P2.1 (A9)
P2.0 (A8)
PLCC
P1.4P1.3P1.2P1.1P1.0NCVCCP0.0 (AD0)P0.1 (AD1)P0.2 (AD2)P0.3 (AD3)
TQFP
P1.4P1.3P1.2P1.1P1.0NCVCCP0.0 (AD0)P0.1 (AD1)P0.2 (AD2)P0.3 (AD3)
4443424140393837363534
(MOSI) P1.5
(MISO) P1.6
(SCK) P1.7
RST
(RXD) P3.0
NC
(TXD) P3.1
(INT0) P3.2
(INT1) P3.3
(T0) P3.4
(T1) P3.5
1
2
3
4
5
6
7
8
9
10
11
1213141516171819202122
33
32
31
30
29
28
27
26
25
24
23
P0.4 (AD4)
P0.5 (AD5)
P0.6 (AD6)
P0.7 (AD7)
EA/VPP
NC
ALE/PROG
PSEN
P2.7 (A15)
P2.6 (A14)
P2.5 (A13)
2
AT89S51
2487A–10/01
(WR) P3.6(RD) P3.7XTAL2XTAL1GNDGND(A8) P2.0(A9) P2.1(A10) P2.2(A11) P2.3(A12) P2.4
(WR) P3.6(RD) P3.7XTAL2XTAL1GNDNC(A8) P2.0(A9) P2.1(A10) P2.2(A11) P2.3(A12) P2.4
1819202122232425262728
(MOSI) P1.5
(MISO) P1.6
(SCK) P1.7
RST
(RXD) P3.0
NC
(TXD) P3.1
(INT0) P3.2
(INT1) P3.3
(T0) P3.4
(T1) P3.5
7
8
9
10
11
12
13
14
15
16
17
6543214443424140
39
38
37
36
35
34
33
32
31
30
29
P0.4 (AD4)
P0.5 (AD5)
P0.6 (AD6)
P0.7 (AD7)
EA/VPP
NC
ALE/PROG
PSEN
P2.7 (A15)
P2.6 (A14)
P2.5 (A13)
AT89S51
Block Diagram
P0.0 - P0.7
P2.0 - P2.7
VCC
PORT 0 DRIVERS
GND
PORT 2 DRIVERS
RAM ADDR.
REGISTER
RAM
PORT 0
LATCH
PORT 2
LATCH
FLASH
B
REGISTER
ACC
STACK
POINTER
PROGRAM
ADDRESS
REGISTER
BUFFER
TMP2
TMP1
ALU
INTERRUPT, SERIAL PORT,
AND TIMER BLOCKS
PC
INCREMENTER
PSW
PROGRAM
COUNTER
PSEN
ALE/PROG
EA / VPP
RST
WATCH
DOG
PORT 3
LATCH
TIMING
AND
CONTROL
INSTRUCTION
REGISTER
DUAL DPTR
PORT 1
LATCH
ISP
PORT
PROGRAM
LOGIC
OSC
PORT 3 DRIVERS
PORT 1 DRIVERS
P3.0 - P3.7
P1.0 - P1.7
3
2487A–10/01
引腳功能說(shuō)明
VCC
GND
Port 0
電源電壓.
接地.
.端口0是一個(gè)8位漏極開路雙向輸入/輸出端口。作為一個(gè)輸出端口,每個(gè)引腳可以吸收八晶體管輸入。當(dāng)1秒寫入端口0引腳,該引腳可作為高阻抗輸入。端口0是一個(gè)8位漏極開路雙向輸入/輸出端口。作為一個(gè)輸出端口,每個(gè)引腳可以吸收八晶體管輸入。當(dāng)1秒寫入端口0引腳,該引腳可作為高阻抗輸入。端口0也可以配置為復(fù)低階地址/數(shù)據(jù)總線訪問(wèn)外部程序和數(shù)據(jù)存儲(chǔ)器。在這種模式下,P具有內(nèi)部上拉。端口0也收到代碼字節(jié)的閃存編程和輸出代碼字節(jié)在程序驗(yàn)證。外部上拉電路需要在程序驗(yàn)證。
Port 1
端口1是一個(gè)8位雙向輸入/輸出端口的內(nèi)部上拉。1端口輸出緩沖器可匯/源四晶體管的輸入。當(dāng)1秒寫入端口1引腳,他們是拉高了內(nèi)部上拉電路,可作為投入使用。作為輸入,端口1引腳,外部被拉低時(shí)將電流源(HL)因?yàn)閮?nèi)部上拉電路。
1端口接收低位地址字節(jié)的閃存編程和驗(yàn)證。
端口引腳
P1.5
P1.6
P1.7
其他功能
MOSI (用于在ISP編程)
MISO (用于在ISP編程)
SCK (用于在ISP編程)
Port 2
端口2是一個(gè)帶有內(nèi)部上拉電阻的8位雙向輸入/輸出端口。2端口的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路輸入。當(dāng)1秒寫入端口2引腳,他們是拉高了內(nèi)部上拉電路,可作為投入使用。作為輸入,端口2引腳,外部被拉低時(shí)將電流源(HL)因?yàn)閮?nèi)部上拉電路。
2端口發(fā)出的高位地址字節(jié)在獲取外部程序存儲(chǔ)器和在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器,使用16位地址(MOVX@DPTR指令)。在這應(yīng)用程序,端口2,使用強(qiáng)大的內(nèi)部上拉時(shí)發(fā)射1秒。訪問(wèn)期間,外部數(shù)據(jù)存儲(chǔ)器使用8位地址(MOVX @ RI),2端口發(fā)出內(nèi)容的二萃取—特殊功能寄存器。
2端口接收高位地址位和一些控制信號(hào)在閃光—設(shè)計(jì)與驗(yàn)證。
Port 3
端口3是一組帶有內(nèi)部上拉電阻的8位雙向輸入/輸出端口。3端口輸出緩沖器可匯/源四個(gè)晶體管的輸入。當(dāng)1秒寫入端口3引腳,他們是拉高了內(nèi)部上拉電路,可作為投入使用。作為輸入,端口3引腳,外部被拉低時(shí)將電流源(HL)由于上拉。
3端口接收一些控制信號(hào)的閃存編程和驗(yàn)證。
端口3也用于各種特殊功能的單片機(jī),所顯示的下表。
4
AT89S51
2487A–10/01
AT89S51
端口引腳
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
其他功能
RXD(串行輸入口)
TXD(串行輸出口)
INT0(外中斷0)
INT1 (外中斷1)
T0(定時(shí)/計(jì)數(shù)器0外部輸入)
T1(定時(shí)/計(jì)數(shù)器1外部輸入)
WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)
RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)
RST
復(fù)位輸入。就這一高腳為2個(gè)機(jī)器周期而振蕩器運(yùn)行重置裝置。該引腳驅(qū)動(dòng)器
高98振蕩器的時(shí)期后,看門狗超時(shí)。DIS-RTO位在SFR AUXR(地址8eh)
可以用來(lái)禁用此功能。在默認(rèn)狀態(tài)位disrto,復(fù)位高出功能啟用。.
當(dāng)訪問(wèn)外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),地址鎖存使(ALE)輸出脈沖用于鎖存地址的低8位字節(jié)。
即使不訪問(wèn)外部存儲(chǔ)器,ALE 仍以時(shí)鐘振蕩頻率的l/6 輸出固定的正脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過(guò)一個(gè)ALE脈沖。對(duì)Flash存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。
如果需要,可通過(guò)對(duì)特殊功能寄存器(SFR)區(qū)中的8EH單元的DO 位置位,可禁止ALE 操作。設(shè)置該位置位后,只有一條MOVX和MOVC指令A(yù)LE才會(huì)被激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE無(wú)效
ALE/PROG
PSEN
P程序儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào)。
當(dāng)AT89C51 由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖。
在此期間,當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器,這兩次有效的PSEN信號(hào)不出現(xiàn)。
.
EA/VPP
外部訪問(wèn)啟用。EA必須接地為使設(shè)備獲取代碼從外部程序存儲(chǔ)器位置0000H開始,到 FFFFH寄存器。然而,需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。
EA端為高電平(接VCC端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令
Flash存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程
電壓Vpp。
.
XTAL1
XTAL2
振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。.
振蕩器反相放大器的輸出端。
5
2487A–10/01
Special Function
Registers
特殊的功能的寄存器
特殊功能寄存器(SFR)的于片內(nèi)的空間分布如表 1 所示。
.
請(qǐng)注意,這些地址并沒(méi)有全部占用,沒(méi)有占用的地址亦不可使用,讀這些地
址將得到一個(gè)隨意的數(shù)值.而寫這些地址單元將不能得到預(yù)期的結(jié)果.。
Table 1. AT89S51特殊功能寄存器分布圖及復(fù)位值
0F8H
0F0H
0E8H
0E0H
0D8H
0D0H
0C8H
0C0H
0B8H
0B0H
0A8H
0A0H
98H
90H
88H
80H
IP
XX000000
P3
11111111
IE
0X000000
P2
11111111
SCON
00000000
P1
11111111
TCON
00000000
P0
11111111
TMOD
00000000
SP
00000111
TL0
00000000
DP0L
00000000
TL1
00000000
DP0H
00000000
TH0
00000000
DP1L
00000000
TH1
00000000
DP1H
00000000
AUXR
XXX00XX0
PCON
0XXX0000
SBUF
XXXXXXXX
AUXR1
XXXXXXX0
WDTRST
XXXXXXXX
PSW
00000000
ACC
00000000
B
00000000
0FFH
0F7H
0EFH
0E7H
0DFH
0D7H
0CFH
0C7H
0BFH
0B7H
0AFH
0A7H
9FH
97H
8FH
87H
6
AT89S51
2487A–10/01
AT89S51
用戶軟件不要軟件訪問(wèn)這些未定義的單元,這些單元
是留作以后產(chǎn)品擴(kuò)展用途的,復(fù)位后這些新的位將為 0.。
中斷寄存器: 各中斷允許控制位于 IE 寄存器,
5 個(gè)中斷源的中斷優(yōu)先級(jí)控制位于 IP 寄存器.。
Table 2. AUXR: 輔助寄存器
Not Bit
Addressable
–
Bit
7
–
6
–
5
WDIDLE
4
DISRTO
3
–
2
–
1
DISALE
0
Address = 8EH
Reset Value = XXX00XX0B
–
DISALE
保留為將來(lái)擴(kuò)展
禁用/啟用ALE
禁用/啟用
經(jīng)營(yíng)模式
0
1
ALE是以恒定速度1 / 6的振蕩頻率
ALE是積極只在一個(gè)MOVX或MOVC指令
DISRTO
禁用/啟用重置了
DISRTO
0
1
復(fù)位引腳驅(qū)動(dòng)高后,定時(shí)器超時(shí)
復(fù)位引腳輸入
WDIDLE
WDIDLE
0
1
禁用/啟用定時(shí)器在空閑模式
定時(shí)器繼續(xù)計(jì)數(shù)在空閑模式
定時(shí)器停止計(jì)數(shù)在空閑模式
雙數(shù)據(jù)指針寄存器:方便訪問(wèn)內(nèi)部和外部數(shù)據(jù)存儲(chǔ)器,
提供了兩個(gè) 16 位數(shù)據(jù)指針寄存器:DP0 位于 SFR(特殊功能寄存器)區(qū)塊
中的地址82H,83H和DP1位于地址 84H,85H,當(dāng) SFR 中的位 DPS=0 選擇
DP0,而 DPS=1 則選擇 DP1.用戶應(yīng)在訪問(wèn)相應(yīng)的數(shù)據(jù)指針寄存器前初始
化 DPS 位.。
7
2487A–10/01
電源空閑標(biāo)志: 電源空閑標(biāo)志(POF)在特殊功能寄存器SFR中
PCON 的第4位(PCON.4) ,電源打開時(shí) POF 置"1",它可由軟件
設(shè)置睡眠狀態(tài)并不為復(fù)位所影響。
Table 3. AUXR1: 輔助寄存器1
AUXR1
Address = A2H
Reset Value = XXXXXXX0B
Not Bit
Addressable
–
Bit
7
–
6
–
5
–
4
–
3
–
2
–
1
DPS
0
–
DPS
保留為將來(lái)擴(kuò)展
數(shù)據(jù)指針寄存器選擇t
DPS
0
1
數(shù)據(jù)指針寄存器選擇 DP0L, DP0H
數(shù)據(jù)指針寄存器選擇DP1L, DP1H
存儲(chǔ)結(jié)構(gòu)
程序存儲(chǔ)器
MCS - 51器件有一個(gè)獨(dú)立的地址空間的程序和數(shù)據(jù)存儲(chǔ)器。到了
每個(gè)字節(jié)的外部程序和數(shù)據(jù)存儲(chǔ)器可以解決。
MCS - 51器件有一個(gè)獨(dú)立的地址空間的程序和數(shù)據(jù)存儲(chǔ)器。
到了每個(gè)字節(jié)的外部程序和數(shù)據(jù)存儲(chǔ)器可以解決。
如果EA引腳連接到接地,所有程序讀取指示外部存儲(chǔ)。
基于AT89S51,如果是連接到電源電壓,通過(guò)程序讀取地址0000H到FFFH是針對(duì)內(nèi)存和讀取地址操作是通過(guò)0000H到 FFFFH針對(duì)外部記憶體。
數(shù)據(jù)存儲(chǔ)器
AT89S 51實(shí)現(xiàn)了128個(gè)字節(jié)的片上存儲(chǔ)器。128字節(jié)都可以通過(guò)直接
和間接尋址方式。堆棧操作的例子是間接尋址,所以
128字節(jié)的數(shù)據(jù)可作為堆棧空間。
WDT 是為了解決 CPU 程序運(yùn)行時(shí)可能進(jìn)入混亂或死循環(huán)而設(shè)置, 它由一個(gè)
14bit 計(jì)數(shù)器和看門狗復(fù)位 SFR (WDTRST) 構(gòu)成.外部復(fù)位時(shí),WDT 默認(rèn)為關(guān)
閉狀態(tài),要打開 WDT,用戶必須按順序?qū)?01EH 和 0E1H 寫到 WDTRST 寄存
器(SFR 地址為 0A6H) ,當(dāng)啟動(dòng)了 WDT,它會(huì)隨晶體振蕩器在每個(gè)機(jī)器周期計(jì)
數(shù),除硬件復(fù)位或 WDT 溢出復(fù)位外沒(méi)有其它方法 關(guān)閉 WDT,當(dāng) WDT 溢出
,將使 RST 引腳輸出高電平的復(fù)位脈
使定時(shí)器,需按次序?qū)?01EH 和 0E1H 到 WDTRST 寄存器(SFR 的地址為 0A6H) ,當(dāng) WDT 打開后,需在一定的時(shí)候 01EH 和 0E1H 到 WDTRST 寄存器以避免 WDT 計(jì)數(shù)溢出.14 位 WDT 計(jì)數(shù)器計(jì)數(shù)達(dá)到 16383(3FFFH) ,WDT 將溢出并 使器件復(fù)位.WDT 打開時(shí),它會(huì)隨晶體振蕩器在每個(gè)機(jī)器周期計(jì)數(shù),這意味著用戶必須在小于每個(gè) 16383 機(jī)器周期內(nèi)復(fù) 位 WDT,也即寫 01EH 和 0E1H 到 WDTRST 寄存器,WDTRST 為只寫寄存器.WDT 計(jì)數(shù)器既不可讀也不可寫,當(dāng) WDT 溢出時(shí),通常將使 RST 引腳輸出高電平的復(fù)位脈沖.復(fù)位脈沖持續(xù)時(shí)間為 98×Tosc,而 Tosc=1/Fosc(晶體振蕩頻率) . 為使 WDT 工作最優(yōu)化,必須在合適的程序代碼時(shí)間段周期地復(fù)位 WDT 防止 WDT 溢出,
2487A–10/01
定時(shí)器
(一次性
啟用重置了)
使用定時(shí)器
8
AT89S51
AT89S51
掉電和空閑狀態(tài)
定時(shí)器l
掉電時(shí)期,晶體振蕩停止,WDT 也停止.掉電模式下,用戶不能再?gòu)?fù)位 WDT.有兩種
方法可退出掉電模式:硬件復(fù) 位或通過(guò)激活外部中斷.當(dāng)硬件復(fù)位退出掉電模式時(shí)
,處理 WDT 可象通常的上電復(fù)位一樣.當(dāng)由中斷退出掉電模式則有 所不同,中斷低
電平狀態(tài)持續(xù)到晶體振蕩穩(wěn)定,當(dāng)中斷電平變?yōu)楦呒错憫?yīng)中斷服務(wù).為防止中斷誤復(fù)
位,當(dāng)器件復(fù)位,中 斷引腳持續(xù)為低時(shí),WDT 并未開始計(jì)數(shù),直到中斷引腳被拉高為
止.這為在掉電模式下的中斷執(zhí)行中斷服務(wù)程序而設(shè)置。
為保證 WDT 在退出掉電模式時(shí)極端情況下不溢出,最好在進(jìn)入
掉電模式前復(fù)位 WDT。
在進(jìn)入空閑模式前,WDT 打開時(shí),WDT 是否繼續(xù)計(jì)數(shù)由 SFR 中的
AUXR 的 WDIDLE 位決定,在 IDLE 期間(位 WDIDLE=0) 默認(rèn)狀
態(tài)是繼續(xù)計(jì)數(shù). 為防止 AT89S51 從空閑模式中復(fù)位, 用戶應(yīng)周期性地
設(shè)置定時(shí)器, 重新進(jìn)入空閑模式。
當(dāng)位 WDIDLE 被置位,在空閑模式中 WDT 將停止計(jì)數(shù),直到從空閑
(IDLE)模式中退出重新開始計(jì)數(shù)。
UART
通用異步通信口
AT89S51 的 UART 操作與 AT89C51 一樣,有關(guān)更詳細(xì)的資料請(qǐng)參考ATMEL
公司的網(wǎng)站(www.atmel.com) ,從主頁(yè)選擇"Products"-"8051-Architecture Flash
Microcontroller"-"Product Overview".
AT89S51的定時(shí)器0和定時(shí)器1操作與 AT89C51一樣, 有關(guān)更詳細(xì)的資料請(qǐng)參考
ATMEL 公 司 的 網(wǎng) 站 ,從主頁(yè)選擇"Products"-"8051-Architecture Flash
Microcontroller"-"Product Overview" . (www.atmel.com)
AT89S51 共有 5 個(gè)中斷向量:2 個(gè)外中斷(INT0 和 INT1) 個(gè)定時(shí)中斷(Timer0和Timer1)
和一個(gè)串行中斷.這些 ,2 中斷如圖 1.
這些中斷源各自的禁止和使能位參見特殊功能寄存器的 IE.IE 也包含總中斷控制位 EA,
EA 清 0,將關(guān)閉所有中斷
值得注意的是表 4 中的 IE.6 和 IE.5 沒(méi)有定義,用戶不要訪問(wèn)這些位,它是保留為以后的
AT89 產(chǎn)品作擴(kuò)展用途..
定時(shí)器0和定時(shí)器 1 的中斷標(biāo)志 TF0 和 TF1,它是定時(shí)器溢出時(shí)的 S5P2 時(shí)序周期被置位,
該標(biāo)志保留至下個(gè)時(shí)序周期
Timer 0 and 1
定時(shí)器0和
定時(shí)器1
Interrupts
9
2487A–10/01
.
Table 4. 中斷控制寄存器
(MSB)
EA
–
–
ES
ET1
(LSB)
EX1
ET0
EX0
Enable Bit = 1 enables the interrupt.
Enable Bit = 0 disables the interrupt.
Symbol
EA
Position
IE.7
Function
Disables all interrupts. If EA = 0, no interrupt is
acknowledged. If EA = 1, each interrupt source is
individually enabled or disabled by setting or clearing
its enable bit.
Reserved
Reserved
Serial Port interrupt enable bit
Timer 1 interrupt enable bit
External interrupt 1 enable bit
Timer 0 interrupt enable bit
External interrupt 0 enable bit
–
–
ES
ET1
EX1
ET0
EX0
IE.6
IE.5
IE.4
IE.3
IE.2
IE.1
IE.0
User software should never write 1s to reserved bits, because they may be used in future AT89
products.
Figure 1. 中斷源方框圖
0
INT0
1
IE0
TF0
0
INT1
1
IE1
TF1
TI
RI
10
AT89S51
2487A–10/01
AT89S51
Oscillator
Characteristics
振蕩器連接
xtal1和xtal2是輸入和輸出,分別,一個(gè)反相放大器,可以
配置為使用一個(gè)片上振蕩器,如圖2所示。一個(gè)石英晶體或
陶瓷諧振器可用于。驅(qū)動(dòng)裝置從外部時(shí)鐘源,xtal2
應(yīng)懸空而xtal1驅(qū)動(dòng),如圖3所示。有沒(méi)有需要—
方法對(duì)占空比的外部時(shí)鐘信號(hào),從輸入的內(nèi)部時(shí)鐘
電路是通過(guò)一個(gè)分頻2觸發(fā)器,但最低和最高電壓高和低
時(shí)間規(guī)則必須遵守。
.
Figure 2. 振蕩器連接
C2
XTAL2
C1
XTAL1
GND
Note:
C1, C2 = 30 pF ± 10 pF for Crystals = 40 pF ± 10 pF for Ceramic Resonators
Figure 3. 外部時(shí)鐘驅(qū)動(dòng)電路
NC
XTAL2
EXTERNAL
OSCILLATOR
SIGNAL
XTAL1
GND
Idle Mode
空閑模式
在空閑模式狀態(tài), CPU 保持睡眠狀態(tài)而所有片內(nèi)的外設(shè)仍保持激活狀態(tài),
這種方式由軟件產(chǎn)生. 此時(shí), 片內(nèi) RAM 和所有特殊功能寄存器的內(nèi)容保持
不變.空閑模式可由任何允許的中斷請(qǐng)求或硬件復(fù)位終止.
需要注意的是,當(dāng)由硬件復(fù)位來(lái)終止空閑工作模式時(shí),CPU 通常是從激活空閑模式那條
指令的下一條指令開始繼續(xù) 執(zhí)行程序的,要完成內(nèi)部復(fù)位操作,硬件復(fù)位脈沖要保持兩
個(gè)機(jī)器周期(24 個(gè)時(shí)鐘周期)有效,在這種情況下,內(nèi)部禁止 CPU 訪問(wèn)片內(nèi) RAM,而允許
訪問(wèn)其它端口.為了避免在復(fù)位結(jié)束時(shí)可能對(duì)端口產(chǎn)生意外寫入,激活空閑模式的那條指
令后一條指令不應(yīng)是一條對(duì)端口或外部存儲(chǔ)器的寫入指令.
Power-down
Mode
掉電模式
在掉電模式下,振蕩器停止工作,進(jìn)入掉電模式的指令是最后一條被執(zhí)行的指令,片內(nèi)
RAM 和特殊功能寄存器的內(nèi) 容在終止掉電模式前被凍結(jié). 退出掉電模式的方法
是硬件復(fù)位或由處于使能狀態(tài)的外中斷 INT0 和 INT1 激活. 復(fù)位后將重 新定義
全部特殊功能寄存器但不改變 RAM 中的內(nèi)容,在 Vcc 恢復(fù)到正常工作電平前,復(fù)位
應(yīng)無(wú)效,且必須保持一定時(shí)間 以使振蕩器重啟動(dòng)并穩(wěn)定工作.
11
2487A–10/01
Table 5. 空閑和掉電期間外部引腳狀態(tài)模式
模式
空閑
空閑
掉電
掉電
程序存儲(chǔ)區(qū)
內(nèi)部
外部
內(nèi)部
外部
ALE
1
1
0
0
PSEN
1
1
0
0
PORT0
數(shù)據(jù)
浮空
數(shù)據(jù)
浮空
PORT1
數(shù)據(jù)
數(shù)據(jù)
數(shù)據(jù)
數(shù)據(jù)
PORT2
數(shù)據(jù)
地址
數(shù)據(jù)
數(shù)據(jù)
PORT3
數(shù)據(jù)
數(shù)據(jù)
數(shù)據(jù)
數(shù)據(jù)
Program
Memory Lock
Bits
程序存儲(chǔ)器的加密
AT89S51 可使用對(duì)芯片上的 3 個(gè)加密位 LB1,LB2,LB3 進(jìn)行編
程(P)或不編程(U)來(lái)得到如下表所示的功能
Table 6. 加密位保護(hù)功能表
程序加密位
LB1
1
2
U
P
LB2
U
U
LB3
U
U
保護(hù)類型
沒(méi)有程序保護(hù)功能
禁止從外部程序存儲(chǔ)器中執(zhí)行MOVC 2 P U U 指令
讀取內(nèi)部程序存儲(chǔ)器的內(nèi)容,此外 復(fù)位時(shí) EA 被鎖止
,禁止再編程
除上表功能,還禁止程序校驗(yàn)
除以上功能外,同時(shí)禁止外部執(zhí)行
3
4
P
P
P
P
U
P
當(dāng)加密位 LB1 被編程時(shí),在復(fù)位期間,EA 端的邏輯電平被采樣并鎖存,如果單
片機(jī)上電后一直沒(méi)有復(fù)位,則鎖存起 的初始值是一個(gè)隨機(jī)數(shù),且這個(gè)隨機(jī)數(shù)會(huì)一
直保存到真正復(fù)位為止.為使單片機(jī)能正常工作,被鎖存的 EA 電平值必須與 該
引腳當(dāng)前的邏輯電平一致.此外加密位只能通過(guò)整片擦除的方法清除.
Programming
the Flash –
Parallel Mode
Flash閃速存儲(chǔ)器
的并行編程
AT89s51 單片機(jī)內(nèi)部有 4k 字節(jié)的可快速編程的 Flash 存儲(chǔ)陣列.編程方法可通過(guò)傳統(tǒng)
的EPROM編程器使用高電壓 (+12V)和協(xié)調(diào)的控制信號(hào)進(jìn)行編程.
AT89S51 的代碼是逐一字節(jié)進(jìn)行編程的.
編程方法: 編程前,須按編程模式表和圖 13,圖 14 所示設(shè)置好地址,數(shù)據(jù)及控制信
,AT89S51 編程方法如下:
1.在地址線上加上要編程單元的地址信號(hào).
2.在數(shù)據(jù)線上加上要寫入的數(shù)據(jù)字節(jié).
3.激活相應(yīng)的控制信號(hào).
4..將 EA/Vpp 端加上+12V 編程電壓..
5.每對(duì) Flash 存儲(chǔ)陣列寫入一個(gè)字節(jié)或每寫入一個(gè)程序加密位,加上一個(gè) ALE/PROG
編程脈沖.每個(gè)字節(jié)寫入周期 是自身定時(shí)的,大多數(shù)約為 50us.改變編程單元的地址
和寫入的數(shù)據(jù),重復(fù) 1-5 步驟,直到全部文件編程結(jié)束.
數(shù)據(jù)查詢: AT89S5l 單片機(jī)用數(shù)據(jù)查詢方式來(lái)檢測(cè)一個(gè)寫周期是否結(jié)束,在一個(gè)
寫周期中,如需讀取最后寫入的那個(gè)字節(jié),則讀 出的數(shù)據(jù)的最高位(P0.7)是原來(lái)
寫入字節(jié)最高位的反碼.寫周期完成后,有效的數(shù)據(jù)就會(huì)出現(xiàn)在所有輸出端上,此
時(shí), 可進(jìn)入下一個(gè)字節(jié)的寫周期,寫周期開始后,可在任意時(shí)刻進(jìn)行數(shù)據(jù)查詢.
12
AT89S51
2487A–10/01
AT89S51
Ready/Busy:字節(jié)編程的進(jìn)度可通過(guò)"RDY/BSY"輸出信號(hào)監(jiān)測(cè),編程期間,ALE
變?yōu)楦唠娖?H"后 P3.0 端 電平被拉低,表示正在編程狀態(tài)(忙狀態(tài)) .編程完
成后,P3.0 變?yōu)楦唠娖奖硎緶?zhǔn)備就緒狀態(tài).
程序校驗(yàn):如果加密位 LB1,LB2 沒(méi)有進(jìn)行編程,則代碼數(shù)據(jù)可通過(guò)地址和數(shù)據(jù)
線讀回原編寫的數(shù)據(jù),各加密位也 可通過(guò)直接回讀進(jìn)行校驗(yàn).
讀片內(nèi)簽名字節(jié):AT89S51 單片機(jī)內(nèi)有 3 個(gè)簽名字節(jié),地址為 000H,100H 和 200H.用于聲明該器件的廠商和型 號(hào)等信息,讀簽名字節(jié)的過(guò)程和正常校驗(yàn)相仿,只需將 P3.6 和 P3.7 保持低電平,返回值意義如下:
(000H)=1EH 聲明產(chǎn)品由 ATMEL 公司制造.
(100H)=51H 聲明為 AT89S51 單片機(jī).
(200H)=06H
芯片擦除:在并行編程模式,利用控制信號(hào)的正確組合并保持 ALE/PROG
引腳 200ns-500ns 的低電平脈沖寬度即 可完成擦除操作.
在串行編程模式,芯片擦除操作是利用擦除指令進(jìn)行.在這種方式,擦除周期
是自身定時(shí)的,大約為 500ms.
擦除期間,用串行方式讀任何地址數(shù)據(jù),返回值均為 00H.
Programming
the Flash –Serial
Mode
Flash 閃速存儲(chǔ)器
的串行編程
將 RST 接至 Vcc,程序代碼存儲(chǔ)陣列可通過(guò)串行 ISP 接口進(jìn)行編程,
串行接口包含 SCK 線,MOSI(輸入)和 MISO (輸出)線.將 RST 拉高后
,在其它操作前必須發(fā)出編程使能指令,編程前需將芯片擦除.
芯片擦除則將存儲(chǔ)代碼陣列全寫為 FFH.
外部系統(tǒng)時(shí)鐘信號(hào)需接至 XTAL1 端或在 XTALl 和 XTAL2 接
上晶體振蕩器.最高的串行時(shí)鐘(SCK)不超過(guò) l/16 晶 體時(shí)鐘,當(dāng)晶體為
33MHz 時(shí),最大 SCK 頻率為 2MHz..
Serial
Programming
Algorithm
Flash 閃速存儲(chǔ)器的串行編程方法
對(duì) AT89S5l 的串行編程次序推薦使用以下方法:
1.上電次序:將電源加在 Vcc 和 GND 引腳,RST 置為"H" ,如果 XTAL 和 XTAL2 接上晶體或者在 XTAL1 接上 3 -33MHz 的時(shí)鐘頻率,等候 10ms.
2.將編程使能指令發(fā)送到 MOSI(Pinl.5) ,編程時(shí)鐘接至 SCK(Pinl.7) ,此頻率需小于晶體時(shí)鐘頻率的 l/16.
3.代碼陣列的編程可選字節(jié)模式或頁(yè)模式.寫周期是自身定時(shí)的,一般不大于 0.5ms(5V 電壓時(shí)) .
4.任意代碼單元均可 MISO(Pinl.6)和讀指令選擇相應(yīng)的地址回讀數(shù)據(jù)進(jìn)行校驗(yàn).
5.編程結(jié)束應(yīng)將 RST 置為"L"以結(jié)束操作.
6.斷電次序:如果需要的話按這個(gè)方法斷電,假如沒(méi)有使用晶體,將 XATL 置為低,RST 置低,關(guān)斷 Vcc.
13
2487A–10/01
數(shù)據(jù)校驗(yàn): 數(shù)據(jù)校驗(yàn)也可在串行模式下進(jìn)行,在這個(gè)模式,在一
個(gè)寫周期中,通過(guò)輸出引腳 MISO 串行回讀一個(gè)字節(jié)數(shù)據(jù)的最
高位將為最后寫入字節(jié)的反碼.
Serial Programming Instruction Set
串行編程指令設(shè)置
串行編程指令設(shè)置為一個(gè) 4 字節(jié)協(xié)議,參見表18..
Programming Interface –Parallel Mode
并行編程接口
采用控制信號(hào)的正確組合可對(duì) Flash 閃速存儲(chǔ)陣列中的每一代碼字節(jié)進(jìn)
行寫入和存儲(chǔ)器的整片擦除,寫操作周期是自身定時(shí)的,初始化后它將自動(dòng)
定時(shí)到操作完成..
更多的有關(guān) ATMEL 系列單片機(jī)的編程技術(shù)請(qǐng)聯(lián)系相應(yīng)的編程器供應(yīng)商以獲
取最新的軟件版本.
Table 7. Flash編程模式
ALE/
Mode
寫代碼數(shù)據(jù)
讀代碼數(shù)據(jù)
讀加密1
讀加密2
讀加密3
讀加密
1, 2, 3
芯片擦除
讀ATMEL ID
讀器件 ID
讀器件 ID
VCC
5V
5V
5V
5V
5V
RST
H
H
H
H
H
PSEN
L
L
L
(3)
EA/
VPP
12V
P2.6
L
L
H
H
H
P2.7
H
L
H
H
L
P3.3
H
L
H
H
H
P3.6
H
H
H
L
H
P3.7
H
H
H
L
L
P0.7-0
Data
DIN
DOUT
X
X
X
P0.2,
P0.3,
P0.4
X
1EH
51H
06H
P2.3-0
P1.7-0
PROG
(2)
Address
A11-8
A11-8
X
X
X
A7-0
A7-0
X
X
X
H
(3)
H
12V
12V
(3)
L
L
12V
5V
H
L
H
(1)
H
H
H
L
H
L
X
X
5V
5V
5V
5V
H
H
H
H
L
L
L
L
H
H
H
12V
H
H
H
H
L
L
L
L
L
L
L
H
L
L
L
L
L
L
L
L
L
L
L
X
0000
0001
0010
X
00H
00H
00H
注: 1.芯片擦除每一 PROG 脈沖為 200ns-500ns.
2.寫代碼數(shù)據(jù)每一 PROG 脈沖為 200ns-500ns.
3.寫加密位每一 PROG 脈沖為 200ns-500ns.
4.編程期間 P3.0 引腳輸出 RDY/BSY 信號(hào).
5. "×"不需理會(huì).
AT89S51
2487A–10/01
AT89S51
圖4: Flash 存儲(chǔ)器編程(并口模式)
VCC
AT89S51
ADDR.
0000H/FFFH
A0 - A7
A8 - A11
P1.0-P1.7
P2.0 - P2.3
P2.6
P2.7
P3.3
P3.6
P3.7
XTAL2
EA
VIH/VPP
VCC
P0
PGM
DATA
SEE FLASH
PROGRAMMING
MODES TABLE
ALE
PROG
3-33 MHz
P3.0
RDY/
BSY
XTAL1
GND
RST
PSEN
VIH
圖5. Flash 存儲(chǔ)器校驗(yàn)(并口模式)
VCC
AT89S51
ADDR.
0000H/FFFH
A0 - A7
A8 - A11
P1.0-P1.7
P2.0 - P2.3
P2.6
P2.7
P3.3
P3.6
P3.7
XTAL 2
VCC
P0
PGM DATA
(USE 10K
PULLUPS)
SEE FLASH
PROGRAMMING
MODES TABLE
ALE
VIH
EA
3-33 MHz
XTAL1
GND
RST
PSEN
VIH
15
2487A–10/01
16
AT89S51
2487A–10/01
AT89S51
Figure 7. Flash Memory Serial Downloading
17
2487A–10/01
Table 8. Serial Programming Instruction Set
注:
1、當(dāng)LB3和LB4加密位已編程時(shí)不可簽名字節(jié)。
2、B1=0 B2=0,方式1,無(wú)加密保護(hù)。
B1=0 B2=1,方式2,加密位LB1。
B1=1,B2=0,方式3,加密位LB2。
B1=1 B2=1,方式4,加密位LB3。
以上各加密位在方式4執(zhí)行前需按順序逐一操作。
復(fù)位信號(hào)為“H后”,建立數(shù)據(jù)前使SCK為低電平至少為64個(gè)系統(tǒng)時(shí)鐘周期,復(fù)位脈沖是必須得。SCK時(shí)鐘頻率不得大于XTAL1時(shí)鐘的1/16。
在頁(yè)讀/寫模式,數(shù)據(jù)總是從地址00開始直到255。命令字節(jié)后緊跟著高4位地址,全部數(shù)據(jù)單元256字節(jié)會(huì)逐一進(jìn)行讀/寫,此時(shí)下個(gè)指令將準(zhǔn)備譯碼。
18
AT89S51
2487A–10/01
AT89S51
Serial Programming Characteristics
Figure 9. Serial Programming Timing
tOVSH
Absolute Maximum Ratings*
Operating Temperature.................................. -55°C to +125°C
Storage Temperature ..................................... -65°C to +150°C
Voltage on Any Pin
with Respect to Ground .....................................-1.0V to +7.0V
Maximum Operating Voltage ............................................ 6.6V
DC Output Current...................................................... 15.0 mA
注:
這些參數(shù)是器件的極限參數(shù),使用條件必
須在上述列表范圍以內(nèi),如果超過(guò)上述條
件,不能保證器件安全甚至?xí)斐善骷?
久性損壞!
DC Characteristics
The values shown in this table are valid for TA = -40°C to 85°C and VCC = 4.0V to 5.5V, unless otherwise noted.
Symbol
VIL
VIL1
VIH
VIH1
VOL
VOL1
Parameter
Input Low Voltage
Input Low Voltage (EA)
Input High Voltage
Input High Voltage
Output Low Voltage(1) (Ports
1,2,3)
Output Low Voltage(1)
(Port 0, ALE, PSEN)
(Except XTAL1, RST)
(XTAL1, RST)
IOL = 1.6 mA
0.45
IOL = 3.2 mA
IOH = -60 μA, VCC = 5V ± 10%
VOH
Output High Voltage
(Ports 1,2,3, ALE, PSEN)
IOH = -25 μA
IOH = -10 μA
IOH = -800 μA, VCC = 5V ± 10%
VOH1
IIL
ITL
ILI
RRST
CIO
Output High Voltage
(Port 0 in External Bus Mode)
Logical 0 Input Current (Ports
1,2,3)
Logical 1 to 0 Transition Current
(Ports 1,2,3)
Input Leakage Current (Port 0,
EA)
Reset Pulldown Resistor
Pin Capacitance
Test Freq. = 1 MHz, TA = 25°C
Active Mode, 12 MHz
Power Supply Current
ICC
注:
Power-down Mode(2)
Idle Mode, 12 MHz
VCC = 5.5V
IOH = -300 μA
IOH = -80 μA
VIN = 0.45V
-650
VIN = 2V, VCC = 5V ± 10%
±10
0.45 < VIN < VCC
50
300
10
25
6.5
50
K?
pF
mA
mA
μA
μA
μA
2.4
0.75 VCC
0.9 VCC
2.4
0.75 VCC
0.9 VCC
-50
V
V
V
V
V
V
μA
V
Condition
(Except EA)
Min
-0.5
-0.5
0.2 VCC+0.9
0.7 VCC
Max
0.2 VCC-0.1
0.2 VCC-0.3
VCC+0.5
VCC+0.5
0.45
Units
V
V
V
V
V
1、在穩(wěn)定狀態(tài)(無(wú)輸出)條件下,IOL有以下限制:
每一引腳最大IOL:10mA
每一8位端口:P0:26mA,P1,2,3:15mA。
2、掉電模式的最小Vcc為2V。
20
AT89S51
2487A–10/01
AT89S51
AC特性:
在以下工作條件測(cè)得:P0、ALE/~PROG和~PSEN負(fù)載容抗=100pF,
其他端口負(fù)載容抗=80pF。
External Program and Data Memory Characteristics
外部程序和數(shù)據(jù)存儲(chǔ)器特性
外部程序存儲(chǔ)器讀周期:
tLHLL
ALE
tAVLL
PSEN
tPLAZ
tLLAX
PORT 0
A0 - A7
tLLPL
tLLIV
tPLIV
tPLPH
tPXAV
tPXIZ
tPXIX
INSTR IN
A0 - A7
tAVIV
PORT 2
A8 - A15
A8 - A15
外部數(shù)據(jù)存儲(chǔ)器讀周期
tLHLL
ALE
tWHLH
PSEN
tLLDV
tLLWL
RD
tAVLL
PORT 0
tLLAX
tRLAZ
DATA IN
tRLRH
tRLDV
tRHDZ
tRHDX
A0 - A7 FROM PCL
INSTR IN
A0 - A7 FROM RI OR DPL
tAVWL
tAVDV
PORT 2
P2.0 - P2.7 OR A8 - A15 FROM DPH
A8 - A15 FROM PCH
22
AT89S51
2487A–10/01
AT89S51
外部程序存儲(chǔ)器寫周期
tLHLL
ALE
tWHLH
PSEN
tLLWL
WR
tAVLL
PORT 0
tLLAX
tQVWX
tWLWH
tQVWH
DATA OUT
tWHQX
A0 - A7 FROM PCL
INSTR IN
A0 - A7 FROM RI OR DPL
tAVWL
PORT 2
P2.0 - P2.7 OR A8 - A15 FROM DPH
A8 - A15 FROM PCH
外部數(shù)據(jù)存儲(chǔ)器寫周期
tCHCX
VCC - 0.5V
0.7 VCC
0.2 VCC - 0.1V
0.45V
tCHCX
tCLCH
tCHCL
tCLCX
tCLCL
外部時(shí)鐘驅(qū)動(dòng)時(shí)序
Symbol
1/tCLCL
tCLCL
tCHCX
tCLCX
tCLCH
tCHCL
步數(shù)
振蕩器頻率
時(shí)鐘周期
正時(shí)序
負(fù)時(shí)序
上升時(shí)間
下降時(shí)間
Min
0
30
12
12
5
5
Max
33
Units
MHz
ns
ns
ns
ns
ns
23
2487A–10/01
串行口時(shí)序:
在Vcc=4.0V-5.5V,負(fù)載電容=80pF條件下:
12 MHz Osc
Symbol
tXLXL
tQVXH
tXHQX
tXHDX
tXHDV
Parameter
Serial Port Clock Cycle Time
Output Data Setup to Clock Rising Edge
Output Data Hold After Clock Rising Edge
Input Data Hold After Clock Rising Edge
Clock Rising Edge to Input Data Valid
Min
1.0
700
50
0
700
Max
Variable Oscillator
Min
12tCLCL
10tCLCL-133
2tCLCL-80
0
10tCLCL-133
Max
Units
μs
ns
ns
ns
ns
上位寄存器時(shí)序波形:
INSTRUCTION
ALE
CLOCK
0
1
2
3
4
5
6
7
8
tXLXL
tQVXH
WRITE TO SBUF
tXHQX
0
1
2
3
4
5
6
7
SET TI
VALID
VALID
VALID
VALID
VALID
OUTPUT DATA
CLEAR RI
INPUT DATA
tXHDV
VALID
VALID
tXHDX
VALID
SET RI
AC測(cè)試輸入/輸出波形:
VCC - 0.5V
0.2 VCC + 0.9V
TEST POINTS
0.45V
0.2 VCC - 0.1V
注:
AC輸入測(cè)試在Vcc-0.50V為邏輯1及0.45V為邏輯0,
時(shí)序測(cè)試在VIH為最小時(shí)和VIH為最大時(shí)測(cè)量。
浮空波形:
V LOAD+
V LOAD
V LOAD -
0.1V
0.1V
V OL -
時(shí)序參考位置
V OL +
0.1V
0.1V
注:
1.在浮空狀態(tài),端口引腳在負(fù)極出現(xiàn)100mV電壓,也即當(dāng)一個(gè)端口電壓從VOH到VOL變化時(shí)出現(xiàn)100mV電壓時(shí)浮空狀態(tài)。
24
AT89S51
2487A–10/01
串行口時(shí)序:
在Vcc=4.0
收藏