畢業(yè)設計---基于單片機的電子時鐘設計_第1頁
已閱讀1頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  畢 業(yè) 論 文</b></p><p>  基于單片機的電子時鐘設計</p><p><b>  2008年6月5日</b></p><p> 學生姓名xxx</p><p> 所 在 系xxx系</p><p> 班 級xxx級xxx班&

2、lt;/p><p> 專 業(yè)xxx</p><p> 指導教師xxx 講師</p><p><b>  指導教師評閱書</b></p><p> 指導教師評價:一、撰寫(設計)過程1、學生在論文(設計)過程中的治學態(tài)度、工作精神□ 優(yōu) □ 良 □ 中 □ 及格 □ 不及格2、學生掌握專業(yè)

3、知識、技能的扎實程度□ 優(yōu) □ 良 □ 中 □ 及格 □ 不及格3、學生綜合運用所學知識和專業(yè)技能分析和解決問題的能力□ 優(yōu) □ 良 □ 中 □ 及格 □ 不及格4、研究方法的科學性;技術線路的可行性;設計方案的合理性□ 優(yōu) □ 良 □ 中 □ 及格 □ 不及格5、完成畢業(yè)論文(設計)期間的出勤情況□ 優(yōu) □ 良 □ 中

4、 □ 及格 □ 不及格二、論文(設計)質量1、論文(設計)的整體結構是否符合撰寫規(guī)范?□ 優(yōu) □ 良 □ 中 □ 及格 □ 不及格2、是否完成指定的論文(設計)任務(包括裝訂及附件)?□ 優(yōu) □ 良 □ 中 □ 及格 □ 不及格三、論文(設計)水平1、論文(設計)的理論意義或對解決實際問題的指導意義□ 優(yōu) </p><p> 建議成績:

5、□ 優(yōu) □ 良 □ 中 □ 及格 □ 不及格(在所選等級前的□內畫“√”)</p><p> 指導教師: (簽名) 單位: (蓋章)年 月 日</p><p><b>  評閱教師評閱書</b></p><p>  教研室(或答辯小組)及教學系意見<

6、/p><p><b>  摘要</b></p><p>  隨時代的發(fā)展,生活節(jié)奏的加快,人們的時間觀念愈來愈強;隨自動化、智能化技術的發(fā)展,機電產品的智能度愈來愈高,用到時間提示、定時控制的地方也會愈來愈多,因此,設計開發(fā)數字時鐘具有良好的應用前景。</p><p>  由于單片機價格的低成本、高性能,在自動控制產品中得到了廣泛的應用。本設計利用

7、Atmel公司的AT89S52單片機對電子時鐘進行開發(fā),設計了實現所需功能的硬件電路,應用匯編語言進行軟件編程,并用實驗板進行演示、驗證。</p><p>  在介紹本單片機的發(fā)展情況基礎上,說明了本設計實現的功能,以及實驗板硬件情況,并對各功能電路進行了分析。主要工作放在軟件編程上,用實驗板實現時間、日期、定時及它們的設定功能,詳細對軟件編程流程以及調試進行了說明,并對計時誤差進行了分析及校正,提出了定時音與顯

8、示相沖突問題及解決方案。實驗證明效果良好,可以投入使用。</p><p>  關鍵詞:單片機 AT89S52 電子時鐘 匯編語言</p><p><b>  目錄</b></p><p><b>  摘要</b></p><p><b>  1 緒論1</b>&l

9、t;/p><p>  1.1 課題背景1</p><p>  1.2 課題意義1</p><p>  1.3 本章小節(jié)2</p><p>  2 系統(tǒng)功能及操作3</p><p>  2.1 系統(tǒng)功能的確定3</p><p>  2.1.1 基本功能3</p><p&

10、gt;  2.1.2 擴展功能3</p><p>  2.2 系統(tǒng)操作說明4</p><p>  2.3 本章小節(jié)4</p><p>  3 系統(tǒng)硬件設計—實驗板介紹5</p><p>  3.1 芯片的選擇5</p><p>  3.2 實驗板電路原理圖6</p><p>  3.

11、3 功能電路分析6</p><p>  3.3.1 時鐘電路6</p><p>  3.3.2 復位電路6</p><p>  3.3.3 鍵盤電路7</p><p>  3.3.4 數碼顯示電路7</p><p>  3.3.5 蜂鳴器電路8</p><p>  3.4 本章小節(jié)

12、8</p><p>  4 系統(tǒng)軟件設計9</p><p>  4.1 數據單元分配9</p><p>  4.1.1 數據存儲單元分配9</p><p>  4.1.2 標志位單元分配9</p><p>  4.2 計時時鐘實現的基本方法9</p><p>  4.3 實現時鐘程序設

13、計步驟10</p><p>  4.3.1 主程序模塊設計10</p><p>  4.3.2 計時子程序模塊的實現11</p><p>  4.3.3 顯示子程序模塊的實現12</p><p>  4.3.4 時鐘設定子程序模塊的實現12</p><p>  4.3.5 日期、定時設定子程序模塊的實現12

14、</p><p>  4.4 程序說明12</p><p>  4.4.1 定時器初值計算12</p><p>  4.4.2 程序初始化12</p><p>  4.4.3 誤差分析及校正13</p><p>  4.4.4 實現閃動設定13</p><p>  4.4.5 實現連續(xù)

