基于單片機(jī)的智能電子鐘系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)論文1_第1頁
基于單片機(jī)的智能電子鐘系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)論文1_第2頁
基于單片機(jī)的智能電子鐘系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)論文1_第3頁
基于單片機(jī)的智能電子鐘系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)論文1_第4頁
基于單片機(jī)的智能電子鐘系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)論文1_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于單片機(jī)的智能電子鐘系統(tǒng)設(shè)計(jì)姓 名:李永健、王海、呂軍梅、鞏珍珍 課題組的分工或貢獻(xiàn):每人完成的百分比或者每人負(fù)責(zé)的內(nèi)容課 程 名 稱: mcs-51單片機(jī)應(yīng)用設(shè)計(jì)指 導(dǎo) 教 師:李林2014年12月基于單片機(jī)的智能電子鐘系統(tǒng)設(shè)計(jì)李永健、王海、呂軍梅、鞏珍珍(信息科學(xué)與工程學(xué)院)摘要:電子鐘是一種利用數(shù)字電路來顯示時(shí)間的計(jì)時(shí)裝置,與傳統(tǒng)的機(jī)械鐘相比,它具有走時(shí)準(zhǔn)確、顯 示直觀、無機(jī)械傳動(dòng)裝置等優(yōu)點(diǎn),因而得到廣泛應(yīng)用。 本設(shè)計(jì)通過以單片機(jī)芯片stc89c51為核心,通過軟件編程完成時(shí)鐘及定時(shí)的基本功能,溫度芯片ds18b20完成溫度測量功能。采用了六位數(shù)碼管動(dòng)態(tài)顯示時(shí)、分、秒,兩個(gè)led燈分別

2、指示上下午,同時(shí)還有兩個(gè)led燈每半秒分別閃爍一次。通過4個(gè)外部按鍵可以控制小時(shí)和分鐘的定時(shí)和定鬧以及報(bào)警。此電子鐘具有性能優(yōu)越,操作簡單等優(yōu)點(diǎn)。關(guān)鍵詞:智能電子鐘、stc89c51、led數(shù)碼管、ds18b20目錄1、 項(xiàng)目目的2、 項(xiàng)目要求3、 基本原理4、 設(shè)計(jì)方案 (一)系統(tǒng)整體設(shè)計(jì)思想(二) 電子鐘計(jì)時(shí)(三) 數(shù)碼管顯示(四) 調(diào)時(shí)(五) 定鬧、報(bào)警(六) 溫度采集五、結(jié)論六、參考文獻(xiàn)七、附錄一 附錄二1、 項(xiàng)目目的 1. 掌握單片機(jī)各個(gè)功能模塊(并行i/o口、中斷系統(tǒng)、定時(shí)器/計(jì)數(shù)器)的工作原理、性能和特點(diǎn);2、掌握單片機(jī)外圍電路的設(shè)計(jì)方法和仿真方法;3、掌握單片機(jī)外圍電路的調(diào)試方

3、法;4、掌握單片機(jī)外圍電路設(shè)計(jì)報(bào)告的撰寫方法;5、培養(yǎng)團(tuán)隊(duì)合作精神、項(xiàng)目組織與管理、交流表達(dá)能力;6、培養(yǎng)責(zé)任感和職業(yè)道德。二、項(xiàng)目要求本課程三級(jí)項(xiàng)目要求學(xué)生使用mcs-51系列單片機(jī)設(shè)計(jì)并制作一個(gè)具有時(shí)間顯示、按鍵調(diào)時(shí)、鬧鐘報(bào)警、溫度測量、遙控和自動(dòng)調(diào)時(shí)等功能的軟硬件系統(tǒng),可實(shí)現(xiàn)六項(xiàng)基本功能分別如下:1) 時(shí)間顯示:采用六個(gè)數(shù)碼管顯示當(dāng)前時(shí)間:小時(shí)、分鐘、秒。2) 溫度顯示:采用兩個(gè)數(shù)碼管顯示當(dāng)前環(huán)境溫度。3) 上下午指示:采用兩個(gè)發(fā)光二極管來指示上下午。4) 半秒提示:采用兩個(gè)發(fā)光二極管,每隔半秒閃爍。5) 調(diào)時(shí)功能:采用三個(gè)按鍵(k1-k3)來調(diào)整時(shí)間,步驟如下:a)按下k1鍵,開始調(diào)小

