基于單片機的數(shù)字鐘設(shè)計_第1頁
基于單片機的數(shù)字鐘設(shè)計_第2頁
基于單片機的數(shù)字鐘設(shè)計_第3頁
基于單片機的數(shù)字鐘設(shè)計_第4頁
基于單片機的數(shù)字鐘設(shè)計_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、泰山職業(yè)技術(shù)學院畢業(yè)設(shè)計(論文)題 目:基于單片機的數(shù)字時鐘系 部: 汽車電子工程系專 業(yè): 應(yīng)用電子技術(shù) 學 號: 201103010103 學生姓名: 于 學 成指導(dǎo)教師: 宋 麗 玲 職 稱: 講 師 二O一四 年 六月 二十五 日泰山職業(yè)技術(shù)學院畢業(yè)論文(設(shè)計)任務(wù)書課題名稱:基于單片機的數(shù)字時鐘系 部:汽 車 電 子 工 程 系專 業(yè):應(yīng) 用 電 子 技術(shù)姓 名:于學成學 號: 指導(dǎo)老師:宋麗玲 二一四 年 六 月二十五日一、 畢業(yè)論文(設(shè)計)的目的與要求:要求:采用單片機實現(xiàn)數(shù)字鐘的基本功能,要求采用4位數(shù)碼管,高兩位顯示小時,低兩位顯示秒;采用開關(guān)控制數(shù)字鐘的啟動、停止、復(fù)位和調(diào)

2、整時間;時間顯示采用24小時制二、畢業(yè)論文(設(shè)計)的內(nèi)容:內(nèi)容:1方案總體設(shè)計2控制系統(tǒng)硬件電路設(shè)計(顯示采用四位數(shù)碼管)3軟件流程圖設(shè)計,匯編程序編寫4電氣原理圖的繪制三、畢業(yè)論文(設(shè)計)進程的安排序 號論文(設(shè)計)各階段名稱日 期備 注第一章 論文背景及設(shè)計任務(wù).第二章 系統(tǒng)方案設(shè)計.第三章 硬件電路設(shè)計.第四章 軟件系統(tǒng)設(shè)計.第五章 電路調(diào)試.第六章 總結(jié).四、任務(wù)執(zhí)行日期:自年月日起,至年月日止。學 生(簽字)_指導(dǎo)教師(簽字)_系主任(簽字)_目錄摘 要錯誤!未定義書簽。第一章 論文背景及設(shè)計任務(wù)81.1論文背景81.2課程設(shè)計題目描述和任務(wù)8第二章 系統(tǒng)方案設(shè)計92.1整體設(shè)計92

3、.2方案設(shè)計與論證9第三章 硬件電路設(shè)計103.1 AT89C51的單片機簡介103.2 LED顯示電路123.3 鍵盤控制電路12第四章 軟件系統(tǒng)設(shè)計134.1程序編寫設(shè)計流程圖134.2繪制數(shù)字時鐘電路Protues仿真原理圖144.2.1啟動ISIS 7 Professional軟件144.2.2仿真電路繪制144.2.3電路檢測144.3軟件設(shè)計144.3.1運行keil軟件編寫程序并編譯、連接錯誤!未定義書簽。4.3.2將程序燒入單片機并運行錯誤!未定義書簽。4.3.3運行程序錯誤!未定義書簽。第五章 電路調(diào)試155.1軟件與硬件調(diào)試155.2仿真結(jié)果分析15第六章 總結(jié)17附錄:1

