基于單片機的新穎電子時鐘系統(tǒng)課程設(shè)計_第1頁
基于單片機的新穎電子時鐘系統(tǒng)課程設(shè)計_第2頁
基于單片機的新穎電子時鐘系統(tǒng)課程設(shè)計_第3頁
基于單片機的新穎電子時鐘系統(tǒng)課程設(shè)計_第4頁
基于單片機的新穎電子時鐘系統(tǒng)課程設(shè)計_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 數(shù)理與信息工程學(xué)院單片機原理及應(yīng)用期末課程設(shè)計 題 目: 基于單片機的新穎電子時鐘系統(tǒng) 專 業(yè): 計算機科學(xué)與技術(shù) 班 級: 計算機 姓 名: 學(xué) 號: 指導(dǎo)老師: 成 績: ( 2009.6 )目 錄 第1節(jié) 引 言31.1本設(shè)計任務(wù)和主要內(nèi)容31.2 系統(tǒng)主要功能3第2節(jié) 系統(tǒng)的硬件構(gòu)成及功能42.1 電子鐘的原理框圖42.2 at89c2051單片機及其引腳說明52.3 時分顯示部件6第3節(jié) 系統(tǒng)的軟件設(shè)計831 系統(tǒng)主程序設(shè)計83.2中斷程序設(shè)計93.3 程序設(shè)計10第4節(jié) 系統(tǒng)的調(diào)試25結(jié) 束 語26參考文獻27基于單片機的新穎電子時鐘系統(tǒng)數(shù)理與信息工程學(xué)院 09計算機專升本 胡瓊

2、瓊指導(dǎo)教師:余水寶 第1節(jié) 引 言 時鐘是人們?nèi)粘I钪斜夭豢缮俚纳钣闷?,無論在何地都需要精確地了解當(dāng)前的具體時間。現(xiàn)在市場上的時鐘類型多種多樣,可是它們都存在一個相當(dāng)大的缺陷,那就是無論是機械鐘還是石英鐘在晚上都無法實現(xiàn)在無照明的情況下可見的狀態(tài)。使用的人要想知道當(dāng)前的時間,就必須先開燈,因此使用起來比較麻煩。此外,無論是機械鐘、石英鐘還是電子鐘,都存在著共同的問題:時間誤差。目前單片機在各行各業(yè)領(lǐng)域的使用非常廣泛,因為它的體積小、質(zhì)量輕、價格便宜、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。運用基于單片機的形式來設(shè)計電子時鐘會更加的方便有效。針對以上的分析,我們設(shè)計了一款采用led顯示器件顯示的電

3、子時鐘,有效克服了時鐘存在的誤差問題,并且能在夜間不必其它照明就能看到時間,且以60只發(fā)光管實現(xiàn)秒顯示,接近于傳統(tǒng)的秒針來顯示秒的形式,使用者容易接受,而且美觀大方。另加七只裝飾用的led燈,使整個時鐘顯的相當(dāng)美觀新穎,故還可作為室內(nèi)裝飾用。這款電子時鐘具有相當(dāng)大的市場發(fā)展前景。1.1本設(shè)計任務(wù)和主要內(nèi)容本論文主要是針對單片機控制的電子時鐘系統(tǒng),分別對時鐘的時間顯示、鬧鐘報鳴等功能以及系統(tǒng)設(shè)備的軟、硬件各個部分進行了研究。主要設(shè)計要求如下: 用4只led數(shù)碼管輸出顯示時和分。 可通過按鍵設(shè)置鬧鐘功能,且停鬧無須手工操作。 可通過按鍵設(shè)置分校時。 月計時誤差小于45秒。 模擬“秒針”行走的“嘀噠

