基于單片機的電子臺歷設(shè)計_第1頁
基于單片機的電子臺歷設(shè)計_第2頁
基于單片機的電子臺歷設(shè)計_第3頁
基于單片機的電子臺歷設(shè)計_第4頁
基于單片機的電子臺歷設(shè)計_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目目 錄錄一、引言一、引言.2 2(一)本課題的背景.2(二) 本設(shè)計的目的和意義.2(三)本設(shè)計的要求.3(四)方案選擇與實驗基本原理.3二二. .系統(tǒng)的硬件設(shè)計與實現(xiàn)系統(tǒng)的硬件設(shè)計與實現(xiàn).6 6(一) 、 電路設(shè)計框圖.6(二) 、系統(tǒng)硬件概述.6(三) 、主要單元電路的設(shè)計.6三、系統(tǒng)的軟件設(shè)計三、系統(tǒng)的軟件設(shè)計.1111(一)程序流程框圖.11(二)子程序的設(shè)計.14四、結(jié)論及展望四、結(jié)論及展望.1919五、致謝詞五、致謝詞.1919(一)系統(tǒng)電路圖.20(二)系統(tǒng)程序清單.21六、參考文獻六、參考文獻.6363一、引言一、引言(一)本課題的背景作為中國一種傳統(tǒng)的東西,掛歷在人們心中一

2、直有著特殊的含義。因為掛歷除了有查閱日期、方便記事等功能外,還是一種頗有文化品位的裝飾物。而對于一些公司、企業(yè),在掛歷上印刷一些自己的產(chǎn)品、服務(wù)內(nèi)容、聯(lián)系電話等,無疑也是一種宣傳,也正是因為如此,掛歷長期以來一直受到人們的青睞。什么銅版紙、塑膜掛歷、典雅的宣紙、絹絲、油畫布掛歷和富麗堂皇的金箔畫、鐳射畫掛歷等層出不窮。而今,隨著時代發(fā)展,掛歷大有美人遲暮之感。據(jù)調(diào)查發(fā)現(xiàn) 90%的家庭表示今年將不會去買掛歷;其中 50%的市民家庭的掛歷是單位發(fā)或他人送;但這 50%的市民表示,如果單位不發(fā)、他人不送,自己不會主動去買。那么是什么讓我們的傳統(tǒng)如此疲軟呢?眾所周知,傳統(tǒng)掛歷最大的功能是查看日期,裝飾

3、其次,作為禮品則是最后。近些年隨著生活水平的提高,人們獲知日期的途徑已越來越多。據(jù)中國社會調(diào)查事務(wù)所(ssic)在北京、上海等地對 265 位居民進行的計算機輔助電話調(diào)查顯示(此項調(diào)查為多選題):有 68%的被訪者看日歷,有 62%的被訪者看臺歷(其中有 21%的被訪者使用的是電子臺歷);有 58%的被訪者看呼機;有 27%的被訪者看手機;有 20%的被訪者看手表;有 14%的被訪者看街上的顯示牌;有 33%的被訪者看電視;有 60%的被訪者看報紙;有 16%的被訪者聽廣播;有 42%的被訪者上網(wǎng);有 12%的被訪者向別人打聽。由此表明,掛歷實用功能的弱化直接導(dǎo)致了掛歷市場的“疲軟” 。 那么

4、,曾經(jīng)被認同的裝飾功能呢?回答也是否定的。很多人已經(jīng)明確表示,明年不掛掛歷。因為消費者認為花很大力氣裝修的房子,有誰愿意在墻上打個眼兒掛掛歷呢?影響美觀不說,還很俗氣。至于禮品功能,大多數(shù)消費者都認為現(xiàn)在用掛歷當(dāng)禮品有點不夠檔次。隨著電子科技的不斷發(fā)展,傳統(tǒng)的掛歷已被一些高檔的電子臺歷所取代,與傳統(tǒng)的掛歷相比,電子臺歷融合了掛歷和時鐘的優(yōu)點,能晝夜清晰顯示,集年、月、日、時、分、秒、日期、農(nóng)歷、氣溫于一體,外觀新穎,造型別具一格。除此之外由于掛歷制作成本相對較高,掛歷的銷售價格也大多在530元之間,而一個電子臺歷的價格也在這之間,但是掛歷只能用一年,而電子臺歷則不一樣,由于它可以自動識別閏年、

5、公歷、農(nóng)歷、大小月份、農(nóng)歷,星期能自動對應(yīng)公歷無須調(diào)整。對若干年前后的日期都可以查詢,但考慮到其壽命原因,至少也可用 58 年。在價格相差不大的情況下,電子臺歷的性價比顯然要高的多,就其閱讀功能而言,電子臺歷閱讀起來更加方便,同時他還有鬧鈴和顯示溫度的功能,這比傳統(tǒng)的掛歷要強大的多。其實現(xiàn)的方法也很簡單,用一個單片機和 lcd 液晶顯示器就可以實現(xiàn),由此可見,電子臺歷的市場經(jīng)濟開發(fā)價值要比掛歷要高的多,電子臺歷取代傳統(tǒng)的掛歷已成為不可抵擋的趨勢。因此開發(fā)一個電子臺歷就必須要了解單片機和 lcd 夜晶顯示器的原理和功能等,下面一節(jié)我們將簡單介紹一下單片機和液晶顯示器。(二) 本設(shè)計的目的和意義1

