版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 單片機原理與應用技術(shù)</p><p> 課程設計報告(論文)</p><p> 基于單片機控制的時鐘控制器</p><p> 專業(yè)班級:電氣工程及其自動化09班</p><p> 姓 名:____ __ ______</p><p> 時 間: 2012.3.31-20
2、12.4.20__</p><p> 指導教師:___ ____</p><p> 2012年 4 月 20 日</p><p> 基于單片機控制的時鐘控制器</p><p><b> 一.設計目的與要求</b></p><p><b> (一)基
3、本功能</b></p><p> 1.顯示: 可以顯示時、分和秒</p><p> 2.調(diào)時功能:時(0-24)、分和秒(0-60)可以連續(xù)可調(diào)</p><p> ?。ǘ┬阅?時間日誤差< 2秒</p><p><b> (三)擴展功能</b></p><p> 1.
4、增加整點報時功能</p><p> 2.增加鬧鐘任意設定功能</p><p> 二.計劃完成時間 三周</p><p> 1.第一周完成軟件和硬件的整體設計,同時按要求上交設計報告一份。</p><p> 2.第二周完成軟件的具體設計和硬件的制作。</p><p> 3.第三周完成軟件和硬件的聯(lián)合調(diào)試。&
5、lt;/p><p><b> 三.設計內(nèi)容 </b></p><p> 1.畫出電路原理圖,正確使用邏輯關(guān)系;</p><p> 2.確定元器件及元件參數(shù);</p><p> 3.進行電路模擬仿真;</p><p> 4.SCH文件生成與打印輸出;</p><p>&
6、lt;b> 四.編寫設計報告</b></p><p> 寫出設計的全過程,附上有關(guān)資料和圖紙,有心得體會。</p><p><b> 五.答辯</b></p><p> 在規(guī)定時間內(nèi),完成敘述并回答問題。</p><p><b> 目錄</b></p>&l
7、t;p><b> 1 引言1</b></p><p> 2 總體設計方案1</p><p> 2.1 設計思路1</p><p> 2.2 設計方框圖1</p><p> 3 設計原理分析2</p><p> 3.1 單片機最小系統(tǒng)的設計2</p>&l
8、t;p> 3.2 定時及整點報時電路的設計2</p><p> 3.3 顯示電路設計3</p><p> 3.4 時間調(diào)整電路設計4</p><p> 3.5 復位電路設計4</p><p> 3.6 晶振電路設計4</p><p> 3.7 系統(tǒng)軟件設計4</p><
9、p> 3.8 誤差分析6</p><p><b> 4 結(jié)束語6</b></p><p><b> 參考文獻6</b></p><p><b> 附錄1 原理圖7</b></p><p><b> 附錄2 仿真圖8</b><
10、/p><p><b> 附錄3 源程序9</b></p><p> 基于單片機控制的時鐘控制器</p><p> 摘要:本設計是以AT89S51單片機為核心控制器構(gòu)成的電子時鐘控制器,采用數(shù)字電路實現(xiàn)對“時”、“分”、“秒”數(shù)字顯示的計時。主要由單片機最小系統(tǒng)、顯示電路、復位電路、調(diào)時定時電路、整點報時電路等幾部分構(gòu)成,其中顯示電路采用LE
11、D作為顯示器件,晶振作計時器件。這種電路裝置體積小,安裝使用方便。</p><p> 關(guān)鍵詞:AT89S51 74LS245 數(shù)碼管 時鐘 </p><p><b> 1 引言</b></p><p> 數(shù)字時鐘是采用以單片機為核心的控制電路實現(xiàn)對時、分、秒數(shù)字顯示的計時裝置。由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應用,使得數(shù)字鐘的
12、精度,遠遠超過老式鐘表,顯示直觀。而且所采用的材料價格廉價,因而成本較低,因此廣泛用于個人、家庭以及車站、 碼頭、辦公室等公共場所,成為人們?nèi)粘I钪胁豢苫蛉钡臇|西。</p><p> 鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能。諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、自動起閉路燈、定時開關(guān)烘箱、通斷動力設備、甚至各種定時電氣的自動啟用等,所有這些,都是以
13、鐘表數(shù)字化為基礎(chǔ)的得益于單片機技術(shù)的發(fā)展,這樣加大了軟件的投入,硬件因而變得簡單,制作較為方便。因此,研究數(shù)字鐘及擴大其應用,有著非常現(xiàn)實的意義。</p><p><b> 2 總體設計方案</b></p><p> 電路總體上分為控制電路部分和顯示電路部分。以單片機最小系統(tǒng)作為核心控制電路,由時鐘的調(diào)時定時功能需要一個調(diào)時電路和基本的復位電路,這三部分構(gòu)成時鐘電
14、路的控制電路部分;顯示電路部分主要采用數(shù)碼管和74LS245、三極管完成顯示功能。</p><p><b> 2.1 設計思路</b></p><p> 由單片機作為核心控制器件來控制數(shù)碼管的顯示,使得電路的可靠性比較高,功能也比較強大, 而且可以隨時的更新系統(tǒng),進行不同狀態(tài)的組合。具體顯示內(nèi)容及方式由軟件來完成;復位電路采用按鍵復位,分別調(diào)節(jié)時、分、秒及定時的功
15、能由四個按鍵完成,即共需五個按鍵;計時功能由固定頻率的晶振完成。</p><p> 本系統(tǒng)采用單片機AT89S51作為本設計的核心元件,利用7段共陽LED作為顯示器件。接入共陽LED顯示器,可顯示時,分,秒,單片機外圍接有定時及整點報時系統(tǒng),定時時間到或整點時刻到,蜂鳴器會發(fā)出聲音,提示預先設定時間或整點時刻到。</p><p> 采用AT89S51為核心的時鐘控制電路其設計思路有多種
16、,其輸出可以采用動態(tài)顯示和靜態(tài)顯示兩種方式,采用動態(tài)方式的電路比較復雜,采用靜態(tài)方式輸出可采用單片機串行口輸出,電路相對較簡單。該電路應該具有任意時間可調(diào)的功能,所以外圍采用開關(guān)按鍵來實現(xiàn)。在軟件設計方面,應完成時鐘控制電路的各項要求整個系統(tǒng)工作時,秒信號產(chǎn)生器是整個系統(tǒng)的時基信號,它直接決定計時系統(tǒng)的精度,將標準秒信號送入“秒計數(shù)器”,“秒計數(shù)器”采用60進制計數(shù)器,每累計60秒發(fā)出一個“分脈沖”信號,該信號將作為“分計數(shù)器”的時鐘脈
17、沖?!胺钟嫈?shù)器”也采用60進制計數(shù)器,每累計60分鐘,發(fā)出一個“時脈沖”信號,該信號將被送到“時計數(shù)器”。“時計數(shù)器”采用24進制計時器,可實現(xiàn)對一天24小時的累計。顯示電路將“時”、“分”、“秒”計數(shù)器的輸出,通過六個七段LED顯示器顯示出來。校時電路是直接加一個脈沖信號到時計數(shù)器或者分計數(shù)器或者秒計數(shù)器來對“時”、“分”、“秒”顯示數(shù)字進行校對調(diào)整。</p><p><b> 2.2 設計方框圖&
18、lt;/b></p><p> 時鐘控制電路應該由六部分組成,單片機是其核心部件,單片機有其最小系統(tǒng),即要有最小系統(tǒng)的電路;一定有復位電路,這是任何一個電子產(chǎn)品都必需的;要完成整點或報時需要報警電路;作為計時功能的部件選用晶振節(jié)省成本;對當前的時間修改需要對鍵盤的操作,所以還需要鍵盤電路,本設計需一個復位按鍵和一個定時控制按鍵及三個調(diào)時按鍵來完成復位和調(diào)時定時功能;單片機將其信號輸出應該反映在顯示電路部分
19、,才能夠被人所接受,顯示器件采用六位數(shù)碼管,并用74LS245驅(qū)動和PNP三極管片選。整體設計方框圖如圖1所示。</p><p><b> 圖1整體設計方框圖</b></p><p><b> 3 設計原理分析</b></p><p> 3.1 單片機最小系統(tǒng)的設計</p><p> 以AT
20、89S51為核心組成的單片機的最小系統(tǒng),主要包括時鐘震蕩電路,復位電路等。+5V電源直接接到AT89S51的40腳(VCC)20腳(GND)。時鐘震蕩電路:AT89S51的18腳(XTAL1)和19腳(XTAL2)外接12MHZ的晶振和兩個30PF的電容,震蕩頻率就是晶振的固有頻率,經(jīng)過一定的電路連接實現(xiàn)計時的功能。復位電路采用按鍵手動復位相結(jié)合的方式接到AT89S51的9端(RST)。單片機最小系統(tǒng)原理圖如圖2所示。</p>
21、;<p> 圖2 單片機最小系統(tǒng)</p><p> 3.2 定時及整點報時電路的設計</p><p> 該電路采用蜂鳴器的響聲來實現(xiàn)報時功能,其中蜂鳴器的方式必須有三極管來放大信號。</p><p> 采用蜂鳴器報警的方式。該電路可以根據(jù)在整點時刻發(fā)出聲音警報,即蜂鳴器發(fā)出響聲,計時到整點時刻向蜂鳴器發(fā)出信號,信號電流經(jīng)過三極管將信號放大后送給
22、蜂鳴器發(fā)出聲音。特別的是這部分電路必須接地,以防外界或電路本身產(chǎn)生的干擾信號引起蜂鳴器發(fā)出響聲影響正常工作。當單片機P1.7口置0時,在圖3中,P1.7接的信號輸出端經(jīng)電阻限流后送給三極管的基極,放大后輸送給蜂鳴器,5秒后自動停止發(fā)出聲音。采用蜂鳴器報警方式的原理圖,如圖3.2所示:</p><p> 圖3 定時及整點報時電路 圖4 74LS245引腳圖 </p
23、><p><b> 3.3顯示電路設計</b></p><p> 采用靜態(tài)顯示,利用74LS245驅(qū)動數(shù)碼管顯示。74LS245是我們常用的芯片,用來驅(qū)動LED或者其他的設備,它是8路同相三態(tài)雙向總線收發(fā)器,可雙向傳輸數(shù)據(jù)。 當單片機的P0口總線負載達到或超過最大負載能力時,必須接入74LS245等總線驅(qū)動器?! ‘斊x端/CE低電平有效時,DIR=“0”,信號
24、由 B 向 A 傳輸;(接收) DIR=“1”,信號由 A 向 B 傳輸;(發(fā)送)當/CE為高電平時,A、B均為高阻態(tài)。 由于P2口始終輸出地址的高8位,接口時74LS245的三態(tài)控制端/1G和/2G接地,P2口與驅(qū)動器輸入線對應相連。</p><p> P0口與74LS245輸入端相連,/E端接地,保證數(shù)據(jù)現(xiàn)暢通。8051的/RD和/PSEN相與后接DIR,使得/RD或/PSEN有效時,74LS245
25、輸入(P0.i←Di),其它時間處于輸出(P0.i→Di)。74LS245引腳圖如圖4所示。顯示電路如圖5所示。</p><p><b> 圖5 顯示電路</b></p><p> 3.4 時間調(diào)整電路設計</p><p> 該電路可以實現(xiàn)連續(xù)的調(diào)時,調(diào)分和調(diào)秒的功能,誤差可以控制在2秒以內(nèi),可以在任何時候達到準確調(diào)時,調(diào)分和調(diào)秒的功能具
26、體實現(xiàn)過程是:開機后在00:00:00起開始計時,長按P1.0進入調(diào)分狀態(tài),分單元閃爍,按P1.0加1,按P1.1減1。再長按P1.0進入時調(diào)整狀態(tài),時單元閃爍,加減調(diào)整同調(diào)分。長按退出調(diào)整狀態(tài)。 按P1.3進入設定鬧時狀態(tài):00:00: -,可進行分設定,按P1.2分加1,再按P1.3為時調(diào)整,00:00:- ,按P1.2時加1,按P1.1鬧鈴有效,顯示為00:00:-0,再按P1.1鬧鈴無效(顯示00:00:- ),按P1.3調(diào)鬧鐘
27、結(jié)束。在鬧鈴時可按P1.3停鬧,不按鬧鈴1分鐘。時間調(diào)整電路如圖6所示。</p><p><b> 圖6 時間調(diào)整電路</b></p><p> 3.5 復位電路設計</p><p> 該電路采用上電復位和按鈕復位,有一個22uF的電容、一個按鍵、一個1K的電阻構(gòu)成。通斷電瞬間完成復位,沒有記憶功能;在產(chǎn)品工作期間出現(xiàn)錯誤或死機現(xiàn)象可采用
28、手動復位,即按下按鍵K1,此時無論電路處于何種狀態(tài),電路都會恢復到初始狀態(tài)的顯示。復位電路如圖7所示。 </p><p> 圖7 復位電路 圖8 晶振電路 </p><p><b> 3.6晶振電路設計</b></p><p> 晶振電路可以給單片機提供所需要的
29、時鐘頻率,主要由晶振這個元件固定的精確的頻率來實現(xiàn)。晶振電路圖8所示。</p><p><b> 3.7系統(tǒng)軟件設計</b></p><p> 主程序首先是初始化部分,主要是計時單元清零,中斷初始化,啟動定時器工作,然后是調(diào)用顯示子程序,接著是判斷有無按鍵。無按鍵則回到調(diào)用顯示子程序處;有按鍵,則執(zhí)行按鍵處理子程序,執(zhí)行完后回到調(diào)用顯示子程序處,重復循環(huán)。由于晶振
30、的原因程序當中必須加入去抖動部分,以防止顯示的模糊。因為這部分功能如果讓硬件來完成電路會比較復雜,手工制作也達不到應有的精度,反而制作的成本會增加很多,又因為始終僅是實現(xiàn)普通功能的產(chǎn)品且是要能夠普及的,所以成本不能太高,這樣就要求硬件不能太復雜,采用的元器件也不能造價太高,一般都應該是很廉價的。</p><p> 接下來的程序是時鐘中斷程序,也是程序的核心部分,時鐘如何工作運行就由這部分程序控制。其中該時鐘采用
31、的是二十四小時制,即時計數(shù)是二十四次,二十四次后就重新為零;分和秒當然是計數(shù)六十然后重新為零,并向前進位。但是在調(diào)解時間的時候采用的是分別對時、分、秒調(diào)節(jié)的方式,因而在調(diào)解時間的情況下,“時”位還是到二十四時歸為零,“分”和“秒”位歸零后不再向前進位。</p><p> 接下來是控制顯示電路的程序,即將單片機發(fā)出的顯示命令輸送給顯示電路編譯部分,經(jīng)過編譯為數(shù)碼管能夠顯示的信號送給數(shù)碼管來顯示出人所能明白的形式,
32、這部分程序顯示電路的關(guān)鍵中樞。在單片機與數(shù)碼管之間主要由74LS245和PNP來作連接編譯功能,將程序要求的內(nèi)容送給數(shù)碼管顯示。主程序流程圖如圖9所示。</p><p> 為保證系統(tǒng)可靠運行,在主程序之外還增加了定時中斷程序。本電子鐘的計時程序是用單片機內(nèi)部的定時計數(shù)器T0,定時10ms,即,0.001s,100次中斷即為1s,60s為1min,60min為1h,24h為1天,如此循環(huán),從而實現(xiàn)計時功能,外部是
33、采用晶振來完成。中斷程序流程圖如圖10所示。</p><p> 圖10 主程序流程圖 </p><p> 圖9 中斷程序流程圖</p><p><b> 3.8誤差分析</b></p><p> 該電子鐘在運行中存在一定的誤差,誤差產(chǎn)生有三種可能,首先是采用的計時方案是軟件計時的,計時
34、優(yōu)勢利用中斷來實現(xiàn)。而當電子鐘運行時間1秒時,又得去執(zhí)行中斷程序,這個過程是需要時間的,所以就產(chǎn)生了一定的誤差,當然這個誤差是避免不了的,其次還有硬件系統(tǒng)也有一定的影響。第三,設計用到12MHz的晶振,計算是滿20次為一秒鐘,但實際會慢很多。</p><p><b> 4 結(jié)束語</b></p><p> 本設計以單片機AT89S51為控制核心,由單片機最小系統(tǒng)、
35、顯示電路、復位電路、調(diào)時定時電路、整點報時電路等幾部分構(gòu)成。本系統(tǒng)以89S51為核心部件,利用軟件編程,通過鍵盤控制和LED顯示實現(xiàn)了時鐘功能、鬧鐘功能,能基本實現(xiàn)本設計的基本要求和擴展功能。在本設計中盡量做到了硬件電路簡單穩(wěn)定,減小電磁干擾和其他環(huán)境干擾,充分發(fā)揮軟件編程的優(yōu)點,減小因元器件精度不夠引起的誤差。在這短短的三周時間內(nèi),通過學習使自己對課本上的知識可以應用于實際,使得理論與實際相結(jié)合,加深自己對課本知識的更好理解,同時實習
36、也段練了我個人的動手能力,能夠充分利用圖書館去查閱資料,能夠很好的利用進行搜索有用的資料,增加了許多課本以外的知識。通過布線和仿真,達到了對Altium Designer DXP和protus進行比較熟練的操作。非常感謝老師給我們提供這樣的機會和幫助,對我們學生來說,理論與實際同樣重要,這是我們以后在工作中說明自己能力的一個重要標準。</p><p><b> 參考文獻</b></p
37、><p> [1] 李朝青.單片機原理及接口技術(shù)(修訂版)[M].北京:北京航空航天大學出版社.2004</p><p> [2] 劉海成.單片機及應用系統(tǒng)設計原理與實踐[M].北京:北京航空航天大學出版社.2009</p><p> [3] 石磊.Altium Designer 8.0中文版電路設計標準教程[M].北京:清華大學出版社.2009</p>
38、;<p> [4] 韓亞萍.Protel DXP基礎(chǔ)教程[M].北京:清華大學出版社.2004</p><p><b> 附錄1 原理圖</b></p><p><b> 附錄2 仿真圖</b></p><p><b> 附錄3 源程序</b></p><p
39、> DISPFIRST EQU 30H ;顯示首址存放單元</p><p> BELL EQU P1.7 ;小喇叭</p><p> CONBS EQU 2FH ;存放報時次數(shù)</p><p> ;*********** 中斷入口程序*************</p><p>
40、 ORG 0000H ;程序執(zhí)行開始地址</p><p> LJMP START ;跳到標號START執(zhí)行</p><p> ORG 0003H ;外中斷0中斷程序入口</p><p> RETI ;外中斷0中斷返回</p><p> ORG 000BH
41、;定時器T0中斷程序入口</p><p> LJMP INTT0 ;跳至INTTO執(zhí)行</p><p> ORG 0013H ;外中斷1中斷程序入口</p><p> RETI ;外中斷1中斷返回</p><p> ORG 001BH ;定時器T1中斷程序入口</p
42、><p> LJMP INTT1 ;跳至INTT1執(zhí)行</p><p> ORG 0023H ;串行中斷程序入口地址</p><p> RETI ;串行中斷程序返回</p><p> ;************* 以下程序開始**************</p><p&
43、gt;<b> ;整點報時用</b></p><p> QQQQ : MOV A,#10H</p><p> MOV B,79H</p><p><b> MUL AB</b></p><p> ADD A,78H</p><p> MOV CONBS,
44、A</p><p> BSLOOP: LCALL DS20MS</p><p> LCALL DL1S</p><p> LCALL DL1S</p><p> LCALL DL1S</p><p> DJNZ CONBS,BSLOOP</p><p> CLR 08H
45、 ;清整點報時標志</p><p> AJMP START1</p><p> ;*************** 主程序開始**************</p><p> START: MOV R0,#00H ;清00H-7FH內(nèi)存單元</p><p> MOV R7,#80H ;</p
46、><p> CLEARDISP: MOV @R0,#00H ;</p><p> INC R0 ;</p><p> DJNZ R7,CLEARDISP ;</p><p> MOV 20H,#00H ;清20H(標志用)</p><p> MOV
47、 7AH,#0AH ;放入"熄滅符"數(shù)據(jù)</p><p> MOV TMOD,#11H ;設T0、T1為16位定時器</p><p> MOV TL0,#0B0H ;50MS定時初值(T0計時用)</p><p> MOV TH0,#3CH ;50MS定時初值</p><
48、p> MOV TL1,#0B0H ;50MS定時初值(T1閃爍定時用)</p><p> MOV TH1,#3CH ;50MS定時初值</p><p> SETB EA ;總中斷開放</p><p> SETB ET0 ;允許T0中斷</p><p> S
49、ETB TR0 ;開啟T0定時器</p><p> MOV R4,#14H ;1秒定時用計數(shù)值(50MS×20)</p><p> MOV DISPFIRST,#70H ;顯示單元為70-75H</p><p><b> ;以下主程序循環(huán)</b></p><p&g
50、t; START1: LCALL DISPLAY ;調(diào)用顯示子程序</p><p> JNB P1.0,SETMM1 ;P1.0口為0時轉(zhuǎn)時間調(diào)整程序</p><p> JNB P1.1,FUNSS ;秒表功能,P1.1按鍵調(diào)時時作減1加能</p><p> JNB P1.2,FUNPT ;秒表STOP,PUS
51、E,CLR</p><p> JNB P1.3,TSFUN ;定時鬧鈴設定</p><p> JB 08H, QQQQ</p><p> AJMP START1 ;P1.0口為1時跳回START1</p><p> FUNPT: LJMP FUNPTT</p><p>
52、 ;以下鬧鈴時間設定程序,按P1.3進入設定</p><p> TSFUN: LCALL DS20MS</p><p> JB P1.3,START1 ;</p><p> WAIT113: JNB P1.3,WAIT113 ;等待鍵釋放</p><p> JB 05H,CLOSESP ;鬧鈴已
53、開的話,關(guān)鬧鈴</p><p> MOV DISPFIRST,#50H ;進入鬧鈴設定程序,顯示50-55H鬧鐘定時單元</p><p> MOV 50H,#0CH ;"-" 鬧鈴設定時顯示格式00:00: -</p><p> MOV 51H,#0AH ;"黑"</p
54、><p> DSWAIT: SETB EA</p><p> LCALL DISPLAY</p><p> JNB P1.2,DSFINC ;分加1</p><p> JNB P1.0,DSDEC ;分減1</p><p> JNB P1.3,DSSFU ;進
55、入時調(diào)整</p><p> AJMP DSWAIT</p><p> CLOSESP: CLR 05H ;關(guān)鬧鈴標志</p><p><b> CLR BELL</b></p><p> AJMP START1</p><p> DSSFU: LCALL
56、 DS20MS ;消抖</p><p> JB P1.3, DSWAIT</p><p> LJMP DSSFUNN ;進入時調(diào)整</p><p> SETMM1: LJMP SETMM ;轉(zhuǎn)到時間調(diào)整程序SETMM</p><p> DSFINC : LCALL DS20
57、MS ;消抖</p><p> JB P1.2, DSWAIT</p><p> DSWAIT12: LCALL DISPLAY ;等鍵 釋放</p><p> JNB P1.2, DSWAIT12</p><p><b> CLR EA</b></p>&
58、lt;p> MOV R0,#53H ;</p><p> LCALL ADD1 ;鬧鈴設定分加1</p><p> MOV A,R3 ;分數(shù)據(jù)放入A</p><p> CLR C ;清進位標志</p><p>
59、 CJNE A,#60H,ADDHH22 ;</p><p> ADDHH22: JC DSWAIT ;小于60分時返回</p><p> ACALL CLR0 ;大于或等于60分時分計時單元清0</p><p> AJMP DSWAIT</p><p> DSDEC
60、 : LCALL DS20MS ;消抖</p><p> JB P1.0, DSWAIT</p><p> DSWAITEE: LCALL DISPLAY ;等鍵 釋放</p><p> JNB P1.0, DSWAITEE</p><p><b> CLR EA</b&g
61、t;</p><p> MOV R0,#53H ;</p><p> LCALL sub1 ;鬧鈴設定分減1</p><p> LJMP DSWAIT</p><p> ;以下秒表功能/時鐘轉(zhuǎn)換程序</p><p> ;按下P1.1 可進行功能轉(zhuǎn)換<
62、/p><p> FUNSS: LCALL DS20MS</p><p> JB P1.1,START11</p><p> WAIT11: JNB P1.1,WAIT11</p><p><b> CPL 03H</b></p><p> JNB 03H,TIMFUN&
63、lt;/p><p> MOV DISPFIRST,#60H ;顯示秒表數(shù)據(jù)單元</p><p> MOV 60H,#00H</p><p> MOV 61H,#00H</p><p> MOV 62H,#00H</p><p> MOV 63H,#00H</p><p&g
64、t; MOV 64H,#00H</p><p> MOV 65H,#00H</p><p> MOV TL1,#0F0H ;10MS定時初值()</p><p> MOV TH1,#0D8H ;10MS定時初值</p><p><b> SETB TR1</b></p>
65、;<p><b> SETB ET1</b></p><p> START11: LJMP START1</p><p> TIMFUN:MOV DISPFIRST,#70H ;顯示時鐘數(shù)據(jù)單元</p><p><b> CLR ET1</b></p><p>
66、<b> CLR TR1</b></p><p> START12: LJMP START1</p><p> ;以下秒表暫停\清零功能程序</p><p> ;按下P1.2暫停或清0,按下P1.1退出秒表回到時鐘計時</p><p> FUNPTT: LCALL DS20MS</p>
67、<p> JB P1.2,START12</p><p> WAIT22: JNB P1.2,WAIT21</p><p><b> CLR ET1</b></p><p><b> CLR TR1</b></p><p> WAIT33: JNB
68、P1.1,FUNSS</p><p> JB P1.2,WAIT31</p><p> LCALL DS20MS</p><p> JB P1.2,WAIT33</p><p> WAIT66: JNB P1.2,WAIT61</p><p> MOV 60H,#00H</p&g
69、t;<p> MOV 61H,#00H</p><p> MOV 62H,#00H</p><p> MOV 63H,#00H</p><p> MOV 64H,#00H</p><p> MOV 65H,#00H</p><p> WAIT44: JNB P1.
70、1,FUNSS</p><p> JB P1.2,WAIT41</p><p> LCALL DS20MS</p><p> JB P1.2,WAIT44</p><p> WAIT55: JNB P1.2,WAIT51</p><p><b> SETB ET1</b
71、></p><p><b> SETB TR1</b></p><p> AJMP START1</p><p> ;以下鍵等待釋放時顯示不會熄滅用</p><p> WAIT21: LCALL DISPLAY</p><p> AJMP WAIT22</
72、p><p> WAIT31: LCALL DISPLAY</p><p> AJMP WAIT33</p><p> WAIT41: LCALL DISPLAY</p><p> AJMP WAIT44</p><p> WAIT51: LCALL DISPLAY&l
73、t;/p><p> AJMP WAIT55</p><p> WAIT61: LCALL DISPLAY</p><p> AJMP WAIT66;</p><p> ;*************** 1秒計時程序**************</p><p><b> ;T0中斷服務程
74、序</b></p><p> INTT0: PUSH ACC ;累加器入棧保護</p><p> PUSH PSW ;狀態(tài)字入棧保護</p><p> CLR ET0 ;關(guān)T0中斷允許</p><p> CLR TR0 ;關(guān)閉定時器
75、T0</p><p> MOV A,#0B7H ;中斷響應時間同步修正</p><p> ADD A,TL0 ;低8位初值修正</p><p> MOV TL0,A ;重裝初值(低8位修正值)</p><p> MOV A,#3CH ;高8位初值修正</p
76、><p> ADDC A,TH0 ;</p><p> MOV TH0,A ;重裝初值(高8位修正值)</p><p> SETB TR0 ;開啟定時器T0</p><p> DJNZ R4, OUTT0 ;20次中斷未到中斷退出</p><
77、p> ADDSS: MOV R4,#14H ;20次中斷到(1秒)重賦初值</p><p> CPL 07H ;鬧鈴時間隔嗚叫用</p><p> MOV R0,#71H ;指向秒計時單元(71H-72H)</p><p> ACALL ADD1
78、;調(diào)用加1程序(加1秒操作)</p><p> MOV A,R3 ;秒數(shù)據(jù)放入A(R3為2位十進制數(shù)組合)</p><p> CLR C ;清進位標志</p><p> CJNE A,#60H,ADDMM ;</p><p> ADDMM: JC OU
79、TT0 ;小于60秒時中斷退出</p><p> ACALL CLR0 ;大于或等于60秒時對秒計時單元清0</p><p> MOV R0,#77H ;指向分計時單元(76H-77H)</p><p> ACALL ADD1 ;分計時單元加1分鐘</p&g
80、t;<p> MOV A,R3 ;分數(shù)據(jù)放入A</p><p> CLR C ;清進位標志</p><p> CJNE A,#60H,ADDHH ;</p><p> ADDHH: JC OUTT0 ;小于60分時中斷退出</p>
81、<p> ACALL CLR0 ;大于或等于60分時分計時單元清0</p><p> LCALL DS20MS ;正點報時</p><p><b> SETB 08H</b></p><p> MOV R0,#79H ;指向小時計時單元(78H-79
82、H)</p><p> ACALL ADD1 ;小時計時單元加1小時</p><p> MOV A,R3 ;時數(shù)據(jù)放入A</p><p> CLR C ;清進位標志</p><p> CJNE A,#24H,HOUR ;</
83、p><p> HOUR: JC OUTT0 ;小于24小時中斷退出</p><p> ACALL CLR0 ;大于或等于24小時小時計時單元清0</p><p> OUTT0: MOV 72H,76H ;中斷退出時將分、時計時單元數(shù)據(jù)移</p><p> MO
84、V 73H,77H ;入對應顯示單元</p><p> MOV 74H,78H ;</p><p> MOV 75H,79H ;</p><p> LCALL BAOJ</p><p> POP PSW ;恢復狀態(tài)字(出棧)<
85、;/p><p> POP ACC ;恢復累加器</p><p> SETB ET0 ;開放T0中斷</p><p> RETI ;中斷返回</p><p> ;*********** 閃動調(diào)時程序\秒表功能程序**********</
86、p><p> ;T1中斷服務程序,用作時間調(diào)整時調(diào)整單元閃爍指示或秒表計時</p><p> INTT1: PUSH ACC ;中斷現(xiàn)場保護</p><p> PUSH PSW ;</p><p> JB 03H, MMFUN
87、 ;=1時秒表</p><p> MOV TL1, #0B0H ;裝定時器T1定時初值</p><p> MOV TH1, #3CH ;</p><p> DJNZ R2,INTT1OUT ;0.3秒未到退出中斷(50MS中斷6次)</p><p> MOV R2,#
88、06H ;重裝0.3秒定時用初值</p><p> CPL 02H ;0.3秒定時到對閃爍標志取反</p><p> JB 02H,FLASH1 ;02H位為1時顯示單元"熄滅"</p><p> MOV 72H,76H ;02H位為0時正常顯示<
89、/p><p> MOV 73H,77H ;</p><p> MOV 74H,78H ;</p><p> MOV 75H,79H ;</p><p> INTT1OUT: POP PSW ;恢復現(xiàn)場</p><p>
90、 POP ACC ;</p><p> RETI ;中斷退出</p><p> FLASH1: JB 01H,FLASH2 ;01H位為1時,轉(zhuǎn)小時熄滅控制</p><p> MOV 72H,7AH ;01H位為0時,"熄滅符"
91、;數(shù)據(jù)放入分</p><p> MOV 73H,7AH ;顯示單元(72H-73H),將不顯示分數(shù)據(jù)</p><p> MOV 74H,78H ;</p><p> MOV 75H,79H ;</p><p> AJMP INTT1OUT ;轉(zhuǎn)中斷退出<
92、/p><p> FLASH2: MOV 72H,76H ;01H位為1時,"熄滅符"數(shù)據(jù)放入小時</p><p> MOV 73H,77H ;顯示單元(74H-75H),小時數(shù)據(jù)將不顯示</p><p> MOV 74H,7AH ;</p><p&g
93、t; MOV 75H,7AH ;</p><p> AJMP INTT1OUT ;轉(zhuǎn)中斷退出</p><p> MMFUN : CLR TR1</p><p> MOV A,#0F7H ;中斷響應時間同步修正,重裝初值(10ms)</p><p> ADD
94、 A,TL1 ;低8位初值修正</p><p> MOV TL1,A ;重裝初值(低8位修正值)</p><p> MOV A,#0D8H ;高8位初值修正</p><p> ADDC A,TH1 ;</p><p> MOV TH1,A ;
95、重裝初值(高8位修正值)</p><p> SETB TR1 ;開啟定時器T0</p><p> MOV R0,#61H ;指向秒計時單元(71H-72H)</p><p> ACALL ADD1 ;調(diào)用加1程序(加1秒操作)</p><p> CLR C
96、 ;</p><p> MOV A,R3 ;</p><p> JZ FSS1 ;加1后為00,C=0</p><p> AJMP OUTT01 ;加1后不為00,C=1</p><p> FSS1:
97、 ACALL CLR0 ;大于或等于60秒時對秒計時單元清0</p><p> MOV R0,#63H ;指向分計時單元(76H-77H)</p><p> ACALL ADD1 ;分計時單元加1分鐘</p><p> MOV A,R3 ;分數(shù)據(jù)放入A<
98、;/p><p> CLR C ;清進位標志</p><p> CJNE A,#60H,ADDHH1 ;</p><p> ADDHH1: JC OUTT01 ;小于60分時中斷退出</p><p> LCALL CLR0 ;大于或等于60分
99、時分計時單元清0</p><p> MOV R0,#65H ;指向小時計時單元(78H-79H)</p><p> ACALL ADD1 ;小時計時單元加1小時</p><p> OUTT01:POP PSW ;恢復狀態(tài)字(出棧)</p><p> POP
100、 ACC ;恢復累加器</p><p> RETI ;中斷返回 ;</p><p> ;************* 加1子 程 序 **************</p><p> ADD1: MOV A,@R0 ;取當前計時單元數(shù)據(jù)到A</p>
101、<p> DEC R0 ;指向前一地址</p><p> SWAP A ;A中數(shù)據(jù)高四位與低四位交換</p><p> ORL A,@R0 ;前一地址中數(shù)據(jù)放入A中低四位</p><p> ADD A,#01H ;A加1操作</p><p> DA
102、 A ;十進制調(diào)整</p><p> MOV R3,A ;移入R3寄存器</p><p> ANL A,#0FH ;高四位變0</p><p> MOV @R0,A ;放回前一地址單元</p><p> MOV A,R3 ;取回R3中暫存數(shù)據(jù)<
103、/p><p> INC R0 ;指向當前地址單元</p><p> SWAP A ;A中數(shù)據(jù)高四位與低四位交換</p><p> ANL A,#0FH ;高四位變0</p><p> MOV @R0,A ;數(shù)據(jù)放入當削地址單元中</p><p>
104、 RET ;子程序返回</p><p> ;************ 分減1子 程 序*************</p><p> SUB1: MOV A,@R0 ;取當前計時單元數(shù)據(jù)到A</p><p> DEC R0 ;指向前一地址</p><p> SWAP
105、 A ;A中數(shù)據(jù)高四位與低四位交換</p><p> ORL A,@R0 ;前一地址中數(shù)據(jù)放入A中低四位</p><p> JZ SUB11</p><p> DEC A ;A減1操作</p><p> SUB111: MOV R3,A ;移入R3寄存器
106、</p><p> ANL A,#0FH ;高四位變0</p><p> CLR C ;清進位標志</p><p> SUBB A,#0AH</p><p> SUB1111: JC SUB1110</p><p> MOV @R0,#09H ;大于等于0
107、AH,為9</p><p> SUB110: MOV A,R3 ;取回R3中暫存數(shù)據(jù)</p><p> INC R0 ;指向當前地址單元</p><p> SWAP A ;A中數(shù)據(jù)高四位與低四位交換</p><p> ANL A,#0FH ;高四位變0</
108、p><p> MOV @R0,A ;數(shù)據(jù)放入當削地址單元中</p><p> RET ;子程序返回</p><p> SUB11: MOV A,#59H</p><p> AJMP SUB111</p><p> SUB1110:MOV A,R3
109、;移入R3寄存器</p><p> ANL A,#0FH ;高四位變0</p><p> MOV @R0,A</p><p> AJMP SUB110</p><p> ;************* 時減1子 程 序 *************</p><p> SUBB1:MOV A,
110、@R0 ;取當前計時單元數(shù)據(jù)到A</p><p> DEC R0 ;指向前一地址</p><p> SWAP A ;A中數(shù)據(jù)高四位與低四位交換</p><p> ORL A,@R0 ;前一地址中數(shù)據(jù)放入A中低四位</p><p> JZ SUBB11
111、 ;00減1為23(小時)</p><p> DEC A ;A減1操作</p><p> SUBB111:MOV R3,A ;移入R3寄存器</p><p> ANL A,#0FH ;高四位變0</p><p> CLR C ;清進位標志</p>
112、<p> SUBB A,#0AH ;時個位大于9為9</p><p> SUBB1111: JC SUBB1110 ;</p><p> MOV @R0,#09H ;大于等于0AH,為9</p><p> SUBB110: MOV A,R3 ;取回R3中暫存數(shù)據(jù)</p><p&
113、gt; INC R0 ;指向當前地址單元</p><p> SWAP A ;A中數(shù)據(jù)高四位與低四位交換</p><p> ANL A,#0FH ;高四位變0</p><p> MOV @R0,A ;時十位數(shù)數(shù)據(jù)放入</p><p> RET
114、 ;子程序返回</p><p> SUBB11: MOV A,#23H</p><p> AJMP SUBB111</p><p> SUBB1110:MOV A,R3 ;時個位小于0A不處理</p><p> ANL A,#0FH ;高四位變0</p><p> M
115、OV @R0,A ;個位移入</p><p> AJMP SUBB110</p><p> ;*************** 清零程序 ***************</p><p><b> ;對計時單元復零用</b></p><p> CLR0: CLR A ;清累加
116、器</p><p> MOV @R0,A ;清當前地址單元</p><p> DEC R0 ;指向前一地址</p><p> MOV @R0,A ;前一地址單元清0</p><p> RET ;子程序返回</p><p&
117、gt; ;************** 時鐘時間調(diào)整程序***************</p><p> ;當調(diào)時按鍵按下時進入此程序</p><p> SETMM: cLR ET0 ;關(guān)定時器T0中斷</p><p> CLR TR0 ;關(guān)閉定時器T0</p><p> LCA
118、LL DL1S ;調(diào)用1秒延時程序</p><p> LCALL DS20MS ;消抖</p><p> JB P1.0,CLOSEDIS ;鍵按下時間小于1秒,關(guān)閉顯示(省電)</p><p> MOV R2,#06H ;進入調(diào)時狀態(tài),賦閃爍定時初值</p><
119、;p> MOV 70H,#00H ;調(diào)時時秒單元為00 秒</p><p> MOV 71H,#00H</p><p> SETB ET1 ;允許T1中斷</p><p> SETB TR1 ;開啟定時器T1</p><p> SE
120、T2: JNB P1.0,SET1 ;P1.0口為0(鍵未釋放),等待</p><p> SETB 00H ;鍵釋放,分調(diào)整閃爍標志置1</p><p> SET4: JB P1.0,SET3 ;等待鍵按下</p><p> LCALL DL05S ;有鍵按下,延時0.5秒&l
121、t;/p><p> LCALL DS20MS ;消抖</p><p> JNB P1.0,SETHH ;按下時間大于0.5秒轉(zhuǎn)調(diào)小時狀態(tài)</p><p> MOV R0,#77H ;按下時間小于0.5秒加1分鐘操作</p><p> LCALL ADD1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 時鐘控制器單片機課程設計報告
- 單片機課程設計---基于單片機的定時控制器設計
- 單片機課程設計---單片機節(jié)日彩燈控制器
- 單片機課程設計——基于單片機的步進電機控制器設計
- 單片機課程設計——基于單片機的步進電機控制器設計
- 基于單片機控制的時鐘控制器
- 單片機數(shù)字時鐘控制課程設計
- 單片機課程設計-時間控制器
- 單片機課程設計報告--基于單片機的步進電機控制器的設計
- 單片機課程設計--基于單片機的數(shù)字時鐘設計
- 課程設計-單片機基于單片機的數(shù)字時鐘設計
- 單片機課程設計---單片機數(shù)字時鐘
- 單片機課程設計報告---單片機數(shù)字時鐘
- 單片機課程設計:彩燈控制器設計
- 單片機課程設計---單片機數(shù)字時鐘.doc
- 單片機課程設計---用單片機設計節(jié)日彩燈控制器
- 單片機課程設計-單片機課程設計---電子時鐘
- 單片機課程設計報告---基于單片機的數(shù)字時鐘設計
- 單片機課程設計--步進電機控制器
- 單片機課程設計--單片機控制步進電機
評論
0/150
提交評論