4、”聲。 增加停(掉)電保護功能。 提高計時精度,使年計時誤差小于30秒。 增加日自動校準功能,使得該電子鐘“永無誤差”。 可通過按鍵設(shè)置一天兩鬧(比如早晨、中午各一次)。1.2 系統(tǒng)主要功能電子鐘的外觀是周邊60只發(fā)光管順時旋轉(zhuǎn)來顯示秒,中間四只led數(shù)碼管用于顯示時間,中下方的七只led燈順時旋轉(zhuǎn),供裝飾用。 其主要功能有:整點報時;四只led數(shù)碼管顯示當(dāng)前時分。當(dāng)發(fā)生停電事件時,由后備電池供電,系統(tǒng)進入低功耗狀態(tài),所有顯示部件停止顯示,這樣即延長了電池的壽命,同時又保證了cpu繼續(xù)計數(shù),不至于因停電而時鐘停止運行。當(dāng)恢復(fù)供電后,系統(tǒng)自動恢復(fù)工作狀態(tài),不影響計時。鬧鐘功能,設(shè)定好所需的時間,

5、時間到時時鐘發(fā)出蜂鳴聲。校時,調(diào)整時間差。溫度顯示功能,檢測空氣中的溫度并顯示在四只led數(shù)碼管上。時間顯示和溫度顯示交替進行。第2節(jié) 系統(tǒng)的硬件構(gòu)成及功能2.1 電子鐘的原理框圖它由以下幾個部件組成:單片機89c2051、電源、時分顯示部件、60秒旋轉(zhuǎn)譯碼驅(qū)動電路。時分顯示采用動態(tài)掃描,以降低對單片機端口數(shù)的要求,同時也降低系統(tǒng)的功耗。時分顯示模塊、60秒旋轉(zhuǎn)譯碼驅(qū)動電路以及顯示驅(qū)動都通過89c2051的i/o口控制。電源部分:電源部分有二部分組成。一部分是由220v的市電通過變壓、整流穩(wěn)壓來得到+5v電壓,維持系統(tǒng)的正常工作;另一部分是由3v的電池供電,以保證停電時正常走時。正常情況下電池

6、是不提供電能的,以保證電池的壽命。圖2-1 電子鐘系統(tǒng)原理框圖2.2 at89c2051單片機及其引腳說明at89c2051單片機是51系列單片機的一個成員,是8051單片機的簡化版。內(nèi)部自帶2k字節(jié)可編程flash存儲器的低電壓、高性能coms八位微處理器,與intel mcs-51系列單片機的指令和輸出管腳相兼容。at89c2051構(gòu)成的單片機系統(tǒng)是具有結(jié)構(gòu)最簡單、造價最低廉、效率最高的微控制系統(tǒng),省去了外部的ram、rom和接口器件,減少了硬件開銷,節(jié)省了成本,提高了系統(tǒng)的性價比。at89c2051是一個有20個引腳的芯片,引腳配置如圖2-2所示。與8051相比,at89c2051減少了

7、兩個對外端口(即p0、p2口),使它最大可能地減少了對外引腳下,因而芯片尺寸有所減小。at89c2051芯片的幾個主要引腳功能為: 圖2-2 at89c2051引腳配置 圖2-3 cd4017引腳圖rst 復(fù)位輸入。當(dāng)rst變?yōu)楦唠娖讲⒈3?個機器周期時,所有i/o引腳復(fù)位至“1”。xtal1 反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。xtal2 來自反向振蕩放大器的輸出。p1口 8位雙向i/o口。引腳p1.2p1.7提供內(nèi)部上拉,當(dāng)作為輸入并被外部下拉為低電平時,它們將輸出電流,這是因內(nèi)部上拉的緣故。p1.0和p1.1需要外部上拉,可用作片內(nèi)精確模擬比較器的正向輸入(ain0)和反向輸入

