基于51單片機的酒精濃度測試儀設計(液晶)
基于51單片機的酒精濃度測試儀設計(液晶),基于,51,單片機,酒精,濃度,測試儀,設計,液晶
特點
? 兼容MCS - 51?產品
? ?4K字節(jié)的系統(tǒng)內可編程(ISP)快閃記憶體
– 耐力:1000寫/擦除周期
? 4.0V至5.5V工作電壓范圍v
? 全靜態(tài)操作:0 Hz至33 MHz的
? 三個級別的程序存儲器鎖定
? 128×8位內部RAM
? 32個可編程輸入/輸出線
? 2個16位定時器/計數器
? 六個中斷源
? 全雙工異步串行通道
? 低功耗空閑和掉電模式
? 從掉電模式下的中斷恢復
? 看門狗計時器
? 雙數據指針
? 斷電標志
? 快速編程
? 靈活的ISP編程(字節(jié)和頁模式)
介紹
AT89S 51是一種低功耗,高性能的芯片與一個8位微控制器字節(jié)的系統(tǒng)內可編程快閃記憶體。該設備的生產使用公司的高密度非易失性存儲器技術和兼容的行業(yè)—標準80C 51指令集和引腳。片上閃存允許程序存儲器重新編程在系統(tǒng)或常規(guī)非易失性存儲器編程。結合靈活的8位處理器的系統(tǒng)內可編程閃存上單片AT89S 51,愛特梅爾是一個功能強大的微控制器提供了一個高度靈活和成本效益的解決方案的許多嵌入式控制應用。AT89S 51提供以下特征:一個字節(jié),128個字節(jié)32內存,輸入/輸出線,看門狗定時器,雙數據指針,2個16位定時器/計數器,一個 5 向量兩級中斷結構,一個全雙工串行通信口,片內振蕩器及時鐘電路。此外,AT89S 51設計與靜態(tài)的邏輯操作下降到零頻率和支持軟件可選的節(jié)電模式??臻e模式下停止中央處理器,同時允許存儲器,定時器/計數器,串行端口,和中斷系統(tǒng)繼續(xù)工作。在掉電模式節(jié)省內存的內容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復位。
8位
微控制器4K字節(jié)
的系統(tǒng)內可編程
快閃記憶體
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
引腳功能說明
VCC
GND
Port 0
電源電壓.
接地.
.端口0是一個8位漏極開路雙向輸入/輸出端口。作為一個輸出端口,每個引腳可以吸收八晶體管輸入。當1秒寫入端口0引腳,該引腳可作為高阻抗輸入。端口0是一個8位漏極開路雙向輸入/輸出端口。作為一個輸出端口,每個引腳可以吸收八晶體管輸入。當1秒寫入端口0引腳,該引腳可作為高阻抗輸入。端口0也可以配置為復低階地址/數據總線訪問外部程序和數據存儲器。在這種模式下,P具有內部上拉。端口0也收到代碼字節(jié)的閃存編程和輸出代碼字節(jié)在程序驗證。外部上拉電路需要在程序驗證。
Port 1
端口1是一個8位雙向輸入/輸出端口的內部上拉。1端口輸出緩沖器可匯/源四晶體管的輸入。當1秒寫入端口1引腳,他們是拉高了內部上拉電路,可作為投入使用。作為輸入,端口1引腳,外部被拉低時將電流源(HL)因為內部上拉電路。
1端口接收低位地址字節(jié)的閃存編程和驗證。
端口引腳
P1.5
P1.6
P1.7
其他功能
MOSI (用于在ISP編程)
MISO (用于在ISP編程)
SCK (用于在ISP編程)
Port 2
端口2是一個帶有內部上拉電阻的8位雙向輸入/輸出端口。2端口的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路輸入。當1秒寫入端口2引腳,他們是拉高了內部上拉電路,可作為投入使用。作為輸入,端口2引腳,外部被拉低時將電流源(HL)因為內部上拉電路。
2端口發(fā)出的高位地址字節(jié)在獲取外部程序存儲器和在訪問外部數據存儲器,使用16位地址(MOVX@DPTR指令)。在這應用程序,端口2,使用強大的內部上拉時發(fā)射1秒。訪問期間,外部數據存儲器使用8位地址(MOVX @ RI),2端口發(fā)出內容的二萃取—特殊功能寄存器。
2端口接收高位地址位和一些控制信號在閃光—設計與驗證。
Port 3
端口3是一組帶有內部上拉電阻的8位雙向輸入/輸出端口。3端口輸出緩沖器可匯/源四個晶體管的輸入。當1秒寫入端口3引腳,他們是拉高了內部上拉電路,可作為投入使用。作為輸入,端口3引腳,外部被拉低時將電流源(HL)由于上拉。
3端口接收一些控制信號的閃存編程和驗證。
端口3也用于各種特殊功能的單片機,所顯示的下表。
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(定時/計數器0外部輸入)
T1(定時/計數器1外部輸入)
WR(外部數據存儲器寫選通)
RD(外部數據存儲器讀選通)
RST
復位輸入。就這一高腳為2個機器周期而振蕩器運行重置裝置。該引腳驅動器
高98振蕩器的時期后,看門狗超時。DIS-RTO位在SFR AUXR(地址8eh)
可以用來禁用此功能。在默認狀態(tài)位disrto,復位高出功能啟用。.
當訪問外部程序存儲器或數據存儲器時,地址鎖存使(ALE)輸出脈沖用于鎖存地址的低8位字節(jié)。
即使不訪問外部存儲器,ALE 仍以時鐘振蕩頻率的l/6 輸出固定的正脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數據存儲器時將跳過一個ALE脈沖。對Flash存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。
如果需要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的DO 位置位,可禁止ALE 操作。設置該位置位后,只有一條MOVX和MOVC指令ALE才會被激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應設置ALE無效
ALE/PROG
PSEN
P程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號。
當AT89C51 由外部程序存儲器取指令(或數據)時,每個機器周期兩次PSEN有效,即輸出兩個脈沖。
在此期間,當訪問外部數據存儲器,這兩次有效的PSEN信號不出現。
.
EA/VPP
外部訪問啟用。EA必須接地為使設備獲取代碼從外部程序存儲器位置0000H開始,到 FFFFH寄存器。然而,需注意的是:如果加密位LB1被編程,復位時內部會鎖存EA端狀態(tài)。
EA端為高電平(接VCC端),CPU則執(zhí)行內部程序存儲器中的指令
Flash存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當然這必須是該器件是使用12V編程
電壓Vpp。
.
XTAL1
XTAL2
振蕩器反相放大器的及內部時鐘發(fā)生器的輸入端。.
振蕩器反相放大器的輸出端。
5
2487A–10/01
Special Function
Registers
特殊的功能的寄存器
特殊功能寄存器(SFR)的于片內的空間分布如表 1 所示。
.
請注意,這些地址并沒有全部占用,沒有占用的地址亦不可使用,讀這些地
址將得到一個隨意的數值.而寫這些地址單元將不能得到預期的結果.。
Table 1. AT89S51特殊功能寄存器分布圖及復位值
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
用戶軟件不要軟件訪問這些未定義的單元,這些單元
是留作以后產品擴展用途的,復位后這些新的位將為 0.。
中斷寄存器: 各中斷允許控制位于 IE 寄存器,
5 個中斷源的中斷優(yōu)先級控制位于 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
保留為將來擴展
禁用/啟用ALE
禁用/啟用
經營模式
0
1
ALE是以恒定速度1 / 6的振蕩頻率
ALE是積極只在一個MOVX或MOVC指令
DISRTO
禁用/啟用重置了
DISRTO
0
1
復位引腳驅動高后,定時器超時
復位引腳輸入
WDIDLE
WDIDLE
0
1
禁用/啟用定時器在空閑模式
定時器繼續(xù)計數在空閑模式
定時器停止計數在空閑模式
雙數據指針寄存器:方便訪問內部和外部數據存儲器,
提供了兩個 16 位數據指針寄存器:DP0 位于 SFR(特殊功能寄存器)區(qū)塊
中的地址82H,83H和DP1位于地址 84H,85H,當 SFR 中的位 DPS=0 選擇
DP0,而 DPS=1 則選擇 DP1.用戶應在訪問相應的數據指針寄存器前初始
化 DPS 位.。
7
2487A–10/01
電源空閑標志: 電源空閑標志(POF)在特殊功能寄存器SFR中
PCON 的第4位(PCON.4) ,電源打開時 POF 置"1",它可由軟件
設置睡眠狀態(tài)并不為復位所影響。
Table 3. AUXR1: 輔助寄存器1
AUXR1
Address = A2H
Reset Value = XXXXXXX0B
Not Bit
Addressable
–
Bit
7
–
6
–
5
–
4
–
3
–
2
–
1
DPS
0
–
DPS
保留為將來擴展
數據指針寄存器選擇t
DPS
0
1
數據指針寄存器選擇 DP0L, DP0H
數據指針寄存器選擇DP1L, DP1H
存儲結構
程序存儲器
MCS - 51器件有一個獨立的地址空間的程序和數據存儲器。到了
每個字節(jié)的外部程序和數據存儲器可以解決。
MCS - 51器件有一個獨立的地址空間的程序和數據存儲器。
到了每個字節(jié)的外部程序和數據存儲器可以解決。
如果EA引腳連接到接地,所有程序讀取指示外部存儲。
基于AT89S51,如果是連接到電源電壓,通過程序讀取地址0000H到FFFH是針對內存和讀取地址操作是通過0000H到 FFFFH針對外部記憶體。
數據存儲器
AT89S 51實現了128個字節(jié)的片上存儲器。128字節(jié)都可以通過直接
和間接尋址方式。堆棧操作的例子是間接尋址,所以
128字節(jié)的數據可作為堆棧空間。
WDT 是為了解決 CPU 程序運行時可能進入混亂或死循環(huán)而設置, 它由一個
14bit 計數器和看門狗復位 SFR (WDTRST) 構成.外部復位時,WDT 默認為關
閉狀態(tài),要打開 WDT,用戶必須按順序將 01EH 和 0E1H 寫到 WDTRST 寄存
器(SFR 地址為 0A6H) ,當啟動了 WDT,它會隨晶體振蕩器在每個機器周期計
數,除硬件復位或 WDT 溢出復位外沒有其它方法 關閉 WDT,當 WDT 溢出
,將使 RST 引腳輸出高電平的復位脈
使定時器,需按次序寫 01EH 和 0E1H 到 WDTRST 寄存器(SFR 的地址為 0A6H) ,當 WDT 打開后,需在一定的時候 01EH 和 0E1H 到 WDTRST 寄存器以避免 WDT 計數溢出.14 位 WDT 計數器計數達到 16383(3FFFH) ,WDT 將溢出并 使器件復位.WDT 打開時,它會隨晶體振蕩器在每個機器周期計數,這意味著用戶必須在小于每個 16383 機器周期內復 位 WDT,也即寫 01EH 和 0E1H 到 WDTRST 寄存器,WDTRST 為只寫寄存器.WDT 計數器既不可讀也不可寫,當 WDT 溢出時,通常將使 RST 引腳輸出高電平的復位脈沖.復位脈沖持續(xù)時間為 98×Tosc,而 Tosc=1/Fosc(晶體振蕩頻率) . 為使 WDT 工作最優(yōu)化,必須在合適的程序代碼時間段周期地復位 WDT 防止 WDT 溢出,
2487A–10/01
定時器
(一次性
啟用重置了)
使用定時器
8
AT89S51
AT89S51
掉電和空閑狀態(tài)
定時器l
掉電時期,晶體振蕩停止,WDT 也停止.掉電模式下,用戶不能再復位 WDT.有兩種
方法可退出掉電模式:硬件復 位或通過激活外部中斷.當硬件復位退出掉電模式時
,處理 WDT 可象通常的上電復位一樣.當由中斷退出掉電模式則有 所不同,中斷低
電平狀態(tài)持續(xù)到晶體振蕩穩(wěn)定,當中斷電平變?yōu)楦呒错憫袛喾?為防止中斷誤復
位,當器件復位,中 斷引腳持續(xù)為低時,WDT 并未開始計數,直到中斷引腳被拉高為
止.這為在掉電模式下的中斷執(zhí)行中斷服務程序而設置。
為保證 WDT 在退出掉電模式時極端情況下不溢出,最好在進入
掉電模式前復位 WDT。
在進入空閑模式前,WDT 打開時,WDT 是否繼續(xù)計數由 SFR 中的
AUXR 的 WDIDLE 位決定,在 IDLE 期間(位 WDIDLE=0) 默認狀
態(tài)是繼續(xù)計數. 為防止 AT89S51 從空閑模式中復位, 用戶應周期性地
設置定時器, 重新進入空閑模式。
當位 WDIDLE 被置位,在空閑模式中 WDT 將停止計數,直到從空閑
(IDLE)模式中退出重新開始計數。
UART
通用異步通信口
AT89S51 的 UART 操作與 AT89C51 一樣,有關更詳細的資料請參考ATMEL
公司的網站(www.atmel.com) ,從主頁選擇"Products"-"8051-Architecture Flash
Microcontroller"-"Product Overview".
AT89S51的定時器0和定時器1操作與 AT89C51一樣, 有關更詳細的資料請參考
ATMEL 公 司 的 網 站 ,從主頁選擇"Products"-"8051-Architecture Flash
Microcontroller"-"Product Overview" . (www.atmel.com)
AT89S51 共有 5 個中斷向量:2 個外中斷(INT0 和 INT1) 個定時中斷(Timer0和Timer1)
和一個串行中斷.這些 ,2 中斷如圖 1.
這些中斷源各自的禁止和使能位參見特殊功能寄存器的 IE.IE 也包含總中斷控制位 EA,
EA 清 0,將關閉所有中斷
值得注意的是表 4 中的 IE.6 和 IE.5 沒有定義,用戶不要訪問這些位,它是保留為以后的
AT89 產品作擴展用途..
定時器0和定時器 1 的中斷標志 TF0 和 TF1,它是定時器溢出時的 S5P2 時序周期被置位,
該標志保留至下個時序周期
Timer 0 and 1
定時器0和
定時器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是輸入和輸出,分別,一個反相放大器,可以
配置為使用一個片上振蕩器,如圖2所示。一個石英晶體或
陶瓷諧振器可用于。驅動裝置從外部時鐘源,xtal2
應懸空而xtal1驅動,如圖3所示。有沒有需要—
方法對占空比的外部時鐘信號,從輸入的內部時鐘
電路是通過一個分頻2觸發(fā)器,但最低和最高電壓高和低
時間規(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. 外部時鐘驅動電路
NC
XTAL2
EXTERNAL
OSCILLATOR
SIGNAL
XTAL1
GND
Idle Mode
空閑模式
在空閑模式狀態(tài), CPU 保持睡眠狀態(tài)而所有片內的外設仍保持激活狀態(tài),
這種方式由軟件產生. 此時, 片內 RAM 和所有特殊功能寄存器的內容保持
不變.空閑模式可由任何允許的中斷請求或硬件復位終止.
需要注意的是,當由硬件復位來終止空閑工作模式時,CPU 通常是從激活空閑模式那條
指令的下一條指令開始繼續(xù) 執(zhí)行程序的,要完成內部復位操作,硬件復位脈沖要保持兩
個機器周期(24 個時鐘周期)有效,在這種情況下,內部禁止 CPU 訪問片內 RAM,而允許
訪問其它端口.為了避免在復位結束時可能對端口產生意外寫入,激活空閑模式的那條指
令后一條指令不應是一條對端口或外部存儲器的寫入指令.
Power-down
Mode
掉電模式
在掉電模式下,振蕩器停止工作,進入掉電模式的指令是最后一條被執(zhí)行的指令,片內
RAM 和特殊功能寄存器的內 容在終止掉電模式前被凍結. 退出掉電模式的方法
是硬件復位或由處于使能狀態(tài)的外中斷 INT0 和 INT1 激活. 復位后將重 新定義
全部特殊功能寄存器但不改變 RAM 中的內容,在 Vcc 恢復到正常工作電平前,復位
應無效,且必須保持一定時間 以使振蕩器重啟動并穩(wěn)定工作.
11
2487A–10/01
Table 5. 空閑和掉電期間外部引腳狀態(tài)模式
模式
空閑
空閑
掉電
掉電
程序存儲區(qū)
內部
外部
內部
外部
ALE
1
1
0
0
PSEN
1
1
0
0
PORT0
數據
浮空
數據
浮空
PORT1
數據
數據
數據
數據
PORT2
數據
地址
數據
數據
PORT3
數據
數據
數據
數據
Program
Memory Lock
Bits
程序存儲器的加密
AT89S51 可使用對芯片上的 3 個加密位 LB1,LB2,LB3 進行編
程(P)或不編程(U)來得到如下表所示的功能
Table 6. 加密位保護功能表
程序加密位
LB1
1
2
U
P
LB2
U
U
LB3
U
U
保護類型
沒有程序保護功能
禁止從外部程序存儲器中執(zhí)行MOVC 2 P U U 指令
讀取內部程序存儲器的內容,此外 復位時 EA 被鎖止
,禁止再編程
除上表功能,還禁止程序校驗
除以上功能外,同時禁止外部執(zhí)行
3
4
P
P
P
P
U
P
當加密位 LB1 被編程時,在復位期間,EA 端的邏輯電平被采樣并鎖存,如果單
片機上電后一直沒有復位,則鎖存起 的初始值是一個隨機數,且這個隨機數會一
直保存到真正復位為止.為使單片機能正常工作,被鎖存的 EA 電平值必須與 該
引腳當前的邏輯電平一致.此外加密位只能通過整片擦除的方法清除.
Programming
the Flash –
Parallel Mode
Flash閃速存儲器
的并行編程
AT89s51 單片機內部有 4k 字節(jié)的可快速編程的 Flash 存儲陣列.編程方法可通過傳統(tǒng)
的EPROM編程器使用高電壓 (+12V)和協(xié)調的控制信號進行編程.
AT89S51 的代碼是逐一字節(jié)進行編程的.
編程方法: 編程前,須按編程模式表和圖 13,圖 14 所示設置好地址,數據及控制信
,AT89S51 編程方法如下:
1.在地址線上加上要編程單元的地址信號.
2.在數據線上加上要寫入的數據字節(jié).
3.激活相應的控制信號.
4..將 EA/Vpp 端加上+12V 編程電壓..
5.每對 Flash 存儲陣列寫入一個字節(jié)或每寫入一個程序加密位,加上一個 ALE/PROG
編程脈沖.每個字節(jié)寫入周期 是自身定時的,大多數約為 50us.改變編程單元的地址
和寫入的數據,重復 1-5 步驟,直到全部文件編程結束.
數據查詢: AT89S5l 單片機用數據查詢方式來檢測一個寫周期是否結束,在一個
寫周期中,如需讀取最后寫入的那個字節(jié),則讀 出的數據的最高位(P0.7)是原來
寫入字節(jié)最高位的反碼.寫周期完成后,有效的數據就會出現在所有輸出端上,此
時, 可進入下一個字節(jié)的寫周期,寫周期開始后,可在任意時刻進行數據查詢.
12
AT89S51
2487A–10/01
AT89S51
Ready/Busy:字節(jié)編程的進度可通過"RDY/BSY"輸出信號監(jiān)測,編程期間,ALE
變?yōu)楦唠娖?H"后 P3.0 端 電平被拉低,表示正在編程狀態(tài)(忙狀態(tài)) .編程完
成后,P3.0 變?yōu)楦唠娖奖硎緶蕚渚途w狀態(tài).
程序校驗:如果加密位 LB1,LB2 沒有進行編程,則代碼數據可通過地址和數據
線讀回原編寫的數據,各加密位也 可通過直接回讀進行校驗.
讀片內簽名字節(jié):AT89S51 單片機內有 3 個簽名字節(jié),地址為 000H,100H 和 200H.用于聲明該器件的廠商和型 號等信息,讀簽名字節(jié)的過程和正常校驗相仿,只需將 P3.6 和 P3.7 保持低電平,返回值意義如下:
(000H)=1EH 聲明產品由 ATMEL 公司制造.
(100H)=51H 聲明為 AT89S51 單片機.
(200H)=06H
芯片擦除:在并行編程模式,利用控制信號的正確組合并保持 ALE/PROG
引腳 200ns-500ns 的低電平脈沖寬度即 可完成擦除操作.
在串行編程模式,芯片擦除操作是利用擦除指令進行.在這種方式,擦除周期
是自身定時的,大約為 500ms.
擦除期間,用串行方式讀任何地址數據,返回值均為 00H.
Programming
the Flash –Serial
Mode
Flash 閃速存儲器
的串行編程
將 RST 接至 Vcc,程序代碼存儲陣列可通過串行 ISP 接口進行編程,
串行接口包含 SCK 線,MOSI(輸入)和 MISO (輸出)線.將 RST 拉高后
,在其它操作前必須發(fā)出編程使能指令,編程前需將芯片擦除.
芯片擦除則將存儲代碼陣列全寫為 FFH.
外部系統(tǒng)時鐘信號需接至 XTAL1 端或在 XTALl 和 XTAL2 接
上晶體振蕩器.最高的串行時鐘(SCK)不超過 l/16 晶 體時鐘,當晶體為
33MHz 時,最大 SCK 頻率為 2MHz..
Serial
Programming
Algorithm
Flash 閃速存儲器的串行編程方法
對 AT89S5l 的串行編程次序推薦使用以下方法:
1.上電次序:將電源加在 Vcc 和 GND 引腳,RST 置為"H" ,如果 XTAL 和 XTAL2 接上晶體或者在 XTAL1 接上 3 -33MHz 的時鐘頻率,等候 10ms.
2.將編程使能指令發(fā)送到 MOSI(Pinl.5) ,編程時鐘接至 SCK(Pinl.7) ,此頻率需小于晶體時鐘頻率的 l/16.
3.代碼陣列的編程可選字節(jié)模式或頁模式.寫周期是自身定時的,一般不大于 0.5ms(5V 電壓時) .
4.任意代碼單元均可 MISO(Pinl.6)和讀指令選擇相應的地址回讀數據進行校驗.
5.編程結束應將 RST 置為"L"以結束操作.
6.斷電次序:如果需要的話按這個方法斷電,假如沒有使用晶體,將 XATL 置為低,RST 置低,關斷 Vcc.
13
2487A–10/01
數據校驗: 數據校驗也可在串行模式下進行,在這個模式,在一
個寫周期中,通過輸出引腳 MISO 串行回讀一個字節(jié)數據的最
高位將為最后寫入字節(jié)的反碼.
Serial Programming Instruction Set
串行編程指令設置
串行編程指令設置為一個 4 字節(jié)協(xié)議,參見表18..
Programming Interface –Parallel Mode
并行編程接口
采用控制信號的正確組合可對 Flash 閃速存儲陣列中的每一代碼字節(jié)進
行寫入和存儲器的整片擦除,寫操作周期是自身定時的,初始化后它將自動
定時到操作完成..
更多的有關 ATMEL 系列單片機的編程技術請聯系相應的編程器供應商以獲
取最新的軟件版本.
Table 7. Flash編程模式
ALE/
Mode
寫代碼數據
讀代碼數據
讀加密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.寫代碼數據每一 PROG 脈沖為 200ns-500ns.
3.寫加密位每一 PROG 脈沖為 200ns-500ns.
4.編程期間 P3.0 引腳輸出 RDY/BSY 信號.
5. "×"不需理會.
AT89S51
2487A–10/01
AT89S51
圖4: Flash 存儲器編程(并口模式)
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 存儲器校驗(并口模式)
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、當LB3和LB4加密位已編程時不可簽名字節(jié)。
2、B1=0 B2=0,方式1,無加密保護。
B1=0 B2=1,方式2,加密位LB1。
B1=1,B2=0,方式3,加密位LB2。
B1=1 B2=1,方式4,加密位LB3。
以上各加密位在方式4執(zhí)行前需按順序逐一操作。
復位信號為“H后”,建立數據前使SCK為低電平至少為64個系統(tǒng)時鐘周期,復位脈沖是必須得。SCK時鐘頻率不得大于XTAL1時鐘的1/16。
在頁讀/寫模式,數據總是從地址00開始直到255。命令字節(jié)后緊跟著高4位地址,全部數據單元256字節(jié)會逐一進行讀/寫,此時下個指令將準備譯碼。
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
注:
這些參數是器件的極限參數,使用條件必
須在上述列表范圍以內,如果超過上述條
件,不能保證器件安全甚至會造成器件永
久性損壞!
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)(無輸出)條件下,IOL有以下限制:
每一引腳最大IOL:10mA
每一8位端口:P0:26mA,P1,2,3:15mA。
2、掉電模式的最小Vcc為2V。
20
AT89S51
2487A–10/01
AT89S51
AC特性:
在以下工作條件測得:P0、ALE/~PROG和~PSEN負載容抗=100pF,
其他端口負載容抗=80pF。
External Program and Data Memory Characteristics
外部程序和數據存儲器特性
外部程序存儲器讀周期:
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
外部數據存儲器讀周期
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
外部程序存儲器寫周期
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
外部數據存儲器寫周期
tCHCX
VCC - 0.5V
0.7 VCC
0.2 VCC - 0.1V
0.45V
tCHCX
tCLCH
tCHCL
tCLCX
tCLCL
外部時鐘驅動時序
Symbol
1/tCLCL
tCLCL
tCHCX
tCLCX
tCLCH
tCHCL
步數
振蕩器頻率
時鐘周期
正時序
負時序
上升時間
下降時間
Min
0
30
12
12
5
5
Max
33
Units
MHz
ns
ns
ns
ns
ns
23
2487A–10/01
串行口時序:
在Vcc=4.0V-5.5V,負載電容=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
上位寄存器時序波形:
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測試輸入/輸出波形:
VCC - 0.5V
0.2 VCC + 0.9V
TEST POINTS
0.45V
0.2 VCC - 0.1V
注:
AC輸入測試在Vcc-0.50V為邏輯1及0.45V為邏輯0,
時序測試在VIH為最小時和VIH為最大時測量。
浮空波形:
V LOAD+
V LOAD
V LOAD -
0.1V
0.1V
V OL -
時序參考位置
V OL +
0.1V
0.1V
注:
1.在浮空狀態(tài),端口引腳在負極出現100mV電壓,也即當一個端口電壓從VOH到VOL變化時出現100mV電壓時浮空狀態(tài)。
24
AT89S51
2487A–10/01
串行口時序:
在Vcc=4.0
收藏