4、時(shí),同時(shí)2個(gè)小時(shí)數(shù)碼管閃爍。b)按下k2鍵,小時(shí)加;按下k3鍵,小時(shí)減。c)小時(shí)調(diào)整好后,再按下k1鍵,開始調(diào)分鐘,同時(shí)分鐘數(shù)碼管閃爍。d)按下k2鍵,分鐘加;按下k3鍵,分鐘減。e)調(diào)整好分鐘后,再按下k1鍵,調(diào)時(shí)結(jié)束。6) 鬧鐘功能:采用三個(gè)按鍵(k2-k4)來調(diào)整鬧鐘,步驟如下:a)按下k4鍵,開始調(diào)小時(shí),同時(shí)2個(gè)小時(shí)數(shù)碼管閃爍。b)按下k2鍵,小時(shí)加;按下k3鍵,小時(shí)減。c)小時(shí)調(diào)整好后,再按下k4鍵,開始調(diào)分鐘,同時(shí)分鐘數(shù)碼管閃爍。d)按下k2鍵,分鐘加;按下k3鍵,分鐘減。e)調(diào)整好分鐘后,再按下k4鍵,定鬧結(jié)束。鬧鐘定時(shí)的時(shí)間到后,蜂鳴器/揚(yáng)聲器發(fā)出提示音;用戶需按k2-k4鍵來

5、取消鬧鐘警告。3、 基本原理 利用軟件編程借助于定時(shí)器/計(jì)數(shù)器0實(shí)現(xiàn)間隔為1s的定時(shí)功能,格式為秒,分,時(shí),在其中斷服務(wù)程序中實(shí)現(xiàn)對小時(shí)、分鐘、秒單元數(shù)值的調(diào)整。主程序通過不斷循環(huán)調(diào)用調(diào)時(shí)子程序,實(shí)現(xiàn)整個(gè)功能。利用嵌套在調(diào)時(shí)子程序中的顯示子程序?qū)崿F(xiàn)上下午指示和半秒閃爍。利用溫度芯片ds18b20來測量溫度。4、 設(shè)計(jì)方案 (一)系統(tǒng)整體設(shè)計(jì)思想 總體設(shè)計(jì)框圖:按鍵(k1k4)ds18b20溫度芯片stc89c52單片機(jī) 電源8片數(shù)碼管顯示led燈指示(上下午、半秒)報(bào)警 通過定時(shí)器/計(jì)數(shù)器0實(shí)現(xiàn)1s的計(jì)時(shí),將它設(shè)計(jì)成內(nèi)部中斷,即每計(jì)滿1s產(chǎn)生中斷信號(hào),主程序轉(zhuǎn)去執(zhí)行定時(shí)器0的中斷服務(wù)程序,按照

6、時(shí)間規(guī)則改變相應(yīng)ram存儲(chǔ)單元的數(shù)值。在主程序里首先不斷檢測是否有按鍵按下,如果沒有,則不斷調(diào)用顯示子程序,否則,根據(jù)按下的是哪個(gè)鍵可以轉(zhuǎn)去執(zhí)行相應(yīng)的程序段,分別實(shí)現(xiàn)小時(shí)和分鐘的加和減以及鬧鐘定時(shí),而每次執(zhí)行結(jié)束都會(huì)調(diào)用顯示子程序,保證數(shù)碼管的穩(wěn)定顯示,同時(shí)也可以實(shí)時(shí)根據(jù)存儲(chǔ)單元數(shù)值的不同顯示。而鬧鐘的倒計(jì)時(shí)則利用定時(shí)器/計(jì)數(shù)器1的計(jì)時(shí)來實(shí)現(xiàn),同樣為1s計(jì)時(shí),只不過是在中斷服務(wù)程序中實(shí)現(xiàn)對存儲(chǔ)單元的按規(guī)則遞減,同樣的即使顯示就可以實(shí)現(xiàn)倒計(jì)時(shí)功能,到達(dá)00:00:00時(shí)就可以調(diào)用報(bào)警子程序,實(shí)現(xiàn)報(bào)警。(1) ram單元分配(21h).0指示即將顯示的是十位還是個(gè)位20h #0ah,定時(shí)器/計(jì)數(shù)器