8、(ain1),p1口輸出緩沖器能接收20ma電流,并能直接驅(qū)動led顯示器;p1口引腳寫入“1” 后,可用作輸入。在閃速編程與編程校驗期間,p1口也可接收編碼數(shù)據(jù)。p3口 引腳p3.0p3.5與p3.7為7個帶內(nèi)部上拉的雙向i/0引腳。p3.6在內(nèi)部已與片內(nèi)比較器輸出相連,不能作為通用i/o引腳訪問。p3口的輸出緩沖器能接收20ma的灌電流;p3口寫入“1”后,內(nèi)部上拉,可用輸入。p3口也可用作特殊功能口,其功能見表1。p3口同時也可為閃速存儲器編程和編程校驗接收控制信號。表1 p3口特殊功能p3口引腳特殊功能p3.0rxd(串行輸入口)p3.1txd(串行輸出口)p3.2(外部中斷0)p3.

9、3(外部中斷1)p3.4t0(定時器0外部輸入)p3.5t1(定時器1外部輸入)2.3 時分顯示部件由于系統(tǒng)要顯示的內(nèi)容較簡單,顯示量不多,所以選用數(shù)碼管既方便又經(jīng)濟。led有共陰極和共陽極兩種。如圖2-6所示。二極管的陰極連接在一起,通常此公共陰極接地,而共陽極則將發(fā)光二極管的陽極連接在一起,接入+5v的電壓。一位顯示器由8個發(fā)光二極管組成,其中7個發(fā)光二極管構(gòu)成字型“8”的各個筆劃(段)ag,另一個小數(shù)點為dp發(fā)光二極管。當(dāng)在某段發(fā)光二極管施加一定的正向電壓時,該段筆劃即亮;不加電壓則暗。為了保護各段led不被損壞,需外加限流電阻。圖2-6 led數(shù)碼管結(jié)構(gòu)原理圖眾所周知,led顯示數(shù)碼管

10、通常由硬件7段譯碼集成電路,完成從數(shù)字到顯示碼的譯碼驅(qū)動。本系統(tǒng)采用軟件譯碼,以減小體積,降低成本和功耗,軟件譯碼的另一優(yōu)勢還在于比硬件譯碼有更大的靈活性。所謂軟件譯碼,即由單片機軟件完成從數(shù)字到顯示碼的轉(zhuǎn)換。從led數(shù)碼管結(jié)構(gòu)原理可知,為了顯示字符,要為led顯示數(shù)碼管提供顯示段碼,組成一個“8”字形字符的7段,再加上1個小數(shù)點位,共計8段,因此提供給led數(shù)碼管的顯示段碼為1個字節(jié)。各段碼位與顯示段的對應(yīng)關(guān)系如表2。表2 各段碼位的對應(yīng)關(guān)系段碼位d7d6d5d4d3d2d1d0顯示段dpgfedcba當(dāng)用數(shù)據(jù)口連接led數(shù)碼管adp引腳時,不同的連接方法,各段碼位與顯示段有不同的對應(yīng)關(guān)系。

11、通常數(shù)據(jù)口的d0位與a段連接,d1位與b段連接,d7位與dp段連接,依次連接,如表2所示,表3為用于led數(shù)碼管顯示的十六進制數(shù)和空白字符與p的顯示段碼。表3 led顯示段碼字型共陽極段碼共陰極段碼字型共陽極段碼共陰極段碼0c0h3fh990h6fh1f9h06ha88h77h2a4h5bhb83h7ch3boh4fhcc6h39h499h66hda1h5eh592h6dhe86h79h682h7dhf84h71h7f8h07h空白ffh00h880h7fhp8ch73h根據(jù)at89c2051單片機灌電流能力強,拉電流能力弱的特點,我們選用共陽數(shù)碼管。將at89c2051的p1.0p1.7分別