4、8數(shù)字時鐘原理圖18數(shù)字時鐘源程序19參考文獻:29 摘 要近年來隨著計算機在社會領(lǐng)域的滲透和大規(guī)模集成電路的發(fā)展,單片機的應(yīng)用正在不斷地走向深入,由于它具有功能強,體積小,功耗低,價格便宜,工作可靠,使用方便等特點,因此特別適合于與控制有關(guān)的系統(tǒng),越來越廣泛地應(yīng)用于自動控制,智能化儀器,儀表,數(shù)據(jù)采集,軍工產(chǎn)品以及家用電器等各個領(lǐng)域,單片機往往是作為一個核心部件來使用,在根據(jù)具體硬件結(jié)構(gòu),以及針對具體應(yīng)用對象特點的軟件結(jié)合,以作完善本次做的數(shù)字鐘是以單片機(AT89C51)為核心,結(jié)合相關(guān)的元器件(3個2位共陽數(shù)碼管,一個發(fā)光二極管和一個蜂鳴器)和應(yīng)用程序(proteus軟件和KEIL編譯軟

5、件),構(gòu)成相應(yīng)的應(yīng)用系統(tǒng)。關(guān)鍵詞:單片機 AT89C51 共陽數(shù)碼管 發(fā)光二極管 蜂鳴器 proteus軟件 KEIL編譯軟件摘要翻譯:Inrecentyearsalongwiththecomputerinthesocialfieldofpermeabilityandlargescaleintegratedcircuitofdevelopment,theapplicationofsinglechipmicrocomputer,iscontinuouslytofurther,becauseithasastrongfunction,smallvolume,lowpowerconsumption,t

6、hepriceischeap,reliablework,useconvenientwaitforacharacteristic,thereforeparticularlysuitableforrelatedcontrolandsystem,moreandmorewidelyusedinautomaticcontrol,intelligentinstrument,instrument,datacollection,militaryproductsandhouseholdelectricalappliances,andotherfields,microcontrollerisoftenasacor

7、ecomponenttouse,inaccordingtothespecifichardwarestructure,andtheviewofthespecificapplicationofthecharacteristicsoftheobjectsoftwarecombinestomakeperfectThisdodigitalclockisasinglechipmicrocomputer(AT89C51)asthecore,combinedwithrelatedcomponents(3twocommonYangdigitaltube,alightemittingdiodeandabuzzer

8、)andapplications(proteussoftwareandKEILcompilersoftware),constitutescorrespondingapplicationsystem. Keyword: A single-chip microcomputer, AT89C51, total Yang digital tube, light emitting diode, buzzer, proteus software, KEIL compiler software基于單片機的數(shù)字時鐘第一章 論文背景及設(shè)計任務(wù)1.1論文背景數(shù)字電子鐘具有走時準確,一鐘多用等特點,在生活中已經(jīng)得到

9、廣泛的應(yīng)用。另外數(shù)字鐘還具備秒表和鬧鐘的功能,且鬧鐘鈴聲可自選,使一款電子鐘具備了多媒體的色彩。單片機STC89C51在Proteus軟件中實現(xiàn)數(shù)字時鐘的定時、時間調(diào)整、鬧正設(shè)置等功能。具有體積小、功能強可靠性高、價格低廉等一系列優(yōu)點,不僅已成為工業(yè)測控領(lǐng)域普遍采用的智能化控制工具,而且已滲入到人們工作和和生活的各個角落,有力地推動了各行業(yè)的技術(shù)改造和產(chǎn)品的更新?lián)Q代,應(yīng)用前景廣闊。時鐘電路在計算機系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。在一個單片機應(yīng)用系統(tǒng)中,時鐘有兩方面的含義:一是指為保障系統(tǒng)正常工作的基準振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機系統(tǒng)工作

10、的快慢;二是指系統(tǒng)的標準定時時鐘,即定時時間。本文主要介紹用單片機內(nèi)部的定時/計數(shù)器來實現(xiàn)電子時鐘的方法,本設(shè)計由單片機AT89C51芯片和3個兩位一體的共陽極的數(shù)碼管為核心,輔以必要的電路,構(gòu)成了一個單片機數(shù)字時鐘。單片機AT89S51可調(diào)數(shù)字鐘系統(tǒng)設(shè)計的核心是目前應(yīng)用極為廣泛的51系列單片機,可調(diào)數(shù)字鐘配置了外圍設(shè)備,構(gòu)成了一個可編程的計時定時系統(tǒng),具有體積小,可靠性高,功能強等特點。不僅能滿足所需要求而且還有很多功能可供開發(fā),有著廣泛的應(yīng)用領(lǐng)域。1.2課程設(shè)計題目描述和任務(wù)單片機控制的數(shù)字鐘的硬件結(jié)構(gòu)與軟件設(shè)計,給出了匯編語言源程序。此數(shù)字鐘是一個將“時”、“分”、“秒”顯示于人的視覺器