7、0或1計(jì)滿10次為1s19h#05h,定時(shí)器/計(jì)數(shù)器0或1計(jì)滿5次為0.5s18h#05h,顯示子程序內(nèi)部執(zhí)行次數(shù)29h #01010101b 30h 小時(shí)的bcd碼31h 分鐘的bcd碼 32h 秒的bcd碼th0#3ch,t0計(jì)數(shù)初值,可計(jì)時(shí)100mstl0#0b0hth1 #3ch,t1計(jì)數(shù)初值,可計(jì)時(shí)100mstl1 #0b0h(2) 循環(huán)執(zhí)行部分:here:lcalladjustajmphere;反復(fù)調(diào)用adjust程序可以實(shí)現(xiàn)所有功能(3)主程序的初始化部分: main:setbp3.0 clrp3.1 movtmod,#01h;設(shè)t0方式1,定時(shí) clra;a清零 mov30h,

8、a;“時(shí)”單元清零 mov31h,a;“分”單元清零 mov32h,a;“秒”單元清零 setbet0;允許中斷 setbet1setbea;cpu開中斷movth0,#3ch;給t0裝入計(jì)數(shù)初值,可計(jì)時(shí)100msmovtl0,#0b0h;movth1,#3ch;給t1裝入計(jì)數(shù)初值movtl1,#0b0hsetbtr0;啟動(dòng)計(jì)數(shù) (二)時(shí)間顯示模塊(1) 物理連接p0.0p0.7接數(shù)碼管的adp(片選碼)p2.0p2.5接數(shù)碼管的16(段選碼)時(shí)間顯示:采用六個(gè)數(shù)碼管顯示兩位的小時(shí),分鐘,秒 (2) 流程圖: (3) 動(dòng)態(tài)顯示的核心在于依次選中一塊數(shù)碼管,并在此之前將相應(yīng)數(shù)碼管要顯示的數(shù)字的段

9、碼送到端口,進(jìn)行相應(yīng)的延時(shí)后關(guān)閉數(shù)碼管選通信號(hào)。不斷執(zhí)行上述過程就可以實(shí)現(xiàn)較為穩(wěn)定的動(dòng)態(tài)顯示。每次進(jìn)入主程序都首先判斷是否到了1s,到了則繼續(xù)執(zhí)行,否則,返回中斷。為了在顯示完秒之后還能繼續(xù)顯示小時(shí)的十位,必須有一個(gè)用來計(jì)數(shù)的單元,用以區(qū)分當(dāng)前顯示的是小時(shí)還是分鐘,還是秒,并以此作為僅次于顯示次數(shù)n的循環(huán)。對每一個(gè)單元(30h32h)的兩位bcd碼的顯示,用一位(21h).0來指示即將顯示的是十位還是各位,據(jù)此控制剛才所說的單元指示數(shù)值是否用該加一或者重新初始化。由此在display子程序中有3重循環(huán)。調(diào)用入口參數(shù)為30h32h單元的數(shù)值。(4) 半秒提示:采用兩個(gè)發(fā)光二極管,每隔半秒閃爍。中