6、、在學(xué)習(xí)了數(shù)字電子技術(shù)和單片機原理及接口技術(shù)課程后,為了加深對理論知識的理解,學(xué)習(xí)理論知識在實際中的運用,培養(yǎng)動手能力和解決實際問題的經(jīng)驗讓學(xué)生接觸專用時鐘芯片 ds1302,并會用 ds1302 芯片開發(fā)時鐘模塊,應(yīng)用到其他系統(tǒng)中去。熟悉 wave 軟件調(diào)試程序和仿真.2、通過實驗提高對單片機的認識;3、通過實驗提高焊接、布局、電路檢查能力;4、通過實驗提高軟件調(diào)試能力;5、進一步熟悉和掌握單片機的結(jié)構(gòu)及工作原理。6、通過課程設(shè)計,掌握以單片機核心的電路設(shè)計的基本方法和技術(shù),了解表關(guān)電路參數(shù)的計算方法。7、通過實際程序設(shè)計和調(diào)試,逐步掌握模塊化程序設(shè)計方法和調(diào)試技術(shù)。8、 通過完成一個包括電

7、路設(shè)計和程序開發(fā)的完整過程,使學(xué)生了解開發(fā)一單片機應(yīng)用系統(tǒng)的全過程,為今后從事相應(yīng)打下基礎(chǔ)。(三)本設(shè)計的要求1、基本要求(1)具有年、月、日、星期、時、分、秒等功能;(2)時間與陰、陽歷能夠自動關(guān)聯(lián);(3)有溫度計功能; (4)具備年、月、日、星期、時、分、秒校準功能;2、創(chuàng)新要求(1)具有上、下課響鈴功能; (2)具有防御報警功能;(四)方案選擇與實驗基本原理1、方案選擇(1)單片機芯片的選擇方案和論證:方案一: 采用 89c51 芯片作為硬件核心,采用 flash rom,內(nèi)部具有 4kb rom 存儲空間,能于 3v 的超低壓工作,而且與 mcs-51 系列單片機完全兼容,但是運用于電

8、路設(shè)計中時由于不具備 isp 在線編程技術(shù), 當(dāng)在對電路進行調(diào)試時,由于程序的錯誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r,對芯片的多次拔插會對芯片造成一定的損壞。方案二:采用 at89s52,片內(nèi) rom 全都采用 flash rom;能以 3v 的超底壓工作;同時也與 mcs-51 系列單片機完全該芯片內(nèi)部存儲器為 8kb rom 存儲空間,同樣具有 89c51 的功能,且具有在線編程可擦除技術(shù),當(dāng)在對電路進行調(diào)試時,由于程序的錯誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r,不需要對芯片多次拔插,所以不會對芯片造成損壞。所以選擇采用 at89s52 作為主控制系統(tǒng).(2) 顯示模塊選擇方案和論證:方

9、案一:采用 led 液晶顯示屏,液晶顯示屏的顯示功能強大,可顯示大量文字,圖形,顯示多樣,清晰可見,但是價格昂貴,需要的接口線多,所以在此設(shè)計中不采用led 液晶顯示屏.方案二:采用點陣式數(shù)碼管顯示,點陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費,且價格也相對較高,所以也不用此種作為顯示.方案三:采用 led 數(shù)碼管動態(tài)掃描,led 數(shù)碼管價格適中,對于顯示數(shù)字最合適,而且采用動態(tài)掃描法與單片機連接時,占用的單片機口線少。所以采用了 led 數(shù)碼管作為顯示。(3)時鐘芯片的選擇方案和論證:方案一:直接采用單片機定時計數(shù)器提供秒信號,使用程序?qū)崿F(xiàn)年、月

10、、日、星期、時、分、秒計數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實現(xiàn)的時間誤差較大。所以不采用此方案。方案二:采用 ds1302 時鐘芯片實現(xiàn)時鐘,ds1302 芯片是一種高性能的時鐘芯片,可自動對秒、分、時、日、周、月、年以及閏年補償?shù)哪赀M行計數(shù),而且精度高,位的 ram 做為數(shù)據(jù)暫存區(qū),工作電壓 2.5v5.5v 范圍內(nèi),2.5v 時耗電小于300na.(4)溫度傳感器的選擇方案與論證:方案一:使用熱敏電阻作為傳感器,用熱敏電阻與一個相應(yīng)阻值電阻相串聯(lián)分壓,利用熱敏電阻阻值隨溫度變化而變化的特性,采集這兩個電阻變化的分壓值,并進行 a/d 轉(zhuǎn)換。 。此設(shè)計方案需用 a/d 轉(zhuǎn)換