11、官的計時裝置。顯示器件選用LED七段數(shù)碼管。在譯碼顯示電路輸出的驅(qū)動下,顯示出清晰、直觀的數(shù)字符號。針對數(shù)字鐘會產(chǎn)生走時誤差的現(xiàn)象,在電路中就設(shè)計有有校準時間功能的電路。使用動態(tài)數(shù)碼顯示的方法,運用獨立式按鍵識別過程,按“時”,“分”,“秒”數(shù)據(jù)送出顯示處理方法。(1)具有時、分、秒計數(shù)顯示功能,以24小時循環(huán)(2)LED數(shù)碼管顯示時、分、秒的個位和十位(3)可以在任意時刻校準時間(4)能夠完成時間的顯示、定時鬧鐘、復(fù)位等功能第二章 系統(tǒng)方案設(shè)計2.1整體設(shè)計此次設(shè)計主要是應(yīng)用單片機來設(shè)計電子時鐘,硬件部分主要分以下電路模塊:顯示電路用8個共陰數(shù)碼管分別顯示,星期(年份),小時、分鐘(月份)和

12、秒(日),通過動態(tài)掃描進行顯示,從而避免了譯碼器的使用,同時節(jié)約了I/0端口,使電路更加簡單。單片機采用AT89S51系列,這種單片機應(yīng)用簡單,適合電子鐘設(shè)計整體設(shè)計框圖如圖2-1所示:圖2-1 數(shù)字時鐘整體電路2.2方案設(shè)計與論證方案一:采用各種純數(shù)字芯片實現(xiàn)數(shù)字時鐘的設(shè)計。優(yōu)點:各個模塊功能清晰,電路易于理解實現(xiàn)。缺點:各個模塊功能已定不能進行智能化調(diào)整,整體電路太龐大。方案二:采用 FPGA模塊用硬件語言實現(xiàn)功能。優(yōu)點:運算速度快,走時精度高,算法簡單。缺點:成本高,大材小用。方案三:采用單片機最小系統(tǒng)實現(xiàn)功能。優(yōu)點:電路簡單,能通過程序進行隨機調(diào)整并擴展功能,成本低,易于實現(xiàn)。缺點:走

13、時有一定的誤差。經(jīng)過綜合考慮成本問題以及電路實現(xiàn)問題,選擇第三種方案實現(xiàn)設(shè)計要求。第三章 硬件電路設(shè)計3.1 AT89C51的單片機簡介(一)AT89C51的介紹AT89C51單片機是在一塊芯片中集成了CPU、RAM、ROM、定時器/計數(shù)器和多種功能的I/O接口電路等一臺計算機所需要的基本功能部件,AT89C51單片機內(nèi)包含下列幾個部件:(1) 一個8位CPU;(2)一個片內(nèi)振蕩器及時鐘電路;(3)4K字節(jié)ROM程序存儲器;(4)128字節(jié)RAM數(shù)據(jù)存儲器;(5)兩個16位定時器/計數(shù)器;(6)可尋址64K外部數(shù)據(jù)存儲器和64K外部程序存儲器空間的控制電路;(7)32條可編程的I/O線(四個8

14、位并行I/O端口);(8)一個可編程全雙工串行口;(9)具有五個中斷源、兩個優(yōu)先級嵌套中斷結(jié)構(gòu)。(二) AT89C51單片機的部分管腳說明:AT89C51單片機采用40條引腳雙列直插式器件,引腳除5V( 40腳)和電源地( 20腳)外,其功能分為時鐘電路、控制信號、輸入/輸出三大部分,引腳圖如下圖:圖3-1 AT89C51引腳圖 Vcc40 電源端;GND20 接地端。工作電壓為5V 。 外接晶振引腳圖3-2 外接晶振引腳圖XTAL119 、XTAL218 :XTAL1是片內(nèi)振蕩器的反相放大器輸入端,XTAL2則是輸出端,使用外部振蕩器時,外部振蕩信號應(yīng)直接加到XTAL1,而XTAL2懸空。內(nèi)