15、加113</p><p>  4.4.6 定時音與顯示相沖突問題及解決方案13</p><p>  4.5 本章小節(jié)13</p><p><b>  5 系統(tǒng)調試14</b></p><p><b>  結束語15</b></p><p><b>  致謝

16、16</b></p><p>  附錄A:實驗板原理圖17</p><p>  附錄B:程序清單18</p><p><b>  參考文獻45</b></p><p>  第一章 設計任務分析</p><p><b>  1.1 課題背景</b></

17、p><p>  單片機自1976年由Intel公司推出MCS-48開始,迄今已有二十多年了。由于單片機集成度高、功能強、可靠性高、體積小、功耗低、使用方便、價格低廉等一系列優(yōu)點,目前已經滲入到人們工作和生活的方方面面,單片機的應用領域已從面向工業(yè)控制、通訊、交通、智能儀表等迅速發(fā)展到家用消費產品、辦公自動化、汽車電子、PC機外圍以及網絡通訊等廣大領域。</p><p>  單片機有兩種基本結構

18、:一種是在通用微型計算機中廣泛采用的,程序存儲器和數據存儲器共用一個存儲器空間的結構,稱為“馮·諾依曼”(Von Neumann)結構。另一種是將程序存儲器和數據存儲器截然分開,分別尋址的結構,稱為“哈佛”(Harvard)結構,目前的單片機采用此種結構為多。</p><p>  本文討論的單片機多功能時鐘系統(tǒng)的核心是目前應用極為廣泛的51系列單片機,配置了外圍設備,構成了一個可編程的計時定時系統(tǒng),具有

19、體積小,可靠性高,功能多等特點。不僅能滿足所需要求而且還有很多功能可供擴展,有著廣泛的應用領域。</p><p><b>  1.2 設計任務</b></p><p><b>  1.3 課題意義</b></p><p>  在日常生活和工作中,我們常常用到定時控制,如擴印過程中的曝光定時等。早期常用的一些時間控制單元都使

20、用模擬電路設計制作的,其定時準確性和重復精度都不是很理想,現在基本上都是基于數字技術的新一代產品,隨著單片機性價比的不斷提高,新一代產品的應用也越來越廣泛。大則可以構成復雜的工業(yè)過程控制系統(tǒng),完成復雜的控制功能;小則可以用于家電控制,甚至可以用于兒童電子玩具。它功能強大、體積小、質量輕、靈活好用,配以適當的接口芯片,可以構成各種各樣、功能各異的微電子產品。</p><p>  隨著電子技術的飛速發(fā)展,家用電器和辦

21、公電子設備逐漸增多,不同的設備都有自己的控制器,使用起來很不方便。這些具有人們所需要的智能化特性的產品減輕了人的勞動,擴大了數字化的范圍,為家庭數字化提供了可能。</p><p>  根據這種實際情況,設計了一個單片機多功能時鐘系統(tǒng),它有基本的時間功能,還有定時功能,既可作為鬧鈴,也可擴展為定時對家電等電氣產品的自動控制,可以避免多種控制器的混淆,利用一個控制器對多路電器進行控制;可增加溫度傳感器,進行實時溫度顯

22、示,進一步擴展為利用不同的溫度某些電氣產品進行自動控制;也可增加濕度傳感器,進行實時濕度顯示,以便對濕度進行控制,方便人們的生活。</p><p><b>  1.4 本章小節(jié)</b></p><p>  本章主要介紹了課題背景、設計任務和課題意義,對單片機的優(yōu)點及結構作了簡要敘述,也對本系統(tǒng)的應用及概況進行了說明。</p><p>  第二章

23、 系統(tǒng)功能及操作</p><p>  2.1 系統(tǒng)功能的確定</p><p>  2.1.1 基本功能</p><p>  系統(tǒng)具有時間、日期、三路定時功能,并可以對時間、日期、定時進行設定,有定時提示音。要求計時精度盡量提高。顯示格式為:</p><p>  時間:“時”(第1、2位)、“分”(第3、4位)、“秒”(第5、6位);</

24、p><p>  日期:“年”(第1、2位,如2007年顯示為07)、“月”(第3、4位)、“日” (第5、6位);</p><p>  定時:“時”(第1、2位)、“分”(第3、4位)、“狀態(tài)標志”(第5、6位)。</p><p>  鍵盤及數碼管排列如圖2-1所示。</p><p>  2.1.2 擴展功能</p><p&g

25、t;  該系統(tǒng)可以增加溫度傳感器,實現溫度測量,以實時顯示溫度,用1、2位數碼管顯示;還可以增加濕度傳感器,實現濕度測量,以實時顯示濕度,用5、6位數碼管顯示。</p><p>  多路定時器功能也可擴展為對多種家電等電氣產品的自動控制,比如電飯煲等;也可利用溫度對某些電氣產品進行自動控制,比如空調等;還可利用濕度傳感器對濕度進行調節(jié)。如圖2-1所示。</p><p>  圖2-1 系統(tǒng)功

26、能圖</p><p>  2.2 系統(tǒng)操作說明</p><p> ?。?)按K1鍵顯示日期,3秒后自動返回時間顯示,3秒內按K2鍵進入日期設置,此時年位閃爍,按K1鍵進行年位加1或連續(xù)加1調整。按K2鍵依次切換到月位、日位,分別按K1鍵進行月位、日位調整,日位設置好后,再按K2鍵保存日期設定值,并返回顯示時間。</p><p> ?。?)按K2鍵大于1秒進入時間設置