11、電路,增加硬件成本而且熱敏電阻的感溫特性曲線并不是嚴格線性的,會產(chǎn)生較大的測量誤差。方案二:采用數(shù)字式溫度傳感器 ds18b20,此類傳感器為數(shù)字式傳感器而且僅需要一條數(shù)據(jù)線進行數(shù)據(jù)傳輸,易于與單片機連接,可以去除 a/d 模塊,降低硬件成本,簡化系統(tǒng)電路。另外,數(shù)字式溫度傳感器還具有測量精度高、測量范圍廣等優(yōu)點。(5)電路設(shè)計最終方案決定綜上各方案所述,對此次作品的方案選定: 采用 at89s52 作為主控制系統(tǒng); ds1302 提供時鐘;數(shù)字式溫度傳感器;led 數(shù)碼管動態(tài)掃描作為顯示。2、實驗基本原理按照系統(tǒng)設(shè)計功能的要求,初步確定設(shè)計系統(tǒng)由主控模塊、時鐘模塊、顯示模塊、鍵盤接口模塊、溫

12、度采集模塊共 5 個模塊組成,電路系統(tǒng)構(gòu)成框圖如圖 1 所示。主芯片 at89s52,片內(nèi) rom 全都采用 flash rom;能以 3v 的超底壓工作;同時也與 mcs-51 系列單片機完全該芯片內(nèi)部存儲器為 8kb rom 存儲空間,具有在線編程可擦除技術(shù),當(dāng)在對電路進行調(diào)試時,由于程序的錯誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r,不需要對芯片多次拔插,所以不會對芯片造成損壞。時鐘芯片使用美國 dallas 公司推出的一種高性能、低功耗、帶ram 的實時時鐘 dsl302。采用 dsl 302 作為主要計時芯片,可以做到計時準確。更重要的是,dsl302 可以在很小電流的后備電源(2555

13、v 電源,在25v 時耗電小于 300 na)下繼續(xù)計時,并可編程選擇多種充電電流來對后備電源進行慢速充電,可以保證后備電源基本不耗電。 顯示模塊采用 led 數(shù)碼管動態(tài)掃描,鍵輸入采用查詢法實現(xiàn)調(diào)整功能,與單片機連接時,占用的單片機口線少。數(shù)字式溫度傳感器 ds18b20,此類傳感器為數(shù)字式傳感器而且僅需要一條數(shù)據(jù)線進行數(shù)據(jù)傳輸,易于與單片機連接,可以去除 a/d 模塊,降低硬件成本,簡化系統(tǒng)電路。另外,數(shù)字式溫度傳感器還具有測量精度高、測量范圍廣等優(yōu)點。二二.系統(tǒng)的硬件設(shè)計與實現(xiàn)系統(tǒng)的硬件設(shè)計與實現(xiàn)(一) 、 電路設(shè)計框圖圖 1 電子萬年歷電路系統(tǒng)構(gòu)成框圖(二) 、系統(tǒng)硬件概述本電路是由

14、at89s52 單片機為控制核心,具有在線編程功能,低功耗,能在 3v 超低壓工作;時鐘電路由 ds1302 提供,它是一種高性能、低功耗、帶ram 的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為 2.5v5.5v。采用三線接口與 cpu 進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或 ram 數(shù)據(jù)。ds1302 內(nèi)部有一個 31*8 的用于臨時性存放數(shù)據(jù)的 ram 寄存器??僧a(chǎn)生年、月、日、周日、時、分、秒,具有使用壽命長,精度高和低功耗等特點,同時具有掉電自動保存功能;溫度的采集由 ds18b20 構(gòu)成;顯示部份由個數(shù)碼管,74ls1

15、38、74ls47譯碼器構(gòu)成。使用動態(tài)掃描顯示方式對數(shù)字的顯示。(三) 、主要單元電路的設(shè)計1、單片機主控制模塊的設(shè)計 at89s52 單片機為 40 引腳雙列直插芯片,有四個 i/o 口 p0,p1,p2,p3, mcs-51 單片機共有 4 個 8 位的 i/o 口(p0、p1、p2、p3) ,每一條 i/o 線都能獨立地作輸出或輸入。單片機的最小系統(tǒng)如下圖所示,18 引腳和 19 引腳接時鐘電路,xtal1 接外部at89s52s52主控制模 塊ds1302 時鐘模塊led 數(shù)碼管動態(tài)掃描顯示模塊溫度采集模塊鍵盤模塊晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,xtal2 接外

16、部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出.第 9 引腳為復(fù)位輸入端,接上電容,電阻及開關(guān)后夠上電復(fù)位電路,20 引腳為接地端,40 引腳為電源端. 如圖 2 所示圖 2 主控制系統(tǒng)2、 時鐘電路 dsl302圖 3 示出 ds1302 的引腳排列,其中 vcc1 為后備電源,vcc2 為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。ds1302 由 vcc1 或 vcc2 兩者中的較大者供電。當(dāng) vcc2 大于 vcc1+0.2v 時,vcc2 給 ds1302 供電。當(dāng) vcc2小于 vcc1 時,ds1302 由 vcc1 供電。x1 和 x2 是振蕩源,外接 3

17、2.khz 晶振。rst 是復(fù)位/片選線,通過把 rst 輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。rst 輸入有兩種功能:首先,rst 接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,rst 提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng) rst 為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對 ds1302 進行操作。如果在傳送過程中rsts 置為低電平,則會終止此次數(shù)據(jù)傳送,i/o 引腳變?yōu)楦咦钁B(tài)。上電動行時,在 vcc 大于等于 2.5v 之前,rst 必須保持低電平。中有在 sclk 為低電平時,才能將 rst 置為高電平,i/o 為串行數(shù)據(jù)輸入端(雙向) 。sclk 始終是輸入端。 圖 3

