Ⅰ 我剛接觸單片機,想用51單片機做一個程序,控制數碼管顯示時間,時間是要一直走下去,而且盡量准確
用51單片機的定時器是達不到這個
准確
的要求的。。。。有專用的時鍾晶元。。DS1302就是最基本的時鍾晶元。。
方法也很簡單。。找到DS1302晶元的PDF資料。。然後按照資料裡面的電路連接,然後編寫程序就OK了。。關鍵在於程序。。基本原理是。。單片機讀取DS1302那裡面的時鍾數據,然後判斷是否是你定的時間,如果是繼電器工作,不是就等下一次循環。。。就像看手錶一樣。。看到幾點幾分,做什麼事一樣。。。。
Ⅱ 如何在液晶上顯示漢字,單片機用的ATmega16,液晶是1602,求詳細代碼
我給你推薦一款,是我自己用的這款,比較好,開發時自己的機子要有並口,價格是168rmb,免郵
2008-7-7--------2008-9-1 為暑期促銷特價期 原價168元 現特價150元!! 配置不變. 銳志電子單片機普及計劃 讓學習者花最少的錢 學到最多的知識.
此款是有並口電腦所用的配置利用並口ISP線燒寫程序
(沒有並口的電腦 但是有串口的可以採用STC89C52晶元 利用串口下載程序 購買時請說明 我們會配STC89C52晶元)
本實驗板是銳志電子開發的一款多功能51綜合學習實驗板。 是經過研究和分析市面上的多種實驗板後, 取其所長,弊其所短短 研發而成。 所以對於學習者來說, 性價比是很高的。 花最少的錢, 學到最多的知識, 這就是銳志電子單片機普及計劃的宗旨。
本實驗板是集單片機編程、 模擬(須配模擬晶元)、 實驗、下載線 多種功能為一體, 該51單片機學習實驗板除了支持ATmel公司的AT89S所有系列之外,還支持STC的所有系列增強型51單片機和SST系列的增強型51單片機的實驗、編程與模擬功能,支持的被編程晶元數量達100之多;是一款真正具有物超所值的51單片機多功能板。
功能特點
編程器、模擬器、實驗板、ISP下載線四合一
直接支持Atmel 89系列,AVR AT90S8515,Atmega8515系列單片機的燒寫,
提供豐富的實驗常式,附帶C源代碼和少量匯編源碼,並且附帶詳細的註解說明(C語言是未來的趨勢 所以我們提倡使用C開發 附帶匯編源碼較少)
編程與實驗共享唯一的鎖緊插座,串列下載與模擬共享同一串口,操作方便
內置完善的過載、短路保護功能
直接使用計算機USB介面供電,也可以接電源適配器供電板載7805穩壓IC 保證其他電源供電時 實驗板工作的穩定。
帶有電源開關實驗更加方便 再也不用頻繁拔實驗板電源線了 輕輕一按 即可通斷。
直接將器件放在開發系統鎖緊座上進行編程,可單獨作編程器使用
直接在鎖緊座上放上模擬晶元連上串口 稍作設置 即可進行模擬。
板載豐富的實驗硬體資源,P0 P1 P2 P3 四個IO口 全部可擴展設計 真正的滿足學習者的需要通過自己連接IO口線路 可以完成任何復雜的51單片機實驗
配有ISP下載口 配合本實驗板標配的89S52單片機 就可不用任何編程器 也不用將晶元取下就可直接完成燒寫編程工作 十分方便, 燒寫完畢即可自動演示。實驗過程中無需拔插任何電纜和晶元,也無需切換電源,可輕松地將編繹好的代碼下載到實驗板上進行驗證或演示,整個過程只需利用滑鼠操作即可,方便快捷。
實驗板資源配置如下:
1、此款採用並口ISP下載線,配AT89S52單片機,可以很方便的下載程序到單片機。下載後不用插拔線纜, 下載好後自動直接運行程序。
2、USB供電系統,直接插接到電腦USB口即可提供電源,不需另接直流電源。
3、8位數碼管(可做數碼管的靜態掃描以及動態掃描顯示實驗 不如 0-999 計數器實驗 18B20溫度檢測實驗 遙控解碼實驗等都可以用數碼管顯
示)。
4、8位LED發光二極體(做 跑馬燈實驗 交通燈實驗 )。
5、一路繼電器控制(通過繼電器可以控制其他電器設備的工作低壓控制高壓等實驗 不過為了安全 建議不要控制電壓超過30V的設備)
6、蜂鳴器(做單片機發聲實驗 播放音樂實驗 報警實驗等聲響實驗)
7、DS18B20溫度感測器,(初步掌握單片機操作後即可親自編寫程序獲知當時的溫度 可以配合本站原創的PC與單片機雙向溫度控製程序 將溫
度實時顯示在電腦上)
8、AT24C08外部EEPROM存儲晶元(IIC匯流排元件實驗)
9、SPI串列實時時鍾 DS1302(熟悉SPI匯流排 用DS1302可以做一個萬年歷電子時鍾 比定時器做的精確很多哦)
10、 板上集成一體化紅外接收頭(方便學習紅外遙控接收 解碼實驗 還可以通過遙控控制電腦 本站原創的紅外遙控解碼控制電腦音樂播放實例可以讓學習者 學習 體驗用遙控器控制電腦的樂趣)
11、MAX232晶元RS232通訊介面(可以做為與計算機通迅的介面同時也可做為STC單片機下載程序的介面及模擬調試的介面)
12、字元液晶1602LCD介面 採用接插件方式方便插拔(可顯示兩行 每行16個 共計32任意 ASCII碼字元 它的功能應用比數碼管豐富很多 顯示
的信息量更大 我們已經隨板附贈了1602LCD 方便學習者開發1602LCD顯示的程序)
13、圖形點陣液晶12864介面 採用接插件方式方便插拔(可顯示任意漢字和圖形 是目前單片機 圖文顯示最常用的顯示器件 我們實驗板支持帶字型檔的12864液晶 開發程序更方便 12864液晶不隨板附贈 需單獨購買 我們成本價70元提供帶字型檔的支持對比度調節12864液晶)
14、4*4矩陣鍵盤(熟悉矩陣鍵盤編碼、解碼掃描原理 可作為人機輸入介面 編寫按鍵輸入程序)
15、4個獨立鍵盤(可做普通獨立按鍵檢測試驗 本實驗板4個獨立按鍵採用跳線設計 考慮周全 可以通過跳線連接任意P口 方便學習者做 外中
斷INT0 INT1 外定時器T0 T1 實驗)。
16、單片機32個IO口全部引出 埠擴展設計採用雙排跳線帽設置,如果跳線帽拔掉,完全可以做最小系統,真正發揮你的開發才能 便於你今後的開發。
17、為方便大家更換晶體振盪器(單片機「超頻」)特別採用了鍍金晶體插座,做實驗時需要不同晶振頻率時 可很方便的插拔更換(我們隨板贈送三個不同頻率的晶振 11.0592MHZ、12MHZ、24MHZ各一個 最大程度上滿足了學習者的需要)
18、本實驗板帶有51單片機 和AVR單片機的切換開關通過開關輕輕波動一下直接就可以使用ATMEGA8515等AVR系列單片機做AVR實驗,真正做到物盡其用。為51學習者將來學習AVR單片機節省了再次購買AVR實驗板的成本,所以我們的實驗板非常超值。
19、ISP下載介面(用並口ISP下載線或者其他的兼容ISP下載線 可以對AT89S51 S52 ATMEGA8515 AT90S8515單片機直接編程。)
20、本實驗板採用40PIN鎖緊座安放單片機晶元,非常方便單片機晶元的取放。
21、本實驗板 板上帶有外接電源介面 方便使用外接電源為單片機供電。
22、實驗板 帶有 +5V 和地線擴展口 方便用戶擴展其他外圍電路時取電
本實驗板附帶的試驗程序:
產品規格:長X寬X高 = 120x100x20(mm)
產品裝箱清單:
RZ-51/AVR實驗板一台
USB取電線一條
串口通訊電纜一條
AT89S52單片機一片
1602LCD字元液晶模塊一塊
並口ISP下載線一條
12M 11.0592M 24M 晶振各一個
10根杜邦連接線
10個備用跳線帽
700MB的51學習資料光碟一張(光碟中含本實驗板所有常式 每個常式里都有實驗指導文檔,方便學習者做實驗。實驗板PDF格式原理圖,實驗板使用說明文件、STC單片機程序下載軟體,ISP下載線軟體 大量KEIL51學習資料及教程 串口調試軟體 還有本站原創的串口控制單片機 雙向通訊的智能溫控報警系統 上位機程序源碼 和單片機程序源碼)
我們所有器件都採用防靜電袋包裝 外包裝採用泡沫防震包裝 郵政標准7#箱 包裝專業 避免運輸過程出現損壞
發貨前每項功能均已嚴格測試 保證質量 請放心購買。
我們長期從事單片機程序開發 和PC程序開發 可為客戶提供很好的技術支持。
每天早上8:00到晚上12:00都會在線 隨時為客戶提供專業的技術支持。
部分實驗圖片:
本站原創 單片機溫控+VB上位機溫度檢測實驗VB上位機圖片
(可設定報警溫度 並有實時溫度曲線圖 附贈全部源碼。有很大的應用價值)
本站原創 單片機S52 控制上位機VB 製作成的 VB紅外遙控電腦播放器 上位機圖片
(可自定義遙控器的鍵值 支持市面上大部分遙控器 可進行 磁碟選擇 目錄選擇 歌曲選擇 音量調節 播放/暫停 靜音 還有播放視頻時全屏等操作 可以說是一個完整的功能強大的紅外遙控播放器 和遙控DVD 沒什麼區別 非常實用。全部源碼 均在光碟中贈送。。)
自定義遙控鍵值圖片
近一個月銷售記錄 眾多買家的選擇證明 我們的實驗板非常超值。。
Ⅲ 基於MCS-51單片機的數字時鍾系統設計
51單片機的PDF 89S52典型的51結構
主要性能
l 與MCS-51單片機產品兼容
l 8K位元組在系統可編程Flash存儲器
l 1000次擦寫周期
l 全靜態操作:0Hz~33Hz
l 三級加密程序存儲器
l 32個可編程I/O口線
l 三個16位定時器/計數器
l 八個中斷源
l 全雙工UART串列通道
l 低功耗空閑和掉電模式
l 掉電後中斷可喚醒
l 看門狗定時器
l 雙數據指針
l 掉電標識符
功能特性描述
AT89S52是一種低功耗、高性能CMOS8位微控制器,具有
8K 在系統可編程Flash 存儲器。使用Atmel 公司高密度非
易失性存儲器技術製造,與工業80C51 產品指令和引腳完
全兼容。片上Flash允許程序存儲器在系統可編程,亦適於
常規編程器。在單晶元上,擁有靈巧的8 位CPU 和在系統
可編程Flash,使得AT89S52為眾多嵌入式控制應用系統提
供高靈活、超有效的解決方案。
AT89S52具有以下標准功能: 8k位元組Flash,256位元組RAM,
32 位I/O 口線,看門狗定時器,2 個數據指針,三個16 位
定時器/計數器,一個6向量2級中斷結構,全雙工串列口,
片內晶振及時鍾電路。另外,AT89S52 可降至0Hz 靜態邏
輯操作,支持2種軟體可選擇節電模式。空閑模式下,CPU
停止工作,允許RAM、定時器/計數器、串口、中斷繼續工
作。掉電保護方式下,RAM內容被保存,振盪器被凍結,
單片機一切工作停止,直到下一個中斷或硬體復位為止。
R
8 位微控制器
8K 位元組在系統可編程
Flash
AT89S52
Rev. 1919-07/01
AT89S52
2
引腳結構
AT89S52
3
方框圖
引腳功能描述
AT89S52
4
VCC : 電源
GND: 地
P0 口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅動8個TTL邏
輯電平。對P0埠寫「1」時,引腳用作高阻抗輸入。
當訪問外部程序和數據存儲器時,P0口也被作為低8位地址/數據復用。在這種模式下,
P0具有內部上拉電阻。
在flash編程時,P0口也用來接收指令位元組;在程序校驗時,輸出指令位元組。程序校驗
時,需要外部上拉電阻。
P1 口:P1 口是一個具有內部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅動4 個
TTL 邏輯電平。對P1 埠寫「1」時,內部上拉電阻把埠拉高,此時可以作為輸入
口使用。作為輸入使用時,被外部拉低的引腳由於內部電阻的原因,將輸出電流(IIL)。
此外,P1.0和P1.2分別作定時器/計數器2的外部計數輸入(P1.0/T2)和時器/計數器2
的觸發輸入(P1.1/T2EX),具體如下表所示。
在flash編程和校驗時,P1口接收低8位地址位元組。
引腳號第二功能
P1.0 T2(定時器/計數器T2的外部計數輸入),時鍾輸出
P1.1 T2EX(定時器/計數器T2的捕捉/重載觸發信號和方向控制)
P1.5 MOSI(在系統編程用)
P1.6 MISO(在系統編程用)
P1.7 SCK(在系統編程用)
P2 口:P2 口是一個具有內部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅動4 個
TTL 邏輯電平。對P2 埠寫「1」時,內部上拉電阻把埠拉高,此時可以作為輸入
口使用。作為輸入使用時,被外部拉低的引腳由於內部電阻的原因,將輸出電流(IIL)。
在訪問外部程序存儲器或用16位地址讀取外部數據存儲器(例如執行MOVX @DPTR)
時,P2 口送出高八位地址。在這種應用中,P2 口使用很強的內部上拉發送1。在使用
8位地址(如MOVX @RI)訪問外部數據存儲器時,P2口輸出P2鎖存器的內容。
在flash編程和校驗時,P2口也接收高8位地址位元組和一些控制信號。
P3 口:P3 口是一個具有內部上拉電阻的8 位雙向I/O 口,p2 輸出緩沖器能驅動4 個
TTL 邏輯電平。對P3 埠寫「1」時,內部上拉電阻把埠拉高,此時可以作為輸入
口使用。作為輸入使用時,被外部拉低的引腳由於內部電阻的原因,將輸出電流(IIL)。
P3口亦作為AT89S52特殊功能(第二功能)使用,如下表所示。
在flash編程和校驗時,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(外部數據存儲器寫選通)
P3.7 RD(外部數據存儲器寫選通)
RST: 復位輸入。晶振工作時,RST腳持續2 個機器周期高電平將使單片機復位。看門
狗計時完成後,RST 腳輸出96 個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上
的DISRTO位可以使此功能無效。DISRTO默認狀態下,復位高電平有效。
ALE/PROG:地址鎖存控制信號(ALE)是訪問外部程序存儲器時,鎖存低8 位地址
的輸出脈沖。在flash編程時,此引腳(PROG)也用作編程輸入脈沖。
在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時器或
時鍾使用。然而,特別強調,在每次訪問外部數據存儲器時,ALE脈沖將會跳過。
如果需要,通過將地址為8EH的SFR的第0位置「1」,ALE操作將無效。這一位置「1」,
ALE 僅在執行MOVX 或MOVC指令時有效。否則,ALE 將被微弱拉高。這個ALE 使
能標志位(地址為8EH的SFR的第0位)的設置對微控制器處於外部執行模式下無效。
PSEN:外部程序存儲器選通信號(PSEN)是外部程序存儲器選通信號。
當AT89S52從外部程序存儲器執行外部代碼時,PSEN在每個機器周期被激活兩次,而
在訪問外部數據存儲器時,PSEN將不被激活。
EA/VPP:訪問外部程序存儲器控制信號。為使能從0000H 到FFFFH的外部程序存儲器
讀取指令,EA必須接GND。
為了執行內部程序指令,EA應該接VCC。
在flash編程期間,EA也接收12伏VPP電壓。
XTAL1:振盪器反相放大器和內部時鍾發生電路的輸入端。
XTAL2:振盪器反相放大器的輸出端。
AT89S52
6
表1 AT89S52 特殊寄存器映象及復位值
特殊功能寄存器
特殊功能寄存器(SFR)的地址空間映象如表1所示。
並不是所有的地址都被定義了。片上沒有定義的地址是不能用的。讀這些地址,一般將
得到一個隨機數據;寫入的數據將會無效。
用戶不應該給這些未定義的地址寫入數據「1」。由於這些寄存器在將來可能被賦予新的
功能,復位後,這些位都為「0」。
定時器2 寄存器:寄存器T2CON 和T2MOD 包含定時器2 的控制位和狀態位(如表2
和表3所示),寄存器對RCAP2H和RCAP2L是定時器2的捕捉/自動重載寄存器。
中斷寄存器:各中斷允許位在IE寄存器中,六個中斷源的兩個優先順序也可在IE中設置。
AT89S52
7
表2 T2CON:定時器/計數器2控制寄存器
T2CON 地址為0C8H 復位值:0000 0000B
位可定址
TF2 EXF2 RLCLK TCLK EXEN2 TR2
7 6 5 4 3 2 1 0
符號功能
TF2 定時器2 溢出標志位。必須軟體清「0」。RCLK=1 或TCLK=1 時,TF2
不用置位。
EXF2
定時器2 外部標志位。EXEN2=1 時,T2EX 上的負跳變而出現捕捉或重
載時,EXF2 會被硬體置位。定時器2 打開,EXF2=1 時,將引導CPU
執行定時器2 中斷程序。EXF2 必須如見清「0」。在向下/向上技術模式
(DCEN=1)下EXF2不能引起中斷。
RCLK
串列口接收數據時鍾標志位。若RCLK=1,串列口將使用定時器2 溢出
脈沖作為串列口工作模式1 和3 的串口接收時鍾;RCLK=0,將使用定
時器1計數溢出作為串口接收時鍾。
TCLK
串列口發送數據時鍾標志位。若TCLK=1,串列口將使用定時器2 溢出
脈沖作為串列口工作模式1 和3 的串口發送時鍾;TCLK=0,將使用定
時器1計數溢出作為串口發送時鍾。
EXEN2
定時器2外部允許標志位。當EXEN2=1時,如果定時器2沒有用作串列
時鍾,T2EX(P1.1)的負跳變見引起定時器2 捕捉和重載。若EXEN2
=0,定時器2將視T2EX端的信號無效
TR2 開始/停止控制定時器2。TR2=1,定時器2開始工作
定時器2 定時/計數選擇標志位。=0,定時; =1,外部事
件計數(下降沿觸發)
捕捉/重載選擇標志位。當EXEN2=1時, =1,T2EX出現負脈沖,
會引起捕捉操作;當定時器2溢出或EXEN2=1時T2EX出現負跳變,都
會出現自動重載操作。=0 將引起T2EX 的負脈沖。當RCKL=1
或TCKL=1時,此標志位無效,定時器2溢出時,強製做自動重載操作。
雙數據指針寄存器:為了更有利於訪問內部和外部數據存儲器,系統提供了兩路16位
數據指針寄存器:位於SFR中82H~83H的DP0和位於84H~85。特殊寄存器AUXR1
中DPS=0 選擇DP0;DPS=1 選擇DP1。用戶應該在訪問數據指針寄存器前先初始化
AT89S52
8
DPS至合理的值。
表3a AUXR:輔助寄存器
AUXR 地址:8EH 復位值:XXX00XX0B
不可位定址
- - - WDIDLE DISRTO - - DISALE
7 6 5 4 3 2 1 0
- 預留擴展用
DISALE ALE使能標志位
DISALE 操作方式
0 ALE 以1/6晶振頻率輸出信號
1 ALE 只有在執行MOVX 或MOVC指令時激活
DISRTO 復位輸出標志位
DISRTO
0 看門狗(WDT)定時結束,Reset 輸出高電平
1 Reset 只有輸入
WDIDLE 空閑模式下WDT使能標志位
WDIDLE
0 空閑模式下,WDT繼續計數
1 空閑模式下,WDT停止計數
掉電標志位:掉電標志位(POF)位於特殊寄存器PCON的第四位(PCON.4)。上電期
間POF置「1」。POF可以軟體控制使用與否,但不受復位影響。
表3b AUXR1:輔助寄存器1
AUXR1 地址:A2H 復位值:XXXXXXX0B
不可位定址
- - - - - - - DPS
7 6 5 4 3 2 1 0
- 預留擴展用
DPS 數據指針選擇位
DPS
0 選擇DPTR寄存器DP0L和DP0H
1 選擇DPTR寄存器DP1L和DP1H
AT89S52
9
存儲器結構
MCS-51器件有單獨的程序存儲器和數據存儲器。外部程序存儲器和數據存儲器都可以
64K定址。
程序存儲器:如果EA引腳接地,程序讀取只從外部存儲器開始。
對於89S52,如果EA 接VCC,程序讀寫先從內部存儲器(地址為0000H~1FFFH)開
始,接著從外部定址,定址地址為:2000H~FFFFH。
數據存儲器:AT89S52 有256 位元組片內數據存儲器。高128 位元組與特殊功能寄存器重
疊。也就是說高128位元組與特殊功能寄存器有相同的地址,而物理上是分開的。
當一條指令訪問高於7FH 的地址時,定址方式決定CPU 訪問高128 位元組RAM 還是特
殊功能寄存器空間。直接定址方式訪問特殊功能寄存器(SFR)。
例如,下面的直接定址指令訪問0A0H(P2口)存儲單元
MOV 0A0H , #data
使用間接定址方式訪問高128 位元組RAM。例如,下面的間接定址方式中,R0 內容為
0A0H,訪問的是地址0A0H的寄存器,而不是P2口(它的地址也是0A0H)。
MOV @R0 , #data
堆棧操作也是簡介定址方式。因此,高128位元組數據RAM也可用於堆棧空間。
看門狗定時器
WDT是一種需要軟體控制的復位方式。WDT 由13位計數器和特殊功能寄存器中的看
門狗定時器復位存儲器(WDTRST)構成。WDT 在默認情況下無法工作;為了激活
WDT,戶用必須往WDTRST 寄存器(地址:0A6H)中依次寫入01EH 和0E1H。當
WDT激活後,晶振工作,WDT在每個機器周期都會增加。WDT計時周期依賴於外部
時鍾頻率。除了復位(硬體復位或WDT溢出復位),沒有辦法停止WDT工作。當WDT
溢出,它將驅動RSR引腳一個高個電平輸出。
WDT的使用
為了激活WDT,用戶必須向WDTRST寄存器(地址為0A6H的SFR)依次寫入0E1H
和0E1H。當WDT激活後,用戶必須向WDTRST寫入01EH和0E1H喂狗來避免WDT
溢出。當計數達到8191(1FFFH)時,13 位計數器將會溢出,這將會復位器件。晶振正
常工作、WDT激活後,每一個機器周期WDT 都會增加。為了復位WDT,用戶必須向
WDTRST 寫入01EH 和0E1H(WDTRST 是只讀寄存器)。WDT 計數器不能讀或寫。
當WDT 計數器溢出時,將給RST 引腳產生一個復位脈沖輸出,這個復位脈沖持續96
個晶振周期(TOSC),其中TOSC=1/FOSC。為了很好地使用WDT,應該在一定時間
內周期性寫入那部分代碼,以避免WDT復位。
掉電和空閑方式下的WDT
在掉電模式下,晶振停止工作,這意味這WDT也停止了工作。在這種方式下,用戶不
必喂狗。有兩種方式可以離開掉電模式:硬體復位或通過一個激活的外部中斷。通過硬
件復位退出掉電模式後,用戶就應該給WDT 喂狗,就如同通常AT89S52 復位一樣。
通過中斷退出掉電模式的情形有很大的不同。中斷應持續拉低很長一段時間,使得晶振
AT89S52
10
穩定。當中斷拉高後,執行中斷服務程序。為了防止WDT在中斷保持低電平的時候復
位器件,WDT 直到中斷拉低後才開始工作。這就意味著WDT 應該在中斷服務程序中
復位。
為了確保在離開掉電模式最初的幾個狀態WDT不被溢出,最好在進入掉電模式前就復
位WDT。
在進入待機模式前,特殊寄存器AUXR的WDIDLE位用來決定WDT是否繼續計數。
默認狀態下,在待機模式下,WDIDLE=0,WDT繼續計數。為了防止WDT在待機模
式下復位AT89S52,用戶應該建立一個定時器,定時離開待機模式,喂狗,再重新進
入待機模式。
UART
在AT89S52 中,UART 的操作與AT89C51 和AT89C52 一樣。為了獲得更深入的關於
UART 的信息,可參考ATMEL 網站(http://www.atmel.com)。從這個主頁,選擇
「Procts」,然後選擇「8051-Architech Flash Microcontroller」,再選擇「Proct
Overview」即可。
定時器0 和定時器1
在AT89S52 中,定時器0 和定時器1 的操作與AT89C51 和AT89C52 一樣。為了獲得
更深入的關於UART 的信息,可參考ATMEL 網站(http://www.atmel.com)。從這個主
頁,選擇「Procts」,然後選擇「8051-Architech Flash Microcontroller」,再選擇「Proct
Overview」即可。
定時器2
定時器2是一個16位定時/計數器,它既可以做定時器,又可以做事件計數器。其工作
方式由特殊寄存器T2CON中的C/T2位選擇(如表2所示)。定時器2有三種工作模式:
捕捉方式、自動重載(向下或向上計數)和波特率發生器。如表3 所示,工作模式由
T2CON中的相關位選擇。定時器2 有2 個8位寄存器:TH2和TL2。在定時工作方式
中,每個機器周期,TL2 寄存器都會加1。由於一個機器周期由12 個晶振周期構成,
因此,計數頻率就是晶振頻率的1/12。
表3 定時器2工作模式
RCLK+TCLK CP/RL2 TR2 MODE
0 0 1 16位自動重載
0 1 1 16位捕捉
1 × 1 波特率發生器
× × 0 (不用)
在計數工作方式下,寄存器在相關外部輸入角T2 發生1 至0 的下降沿時增加1。在這
AT89S52
11
種方式下,每個機器周期的S5P2期間采樣外部輸入。一個機器周期采樣到高電平,而
下一個周期采樣到低電平,計數器將加1。在檢測到跳變的這個周期的S3P1 期間,新
的計數值出現在寄存器中。因為識別1-0的跳變需要2個機器周期(24個晶振周期),
所以,最大的計數頻率不高於晶振頻率的1/24。為了確保給定的電平在改變前采樣到
一次,電平應該至少在一個完整的機器周期內保持不變。
捕捉方式
在捕捉模式下,通過T2CON中的EXEN2來選擇兩種方式。如果EXEN2=0,定時器2
時一個16位定時/計數器,溢出時,對T2CON 的TF2標志置位,TF2引起中斷。如果
EXEN2=1,定時器2做相同的操作。除上述功能外,外部輸入T2EX引腳(P1.1)1至
0的下跳變也會使得TH2和TL2中的值分別捕捉到RCAP2H和RCAP2L中。除此之外,
T2EX 的跳變會引起T2CON 中的EXF2 置位。像TF2 一樣,T2EX 也會引起中斷。捕
捉模式如圖5所示。
圖5 定時器的捕捉模式
自動重載
當定時器2 工作於16 位自動重載模式,可對其編程實現向上計數或向下計數。這一功
能可以通過特殊寄存器T2MOD(見表4)中的DCEN(向下計數允許位)來實現。通
過復位,DCEN 被置為0,因此,定時器2 默認為向上計數。DCEN 設置後,定時器2
就可以取決於T2EX向上、向下計數。
如圖6 所示,DCEN=0 時,定時器2 自動計數。通過T2CON 中的EXEN2 位可以選擇
兩種方式。如果EXEN2=0,定時器2計數,計到0FFFFH後置位TF2溢出標志。計數
溢出也使得定時器寄存器重新從RCAP2H 和RCAP2L 中載入16 位值。定時器工作於
捕捉模式,RCAP2H和RCAP2L的值可以由軟體預設。如果EXEN2=1,計數溢出或在
外部T2EX(P1.1)引腳上的1到0的下跳變都會觸發16位重載。這個跳變也置位EXF2
中斷標志位。
如圖6所示,置位DCEN,允許定時器2向上或向下計數。在這種模式下,T2EX引腳
控制著計數的方向。T2EX上的一個邏輯1使得定時器2向上計數。定時器計到0FFFFH
AT89S52
12
溢出,並置位TF2。定時器的溢出也使得RCAP2H和RCAP2L中的16位值分別載入到
定時器存儲器TH2和TL2中。
T2EX 上的一個邏輯0 使得定時器2 向下計數。當TH2 和TL2 分別等於RCAP2H 和
RCAP2L中的值的時候,計數器下溢。計數器下溢,置位TF2,並將0FFFFH載入到定
時器存儲器中。
定時器2上溢或下溢,外部中斷標志位EXF2 被鎖死。在這種工作模式下,EXF2不能
觸發中斷。
圖6 定時器2重載模式(DCEN=0)
表4 T2MOD-定時器2控制寄存器
T2MOD 地址:0C9H 復位值:XXXXXX00B
不可位定址
- - - - - - T2OE DCEN
7 6 5 4 3 2 1 0
符號功能
- 無定義,預留擴展
T2OE 定時器2輸出允許位
DCEN 置1後,定時器2可配置成向上/向下計數
AT89S52
13
圖7 定時器2自動重載(DCEN=1)
圖8 定時器2 波特率發生器模式
AT89S52
14
波特率發生器
通過設置T2CON(見表2)中的TCLK或RCLK可選擇定時器2 作為波特率發生器。
如果定時器2作為發送或接收波特率發生器,定時器1可用作它用,發送和接收的波特
率可以不同。如圖8 所示,設置RCLK 和(或)TCLK 可以使定時器2 工作於波特率
產生模式。
波特率產生工作模式與自動重載模式相似,因此,TH2 的翻轉使得定時器2 寄存器重
載被軟體預置16位值的RCAP2H和RCAP2L中的值。
模式1和模式3的波特率由定時器2溢出速率決定,具體如下公式:
模式1和模式3波特率=
16
2溢出率定時器
定時器可設置成定時器,也可為計數器。在多數應用情況下,一般配置成定時方式
(CP/T2=0)。定時器2 用於定時器操作與波特率發生器有所不同,它在每一機器周期
(1/12晶振周期)都會增加;然而,作為波特率發生器,它在每一機器狀態(1/2晶振
周期)都會增加。波特率計算公式如下:
模式1和模式3的波特率=
)] 2 , 2 ( 65536 [ 32 L RCAP H RCAP - ′
晶振頻率*原文少半個括弧「(」
其中,(RCAP2H,RCAP2L)是RCAP2H和RCAP2L組成的16位無符號整數。
定時器2 作為波特率發生器,如圖8 所示。圖中僅僅在T2CON 中RCLK 或TCLK=1
才有效。特別強調,TH2的翻轉並不置位TF2,也不產生中斷; EXEN2置位後,T2EX
引腳上1~0的下跳變不會使(RCAP2H,RCAP2L)重載到(TH2,TL2)中。因此,
定時器2作為波特率發生器,T2EX也還可以作為一個額外的外部中斷。
定時器2處於波特率產生模式,TR2=1,定時器2正常工作。TH2或TL2不應該讀寫。
在這種模式下,定時器在每一狀態都會增加,讀或寫就不會准確。寄存器RCAP2可以
讀,但不能寫,因為寫可能和重載交迭,造成寫和重載錯誤。在讀寫定時器2 或RCAP2
寄存器時,應該關閉定時器(TR2清0)。
可編程時鍾輸出
如圖9 所示,可以通過編程在P1.0 引腳輸出一個占空比為50%的時鍾信號。這個引腳
除了常規的I/O 角外,還有兩種可選擇功能。它可以通過編程作為定時器/計數器2 的
外部時鍾輸入或占空比為50%的時鍾輸出。當工作頻率為16MHZ時,時鍾輸出頻率范
圍為61HZ到4HZ。
為了把定時器2配置成時鍾發生器,位C/T2(T2CON.1)必須清0,位T2OE(T2MOD.1)
必須置1。位TR2(T2CON.2)啟動、停止定時器。時鍾輸出頻率取決於晶振頻率和定
時器2捕捉寄存器(RCAP2H,RCAP2L)的重載值,如公式所示:
時鍾輸出頻率=
] 2 , 2 65536 [ 4 ) -(
晶振頻率
L RCAP H RCAP ′
在時鍾輸出模式下,定時器2不會產生中斷,這和定時器2用作波特率發生器一樣。定
AT89S52
15
時器2也可以同時用作波特率發生器和時鍾產生。不過,波特率和輸出時鍾頻率相互並
不獨立,它們都依賴於RCAP2H和RCAP2L。
圖9 定時器2時鍾輸出模式
中斷
AT89S52 有6個中斷源:兩個外部中斷(INT0 和INT1),三個定時中斷(定時器0、1、
2)和一個串列中斷。這些中斷如圖10所示
每個中斷源都可以通過置位或清除特殊寄存器IE 中的相關中斷允許控制位分別使得中
斷源有效或無效。IE還包括一個中斷允許總控制位EA,它能一次禁止所有中斷。
如表5所示,IE.6位是不可用的。對於AT89S52,IE.5位也是不能用的。用戶軟體不應
給這些位寫1。它們為AT89系列新產品預留。
定時器2可以被寄存器T2CON中的TF2和EXF2的或邏輯觸發。程序進入中斷服務後,
這些標志位都可以由硬體清0。實際上,中斷服務程序必須判定是否是TF2 或EXF2激
活中斷,標志位也必須由軟體清0。
定時器0和定時器1標志位TF0 和TF1在計數溢出的那個周期的S5P2被置位。它們的
值一直到下一個周期被電路捕捉下來。然而,定時器2 的標志位TF2 在計數溢出的那
個周期的S2P2被置位,在同一個周期被電路捕捉下來。
AT89S52
16
表4 中斷允許控制寄存器(IE)
(MSB) (LSB)
EA - ET2 ES ET1 EX1 ET0 EX0
中斷允許控制位=1,允許中斷
中斷允許控制位=0,禁止中斷
符號位地址功能
EA IE.7 中斷總允許控制位。EA=0,中斷總禁止;EA=1,各中斷由各
自的控制位設定
- IE.6 預留
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 單片機有一個用於構成內部振盪器的反相放大器,XTAL1 和
XTAL2 分別是放大器的輸入、輸出端。石英晶體和陶瓷諧振器都可以用來一起構成自
激振盪器。從外部時鍾源驅動器件的話,XTAL2 可以不接,而從XTAL1 接入,如圖
12 所示。由於外部時鍾信號經過二分頻觸發後作為外部時鍾電路輸入的,所以對外部
時鍾信號的占空比沒有其它要求,最長低電平持續時間和最少高電平持續時間等還是要
符合要求的。
圖11 內部振盪電路連接圖圖12 外部振盪電路連接圖
石英晶振C1,C2=30PF±10PF
陶瓷諧振器C1,C2=40PF±10PF
空閑模式
在空閑工作模式下,CPU 處於睡眠狀態,而所有片上外部設備保持激活狀態。這種狀
態可以通過軟體產生。在這種狀態下,片上RAM和特殊功能寄存器的內容保持不變。
空閑模式可以被任一個中斷或硬體復位終止。
由硬體復位終止空閑模式只需兩個機器周期有效復位信號,在這種情況下,片上硬體禁
止訪問內部RAM,而可以訪問埠引腳。空閑模式被硬體復位終止後,為了防止預想
不到的寫埠,激活空閑模式的那一條指令的下一條指令不應該是寫埠或外部存儲
器。
掉電模式
在掉電模式下,晶振停止工作,激活掉電模式的指令是最後一條執行指令。片上RAM
AT89S52
18
和特殊功能寄存器保持原值,直到掉電模式終止。掉電模式可以通過硬體復位和外部中
斷退出。復位重新定義了SFR 的值,但不改變片上RAM 的值。在VCC未恢復到正常
工作電壓時,硬體復位不能無效,並且應保持足夠長的時間以使晶振重新工作和初始化。
表6 空閑模式和掉電模式下的外部引腳狀態
模式程序存儲器ALE PSEN PORT0 PORT1 PORT2 PORT3
空閑內部1 1 數據數據數據數據
空閑外部1 1 浮空數據地址數據
掉電內部0 0 數據數據數據數據
掉電外部0 0 浮空數據數據數據
程序存儲器的加密位
AT89S52有三個加密位不可編程(U)和可編程獲得下表所示的功能。
表7 加密位保護模式
加密位1(LB1)編程後,EA 引腳的邏輯值被采樣,並在復位期間鎖存。如果器件復
位,而沒有復位,將鎖存一個隨機值,直到復位為止。為了器件功能正常,鎖存到的
EA值必須和這個引腳的當前邏輯電平一致。
Flash編程―並行模式
AT89S52 帶有用作編程的片上Flash 存儲器陣列。編程介面需要一個高電壓(12V)編
程使能信號,並且兼容常規的第三方*(原文:third-party,不知道對不對)Flash或EPROM
編程器。
AT89S52程序存儲陣列採用位元組式編程。
編程方法
對AT89S52編程之前,需根據Flash編程模式表和圖13、圖14對地址、數據和控制信
號設置。可採用下列步驟對AT89S52編程:
AT89S52
19
1.在地址線上輸入編程單元地址信號
2.在數據線上輸入正確的數據
3.激活相應的控制信號
4.把EA/Vpp升至12V
5.每給Flash寫入一個位元組或程序加密位時,都要給ALE/PROG一次脈沖。位元組寫周
期時自身定製的,典型值僅僅50us。改變地址、數據重復第1步到第5步,知道全
部文件結束。
Data Polling
AT89S52用Data Polling作為一個位元組寫周期結束的標志特徵。
Ⅳ 我在做單片機設計,需要一個特殊的計時器,請高手指點!
常用的是DS1302時鍾晶元,電腦和手機用的就是它,但是沒有「當達到設定的時間時向單片機發送信號」這個功能,估計市場上還沒有。