10、斷5次就是半秒,并在相應(yīng)的分支里設(shè)置p3.6和p3.7,保證二者同時(shí)取反即可。這可以放在顯示子程序內(nèi)部,保證時(shí)間顯示和半秒閃爍的同步,同時(shí)可以節(jié)約計(jì)數(shù)器。(5) 上下午指示:采用兩個(gè)發(fā)光二極管來指示上下午。只要判斷30h單元的內(nèi)容與11h相比較就可以知道是上午還是下午了,在分支語句里控制相應(yīng)的燈亮了就行。如上所述,將它放置在顯示子程序里較為方便。時(shí)分秒時(shí)間顯示模塊的仿真結(jié)果半秒提示上午(3) 按鍵模塊adjust的主體部分就是檢測是否有按鍵按下,如果沒有只是調(diào)用顯示子程序,而有的話轉(zhuǎn)去執(zhí)行相應(yīng)的分支語句。為了防止干擾,我們便寫了一個(gè)延時(shí)5ms左右的子程序,若是經(jīng)過延時(shí)后,按鍵信號(hào)依然有效,則認(rèn)

11、定是有效信號(hào),否則為干擾,返回程序起始點(diǎn)重新檢測。k1可以控制實(shí)現(xiàn)定時(shí),所以定時(shí)器計(jì)數(shù)器依然是0在起作用,在其分支語句里根據(jù)按鍵次數(shù)使指針指向不同的單元(小時(shí)、分鐘),然后檢測k2k3的信號(hào)到來。在k2k3的分支語句里實(shí)現(xiàn)指針?biāo)赶騿卧募右换蛘邷p一,但是注意要按照時(shí)間規(guī)則來,對加一或者減一結(jié)果進(jìn)行調(diào)整,否則可能出錯(cuò)。對單元的加一或者減一直接反映到顯示子程序和定時(shí)器計(jì)數(shù)器0或者1的16位計(jì)數(shù)單元里,所以,每次更改后的值就相當(dāng)于對時(shí)間確定調(diào)節(jié),并從該處繼續(xù)計(jì)時(shí),這樣就實(shí)現(xiàn)了調(diào)時(shí)功能。k4的分支語句要求實(shí)現(xiàn)定鬧,它與k1分支語句的不同之處是更改當(dāng)前計(jì)數(shù)器為1,關(guān)閉0,在計(jì)數(shù)器1的中斷服務(wù)程序里可以

12、實(shí)現(xiàn)倒計(jì)時(shí)功能。元器件:按鈕開關(guān)k1:控制調(diào)時(shí)k3:對應(yīng)單元減一k2:對應(yīng)單元加一k4:控制定鬧(四)鬧鐘模塊(1)計(jì)時(shí)器t1的倒計(jì)時(shí)同樣是1s的倒計(jì)時(shí),只是在中斷程序里實(shí)現(xiàn)對計(jì)時(shí)單元的減一,但在減一之前檢測是否為0,如果是就調(diào)用報(bào)警子程序,如果不是則按照規(guī)則減一,注意的同樣是數(shù)值的調(diào)整。調(diào)整結(jié)束后返回adjust程序,繼續(xù)檢測,這樣就可以實(shí)現(xiàn)連續(xù)調(diào)節(jié)。(5) 報(bào)警模塊連線p1.7引腳連接到三極管元器件:蜂鳴器、三極管2n2907原理:由單片機(jī)芯片中引腳輸出的信號(hào)來控制蜂鳴器的開和關(guān)在報(bào)警子程序里要求不斷調(diào)用顯示子程序,這樣數(shù)碼管可以在時(shí)間到達(dá)之后穩(wěn)定顯示00:00:00.(六)溫度測量模塊元

13、器件:數(shù)字溫度傳感器ds18b20(測溫范圍-55度125度)原理:利用溫度傳感器測量到溫度值通過引腳傳遞到芯片中 利用ds18b20溫度芯片來實(shí)現(xiàn)溫度測量的功能,并將其顯示在數(shù)碼管上。測量的溫度范圍是零下55至零上125攝氏度。 ds18b20的六條控制命令如下表:指 令約定代碼操 作 說 明溫度轉(zhuǎn)換44h啟動(dòng)ds18b20進(jìn)行溫度轉(zhuǎn)換讀暫存器beh讀暫存器9個(gè)字節(jié)內(nèi)容寫暫存器4eh將數(shù)據(jù)寫入暫存器的th、tl字節(jié)復(fù)制暫存器48h把暫存器的th、tl字節(jié)寫到e2ram中重新調(diào)e2ramb8h把e2ram中的th、tl字節(jié)寫到暫存器th、tl字節(jié)讀電源供電方式b4h啟動(dòng)ds18b20發(fā)送電源供