12、與共陽數(shù)碼管的ag及dp相連,高電平的位對應(yīng)的led數(shù)碼管的段暗,低電平的位對應(yīng)的led數(shù)碼管的段亮,這樣,當(dāng)p0口輸出不同的段碼,就可以控制數(shù)碼管顯示不同的字符。例如:當(dāng)p0口輸出的段碼為1100 0000,數(shù)碼管顯示的字符為0。數(shù)碼管顯示器有二種工作方式,即靜態(tài)顯示方式和動態(tài)掃描顯示方式。為節(jié)省端口及降低功耗,本系統(tǒng)采用動態(tài)掃描顯示方式。動態(tài)掃描顯示方式需解決多位led數(shù)碼管的“段控”和“位控”問題,本電路的“段控”(即要顯示的段碼的控制)通過p0口實現(xiàn);而每一位的公共端,即led數(shù)碼管的“位控”,則由p3口控制。這種連接方式由于多位字段線連在一起,因此,要想顯示不同的內(nèi)容,必然要采取輪流

13、顯示的方式,即在某一瞬間,只讓其中的某一位的字位線處于選通狀態(tài),其它各位的字位線處于斷開狀態(tài),同時字段線上輸出這一位相應(yīng)要顯示字符的字段碼。在這一瞬時,只有這一位在顯示,其他幾位則暗。在本系統(tǒng)中,字位線的選通與否是通過pnp三極管的導(dǎo)通與截止來控制,即三極管處于“開關(guān)”狀態(tài)。系統(tǒng)的時分顯示部件由4只7段共陽led數(shù)碼管構(gòu)成,前兩只用于時的顯示,后兩只用于分的顯示。值得一提的是,在設(shè)計中需要實現(xiàn)時與分之間的兩個閃爍點,為此,將第三只led數(shù)碼管倒置擺放,這樣就形成了兩個很自然的閃爍點。與此同時,為了能使兩點顯示能夠形象的表示時鐘“秒”的變化,設(shè)計時,將兩個點由p1.7單獨控制,每隔一秒使p1.7

14、發(fā)送一個正脈沖,從而實現(xiàn)了兩個點的閃爍顯示,閃爍周期為一秒。第3節(jié) 系統(tǒng)的軟件設(shè)計31 系統(tǒng)主程序設(shè)計 主程序的功能是完成系統(tǒng)的初始化,在顯示時間之前,對系統(tǒng)是否停電狀態(tài)進行檢測;若停電,將系統(tǒng)進入低功耗狀態(tài),用電池電壓維持單片機計時工作,但此時不顯示時間,用節(jié)省用電;若不停電,則將時分發(fā)送顯示。程序流程如圖3-1所示。圖3-1 系統(tǒng)主程序流程圖3.2中斷程序設(shè)計中斷程序(如圖3-2所示)完成時間計數(shù),時間調(diào)整,誤差消除等功能。中斷采用at89c2051內(nèi)部t0中斷實現(xiàn),定時時間為125ms,當(dāng)時間到達125ms8,即1分鐘時,分計數(shù)緩沖器minbuffer增加1,到達1小時,則時計數(shù)緩沖器h

15、ourbuffer增加1,并將分、時的個位、十位放入顯示緩沖器。當(dāng)分計數(shù)緩沖器和時計數(shù)緩沖器分別到達60min、24h時,則對它們清零,以便從新計數(shù)。在中斷設(shè)計中,還通過軟件實現(xiàn)了累計誤差消除功能,使整個系統(tǒng)時間的精確度得到保證。圖3-2 定時中斷程序3.3 程序設(shè)計dp bit 24h.3 ;定義半秒閃爍位單元 second equ 31h ; 定義計數(shù)單元 mbuf equ 32h ; 定義分計數(shù)單元 hbuf equ 33h ; 定義時計數(shù)單元 mbuf0 equ 34h ; 定義分個位計數(shù)存儲單元 mbuf1 equ 35h ; 定義分十位計數(shù)存儲單元 hbuf0 equ 36h ;