18、ds1302 的引腳圖3、溫度采集模塊設(shè)計如圖 4 所示。采用數(shù)字式溫度傳感器 ds18b20,它是數(shù)字式溫度傳感器,具有測量精度高,電路連接簡單特點,此類傳感器僅需要一條數(shù)據(jù)線進行數(shù)據(jù)傳輸,使用0.7 與 ds18b20 的 i/o 口連接加一個上拉電阻,vcc 接電源,vss 接地。 圖 4 ds18b20 溫度采集4、電路原理及說明(1) 時鐘芯片 ds1302 的工作原理: ds1302 在每次進行讀、寫程序前都必須初始化,先把 sclk 端置 “0” ,接著把 rst 端置“1” ,最后才給予 sclk 脈沖;讀/寫時序如下圖 4 所示。圖 5為 ds1302 的控制字,此控制字的位

19、 7 必須置 1,若為 0 則不能把對 ds1302 進行讀寫數(shù)據(jù)。對于位 6,若對程序進行讀/寫時 ram=1,對時間進行讀/寫時,ck=0。位 1 至位 5 指操作單元的地址。位 0 是讀/寫操作位,進行讀操作時,該位為 1;該位為 0 則表示進行的是寫操作??刂谱止?jié)總是從最低位開始輸入/輸出的。表 6 為 ds1302 的日歷、時間寄存器內(nèi)容:“ch”是時鐘暫停標志位,當(dāng)該位為 1 時,時鐘振蕩器停止,ds1302 處于低功耗狀態(tài);當(dāng)該位為 0 時,時鐘開始運行。 “wp”是寫保護位,在任何的對時鐘和 ram 的寫操作之前,wp 必須為 0。當(dāng)“wp”為 1 時,寫保護位防止對任一寄存器

20、的寫操作。(2) ds1302 的控制字節(jié)ds1302 的控制字如表-1 所示??刂谱止?jié)的高有效位(位 7)必須是邏輯1,如果它為 0,則不能把數(shù)據(jù)寫入 ds1302 中,位 6 如果 0,則表示存取日歷時鐘數(shù)據(jù),為 1 表示存取 ram 數(shù)據(jù);位 5 至位 1 指示操作單元的地址;最低有效位(位 0)如為 0 表示要進行寫操作,為 1 表示進行讀操作,控制字節(jié)總是從最低位開始輸出 (3) 數(shù)據(jù)輸入輸出(i/o)在控制指令字輸入后的下一個 sclk 時鐘的上升沿時,數(shù)據(jù)被寫入ds1302,數(shù)據(jù)輸入從低位即位 0 開始。同樣,在緊跟 8 位的控制指令字后的下一個 sclk 脈沖的下降沿讀出 ds

21、1302 的數(shù)據(jù),讀出數(shù)據(jù)時從低位 0 位到高位7。如下圖 5 所示圖 5 ds1302 讀/寫時序圖(4) ds1302 的寄存器ds1302 有 12 個寄存器,其中有 7 個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為 bcd 碼形式,其日歷、時間寄存器及其控制字見表-2。表-2 ds1302 的日歷、時間寄存器此外,ds1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與 ram 相關(guān)的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。 ds1302 與 ram 相關(guān)的寄存器分為兩類:一類是單個 ram單元,共 31 個,每個單元組態(tài)為一個 8 位的字節(jié)

22、,其命令控制字為c0hfdh,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的 ram 寄存器,此方式下可一次性讀寫所有的 ram 的 31 個字節(jié),命令控制字為 feh(寫)、ffh(讀)。 5、顯示模塊的設(shè)計如圖 6 所示,采用動態(tài)掃描顯示,由個數(shù)碼管,3-8 譯碼器 74ls138接 1k 限流電阻,再接 8550 三極管接到共陽數(shù)碼管的 com 端作為選通位碼,每位選擇相應(yīng)的列。74ls47 接240 限流電阻,再接共行的 led 數(shù)碼管的斷碼。 圖 6 led 動態(tài)掃描顯示三、系統(tǒng)的軟件設(shè)計三、系統(tǒng)的軟件設(shè)計(一)程序流程框圖開始初始化讀、寫日期、時間和溫度分離日期時間溫度顯示值

23、顯示子程序農(nóng)歷自動更新子程序日期、時間修改子程序閏月子程返回定時鬧表-2 ds1302 的日歷、時間寄存器鈴子程序圖 7 主程序流程圖圖8 計算陽歷程序流程圖圖 9 時間調(diào)整程序流程圖圖 10 陰歷程序流程圖(二)子程序的設(shè)計1、 ds18b20 溫度子程序 config12 equ 7fh temph equ 21h templ equ 20h reg2 equ 22h reg3 equ 23h reg4 equ 24h dat equ p0.7toutou: lcall chushi lcall rdtemp mov a,templ anl a,#11110000b mov templ,a

24、 mov a,temph anl a,#00000111b orl a,templ swap a mov 25h,a mov a,25h mov b,#64h div ab mov a,b mov b,#0ah div ab swap a orl a,b mov 10h,a retchushi: lcall reset mov a,#0cch lcall write111 mov a,#4eh lcall write111 mov a,#config12 lcall write111 retrdtemp: lcall reset mov a,#0cch lcall write111 mov a