14、電方式的信號(hào)給主cpu5、 結(jié)論 本次項(xiàng)目利用單片機(jī)stc89c52控制串行口與時(shí)鐘芯片ds1302構(gòu)成數(shù)字時(shí)鐘電路,實(shí)現(xiàn)計(jì)時(shí)功能,同時(shí)具有定時(shí)鬧鐘的功能,并且可以顯示溫度,定時(shí)和調(diào)時(shí)的功能僅用四個(gè)鍵控制,更加方便。本設(shè)計(jì)沒有實(shí)現(xiàn)上下午提示和半秒提示的功能,但是智能電子鐘的基本功能已經(jīng)實(shí)現(xiàn),所以算是比較成功的。6、 不足和改進(jìn)(1) 當(dāng)定鬧結(jié)束之后不能夠通過按鍵來重新啟動(dòng),這個(gè)可以通過在報(bào)警子程序里跳轉(zhuǎn)到主程序重新開始執(zhí)行來實(shí)現(xiàn)。(2) 在調(diào)時(shí)和定鬧的過程中,相應(yīng)模塊不能閃爍,這個(gè)可以通過調(diào)用一個(gè)新的顯示子程序,實(shí)現(xiàn)相應(yīng)數(shù)碼管間歇性亮滅。(3) 時(shí)間緊迫,沒有對減或者加的單元設(shè)定上限和下限值,

15、所以只能實(shí)現(xiàn)一天內(nèi)的功能。這個(gè)可以通過在相應(yīng)程序段中與限值比較來實(shí)現(xiàn)。(4) 溫度顯示模塊是一大遺憾,沒有足夠的時(shí)間來做。(5) 在設(shè)計(jì)過程中另外有一個(gè)關(guān)于按鍵的想法,沒有能夠編程實(shí)現(xiàn)。它是利用兩級(jí)中斷來實(shí)現(xiàn)。加一或者減一是通過外部中斷的中斷服務(wù)程序?qū)崿F(xiàn)。這里可能與按鍵延時(shí)有關(guān),同時(shí)這樣的設(shè)計(jì)可能會(huì)涉及到從引腳讀入信號(hào),這在實(shí)際設(shè)計(jì)中不可取。此處不再贅述。七、感想 經(jīng)歷過這么多不間斷的討論課和三級(jí)項(xiàng)目,我們有挺多感觸的,從最基本上來說我們看到了,也意識(shí)到了自己的不足,對于不斷克服的各種阻礙也讓我們體會(huì)到了討論課、三級(jí)項(xiàng)目的意義所在。對于只接觸課本只動(dòng)筆桿的我們,面臨實(shí)際的設(shè)計(jì),讓我們很是尷尬,

16、都說理論聯(lián)系實(shí)際,真正到聯(lián)系的時(shí)候才發(fā)現(xiàn)挺困難的,不過正是理論知識(shí)的各種補(bǔ)充才讓我們能最終完成任務(wù),然后深深地體會(huì)到理論對現(xiàn)實(shí)的指導(dǎo)作用。我們現(xiàn)在最缺乏的就是實(shí)踐動(dòng)手的經(jīng)驗(yàn),而理論聯(lián)系實(shí)踐并不像我們想象的那么簡單,它需要堅(jiān)實(shí)的理論基礎(chǔ)和實(shí)際工作經(jīng)驗(yàn)。堅(jiān)實(shí)的理論基礎(chǔ)決定了我必須堅(jiān)持學(xué)習(xí)新的知識(shí)新的理論,完善了自己的知識(shí)結(jié)構(gòu),才能在以后的實(shí)際中輕松面對。在這個(gè)一邊忙著復(fù)習(xí)忙著考試又要準(zhǔn)備討論課三級(jí)項(xiàng)目的日子里,真真正正的體會(huì)到了時(shí)間的寶貴,有點(diǎn)像高中忙忙碌碌的生活,不過能按時(shí)完成三級(jí)項(xiàng)目對我們來說也是一個(gè)莫大的安慰。嚴(yán)謹(jǐn)和細(xì)心是做項(xiàng)目的必要態(tài)度,要想做好一件事,就必須一絲不茍、態(tài)度認(rèn)真。俗話說:“