15、部方式時,時鐘發(fā)生器對振蕩脈沖二分頻,如晶振為12MHz,時鐘頻率就為6MHz。晶振的頻率可以在1MHz-24MHz內(nèi)選擇。電容取30PF左右。系統(tǒng)的時鐘電路設(shè)計是采用的內(nèi)部方式,即利用芯片內(nèi)部的振蕩電路。復(fù)位RST9圖3-3 常用復(fù)位電路圖在振蕩器運行時,有兩個機器周期(24個振蕩周期)以上的高電平出現(xiàn)在此引腿時,將使單片機復(fù)位,只要這個腳保持高電平,51芯片便循環(huán)復(fù)位。復(fù)位后P0P3口均置1引腳表現(xiàn)為高電平,程序計數(shù)器和特殊功能寄存器SFR全部清零。/EA=1 31腳當/EA=1時,訪問內(nèi)部程序存儲器,當PC值超過內(nèi)ROM范圍時,自動轉(zhuǎn)執(zhí)行外部程序存儲器的程序;當/EA=0時,只訪問外部程

16、序存儲器。(三)另外介紹一下輸入輸出引腳(本系統(tǒng)只用到P0、P1、P2口):(1) P0端口P0.0-P0.7 是一個8位漏極開路型雙向I/O端口,端口置1(對端口寫1)時作高阻抗輸入端。作為輸出口時能驅(qū)動8個TTL。對內(nèi)部Flash程序存儲器編程時,接收指令字節(jié);校驗程序時輸出指令字節(jié),要求外接上拉電阻。在訪問外部程序和外部數(shù)據(jù)存儲器時,P0口是分時轉(zhuǎn)換的地址(低8位)/數(shù)據(jù)總線,訪問期間內(nèi)部的上拉電阻起作用。(2) P1端口P1.0P1.7是一個帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時可驅(qū)動4個TTL。端口置1時,內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對內(nèi)部Flash程序存儲器編程時

17、,接收低8位地址信息。(3) P2端口P2.0P2.7是一個帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時可驅(qū)動4個TTL。端口置1時,內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對內(nèi)部Flash程序存儲器編程時,接收高8位地址和控制信息。在訪問外部程序和16位外部數(shù)據(jù)存儲器時,P2口送出高8位地址。而在訪問8位地址的外部數(shù)據(jù)存儲器時其引腳上的內(nèi)容在此期間不會改變。3.2 LED顯示電路本課程設(shè)計用到共陽極數(shù)碼管通過其引腳圖,便可順利完成其連接。 圖3-4 共陽數(shù)碼管內(nèi)部結(jié)構(gòu)圖3.3 鍵盤控制電路通過S1、S2、S3和S4四個按鍵,對時間進行修改和鬧鐘的設(shè)置,S0控制鬧鐘的啟動和停止。按下S1鍵顯示

18、鬧鐘,松開后顯示時間;按下S4鍵進入時間修改模式,再按S4鍵時間的時加1,按S2分加1,調(diào)整結(jié)束后按下S1恢復(fù)正常顯示;按下S3鍵進入鬧鐘修改模式,再按S3鍵鬧鐘的時加1,按S2分加1,調(diào)整結(jié)束后按下S1恢復(fù)正常顯示。當用手按下一個鍵時,往往按鍵在閉合位置和斷開位置之間跳幾下才穩(wěn)定到閉合狀態(tài)的情況;在釋放一個鍵時,也會出現(xiàn)類似的情況,這就是抖動。抖動的持續(xù)時間隨鍵盤材料和操作員而異,不過通常總是不大于10ms。很容易想到,抖動問題不解決就會引起對閉合鍵的識別。用軟件方法可以很容易地解決抖動問題,這就是通過延遲10ms來等待抖動消失,這之后,再讀入鍵盤碼。第四章 軟件系統(tǒng)設(shè)計4.1程序編寫設(shè)計流

19、程圖開始初始化 主程序YS0閉合NN響鈴判斷Y顯示時間時間調(diào)整響鈴YS4按下NY鬧鐘調(diào)整S3按下NNS1按下Y顯示鬧鐘圖4-1 程序編寫流程圖4.2繪制數(shù)字時鐘電路Protues仿真原理圖4.2.1啟動ISIS 7 Professional軟件元件的加載:找到原件后雙擊原件即可完成加載原件。如圖4-2所示:圖 4-2 Protues加載原件圖4.2.2仿真電路繪制 放置元件調(diào)整原布局連線最后得到的原理圖如下:圖4-3 Protues仿真圖通過S1、S2、S3和S4四個按鍵,對時間進行修改和鬧鐘的設(shè)置,S0控制鬧鐘的啟動和停止。按下S1鍵顯示鬧鐘,松開后顯示時間;按下S4鍵進入時間修改模式,再按