16、定義時個位計數(shù)存儲單元 hbuf1 equ 37h ; 定義時十位計數(shù)存儲單元 dmbf0 equ 40h ; 定義分個位顯示緩沖單元 dmbf1 equ 41h ; 定義分十位顯示緩沖單元 dhbf0 equ 42h ; 定義時個位顯示緩沖單元 dhbf1 equ 43h ; 定義時十位顯示緩沖單元 ambf10 equ 44h ; 定義定鬧 1 分個位緩沖單元 ambf11 equ 45h ; 定義定鬧 1 分十位緩沖單元 ahbf10 equ 46h ; 定義定鬧 1 時個位緩沖單元 ahbf11 equ 47h ; 定義定鬧 1 時十位緩沖單元 ambf1 equ 48h ; 定義定鬧

17、1分計數(shù)單元 ahbf1 equ 49h ; 定義定鬧1時計數(shù)單元 ambf20 equ 4ah ; 定義定鬧 2 分個位緩沖單元 ambf21 equ 4bh ; 定義定鬧 2 分十位緩沖單元 ahbf20 equ 4ch ; 定義定鬧 2 時個位緩沖單元 ahbf21 equ 4dh ; 定義定鬧 2 時十位緩沖單元 ambf2 equ 4eh ; 定義定鬧2分計數(shù)單元 ahbf2 equ 4fh ; 定義定鬧2時計數(shù)單元 org 0000h ljmp main org 000bh mov tl0, #0dch ; 125 毫秒定時器初值低 8 位 mov th0, #0bh ; 125毫

18、秒定時器初值高 8 位 ljmp inttomain: mov sp, #6fh mov r2, #08h ; 定時器1 秒中斷次數(shù) mov r4, #08h ; 快校時定時計數(shù),8x125ms 后快校時 mov second, #3ch ; 秒計數(shù)單元 mov mbuf0, #0 ; 分個位計數(shù)存儲單元 0 初值 mov mbuf1, #0 ; 分十位計數(shù)存儲單元 1 初值 mov hbuf0, #0 ; 時個位計數(shù)存儲單元 0 初值 mov hbuf1, #2 ; 時十位計數(shù)存儲單元 1 初值 mov mbuf, #00h ; 分計數(shù)存儲單元 初值 mov hbuf, #20h ; 時計數(shù)

19、存儲單元 初值 mov ambf10, #1 ; 定鬧1 分個位計數(shù)存儲單元 0 初值 mov ambf11, #5 ; 定鬧1 分十位計數(shù)存儲單元 1 初值 mov ahbf10, #0 ; 定鬧1 時個位計數(shù)存儲單元 0 初值 mov ahbf11, #2 ; 定鬧1 時十位計數(shù)存儲單元 1 初值 mov ambf1, #51h ; 定鬧 1 分計數(shù)存儲單元 初值 mov ahbf1, #20h ; 定鬧 1 時計數(shù)存儲單元 初值 mov ambf20, #3 ; 定鬧2 分個位計數(shù)存儲單元 0 初值 mov ambf21, #5 ; 定鬧2 分十位計數(shù)存儲單元 1 初值 mov ahbf

20、20, #0 ; 定鬧2 時個位計數(shù)存儲單元 0 初值 mov ahbf21, #2 ; 定鬧2 時十位計數(shù)存儲單元 1 初值 mov ambf2, #53h ; 定鬧2 分計數(shù)存儲單元 初值 mov ahbf2, #20h ; 定鬧 2 時計數(shù)存儲單元 初值 mov ie, #10000010b ; 允許定時器0 中斷 mov tmod, #00100001b ; t0 方式1 mov tl0, r5 ; 125 毫秒定時器初值低 8 位 mov th0, #0bh ; 125 毫秒定時器初值高 8 位 mov ip, #00000010b ; 定時器0 高優(yōu)先級 setb tr0 ; 啟動