25、,#44h lcall write111 lcall dl1ms lcall reset mov a,#0cch lcall write111 mov a,#0beh lcall write111 lcall erad111 mov templ,a lcall erad111 mov temph,a retreset:la: setb dat mov 52h,#200lb: clr dat djnz 52h,lb setb dat mov 52h,#30lc: djnz 52h,lc clr c orl c,dat jc lb mov 58h,#80ld: orl c,dat jc lp dj

26、nz 58h,ld sjmp lalp: mov 52h,#250lf: djnz 52h,lf retwrite111: mov 53h,#8w51ha: setb dat mov 54h,#8 rrc a clr datw52ha: djnz 54h,w52ha mov dat,c mov 54h,#30w53ha: djnz 54h,w53ha djnz 53h,w51ha setb dat reterad111: clr ea mov 58h,#8rd1a: clr dat mov 54h,#6 nop setb datrd2a: djnz 54h,rd2a mov c,dat rrc

27、 a mov 55h,#30rd3a: djnz 55h,rd3a djnz 58h,rd1a setb dat ret2、讀、寫 ds1302 子程序;寫 1302 程序 write: clr sclk nop setb rst nop mov a,32h mov r4,#8write1: rrc a ;送地址給 1302 nop nop clr sclk nop nop nop mov io,c nop nop nop setb sclk nop nop djnz r4,write1 clr sclk nop mov a,31h mov r4,#8write2: rrc a nop ;送數(shù)

28、據(jù)給 1302 clr sclk nop nop mov io,c nop nop nop setb sclk nop nop djnz r4,write2 clr rst ret;讀 1302 程序read: clr sclk nop nop setb rst nop mov a,32h mov r4,#8read1: rrc a ;送地址給 1302 nop mov io,c nop nop nop setb sclk nop nop nop clr sclk nop nop djnz r4,read1 mov r4,#8read2: clr sclk nop ;從 1302 中讀出數(shù)據(jù)

29、nop nop mov c,io nop nop nop nop nop rrc a nop nop nop nop setb sclk nop djnz r4,read2 mov 31h,a clr rst ret四、結(jié)論及展望四、結(jié)論及展望本設(shè)計基于 51 系列的 at89s52 制作了多功能電子臺歷,完成實時時鐘、電子臺歷、室內(nèi)溫度的顯示,具有閏年補償,調(diào)整時間日期,設(shè)置鬧鐘,根據(jù)設(shè)定的年、月、日自動匹配星期的擴展功能。本系統(tǒng)特別實用于日常生活的時鐘溫度控制的應(yīng)用,以此為基礎(chǔ),可以開發(fā)出多種前景極其樂觀的各類應(yīng)用,如鈴聲定時系統(tǒng),防盜報警系統(tǒng),溫度控制系統(tǒng)等。在下一步的工作中,可以考慮使

30、用 51 功能的模塊并開發(fā)嵌入式系統(tǒng)溫度時間的應(yīng)用。雖較為完善的完成了既定功能,但仍存在一定的缺陷。沒有添加蜂鳴器,鬧鐘及輸入錯誤時只能顯示報警,沒有聲音提示。未能添加電池功能,在主電源關(guān)閉的情況下,不能保持時鐘的連續(xù)運行。五、致謝詞五、致謝詞“千里之行,始于足下。 ”終于完成了畢業(yè)設(shè)計的全部工作,有一種如釋重負的感覺。前后經(jīng)歷了四個月時間,但對于踏踏實實搞知識創(chuàng)新的人來說,從搜集材料、投入研討到起草排版、打印輸出,這是一個漫長的過程。其間有過百思不解時的苦悶,也有過豁然開朗時的喜悅,不曾身處其境的人,一般不宜感同身受。我的導(dǎo)師汪光宅說過:“科研工作是一項艱苦、寂寞并且需要全心全意投入的工作,

31、一旦選擇了這個責(zé)任,我們就要承擔(dān)得起他人所不能承受的壓力。正因為這樣,我們才要努力做出成果!”事先有了心理準備,做起事來才不至于手足無措。盡管如此,由于畢業(yè)設(shè)計涉及內(nèi)容較多,范圍較寬,方方面面都要照顧到,還是不可避免地遇到許多問題。學(xué)校領(lǐng)導(dǎo)未雨綢繆,提前讓我們熟悉了解了畢業(yè)設(shè)計的基礎(chǔ)知識,同時下發(fā)畢業(yè)設(shè)計(論文)指導(dǎo)手冊予以輔導(dǎo),這給了我們極大的鼓舞和幫助。導(dǎo)師每周三次的面授和上機指導(dǎo),給論文的進展帶來縷縷曙光和推動力。更難忘實驗室老師劉強和寢室同學(xué)對我的這次畢業(yè)設(shè)計的幫助與關(guān)心,使得我的工作和學(xué)習(xí)得以順利進行。在此謹以一顆感激之心向這些給予我極大幫助的人致以衷心的謝意。附錄:附錄:(一)系統(tǒng)