17、失之毫厘,謬之千里?!痹谠O(shè)計(jì)上尤其應(yīng)該注意。再者就是設(shè)計(jì)中要嚴(yán)謹(jǐn)和細(xì)心,任何的微小誤差都達(dá)不到預(yù)計(jì)的結(jié)果,當(dāng)然對于我們來說就是設(shè)計(jì)中要走一些彎路,而且在這個(gè)嚴(yán)重缺少時(shí)間又惦記回家問題的我們來說也是一個(gè)很嚴(yán)重的打擊。不過,困難雖是難免的,但我們有信心就能并且已經(jīng)戰(zhàn)勝了困難,完成了這個(gè)無比揪心的三級(jí)項(xiàng)目。因?yàn)闀r(shí)間等各種關(guān)系設(shè)計(jì)中難免有些不足還請老師助教給予批評和幫助。程序:org0000hljmpmainorg000bhljmpit0porg001bhljmpit1porg0100hdb0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h;0-9的共陽極顯示段碼

18、org1000hmain:setbp3.0;6亮,綠燈clrp3.1movtmod,#01h;設(shè)t0方式1,定時(shí),t1為方式1,計(jì)數(shù);setbit0;外部中斷0為跳沿方式有效;setbit1;外部中斷1為跳沿方式有效;setbpx0;外部中斷0為高優(yōu)先級(jí)中斷;setbpx1;外部中斷1為高優(yōu)先級(jí)中斷;clrpt0;定時(shí)器0為低優(yōu)先級(jí)中斷;clrpt1;計(jì)數(shù)器1為低優(yōu)先級(jí)中斷mov20h,#0ah;中斷10次為1s,中斷計(jì)數(shù)單元為20hmov19h,#05hmov29h,#55h;01010101b,不斷左移位,相當(dāng)于最高兩位的0和1轉(zhuǎn)換mov18h,#05h;display子程序執(zhí)行這么多次后

19、結(jié)束clra;a清零mov30h,a;“時(shí)”單元清零mov31h,a;“分”單元清零mov32h,a;“秒”單元清零setbet0;允許中斷setbet1;setbex0;setbex1setbea;cpu開中斷movth0,#3ch;給t0裝入計(jì)數(shù)初值,可計(jì)時(shí)100msmovtl0,#0b0h;movth1,#3ch;給t1裝入計(jì)數(shù)初值movtl1,#0b0hsetbtr0;啟動(dòng)計(jì)數(shù);setbtr1movr1,#31hhere:nop;允許被中斷l(xiāng)calladjustajmphere;反復(fù)調(diào)用顯示子程序adjust:movr3,#00ha1:lcalldisplaymovp1,#0ffhjn

20、bp1.2,k3jnbp1.1,k2jnbp1.0,k1jnbp1.3,k4ljmpa1;如果沒有鍵按下重新檢測;等待按鍵抬起來j3:jbp1.2,a1lcalldisplayljmpj3j2:jbp1.1,a1lcalldisplayljmpj2j1:jbp1.0,a1lcalldisplayljmpj1j4:jbp1.3,a1lcalldisplayljmpj4k3:lcalldelayjbp1.2,a1;確實(shí)有鍵按下,進(jìn)入下面處理,否則嚴(yán)重干擾,重測mova,r1anla,#0fhcjnea,#09h,m1mova,r1adda,#10hanla,#0f0hmovr1,ajmpm2m1:

21、incr1m2:lcalldisplayljmpj3;等按鍵彈起來,按一次,只加一次k2:lcalldelayjbp1.1,a1mova,r1anla,#0fhjnznonboundmova,r1clrcsubba,#06hmovr1,anonbound:decr1lcalldisplayljmpj2k1:lcalldelayjbp1.0,a1incr3cjner3,#01h,twice1movr1,#30hjmps1twice1:cjner3,#02h,done;完了movr1,#31hs1:lcalldisplayljmpj1k4:lcalldelayjbp1.3,n1jmpn2n1:lj