27、,此時小時位閃爍,秒位自動清零,按K1鍵進行小時調整,按K2鍵切換到分鐘位,按K1鍵進行分鐘調整,分位設置好后,再按K2鍵保存時間設定值,并返回顯示時間,按所設定的時間值進行計時。</p><p> ?。?)連續(xù)按K3鍵顯示3路定時及其開關狀態(tài),當顯示某一路定時時,3秒后自動返回時間顯示,3秒內按K2鍵進入定時設置,設置同日期(5、6位顯示00為當路定時關,顯示01為當路定時開)。當路定時設置完后按K2鍵保存定時

28、設定值并返回時間顯示。</p><p> ?。?)按K4鍵顯示實時溫度和濕度,5秒后自動返回時間顯示。</p><p><b>  2.3 本章小節(jié)</b></p><p>  本章主要對本系統(tǒng)的基本功能和擴展功能進行了說明,也對本系統(tǒng)的系統(tǒng)的顯示情況及操作作了詳細說明。</p><p>  3 系統(tǒng)硬件設計—實驗板介紹

29、</p><p><b>  3.1 芯片的選擇</b></p><p>  本設計選用AT89S52芯片,它是一種低功耗、高性能CMOS 8位微控制器,具有8K(0000H~1FFFH)在線系統(tǒng)可編程Flash存儲器。片上Flash允許程序存儲器在線編程,也適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在線系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制

30、應用系統(tǒng)提供靈活、高效的解決方案。</p><p>  AT89S52具有以下標準功能:8K(0000H~1FFFH)Flash,256字節(jié)(00H~FFH)數據存儲器(RAM),64K(0000H~FFFFH)程序存儲器(ROM),32位I/O口線,看門狗定時器,2個數據指針,三個16位定時器/計數器,一個6向量2級中斷結構,全雙工串行口內晶振及時鐘電路。</p><p>  其中,數據

31、存儲器(RAM)用于存放各種運算的中間結果,作緩存和數據暫存,以及設置特征標志等。AT89S52的片內數據存儲器用位尋址方式,最大尋址范圍為256字節(jié)(00H~FFH)。按使用情況不同可分成低128字節(jié)(00H~7FH)和高128字節(jié)(80H~FFH)。其中低128字節(jié)為真正的RAM存儲器,高128字節(jié)為特殊功能寄存器(SFR)區(qū),如累加器ACC、程序狀態(tài)字PSW、數據指針DPTR、程序計數器PC等。整個片內RAM區(qū)分布如圖3-1所示。

32、</p><p>  圖3-1 片內RAM區(qū)</p><p>  3.2 實驗板電路原理圖</p><p>  實驗板電路結構框圖如圖3-2所示,原理電路圖(只有本設計所需部分)見附錄A。</p><p>  圖3-2 實驗板結構框圖</p><p>  3.3 功能電路分析</p><p> 

33、 3.3.1 時鐘電路</p><p>  實驗板的時鐘振蕩源電路如圖3-3所示。其中JT 為11.0592MHz 的晶振,改變兩電容CB的值即可對此晶振頻率進行調節(jié)。該電路提供單片機工作所需的振蕩頻率,計算定時器初值即需此晶振頻率,在通信時也需知道晶振頻率,以對波特率進行計算。</p><p>  圖 3-3 時鐘電路</p><p>  3.3.2 復位電路&l

34、t;/p><p>  如圖3-4所示為實驗板的復位電路,當RESET 信號為低電平時,實驗板為工作狀態(tài),當RESET信號為高電平時,實驗板為復位或下載程序狀態(tài)。由于AT89S52具有ISP 的功能,即可以通過并口線直接將程序下載到單片機內,因此, AT89S52 具有兩種狀態(tài),下載程序狀態(tài)和運行狀態(tài)。該復位電路能實現上電自動復位,也能手動復位,一般復位時RESET應保持20毫秒以上高電平,此復位時間由接地電容控制。&

35、lt;/p><p>  圖 3-4 復位電路</p><p>  3.3.3 鍵盤電路</p><p>  如圖3-5所示為陣列按鍵電路,各設置及轉換信號由此電路輸入,實驗板提供了16個按鍵,由P1口經SN74F244(驅動芯片)輸出擴展成4×4的陣列按鍵,P1.0~P1.3為行線,P1.4~P1.7為列線。SN74F244有一片選信號線,當此口線為低電平時,