32、電路圖(二)系統(tǒng)程序清單config12 equ 7fh temph equ 21h templ equ 20h reg2 equ 22h reg3 equ 23h reg4 equ 24h dat equ p0.7 sclk equ p3.2 io equ p3.3 rst equ p3.4 year data 66h month data 65h week data 64h day data 63h hour data 62h mintue data 61h second data 60h org 0000h ljmp start org 001bh ljmp intt1start: ;初

33、值 lcall zj setb ea mov scon,#00h ; 串行輸出,方式 0 mov tmod,#10h ;計數(shù)器1,方式 1 mov tl1,#00h mov th1,#00h mov 32h,#8eh mov 31h,#00h ;允許寫1302 lcall write mov 32h,#90h mov 31h,#0a6h ;1302 充電,充電電流 1.1ma lcall write ;主程序main1: mov 32h,#8dh ;讀出年 lcall read mov year,31h mov 32h,#8bh ;讀出星期 lcall read mov week,31h mo

34、v 32h,#89h ;讀出月 lcall read mov month,31h mov 32h,#87h ;讀出日 lcall read mov day,31h mov 32h,#85h ;讀出小時 lcall read mov hour,31h mov 32h,#83h ;讀出分鐘 lcall read mov mintue,31h mov 32h,#81h ;讀出秒 lcall read mov second,31h ;分離緩存 mov r0,year ;年分離,送顯示緩存 lcall divide mov 7bh,r1 mov 4bh,r1 mov 7ch,r2 mov 4ch,r2

35、mov 78h,week mov 48h,week mov r0,month ;月分離,送顯示緩存 lcall divide mov 79h,r1 mov 49h,r1 mov 7ah,r2 mov 4ah,r2 mov r0,day ;日分離,送顯示緩存 lcall divide mov 76h,r1 mov 46h,r1 mov 77h,r2 mov 47h,r2 mov r0,hour ;小時分離,送顯示緩存 lcall divide mov 74h,r1 mov 44h,r1 mov 75h,r2 mov 45h,r2 mov r0,mintue ;分鐘分離,送顯示緩存 lcall d

36、ivide mov 72h,r1 mov 42h,r1 mov 73h,r2 mov 43h,r2 mov r0,second ;秒分離,送顯示緩存 lcall divide mov 70h,r1 mov 40h,r1 mov 71h,r2 mov 41h,r2 clr ea lcall toutou setb ea lcall display lcall gengxian ;更新農(nóng)歷程序 jnb p0.1,setg111 jnb f0,sss setb p0.4 ;非閏月,則 p0.4 清零,指示燈亮 ljmp main1setg111: ljmp setgsss: clr p0.4 ;閏月

37、,則 p0.4置位,指示燈不亮 ljmp main1; 溫度toutou: lcall chushi lcall rdtemp mov a,templ anl a,#11110000b mov templ,a mov a,temph anl a,#00000111b orl a,templ swap a mov 25h,a mov a,25h mov b,#64h div ab mov a,b mov b,#0ah div ab swap a orl a,b mov 10h,a retchushi: lcall reset mov a,#0cch lcall write111 mov a,#4

38、eh lcall write111 mov a,#config12 lcall write111 retrdtemp: lcall reset mov a,#0cch lcall write111 mov a,#44h lcall write111 lcall dl1ms lcall reset mov a,#0cch lcall write111 mov a,#0beh lcall write111 lcall erad111 mov templ,a lcall erad111 mov temph,a retreset:la: setb dat mov 52h,#200lb: clr dat

39、 djnz 52h,lb setb dat mov 52h,#30lc: djnz 52h,lc clr c orl c,dat jc lb mov 58h,#80ld: orl c,dat jc lp djnz 58h,ld sjmp lalp: mov 52h,#250lf: djnz 52h,lf retwrite111: mov 53h,#8w51ha: setb dat mov 54h,#8 rrc a clr datw52ha: djnz 54h,w52ha mov dat,c mov 54h,#30w53ha: djnz 54h,w53ha djnz 53h,w51ha setb

40、 dat reterad111: clr ea mov 58h,#8rd1a: clr dat mov 54h,#6 nop setb datrd2a: djnz 54h,rd2a mov c,dat rrc a mov 55h,#30rd3a: djnz 55h,rd3a djnz 58h,rd1a setb dat ret;公歷設(shè)置程序setg : setb tr1 setb et1 mov 32h,#8eh mov 31h,#00h ;允許寫1302 lcall write mov 32h,#80h mov 31h,#80h ;1302 停止振蕩 lcall writegwait: ;

41、lcall display jnb p0.1,gwaitsetg1: lcall display jnb p0.1,setg2 jnb p0.2,gaddyear jnb p0.3,jianyear ajmp setg1gaddyear: mov r7,66h ;年加一 lcall add1 mov 66h,a cjne a,#51h,gaddyear1 mov 66h,#00h ajmp gaddyear1jianyear: mov r7,66h ;年減一 lcall jian1 mov 66h,a cjne a,#00h,gaddyear1 mov 66h,#51hgaddyear1: m

42、ov 32h,#8ch ;年值送人1302 mov 31h,66h lcall write mov r0,66h lcall divide ;年分離送顯示緩存 mov 4bh,r1 mov 7bh,r1 mov 4ch,r2 mov 7ch,r2waitt1: ; lcall display jnb p0.2,waitt1 jnb p0.3,waitt1 ajmp setg1setg2: setb 0ah ;調(diào)月時閃標志gwait2: lcall display jnb p0.1,gwait2setg3: lcall display jnb p0.1,setg4 jnb p0.2,gaddmo