22、mpa1n2:clrtr0setbtr1incr3cjner3,#01h,twice2movr1,#30hjmps2twice2:cjner3,#02h,done;完了movr1,#31hs2:lcalldisplayljmpj4done:nopretit0p:pushacc;保護(hù)現(xiàn)場pushpswclreamovth0,#3ch;重新裝入計(jì)數(shù)初值movtl0,#0b0hdjnz19h,half;半秒mov19h,#05hmova,29hrlamov29h,ahalf:djnz20h,return;1s還沒有到,那么就返回繼續(xù)計(jì)數(shù)100smov20h,#0ah;否則,重新裝入中斷次數(shù)計(jì)數(shù)值mo

23、va,#01h;adda,32h;秒單元增1daa;將二進(jìn)制的秒數(shù)轉(zhuǎn)換成bcd碼,以便顯示mov32h,a;返回到秒單元保存cjnea,#60h,return;如果不滿60s,繼續(xù)下一個(gè)1s的計(jì)時(shí)mov32h,#00h;否則,秒單元就要清零mova,#01hadda,31h;針對分單元加1daamov31h,acjnea,#60h,return;如果不滿60分鐘,則繼續(xù)下一個(gè)1s的計(jì)數(shù)mov31h,#00h;否則分單元清零mova,#02hadda,30h;針對時(shí)單元加1daamov30h,acjnea,#24h,return;如果不滿24小時(shí),則繼續(xù)計(jì)數(shù),否則,全部清零mov30h,#00h

24、;時(shí)單元清零return:setbeapoppswpopaccretidisplay:;clreapushaccpushpswpush01hloop0:djnz18h,startljmpfinishstart:movdptr,#0100hmovc,(29h).7;29h的最高兩位每隔半秒互調(diào)一次,只要不斷調(diào)用顯示程序,輸出就會(huì)每隔半秒變化一次movp3.7,cmovc,(29h).6movp3.6,cmova,#11hcjnea,30h,next1;若是12小于小時(shí)數(shù),則cy被置位,否則清零next1:jcnight;c為0,是早上setbp3.0;6亮,綠燈clrp3.1jmpmoonnig

25、ht:setbp3.1;c為1,是晚上clrp3.0;7亮,黃燈moon:nopnopmov10h,#01h;存放片選碼movr0,#30h;寄存器間接尋址setb(21h).0;指示將要顯示的是十位還是個(gè)位,1表示十位,0表示個(gè)位loop1:mova,r0;a中是待顯示的兩位數(shù)bcd碼jnb(21h).0,next;若將要顯示個(gè)位則直接相與取位swapa;否則,十位與個(gè)位交換再取位next:cpl(21h).0;指示位取反,為下次顯示做準(zhǔn)備anla,#0fh;取得待顯示的一位bcd碼movca,a+dptr;取得待顯示段碼movp0,a;準(zhǔn)備顯示movp2,10h;片選,亮了nopnopno

26、pmovp0,#0ffh;關(guān)閉數(shù)碼管mova,10hrla;為下次顯示做準(zhǔn)備mov10h,ajnb(21h).0,loop1;若將顯示個(gè)位,則r0不變incr0;否則,加一cjner0,#33h,loop1;若剛才顯示的是秒并且是個(gè)位,也就是顯示結(jié)束,那么重新置數(shù)ajmploop0;否則,繼續(xù)顯示finish:mov18h,#05hpop01hpoppswpopacc;setbearet;int0中斷服務(wù)程序eint0:pushpsw;它本來就是高優(yōu)先級(jí)中斷,所以不會(huì)再被打斷pushaccincr1mova,r1daamovr1,apopaccpoppswreti;int1中斷服務(wù)程序eint1:pushpswp

溫馨提示

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

最新文檔

評論

0/150

提交評論