21、 t0 計時 loop: mov r4, #08 ; 喂狗 mov a, hbuf ; 取時整點 subb a, #7 jc loop1 ; 判斷是否早 7時前 mov a, hbuf ; 早7 時前-晚22 時后為夜間 subb a, #22h jnc loop1 ; 判斷是否晚 22 時后 acall disp ajmp alarm1 loop1: acall ndisp ; 是夜間,調(diào)用夜間顯示子程序 alarm1: mov a, ahbf1 ; 判定鬧 1 cjne a, hbuf, alarm2 ; 判定鬧1的小時是否與系統(tǒng)時間相等? mov a, ambf1 cjne a, mbu

22、f, alarm2 ; 判定鬧1的分是否與系統(tǒng)時間相等? mov c, dp mov p3.3, c ; 蜂鳴器響半秒,停半秒 mov a, second ; 定鬧1 分鐘 jnz loop alarm2: mov a, ahbf2 cjne a, hbuf, loop2 ; 判定鬧2的時是否與系統(tǒng)時間相等? mov a, ambf2 cjne a, mbuf, loop2 ; 判定鬧2的分是否與系統(tǒng)時間相等? mov c, dp mov c, dp mov p3.3, c ; 蜂鳴器響半秒,停半秒 mov a, second ; 定鬧1 分鐘 jnz loop loop2: jb p3.2,

23、 loop7 ; 判斷校時鍵是否按下? loop3: acall disp ; 用于長時間按鍵時的顯示 mov a, r4 ; 有校時鍵按下 cjne a, #00h, loop6 ; 校時鍵按下有 1 秒嗎? loop4: acall add1 ; 校時鍵按下有 1 秒,則快調(diào) mov r1, #40 loop5: acall disp djnz r1, loop5 jnb p3.2, loop4 ; 校時鍵未放開,繼續(xù)快調(diào) ajmp loop7 ; loop6: jnb p3.2, loop3 ; 校時鍵按下不到 1秒,返回再判 acall add1 ; 單次慢調(diào) mov tl0, r5

24、; 校時結(jié)束,秒初值置 0 mov th0, #0bh mov second, #00 loop7: jb p3.3, loop alam11: acall adsp1 ; 用于設(shè)置定鬧 1 時,長時間按鍵的顯示 mov a, r4 ; 有定鬧1 鍵按下 cjne a, #00h, alam16 ; 定鬧1鍵按下有 1秒嗎? alam12: acall aad1 ; 定鬧1鍵按下有 1秒,則快調(diào) mov r1, #50 alam13: acall adsp1 djnz r1, alam13 jnb p3.3, alam12 mov r1, #10 ; 定鬧1 快調(diào)結(jié)束,閃爍顯示定鬧時間 8 秒

25、 alam14: mov r3, #40 alam15: acall adsp1 djnz r3, alam15 acall d400ms djnz r1, alam14 ajmp again alam16: nop jnb p3.3, alam11 ; 定鬧1鍵按下不到 1 秒,返回再判 alam17: acall aad1 ; 定鬧1單次慢調(diào) mov r1, #10 ; 定鬧1慢調(diào)結(jié)束,閃爍顯示定鬧時間 12 秒 alam18: mov r3, #40 alam19: acall adsp1 djnz r3, alam19 acall d400ms djnz r1, alam18 agai

26、n: jb p3.3, retun ; 返回主程序 mov r4, #08 alam21: acall adsp2 ; 用于設(shè)置定鬧 2 時,長時間按鍵的顯示 mov a, r4 ; 有定鬧2 鍵按下 cjne a, #00h, alam26 ; 定鬧2鍵按下有 1秒嗎? alam22: acall aad2 ; 定鬧2鍵按下有 1秒,則快調(diào) mov r1, #50 alam23: acall adsp2 djnz r1, alam23 jnb p3.3, alam22 mov r1, #10 ; 定鬧2 快調(diào)結(jié)束,閃爍顯示定鬧時間 9 秒 alam24: mov r3, #40 alam25