20、S4鍵時間的時加1,按S2分加1,調(diào)整結(jié)束后按下S1恢復(fù)正常顯示;按下S3鍵進入鬧鐘修改模式,再按S3鍵鬧鐘的時加1,按S2分加1,調(diào)整結(jié)束后按下S1恢復(fù)正常顯示。4.2.3電路檢測電路連接完畢后,單擊運行按鈕(如下圖)檢測電路是否有誤, 如果電路如果無誤進行軟件檢測。4.3軟件設(shè)計圖4-6 仿真結(jié)果圖第五章 電路調(diào)試5.1軟件與硬件調(diào)試單片機應(yīng)用系統(tǒng)的調(diào)試包括硬件和軟件兩部分,但是它們并不能完全分開。一般的方法是排除明顯的硬件故障,再進行綜合調(diào)試,排除可能的軟/硬件故障。軟件調(diào)試是指用仿真軟件進行仿真調(diào)試,驗證系統(tǒng)的各項功能;硬件調(diào)試即軟件調(diào)試成功后,將程序下載至AT89C51芯片中,用焊接

21、好的電路來進行各項功能的驗證與檢測。需要特別注意的是軟件調(diào)試與硬件調(diào)試的差異,軟件調(diào)試只是初步的估測,硬件的調(diào)試才是最真實的5.2仿真結(jié)果分析按鍵問題我的設(shè)計中,很多功能選擇是通過按鍵開關(guān)實現(xiàn)的。在仿真中發(fā)現(xiàn),調(diào)整數(shù)值時,有時按鍵反應(yīng)太快,按一次,跳了幾下,使設(shè)置時間,日期很不方便。但是仿真多了之后,找到了按鍵(實際上是按鼠標)的節(jié)奏,對按鍵的掌控力提高了不少,不怎么會出現(xiàn)跳變的情況了。有些開關(guān)我采用了長按鍵的方式來防抖,效果不錯,但是每次都要長按鍵,調(diào)整效率太低,我沒有普及。本來想把所有的按鍵都加延時防抖電路,但仿真中感覺對鍵盤的控制力沒提高多少,有時還是會出問題。 P0口開關(guān)問題P0口比較

22、特殊,它存在高阻態(tài),要使其輸入不是高電平就是低電平,就要接上拉電阻,給其高電平輸入。中斷沖突問題為了實現(xiàn)秒表,我在T0中斷嵌套了秒表相關(guān)進位程序,由于秒表要求精度0.01秒,故我的T0中斷定時為就剛好0.01秒,中斷100次,剛好1秒。秒表確實實現(xiàn)了,但是我的鬧鈴音質(zhì)變差了。一開始以為是鬧鈴程序存太多冗余環(huán)節(jié),影響了T1的音樂輸出中斷,但是檢查程序后,發(fā)現(xiàn)沒什么多余的,裁剪無從下手。在仿真中,添加T0中斷服務(wù)程序,但是將中斷進入的間隔變大,即0.05秒進入一次中斷,發(fā)現(xiàn)音質(zhì)有所下降,有滋滋聲,但比原來的好。最后認定應(yīng)該是T0中斷過于頻繁,T1音樂頻率發(fā)生中斷被打破,當單位時間內(nèi)被打破的次數(shù)達到