43、nth jnb p0.3,jianmonth ajmp setg3gaddmonth: mov r7,65h ;月加一 lcall add1 mov 65h,a cjne a,#13h,gaddmonth1 mov 65h,#01h ajmp gaddmonth1jianmonth: mov r7,65h ;月減一 lcall jian1 mov 65h,a cjne a,#00h,gaddmonth1 mov 65h,#12hgaddmonth1: mov 32h,#88h ;月值送人1302 mov 31h,65h lcall write mov r0,65h lcall divide ;

44、月分離,送顯示緩存 mov 79h,r1 mov 49h,r1 mov 7ah,r2 mov 4ah,r2waitt2: ; lcall display jnb p0.2,waitt2 jnb p0.3,waitt2 ajmp setg3setg4: setb 0bh ;調(diào)日時閃標志gwait4: lcall display jnb p0.1,gwait4setg5: lcall display jnb p0.1,setg6 jnb p0.2,gaddday jnb p0.3,jianday ajmp setg5gaddday: mov r7,63h ;日加一 lcall add1 mov 6

45、3h,a cjne a,#32h,gaddday1 mov 63h,#01hjianday: mov r7,63h ;日減一 lcall jian1 mov 63h,a cjne a,#00h,gaddday1 mov 63h,#31hgaddday1: mov 32h,#86h ;日值送人 1302 mov 31h,63h lcall write mov r0,63h lcall divide ;日分離,送顯示緩存 mov 76h,r1 mov 46h,r1 mov 77h,r2 mov 47h,r2waitt3: ; lcall display jnb p0.2,waitt3 jnb p0

46、.3,waitt3 ajmp setg5setg6: setb 0ch ;調(diào)星期時閃標志gwait6: lcall display jnb p0.1,gwait6setg7: lcall display jnb p0.1,setg8 jnb p0.2,gaddweek jnb p0.3,jianweek ajmp setg7gaddweek: mov r7,64h ;星期加一 lcall add1 mov 64h,a cjne a,#07h,gaddweek1 mov 64h,#00h ajmp gaddweek1jianweek: mov r7,64h ;星期減一 lcall jian1 m

47、ov 64h,a cjne a,#00h,gaddweek1 mov 64h,#06hgaddweek1: mov 32h,#8ah mov 31h,64h ;星期值送人 1302 lcall write mov r0,64h lcall divide ;星期值分離送顯示緩存 mov 48h,r1 mov 78h,r1waitt4: ; lcall display jnb p0.2,waitt4 jnb p0.3,waitt4 ajmp setg7setg8: setb 0dh ;調(diào)小時時閃標志gwait8: lcall display jnb p0.1,gwait8setg9: lcall

48、display jnb p0.1,setg10 jnb p0.2,gaddhour jnb p0.3,jianhour ajmp setg9gaddhour: mov r7,62h ;小時加一 lcall add1 mov 62h,a cjne a,#24h,gaddhour1 mov 62h,#00h ajmp gaddhour1jianhour: mov r7,62h ;小時減一 lcall jian1 mov 62h,a cjne a,#00h,gaddhour1 mov 62h,#23hgaddhour1: mov 32h,#84h ;小時值送人 1302 mov 31h,62h lc

49、all write mov r0,62h lcall divide ;小時值分離送顯示緩存 mov 74h,r1 mov 44h,r1 mov 75h,r2 mov 45h,r2waitt5: ; lcall display jnb p0.2,waitt5 jnb p0.3,waitt5 ajmp setg9setg10: setb 0eh ;調(diào)分時候閃標志gwait10: lcall display jnb p0.1,gwait10setg11: lcall display jnb p0.1,setgout jnb p0.2,gaddmintue jnb p0.3,jianmintue aj

50、mp setg11gaddmintue: mov r7,61h ;分鐘加一 lcall add1 mov 61h,a cjne a,#60h,gaddmintue1 mov 61h,#00h ajmp gaddmintue1jianmintue: mov r7,61h ;分鐘減一 lcall jian1 mov 61h,a cjne a,#00h,gaddmintue1 mov 61h,#59hgaddmintue1: mov 32h,#82h ;分鐘值送人 1302 mov 31h,61h lcall write mov r0,61h lcall divide ;分鐘值分離送顯示緩存 mov

51、 72h,r1 mov 42h,r1 mov 73h,r2 mov 43h,r2waitt6: lcall display jnb p0.2,waitt6 jnb p0.3,waitt6 ajmp setg11setgout: lcall display jnb p0.1,setgout lcall gengxian mov 32h,#80h mov 31h,#00h ;1302 晶振開始振蕩 lcall write mov 32h,#8eh mov 31h,#80h ;禁止寫入1302 lcall write clr 08h clr 09h clr 0ah clr 0bh clr 0ch c