27、: djnz r3, alam25 acall d400ms djnz r1, alam24 ajmp loop alam26: jnb p3.3, alam21 ; 定鬧2鍵按下不到 1 秒,返回再判 alam27: acall aad2 ; 定鬧2單次慢調(diào) mov r1, #10 ; 定鬧2 慢調(diào)結(jié)束,顯示定鬧時間 9 秒 alam28: mov r3, #40 alam29: acall adsp2 djnz r3, alam29 acall d400ms djnz r1, alam28 retun: ajmp loop ; 返回主程序 intto: push acc push psw

28、dec r4 mov a,second cjne a,#28h,int01 mov r5,#0dbh int01: djnz r2, int02 ; 1 秒計數(shù) mov r2, #08h cpl dp ; 小數(shù)點半秒閃爍 acall beep ; 1 秒到, 發(fā)“笛嗒”聲和 led 旋轉(zhuǎn)脈沖 djnz second, outt0 mov second, #3ch ; 1 分到 acall add1 ; 分十進制加 1子程序 int02: mov a, r2 cjne a, #04h, outt0 ; 判斷是否半秒 cpl dp ; 是半秒,秒閃動一次 outt0: pop psw pop ac

29、c reti add1: mov a, mbuf ; 分加1 子程序, add a, #01 ; 分十進制加 1 da a mov mbuf, a anl a, #0fh mov mbuf0, a mov a, mbuf swap a anl a, #0fh mov mbuf1, a mov a, mbuf cjne a, #60h, addout mov mbuf0, #0 mov mbuf1, #0 mov mbuf, #0 mov a, hbuf add a, #01 ; 時十進制加1 da a mov hbuf, a anl a, #0fh mov hbuf0, a mov a, hb

30、uf swap a anl a, #0fh mov hbuf1, a mov a, hbuf cjne a, #24h, addout mov hbuf0, #0 mov hbuf1, #0 mov hbuf, #0 addout: ret aad1: mov a, ambf1 ; 定鬧 1,分加1 子程序, add a, #01 da a mov ambf1, a anl a, #0fh mov ambf10, a mov a, ambf1 swap a anl a, #0fh mov ambf11, a mov a, ambf1 cjne a, #60h, aad1ot mov ambf1

31、0, #0 mov ambf11, #0 mov ambf1, #0 mov a, ahbf1 add a, #01 da a mov ahbf1, a anl a, #0fh mov ahbf10, a mov a, ahbf1 swap a anl a, #0fh mov ahbf11, a mov a , ahbf1 cjne a, #24h, aad1ot mov ahbf10, #0 mov ahbf11, #0 mov ahbf1, #0 aad1ot: ret aad2: mov a, ambf2 ; 定鬧2 分加 1 子程序, add a, #01 da a mov ambf2

32、, a anl a, #0fh mov ambf20, a mov a, ambf2 swap a anl a, #0fh mov ambf21, a mov a, ambf2 cjne a, 60h, aad2ot mov ambf20, #0 mov ambf21, #0 mov ambf2, #0 mov a, ahbf2 add a, #01 da a mov ahbf2, a anl a, #0fh mov ahbf20, a mov a, ahbf2 swap a anl a, #0fh mov ahbf21, a mov a, ahbf2 cjne a, #24h, aad2ot

33、 mov ahbf20, #0 mov ahbf21, #0 mov ahbf2, #0 aad2ot: ret dspm0: movc a, a+dptr ; 白天分個位顯示子程序 setb acc.7 mov p1, a clr p3.5 acall dy1ms setb p3.5 acall dy1ms ret dspm1: movc a, a+dptr ; 白天分十位顯示子程序 mov c, dp mov acc.7, c mov p1, a clr p3.4 acall dy1ms setb p3.4 acall dy1ms ret dsph0: movc a, a+dptr ; 白