36、A1~A4與Y1~Y4接通,反之,A1~A4與Y1~Y4斷開。</p><p>  此鍵盤用掃描工作方式,若有鍵按下,則相應位端口被拉低為低電平,由于本系統(tǒng)只用了4個按鍵,所以只需對4個按鍵進行掃描。掃描時,先置P3.3口為高電平,向P1口送0EFH(MOV P1,#0EFH),再置P3.3口為低電平,讀P1口(MOV A,P1),最后判斷P1口低4位哪位是低電平,若某位為低電平,則相應按鍵被按下,如P1.0

37、為低電平(ACC.0=0),則K1鍵被按下。</p><p>  圖 3-5 陣列按鍵</p><p>  3.3.4 數碼顯示電路</p><p>  如圖3-6所示為數碼顯示電路,實驗板使用了6個共陽數碼管,P0口為段碼信號線,B1~B6為位控線,是P1口經SN74F573(反向驅動芯片,即輸入為高電平,則輸出為低電平,反之則輸出為高電平,該芯片也有一片選信號C

38、,當此信號為高電平時有效)反向得到,再由B1~B6控制晶體管Q1~Q6,以達到控制每位數碼管的目的。</p><p>  系統(tǒng)采用動態(tài)顯示,先向P0口送第一位數碼管需要顯示的段碼值,再給P1口送0FEH,延時1毫秒使第一位數碼管顯示,又向P0口送第二位數碼管需要顯示的段碼值,P1口送0FDH,延時1毫秒,使第二位數碼管顯示。依次遞推,直到最后一位數碼管,然后再循環(huán)。改變延時時長可以調節(jié)數碼管顯示的亮度,由于單片機

39、執(zhí)行速度很快(微秒級),所以看上去數碼管一直亮著。</p><p>  圖 3-6 數碼顯示電路</p><p>  3.3.5 蜂鳴器電路</p><p>  其硬件原理圖如圖3-7所示。此電路用于定時時發(fā)出提示音。SPEAKER與P3.2口相連,當SPEAKER輸出高電平時蜂鳴器不響,而SPEAKER輸出低電平時蜂鳴器發(fā)出響聲。只需控制SPEAKER輸出高低電平

40、的時間和變化頻率,就可以讓蜂鳴器發(fā)出不同的聲音。此電路用于產生定時器提示音。</p><p>  圖 3-7 蜂鳴器電路</p><p><b>  3.4 本章小節(jié)</b></p><p>  本章主要對芯片作了介紹,對其內存單元作了詳細說明,并對系統(tǒng)硬件(實驗板)的結構框圖和各功能電路作了說明,以及這些電路在本設計中的用途。</p&g

41、t;<p><b>  4 系統(tǒng)軟件設計</b></p><p>  4.1 數據單元分配</p><p>  4.1.1 數據存儲單元分配</p><p>  數據存儲單元分配如下表所示:</p><p>  4.1.2 標志位單元分配</p><p>  標志位單元(20H)分配

42、如下表所示:</p><p>  4.2 計時時鐘實現的基本方法</p><p>  時鐘的最小計時單位是秒,使用定時器的方式1,最大的定時時間也只能達到131毫秒??砂讯〞r器的定時時間定為50毫秒,這樣,計數溢出20次即可得到時鐘的最小計時單位─秒。計數20次可以用軟件實現,對定時器溢出次數進行計數,計滿20次即為1秒。從秒到分,從分到時,以及日、月、年都是通過軟件累加并進行比較的方法實

43、現的。</p><p>  4.3 實現時鐘程序設計步驟</p><p>  系統(tǒng)采用模塊化結構,主程序只需調用各個子程序模塊即可實現相應功能。其模塊結構圖如圖4-1所示。</p><p>  圖4-1 程序各模塊方框圖</p><p>  4.3.1 主程序模塊設計</p><p>  整個程序進行模塊化設計,主程序

44、只需調用相應的程序即可。主程序流程如圖4-2所示。</p><p>  圖4-2 主程序流程圖</p><p>  4.3.2 計時子程序模塊的實現</p><p>  當T0中斷時,執(zhí)行本程序,因T0設為50毫秒中斷,故中斷20次為1秒。中斷程序分別有20次計數(1秒),60次計數(1分),60次計數(1小時),24次計數(1天),28、29、30、31次計數(1

45、個月),12次計數(1年)。當前位到設定數值時寫0或1,下一位加1。由于本世紀是21世紀,年位前兩位是4的倍數,故判斷閏年時只需對年的后兩位進行計算,能被4整除為閏年,否則為平年,年位只進行加1,大于99時又重新開始。計時中斷流程圖如圖4-3所示。</p><p>  圖4-3 計時子程序流程圖 圖4-4 顯示子程序流程圖</p><p>  4.3.3

46、 顯示子程序模塊的實現</p><p>  顯示原理在3.3.4節(jié)已給予了說明,流程圖如圖4-4所示。</p><p>  4.3.4 時鐘設定子程序模塊的實現</p><p>  當設定時間時,斷開T0中斷,秒單元清0,進入時、分單元設定。設定好后重裝T0初值,開T0中斷。流程圖如圖4-6所示。</p><p>  圖4-6 時鐘設定子程流

47、程圖</p><p>  4.3.5 日期、定時設定子程序模塊的實現</p><p>  日期、定時的設定同時鐘設定。定時設定時,把時鐘的秒位換成定時標志位,“00”為當路定時關,“01”為當路定時開,流程圖與時鐘設定程序相似。</p><p><b>  4.4 程序說明</b></p><p>  4.4.1 定時器

48、初值計算</p><p>  因定時器工作于方式1,需要50ms的中斷,所以計數初值:</p><p>  χ=216 - t×fosc/12=65536 - 50×10-3×11.0592×106/12=19456</p><p>  表示成十六進制為χ=4C00H,故(TH0)=4CH,(TL0)=00H。</p&g

49、t;<p>  4.4.2 程序初始化</p><p>  程序初始化時,清相應內存單元(20H~4FH共48個單元),送時間(00時00分00秒)、日期(07年10月01日)初值,送定時器T0、T1初值,TH0= TH1=4CH,TL0= TL1=00H,特殊寄存器(SP=50H、TMOD=11H)值等。</p><p>  4.4.3 誤差分析及校正</p>

50、<p>  當T0中斷時,需重裝定時初值,且要加上從斷開T0中斷到允許T0中斷共有13個周期,以減小誤差,故理論重裝定時初值為(TH0)=4CH,(TL0)=13H。但該外接晶振電路的晶振頻率可調,可能出現誤差,所以實際不是這個值。</p><p>  經調試,當定時初值為(TH0)=4CH,(TL0)=06H時,24小時約慢2秒,所以每當計時24小時之后,給秒單元(30H)送02H,使秒累加時從2加

51、起,24小時就少加2秒,即可使時間得到校正。</p><p>  4.4.4 實現閃動設定</p><p>  閃動可選用段碼送00H實現,也可禁止當前位顯示,選通位送0實現。本設計選用后者實現閃動,用定時器T1進行控制。</p><p>  4.4.5 實現連續(xù)加1</p><p>  先判斷鍵是否松開,若松開,則只執(zhí)行一次加1程序段,進行

52、單次加1;若未松開則連續(xù)執(zhí)行加1程序段,實現連續(xù)加1。每執(zhí)行一次加1程序段就調用顯示子程序進行延時,以對調節(jié)速度進行控制。本系統(tǒng)以5Hz的速度連續(xù)加1,這樣能快速對時間、日期、定時進行設定。</p><p>  4.4.6 定時音與顯示相沖突問題及解決方案</p><p>  由于蜂鳴器響時P3.2口的電平呈高頻變化,頻率1K~2K,其間隙時間為0.5~1毫秒,小于6 毫秒,因顯示時每個數

53、碼管顯示1毫秒,至少需要6毫秒,故蜂鳴器響時無法進行顯示。為解決此問題,可增加鎖存器,采用靜態(tài)顯示;也可增加一語音芯片,既可解決此問題,也可把定時音換成音樂或語音提示,或增加其它功能,使系統(tǒng)功能更強。</p><p><b>  4.5 本章小節(jié)</b></p><p>  本章主要對系統(tǒng)的軟件設計進行了詳細說明,從數據單元及標志單元的分配,到各子程序模塊的實現方法,

54、以及對時鐘的誤差分析、校正,定時音與顯示相沖突問題及解決方案。</p><p><b>  5 系統(tǒng)調試</b></p><p>  該時鐘程序的功能模塊先后實現的順序為:主程序→時間模塊→顯示模塊→鍵盤模塊→時間設定及其顯示模塊→日期及其顯示模塊→日期設定及其顯示模塊→定時及其顯示模塊→定時設定及其顯示模塊→定時提示音及與顯示相沖突的協調模塊。每完成一個模塊就與前一

55、個已完成的模塊結合起來調試,直至實現相應功能,再編寫下一模塊程序。在與主程序銜接時,主程序和各子程序也需作相應的改動,以便與子程序更好的銜接,特別是顯示子程序需作較大改動,以便對不同內容進行顯示。</p><p>  程序用偉福軟件進行匯編語言程序編寫,該軟件還可進行軟件仿真。用匯編語言編好程序后,先編譯,把匯編語言編譯成二進制代碼和十六進制代碼。若編譯無法進行,說明程序有語法錯誤,需進行修改。編譯成功后則可進行

56、軟件仿真,仿真可單步運行,也可連續(xù)運行。仿真時應調出數據窗口,看各單元數據是否正確,這是軟件仿真的目的。當然,有些錯誤軟件仿真不容易發(fā)現,這就得把編譯得到二進制代碼或十六進制代碼下載到實驗板上運行(用Easy 51Pro下載軟件,與實驗板相配的下載軟件。下載時先擦再寫,若不能能正常寫入,則再擦,再寫,直到寫入芯片),看是否正常,若不正常,再根據出錯的地方返回用軟件仿真,查看相應的數據單元,再修改程序,這樣反復調試,直至程序可用,在實驗板

57、上能正常運行。</p><p>  待程序調試成功后即可燒寫到實驗板上,讓其運行,至此,完成系統(tǒng)調試。</p><p><b>  結束語</b></p><p>  經過兩個多月的工作,基于單片機的電子時鐘系統(tǒng)的設計已經完成。經試驗驗證,滿足設計要求。由于加入了計時修正,在精度方面已經相當準確了,不過還可以達到更高精度,需要精確計算定時器T0

58、中斷次數的誤差,再予以修正;在軟件的定時部分可以進行改進,用循環(huán)程序實現,每次循環(huán)只需更改相應單元即可,這樣使程序精簡。由于時間原因,沒能實現這兩部分。該系統(tǒng)的擴展功能由于硬件原因不能實現,以后如硬件允許可以實現這部分功能,還可增加其它功能。</p><p>  本次設計主要涉及了單片機原理及接口技術的相關知識和匯編語言編程的諸多要領。設計中涉及的許多問題,更是對以前所學的知識的回顧及在過去的三年中學到知識的系統(tǒng)

59、總結,這次設計對我們將來的工作有很大的幫助。</p><p>  在設計中,我積極查閱資料,細心鉆研各個細節(jié),完成了多功能時鐘的開發(fā)與調試,也讓我們明白了在設計中考慮問題應該全面。在設計中既鍛煉了我的動手能力,又學會查閱資料,提煉需要的信息。</p><p>  由于本人水平有限,文中難免出現錯誤與不足之處,懇請各位老師批評指正。</p><p><b>

60、  致謝</b></p><p>  首先要感謝我的家人,是他們讓我能上大學;在大學里,先要學會學習才能學的更好,是老師教了我怎樣學習,到現在能完成畢業(yè)設計,都少不了老師的功勞;在整個設計過程中,從硬件電路圖到軟件編程,應用了相當多的知識,包含了大學三年所學的知識,在此向各位任課老師表示感謝。</p><p>  在設計過程中,指導老師xxx老師給予了我很大幫助,李老師對設計

61、中出現的問題作了及時講解和耐心指導,使我的設計得以順利完成。在此,特向xxx老師、xxx老師、xxx老師等表示感謝;同時,很多同學也給我提供了很多幫助,也向幫助我的同學表示感謝。</p><p>  附錄A:實驗板原理圖</p><p><b>  附錄B:程序清單</b></p><p>  ORG 0000H</p>

62、<p>  LJMP START</p><p>  ORG 000BH</p><p>  LJMP INTT0</p><p>  ORG 001BH</p><p>  LJMP INTT1</p><p>  ;;;;;;;;;;;;主程序;;;;;;;;;;;;&l

63、t;/p><p>  ORG 0020H</p><p>  START: MOV R0,#20H ;清20H--4FH共48個單元</p><p>  MOV R7,#30H ;20H,21H標志用</p><p>  CLEARA: MOV @R0,#00H</p>

64、<p>  INC R0</p><p>  DJNZ R7,CLEARA</p><p>  CLR P2.2</p><p>  CLR P2.1</p><p>  CLR P2.0</p><p>  MOV SP,#50H<

65、;/p><p>  MOV 33H,#01H</p><p>  MOV 34H,#0AH</p><p>  MOV 35H,#07H</p><p>  MOV TMOD,#11H ;設T0、T1為16位定時器</p><p>  MOV TL0,#00H

66、 ;50MS定時初值(T0計時用)</p><p>  MOV TH0,#4CH</p><p>  MOV TL1,#00H</p><p>  MOV TH1,#4CH</p><p>  SETB EA</p><p>  SETB ET0</p>

67、<p>  SETB TR0</p><p>  MOV R4,#14H</p><p>  START1: LCALL DISPLAY</p><p>  LCALL KEY</p><p>  JB ACC.3,$+6</p><p>  DATE1: L

68、CALL DATE</p><p>  JB ACC.2,$+6</p><p>  TIMEA: LCALL TIME</p><p>  JB ACC.1,$+6</p><p>  SETTIME1: LCALL SETTIME</p><p>  JB

69、 ACC.0,$+6</p><p>  JNB 0EH,$+6 ;定時顯示判斷</p><p>  LCALL RING1</p><p>  SJMP START1</p><p>  ;;;;;;;;;;;;;;;;;;;計時程序;;;;;;;;;;;;;;;;;;;</p&g

70、t;<p>  INTT0: PUSH ACC</p><p>  PUSH PSW</p><p>  CLR ET0</p><p>  CLR TR0</p><p>  MOV A,#06H ;TL=#06H,TH=#4CH</p><p&

71、gt;  ADD A,TL0 ;低8位初值修正</p><p>  MOV TL0,A ;重裝初值(低8位修正值)</p><p>  MOV A,#4CH </p><p>  ADDC A,TH0 ;高8位初值修正</p><p>  MOV TH0,A

72、 ;重裝初值(高8位修正值)</p><p>  SETB TR0</p><p>  DJNZ R4, $+5 ;1s未到中斷退出</p><p>  LJMP $+6</p><p>  LJMP OUTT0</p><p>  MOV R

73、4,#14H</p><p>  INC 30H</p><p>  MOV A,30H</p><p>  CJNE A,#3CH,$+6</p><p>  LJMP $+6</p><p>  LJMP OUTT0</p><p>  MOV

74、 30H,#00H</p><p>  INC 31H</p><p>  LCALL TIME1 ;調定時比較程序</p><p>  MOV A,31H</p><p>  CJNE A,#3CH,$+5</p><p>  SJMP $+5</p&

75、gt;<p>  LJMP OUTT0</p><p>  MOV 31H,#00H</p><p>  INC 32H</p><p>  MOV A,32H</p><p>  CJNE A,#18H,$+6</p><p>  LJMP $+6<

76、;/p><p>  LJMP OUTT0</p><p>  MOV 32H,#00H</p><p>  INC 33H</p><p>  MOV30H,#02H;時間修正</p><p>  MOV A,34H</p><p>  CJNE A

77、,#02H,$+6</p><p>  LJMP MON2</p><p>  CJNE A,#04H,$+6</p><p>  LJMP DAY30</p><p>  CJNE A,#06H,$+6</p><p>  LJMP DAY30</p><p

78、>  CJNE A,#09H,$+6</p><p>  LJMP DAY30</p><p>  CJNE A,#0BH,$+6</p><p>  LJMP DAY30</p><p>  MOV A,33H</p><p>  CJNE A,#20H,$+6&

79、lt;/p><p>  LJMP LOOP1</p><p>  LJMP OUTT0</p><p>  DAY30: MOV A,33H</p><p>  CJNE A,#1FH,$+6</p><p>  LJMP LOOP1</p><p>  LJ

80、MP OUTT0</p><p>  MON2: MOV A,35H</p><p>  MOV B,#04H</p><p>  DIV AB</p><p>  MOV A,B</p><p>  JZ DAY29</p><p>  MO

81、V A,33H</p><p>  CJNE A,#1DH,$+6</p><p>  LJMP LOOP1</p><p>  LJMP OUTT0</p><p>  DAY29: MOV A,33H</p><p>  CJNE A,#1EH,$+6</p&g

82、t;<p>  LJMP LOOP1</p><p>  LJMP OUTT0</p><p>  LOOP1: MOV 33H,#01H</p><p>  INC 34H</p><p>  MOV A,34H</p><p>  CJNE A,#0D

83、H,$+6</p><p>  LJMP $+6</p><p>  LJMP OUTT0</p><p>  MOV 34H,#01H</p><p>  INC 35H</p><p>  MOV A,35H</p><p>  CJNE A

84、,#64H,$+6</p><p>  LJMP $+6</p><p>  LJMP OUTT0</p><p>  MOV 35H,#00H</p><p>  OUTT0: POP PSW</p><p>  POP ACC</p><p>  

85、SETB ET0</p><p><b>  RETI</b></p><p>  ;;;;;;;;;;;;;;;;;;;定時比較程序;;;;;;;;;;;;;;;</p><p>  TIME1: JNB 0BH,TIME2</p><p>  MOV A,31H</p><

86、;p>  CJNE A,37H,TIME2</p><p>  MOV A,32H</p><p>  CJNE A,38H,TIME2</p><p>  SETB 08H ;鬧鈴1顯示標志位置位</p><p>  SJMP RING</p><p

87、>  TIME2: JNB 0CH,TIME3</p><p>  MOV A,31H</p><p>  CJNE A,3AH,TIME3</p><p>  MOV A,32H</p><p>  CJNE A,3BH,TIME3</p><p>  SETB

88、 09H ;鬧鈴2顯示標志位置位</p><p>  SJMP RING</p><p>  TIME3: JNB 0DH,OUTTIME</p><p>  MOV A,31H</p><p>  CJNE A,3DH,OUTTIME</p><p>  M

89、OV A,32H</p><p>  CJNE A,3EH,OUTTIME</p><p>  SETB 0AH ;鬧鈴3顯示標志位置位</p><p>  SJMP RING</p><p>  OUTTIME: RET</p><p>  RING: SET

90、B 0EH</p><p><b>  RET</b></p><p>  ;;;;;;;;;;;;;;;;;;;時鐘調整程序;;;;;;;;;;;;;;;;</p><p>  TIME: LCALL DL1S</p><p>  LCALL KEY</p><p>  JB

91、 ACC.2,$+5</p><p>  SJMP $+5</p><p>  LJMP START1</p><p>  CLR ET0</p><p>  CLR TR0</p><p>  MOV 30H,#00H</p><p>

92、  SETB 05H</p><p>  SETB 06H ;5、6位閃爍標志位置位</p><p>  SETB ET1</p><p>  SETB TR1</p><p>  MOV R2,#06H</p><p>  LCALL DISP

93、LAY</p><p>  LCALL KEY</p><p>  JNB ACC.2,$-6 ;等待鍵釋放</p><p>  TIMEHOUR: LCALL DISPLAY</p><p>  LCALL KEY</p><p>  JNB ACC.2,TIM

94、EMIN ;等待鍵按下</p><p>  JB ACC.3,$-9</p><p>  TIMEHOUR1: LCALL DL02S</p><p>  LCALL KEY</p><p>  JNB ACC.3,$+19 ;等待鍵釋放</p><p>  IN

95、C 32H</p><p>  MOV A,32H</p><p>  CJNE A,#18H,$+6</p><p>  MOV 32H,#00H</p><p>  SETB 05H</p><p>  SETB 06H</p><p>  

96、SJMP TIMEHOUR</p><p>  CLR 05H</p><p>  CLR 06H</p><p>  INC 32H</p><p>  MOV A,32H</p><p>  CJNE A,#18H,$+6</p><p>

97、;  MOV 32H,#00H</p><p>  SJMP TIMEHOUR1</p><p>  TIMEMIN: CLR 05H</p><p>  CLR 06H</p><p>  SETB 03H ;3、4位閃爍標志位置位</p><p>

98、;  SETB 04H</p><p>  LCALL DISPLAY</p><p>  LCALL KEY</p><p>  JNB ACC.2,$-6 ;等待鍵釋放</p><p>  TIMEMIN1: LCALL DISPLAY</p><p>  LCA

99、LL KEY</p><p>  JNB ACC.2,TIMEOUT ;等待鍵按下</p><p>  JB ACC.3,$-9</p><p>  TIMEMIN2: LCALL DL02S</p><p>  LCALL KEY</p><p>  JNB

100、ACC.3,$+19 ;等待鍵釋放</p><p>  INC 31H</p><p>  MOV A,31H</p><p>  CJNE A,#3CH,$+6</p><p>  MOV 31H,#00H</p><p>  SETB 03H</p

101、><p>  SETB 04H</p><p>  SJMP TIMEMIN1</p><p>  CLR 03H</p><p>  CLR 04H</p><p>  INC 31H</p><p>  MOV A,31H</p>

102、;<p>  CJNE A,#3CH,$+6</p><p>  MOV 31H,#00H</p><p>  SJMP TIMEMIN2</p><p>  TIMEOUT: CLR 03H</p><p>  CLR 04H</p><p>  CLR

103、 ET1</p><p>  CLR TR1</p><p>  MOV R4,#14H</p><p>  SETB ET0</p><p>  SETB TR0</p><p>  LCALL DISPLAY</p><p>  LCALL

104、 KEY</p><p>  JNB ACC.2,$-6 ;等待鍵釋放</p><p><b>  RET</b></p><p>  ;;;;;;;;;;;;;;;;;;;T1中斷程序;;;;;;;;;;;;;;</p><p>  INTT1: PUSH ACC</p>

105、;<p>  PUSH PSW</p><p>  MOV TL1,#00H</p><p>  MOV TH1,#4CH</p><p>  DJNZ R2,INTT1OUT</p><p>  MOV R2,#06H</p><p>  JNB 01H

106、,$+7</p><p>  CPL 02H</p><p>  SJMP INTT1OUT</p><p>  JNB 03H,$+7</p><p>  CPL 04H</p><p>  SJMP INTT1OUT</p><p>  JNB

107、 05H,$+5</p><p>  CPL 06H</p><p>  INTT1OUT: POP PSW</p><p>  POP ACC</p><p><b>  RETI</b></p><p>  ;;;;;;;;;;;;;;;;;;;定時顯示與

108、設定;;;;;;;;;;</p><p>  SETTIME: SETB 08H</p><p>  LCALL DISPLAY</p><p>  LCALL KEY</p><p>  JNB ACC.1,$-6 ;等待鍵釋放</p><p>  MOV 40

109、H,#0FH ;顯示時長</p><p>  LCALL DL02S</p><p>  LCALL KEY</p><p>  JNB ACC.2,TIME1SET</p><p>  JNB ACC.1,DISPLAYTIME2</p><p>  DJNZ

110、 40H,$-12</p><p>  CLR 08H</p><p><b>  RET</b></p><p>  DISPLAYTIME2: CLR 08H</p><p>  SETB 09H</p><p>  LCALL DISPLAY</p

111、><p>  LCALL KEY</p><p>  JNB ACC.1,$-6 ;等待鍵釋放</p><p>  MOV 40H,#0FH ;顯示時長</p><p>  LCALL DL02S</p><p>  LCALL KEY</p&g

112、t;<p>  JNB ACC.2,TIME2SET1</p><p>  JNB ACC.1,DISPLAYTIME3</p><p>  DJNZ 40H,$-12</p><p>  CLR 09H</p><p><b>  RET</b></p>

113、<p>  TIME2SET1: LJMP TIME2SET</p><p>  DISPLAYTIME3: CLR 09H</p><p>  SETB 0AH</p><p>  LCALL DISPLAY</p><p>  LCALL KEY</p><p> 

114、 JNB ACC.1,$-6 ;等待鍵釋放</p><p>  MOV 40H,#0FH ;顯示時長</p><p>  LCALL DL02S</p><p>  LCALL KEY</p><p>  JNB ACC.1,$+9</p><p&

115、gt;  JNB ACC.2,TIME3SET1</p><p>  DJNZ 40H,$-12</p><p>  CLR 0AH</p><p>  LCALL DISPLAY</p><p>  LCALL KEY</p><p>  JNB ACC.1,$-6

116、 ;等待鍵釋放</p><p><b>  RET</b></p><p>  TIME3SET1: LJMP TIME3SET</p><p>  TIME1SET: SETB 05H;5、6位閃爍標志位置位</p><p>  SETB 06H</p>

117、<p>  SETB ET1</p><p>  SETB TR1</p><p>  MOV R2,#06H</p><p>  LCALL DISPLAY</p><p>  LCALL KEY</p><p>  JNB ACC.2,$-6

118、 ;等待鍵釋放</p><p>  TIME1HOUR: LCALL DISPLAY</p><p>  LCALL KEY</p><p>  JNB ACC.2,TIME1MIN ;等待鍵按下</p><p>  JB ACC.3,$-9</p><p>  TIME1H

119、OUR1: LCALL DL02S</p><p>  LCALL KEY</p><p>  JNB ACC.3,$+19 ;等待鍵釋放</p><p>  INC 38H</p><p>  MOV A,38H</p><p>  CJNE A,#18

120、H,$+6</p><p>  MOV 38H,#00H</p><p>  SETB 05H</p><p>  SETB 06H</p><p>  SJMP TIME1HOUR</p><p>  CLR 05H</p><p>  CLR

121、 06H</p><p>  INC 38H</p><p>  MOV A,38H</p><p>  CJNE A,#18H,$+6</p><p>  MOV 38H,#00H</p><p>  SJMP TIME1HOUR1</p><p>

122、  TIME1MIN: CLR 05H</p><p>  CLR 06H</p><p>  SETB 03H ;3、4位閃爍標志位置位</p><p>  SETB 04H</p><p>  LCALL DISPLAY</p><p>  LCA

123、LL KEY</p><p>  JNB ACC.2,$-6 ;等待鍵釋放</p><p>  TIME1MIN1: LCALL DISPLAY</p><p>  LCALL KEY</p><p>  JNB ACC.2,TIME1SIGN ;等待鍵按下</p&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論