52、lr 0dh clr 0eh clr 0fh clr et1 ;關(guān)閃中斷 clr tr1 ljmp main1;閃動調(diào)時程序intt1: push acc push pswgflash: cpl 0fh jb 0fh,gflash1 mov 7ch,4ch ;全部顯示 mov 7bh,4bh mov 7ah,4ah mov 79h,49h mov 78h,48h mov 77h,47h mov 76h,46h mov 75h,45h mov 74h,44h mov 73h,43h mov 72h,42h mov 71h,41h mov 70h,40hgflashout: pop psw pop

53、 acc retigflash1: jb 0ah,gflash2 ;調(diào)年閃 mov 7ch,#0fh mov 7bh,#0fh ajmp gflashoutgflash2: jb 0bh,gflash3 ;調(diào)月閃 mov 7ah,#0fh mov 79h,#0fh ajmp gflashoutgflash3: jb 0ch,gflash4 ;調(diào)日閃 mov 77h,#0fh mov 76h,#0fh ajmp gflashoutgflash4: jb 0dh,gflash5 ;調(diào)星期閃 mov 78h,#0fh ajmp gflashoutgflash5: jb 0eh,gflash6 ;調(diào)小

54、時閃 mov 75h,#0fh mov 74h,#0fh ajmp gflashoutgflash6: mov 73h,#0fh ;調(diào)分鐘閃 mov 72h,#0fh ajmp gflashout;加一程序add1: mov a,r7 add a,#1 da a ret;減一程序jian1: mov a,r7 dec a cjne a,#4fh,kk1 mov a,#49hkk1: cjne a,#3fh,kk2 mov a,#39hkk2: cjne a,#2fh,kk3 mov a,#29hkk3: cjne a,#1fh,kk4 mov a,#19hkk4: cjne a,#0fh,kk

55、5 mov a,#09hkk5: ret;分離程序divide: mov a,r0 anl a,#0fh mov r1,a mov a,r0 swap a anl a,#0fh mov r2,a ret;寫 1302 程序write: clr sclk nop setb rst nop mov a,32h mov r4,#8write1: rrc a ;送地址給 1302 nop nop clr sclk nop nop nop mov io,c nop nop nop setb sclk nop nop djnz r4,write1 clr sclk nop mov a,31h mov r4

56、,#8write2: rrc a nop ;送數(shù)據(jù)給 1302 clr sclk nop nop mov io,c nop nop nop setb sclk nop nop djnz r4,write2 clr rst ret;讀 1302 程序read: clr sclk nop nop setb rst nop mov a,32h mov r4,#8read1: rrc a ;送地址給 1302 nop mov io,c nop nop nop setb sclk nop nop nop clr sclk nop nop djnz r4,read1 mov r4,#8read2: clr

57、 sclk nop ;從 1302 中讀出數(shù)據(jù) nop nop mov c,io nop nop nop nop nop rrc a nop nop nop nop setb sclk nop djnz r4,read2 mov 31h,a clr rst ret;bcd 碼轉(zhuǎn)換為 10 進制程序bcd_10: mov a,r0 anl a,#0fh mov r1,a ;高位10, 加低位 mov a,r0 swap a anl a,#0fh mov b,#10 mul ab add a,r1 mov r0,a ret;查一年數(shù)據(jù)程序checkmonth: lcall bcd_10 mov a

58、,r0 mov b,#04 mul ab mov r1,a mov dptr,#tab movc a,a+dptr mov r7,a ;第一字節(jié)送 r7 inc r1 mov a,r1 movc a,a+dptr mov r6,a ;第二字節(jié)送 r6 inc r1 mov a,r1 movc a,a+dptr mov r5,a ;第三字節(jié)送 r6 inc r1 mov a,r1 movc a,a+dptr mov r4,a ;第四字節(jié)送 r4 ret;自動更新農(nóng)歷gengxian: mov r2,#00h mov r3,#00h mov a,month cjne a,#01h,gm2 mov

59、r0,day ;當(dāng)前月為一月 lcall bcd_10 ;當(dāng)前日轉(zhuǎn)換為10 進制,送 r2 mov a,r0 mov r2,a ajmp tiaozheng1gm2: cjne a,#02h,gm3 mov r0,day ;當(dāng)前月為二月 lcall bcd_10 ;當(dāng)前日轉(zhuǎn)換為 10 進制, mov a,r0 ;再加 31,送r2 add a,#31 mov r2,a ajmp tiaozheng1gm3: cjne a,#03h,gm4 mov r0,day ;當(dāng)前月為三月 lcall bcd_10 ;當(dāng)前日轉(zhuǎn)換為 10 進制, mov a,r0 ;再加 59,送r2 add a,#59 m

60、ov r2,a ajmp tiaozheng1gm4: cjne a,#04h,gm5 mov r0,day ;當(dāng)前月為四月 lcall bcd_10 ;當(dāng)前日轉(zhuǎn)換為 10 進制, mov a,r0 ;再加 90,送r2 add a,#90 mov r2,a ajmp tiaozheng1gm5: cjne a,#05h,gm6 mov r0,day ;當(dāng)前月為五月 lcall bcd_10 ;當(dāng)前日轉(zhuǎn)換為 10 進制, mov a,r0 ;再加 120,送 r2 add a,#120 mov r2,a ajmp tiaozheng1gm6: cjne a,#06h,gm7 mov r0,da

溫馨提示

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

最新文檔

評論

0/150

提交評論