23、一定程度時,音符和節(jié)拍的對應(yīng)發(fā)生紊亂,最終音質(zhì)變差。定時功能的實現(xiàn)過程定時功能運用了一個內(nèi)存地址3CH為標志位,只有3CH中所存值非0時,在主程序中才判斷定時是否已到。3CH值初始化為0,程序開始運行時并不判斷定時是否已到。當通過按鍵進入定時初值設(shè)置,并開始倒計時,3CH的值被賦為1,當?shù)褂嫊r顯示到0時,進入閃爍提示,提示結(jié)束后3CH又被賦值為0,程序回到主程序后,不必判斷定時是否已到。但當?shù)褂嫊r未完,按返回鍵回到主程序時,3CH的值為1,故在主程序判斷未完成的定時任務(wù),倒計時到0時調(diào)用同一個提示程序,最后仍可保證在主程序不再定時開啟時去判斷定時,從而節(jié)約資源。軟件消抖消抖可以采用硬件(施密特

24、觸發(fā)器)的方式,也可以采用軟件的方式。在此只討論軟件方式。軟件消抖有定時器定時,和利用延時子程序兩種方式。一,定時器定時消抖可以不影響顯示模塊掃描速度,其實現(xiàn)方法是:設(shè)置標志位,在定時器中斷中將其置位,然后在程序中查詢。將其中斷優(yōu)先級設(shè)置為低于時鐘定時中斷,那么它就可以完全不影響時鐘定時。二,在采用延時子程序時,如果顯示模塊的掃描速度本來就不是很快,此時可能會影響到顯示的效果,一般情況下,每秒的掃描次數(shù)不應(yīng)小于50次,否則,數(shù)碼的顯示會出現(xiàn)閃爍的情況。因此,延時子程序的延時時間應(yīng)該小于20毫秒,如果采用定時器定時的方式,延時時間不影響時鐘。如果,設(shè)計時采用的是中斷的方式來完成有關(guān)操作,同樣可以

25、采用軟件的方式來消抖,其處理思想是:中斷不能連續(xù)執(zhí)行,兩次之間有一定的時間間隔。第六章 總結(jié) 首先,我要感謝宋麗玲老師在此次設(shè)計中給于我的幫助。我深刻地感受單片機不單是一門文化課程,更是一門科學技術(shù)。單片機課程設(shè)計則是人生課程,我們學到了很多課堂上無法學到的東西。從新奇好玩到失敗后的痛苦無助,從失敗中爬起,哪怕再失敗,也永不放棄。這就是單片機課程設(shè)計教會我們的最寶貴的知識。一分耕耘,一分收獲。經(jīng)過這次課程設(shè)計,讓我獲得了很多知識,進一步加深了我對AT89C51單片機的掌握,另外也鞏固了我的編程思想和焊接技術(shù)。 本次的數(shù)字時鐘設(shè)計,讓我對自己在大學三年的知識的到了回顧,例如模電和數(shù)電以及做PCB

26、的軟件。它也讓我充分發(fā)揮了對所學知識的理解和設(shè)計的書面表達能力。這為今后自己進一步深化學習,積累了一定的寶貴經(jīng)驗。撰寫報告的過程是對專業(yè)知識的學習過程,它使我運用已有的專業(yè)基礎(chǔ)知識,對其進行設(shè)計,分析和解決一個理論問題或?qū)嶋H問題,把知識轉(zhuǎn)化為能力的實際訓練。 本次的課程設(shè)計,讓我發(fā)現(xiàn)理論必須用于實踐,否則只是一張白紙。此外只有理論水平提高了,才能更好的運用于實踐。另外,本次課程設(shè)計也考驗了我的認真的態(tài)度。只有做事?lián)碛姓J真的態(tài)度與科學的方法,才能成功。 我認為課程設(shè)計非常有必要,它能讓我們主動去尋找遇到問題的解決方法,同時也是對我們嚴謹認真工作態(tài)度的考驗與鍛煉,為以后我們進入社會參加工作是一個很

27、好的培訓與歷練。附錄:圖7-1 數(shù)字時鐘原理圖數(shù)字時鐘源程序 使用keil軟件編寫源程序ORG 0000HLJMP STARTORG 000BHLJMP TIME;*初始化*START: MOV SP, #50H MOV 20H,#00H ;定義秒 MOV 21H,#00H ;定義分 MOV 22H,#00H ;定義時 MOV 23H,#01H ;定義鬧鐘分鐘 MOV 24H,#01H ;定義鬧鐘小時 MOV 25H,#00H MOV 26H,#01H MOV 30H,#00H ;BCD SECOND MOV 31H,#00H MOV 32H,#00H ;BCD MINUTE MOV 33H,