34、天時個位顯示子程序 mov c, dp mov acc.7, c mov p1, a clr p3.1 acall dy1ms setb p3.1 acall dy1ms ret dsph1: movc a, a+dptr ; 白天時十位顯示子程序 setb acc.7 mov p1, a clr p3.0 acall dy1ms setb p3.0 acall dy1ms ret disp: nop mov dptr , #tab1 ; 顯示子程序,指向個位順置管段碼表首地址 mov a, mbuf0 ; 取分個位 acall dspm0 ; 調(diào)用分個位顯示子程序 mov dptr, #ta

35、b2 mov a, mbuf1 ; 取分十位 acall dspm1 ; 調(diào)用分十位顯示子程序 mov dptr, #tab1 mov a, hbuf0 ; 取時個位 acall dsph0 ; 調(diào)用時個位顯示子程序 mov dptr, #tab1 mov a, hbuf1 ; 取時十位 anl a, #0ffh jnz disp1 mov a, #0ah disp1: acall dsph1 ; 調(diào)用時十位顯示子程序 ret ndpm0: movc a, a+dptr ; 夜間分個位顯示子程序 setb acc.7 mov p1, a clr p3.5 acall dy1ms setb p3

36、.5 acall dy2ms ret ndpm1: movc a, a+dptr ; 夜間分十位顯示子程序 mov c, dp mov acc.7,c mov p1, a clr p3.4 acall dy1ms setb p3.4 acall dy2ms ret ndph0: movc a, a+dptr ; 夜間時個位顯示子程序 mov c, dp mov acc.7,c mov p1, a clr p3.1 acall dy1ms setb p3.1 acall dy2ms ret ndph1: movc a, a+dptr ; 夜間時十位顯示子程序 setb acc.7 mov p1,

37、 a clr p3.0 acall dy1ms setb p3.0 acall dy2ms ret ndisp: nop mov dptr, # tab1 ; 顯示子程序,指向個位順置管段碼表首地址 mov a, mbuf0 ; 取分個位 acall ndpm0 ; 調(diào)用分個位顯示子程序 mov dptr, #tab2 mov a, mbuf1 ; 取分十位 acall ndpm1 ; 調(diào)用分十位顯示子程序 mov dptr, #tab1 mov a, hbuf0 ; 取時個位 acall ndph0 ; 調(diào)用時個位顯示子程序 mov dptr , # tab1 mov a, hbuf1 ;

38、取時十位 anl a, #0ffh jnz ndisp1 mov a, #0ah ndisp1: acall ndph1 ; 調(diào)用時十位顯示子程序 ret adsp1: nop mov dptr, #tab1 ; 定鬧1 顯示子程序,指向個位順置管段碼表首地址 mov a, ambf10 ; 取定鬧1 分個位 acall dspm0 ; 調(diào)用分個位顯示子程序 mov dptr, #tab2 mov a, ambf11 ; 取定鬧1 分十位 acall dspm1 ; 調(diào)用分十位顯示子程序 mov dptr, #tab1 mov a, ahbf10 ; 取定鬧 1 時個位 acall dsph0

39、 ; 調(diào)用時個位顯示子程序 mov dptr, #tab1 mov a, ahbf11 ; 取定鬧1 時十位 anl a, #0ffh jnz adsp11 mov a, #0ah adsp11: acall dsph1 ; 調(diào)用時十位顯示子程序 ret adsp2: nop mov dptr, #tab1 ; 定鬧2顯示子程序,指向個位順置管段碼表首地址 mov a, ambf20 ; 取定鬧2 分個位 acall dspm0 ; 調(diào)用分個位顯示子程序 mov dptr, #tab2 mov a, ambf21 ; 取定鬧2 分十位 acall dspm1 ; 調(diào)用分十位顯示子程序 mov dptr, #tab1 mov a, ahbf20 ; 取定鬧2 時個位 acall dsph0 ; 調(diào)用時個位顯示子程序 mov dptr, #tab1 mov a, ahbf21 ; 取定鬧2 時十位 anl a, #0ffh jnz ads

溫馨提示

  • 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

提交評論