28、#00H MOV 34H,#00H ;BCD HOUR MOV 35H,#00H MOV 36H,#01H MOV 37H,#00H MOV 38H,#01H MOV 39H,#00H MOV 50H,#00H ;按鍵次數(shù) MOV TMOD,#01H ;16位計數(shù)器 MOV TH0, #03CH ;賦初值 MOV TL0, #0B0H MOV IE, #87H ;中斷允許 SETB TR0 ;啟動T0 MOV R2,#14H MOV P2,#0FFH;*主程序*MAIN: JB P1.4,GB LCALL TIMEPRO ;調(diào)用鬧鐘判斷GB: LCALL DISPLAY1;調(diào)用時間顯示 JB

29、P1.3,M1 ;P1.3=1時轉(zhuǎn)移 S4沒有按下 LCALL SETTIME ;調(diào)用SETTIME調(diào)時子程序 LJMP MAINM1: JB P1.2,M2 ;P1 g.2=1時轉(zhuǎn)移S3 LCALL SETATIME ;調(diào)用SETATIME子程序 LJMP MAINM2: JB P1.0,M4 ;P1.01時轉(zhuǎn)移 S1 LCALL LOOKATIME ;調(diào)用LOOKATIME顯示鬧鐘子程序M4: LJMP MAIN;*延時子程序*DELAY: MOV R4,#030HDL00: MOV R5,#0FFHDL11: MOV R6,#9HDL12: DJNZ R6,DL12 DJNZ R5,DL

30、11 DJNZ R4,DL00 RET;*時間調(diào)整*SETTIME: ;設(shè)置時間L0: LCALL DISPLAY1MM1: JB P1.3,L1 ;P1.3=1時轉(zhuǎn)移 MOV C,P1.3 JC MM1 LCALL DELAY1 ;延時 JC MM1MSTOP1: MOV C,P1.3 ;P1.3為0時轉(zhuǎn)移 JNC MSTOP1 LCALL DELAY1 ;延時 MOV A,50H INC 50H CJNE A,#00H,HJ1 LJMP L0HJ1: MOV C,P1.3 JNC MSTOP1 INC 22H ;小時自加一 MOV A,22H CJNE A,#18H,GO12 ;小時計數(shù)循

31、環(huán) MOV 22H,#00H ;復(fù)位 MOV 34H,#00H MOV 35H,#00H LJMP L0L1: JB P1.1,L2 ;P1.1=1時轉(zhuǎn)移 MOV C,P1.1 JC L1 LCALL DELAY1 ;延時 JC L1MSTOP2: MOV C,P1.1 ;P1.10時轉(zhuǎn)移 JNC MSTOP2 LCALL DELAY1 ;延時 MOV C,P1.1 JNC MSTOP2 INC 21H ;分鐘加一 MOV A,21H CJNE A,#3CH,GO11 ;分鐘計數(shù)循環(huán) MOV 21H,#00H ; 復(fù)位 MOV 32H,#00H MOV 33H,#00H LJMP L0 GO1

32、1: MOV B,#0AH DIV AB MOV 32H,B ; 將A的低4位存入32單元 MOV 33H,A ; 將A的高4位存入33單元 LJMP L0GO12: MOV B,#0AH DIV AB MOV 34H,B ;將A的低4位存入34單元 MOV 35H,A ; 將A的高4位存入35單元 LJMP L0L2: JB P1.0,L0 ; P1.01時轉(zhuǎn)移 MOV C,P1.0 JC L2 LCALL DELAY1 ;延時 MOV C,P1.0 JC L2STOP1: MOV C,P1.0 ; P1.00時轉(zhuǎn)移 JNC STOP1 LCALL DELAY1 ;延時 MOV C,P1.0

33、 JNC STOP1 MOV 50H,#00H LJMP MAIN;*設(shè)置鬧鐘*SETATIME:LCALL DISPLAY2 ; 調(diào)用DISPLAY2顯示鬧鐘N0: LCALL DISPLAY2MM2: JB P1.2,N1 ;P1.2=1時轉(zhuǎn)移 MOV C,P1.2 JC MM2 LCALL DELAY1 ; 延時 JC MM2MSTOP3: MOV C,P1.2 ; P1.20時轉(zhuǎn)移 JNC MSTOP3 LCALL DELAY1 ; 延時 MOV A,50H INC 50H CJNE A,#00H,HJ2 LJMP N0HJ2: MOV C,P1.2 JNC MSTOP3 INC 24

34、H ;小時加一 MOV A,24H CJNE A,#24,GO22 ;小時計數(shù)循環(huán) MOV 24H,#00H ;復(fù)位 MOV 38H,#00H MOV 39H,#00H LJMP N0N1: JB P1.1,N2 ;P1.11時轉(zhuǎn)移 MOV C,P1.1 JC N1 LCALL DELAY1 ;延時 JC N1MSTOP4: MOV C,P1.1 ;P1.10時轉(zhuǎn)移 JNC MSTOP4 LCALL DELAY1 ;延時 MOV C,P1.1 JNC MSTOP4 INC 23H ;分鐘加一 MOV A,23H CJNE A,#60,GO21 ;分鐘計數(shù)循環(huán) MOV 23H,#00H ;復(fù)位

35、MOV 36H,#00H MOV 37H,#00H LJMP N0GO21: MOV B,#0AH DIV AB MOV 36H,B ;將A的低4位存入36單元 MOV 37H,A ;將A的高4位存入37單元 LJMP N0GO22: MOV B,#0AH DIV AB MOV 38H,B ;將A的低4位存入38單元 MOV 39H,A ;將A的高4位存入39單元 LJMP N0N2: JB P1.0 ,N0 ;P1.01時轉(zhuǎn)移 MOV C,P1.0 JC N2 LCALL DELAY1 ;延時 MOV C,P1.0 JC N2STOP2: MOV C,P1.0 JNC STOP2 LCALL

36、 DELAY1 MOV C,P1.0 JNC STOP2 MOV 50H,#00H LJMP MAIN;*鬧鐘判斷*TIMEPRO: MOV A,21H MOV B,23H CJNE A,B,BK ;判斷定時鬧鐘的分鐘 MOV A,22H MOV B,24H CJNE A,B,BK ;判斷定時鬧鐘的小時 SETB 25H.0 MOV C,25H.0 LCALL TIMEOUT ;調(diào)用TIMEOUT BK:RET;*喇叭報警*TIMEOUT: X1: LCALL BZ ;調(diào)用喇叭響應(yīng)程序 CLR 25H.0 ;調(diào)用喇叭響應(yīng)程序結(jié)束 LCALL DELAY ;延時 CLR 25H.0 LJMP D

37、ISPLAY1 BZ:MOV C,25H.1 MOV P1.6,C CLR P1.7 MOV R7,#0FFH ;喇叭響應(yīng)時間 T2: MOV R6,#0FFH T3: DJNZ R6,T3 DJNZ R7,T2 SETB P1.7 RET;*顯示鬧鐘時間*LOOKATIME:LCALL DISPLAY2 MM: JNB P1.0,LOOKATIME LCALL DELAY1 LJMP MAINDELAY1: MOV R4,#14H ;時間延時DL001: MOV R5,#0FFHDL111: DJNZ R5,DL111 DJNZ R4,DL001 RET;*定時*TIME: PUSH ACC

38、 ;保護現(xiàn)場 PUSH PSW MOVTH0,#03CH ;初值 MOVTL0,#0B0H DJNZ R2,RET0 MOVR2,#14H MOV A,20H CPL 25H.1 CLR C INC A ;秒自加一 CJNE A,#3CH,GO1 ;秒計數(shù)循環(huán) MOV 20H,#0 ;復(fù)位 MOV 30H,#0 MOV 31H,#0 MOV A,21H INC A ;分鐘自加一 CJNE A,#3CH,GO2 ;分鐘計數(shù)循環(huán) MOV 21H,#0H ;復(fù)位 MOV 32H,#0 MOV 33H,#0 MOV A,22H INC A ;小時自加一 CJNE A,#18H,GO3 ;小時計數(shù)循環(huán) MOV 22H,#00H ;復(fù)位 MOV 34H,#0 MOV 35H,#0 AJMP RET0GO1:MOV 20H,A MOV B,#0AH DIV AB MOV 31H,A ;將A的低4位存入31單元 MOV 30H,B ;將A的高4位存入30單元 AJMP RET0GO2: MOV 21H,A MOV B,#0AH DIV AB MOV 33H,A ;將A的低4位存入33單元 MOV 32H,B ;將A的高4位存入32單元 AJM

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論