應用案例1新穎60秒旋轉電子鐘_第1頁
應用案例1新穎60秒旋轉電子鐘_第2頁
應用案例1新穎60秒旋轉電子鐘_第3頁
應用案例1新穎60秒旋轉電子鐘_第4頁
應用案例1新穎60秒旋轉電子鐘_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1新穎60秒LED旋轉電子鐘 余 水 寶 2007年5月1 任 務 書 設計一款基于AT89C2051單片機的電子鐘。 設計基本要求 用4只LED數(shù)碼管輸出顯示時和分; 可通過按鍵設置鬧鐘功能,自動停鬧; 鬧鐘時間的設置可增可減; 月計時誤差小于45秒; 寫出詳細的設計報告; 給出全部電路和源程序。2發(fā)揮部分要求 用60只LED發(fā)光管旋轉顯示,模擬“秒針”的行走; 模擬“秒針”行走的“嘀噠”聲; 增加室溫檢測和顯示功能(與時間交替顯示,每5分鐘顯示室溫約30秒); 增加停(掉)電保護功能; 提高計時精度,使年計時誤差小于30秒; 系統(tǒng)限定只用“復位”、“定鬧增”、“定鬧減”三個按鍵,可通過按鍵

2、設置一天兩鬧(比如早晨、中午各一次)。3 選題背景 目前市場上提供的無論是機械鐘還是石英鐘在晚上無照明的情況下都是不可見的。要知道當前的時間,必須先開燈,故較為不便?,F(xiàn)在市場上也出現(xiàn)了一些電子鐘,它以六只LED數(shù)碼管來顯示時分秒,違背了人們指針式的傳統(tǒng)習慣與理念,而且這類電子鐘一般是采用大型顯示器件,適用于銀行、車站等公共場所,且外觀設計欠美觀,很少進入百姓家庭。此外,無論是機械鐘、石英鐘還是電子鐘,都存在著共同的問題:時間誤差。針對以上存在的問題,我們設計了一款采用LED顯示器件顯示的電子時鐘,解決了時鐘存在的誤差問題,并能在夜間不必其它照明就能看到時間,且以60只發(fā)光管實現(xiàn)秒顯示,接近于傳

3、統(tǒng)的秒針來顯示秒的形式,用戶容易接受,而且美觀大方。另加七只裝飾用的LED燈,使整個時鐘顯的相當美觀新穎,故還可作為室內裝飾用。 4 1 系統(tǒng)主要功能 電子鐘的外觀如圖1所示。周邊60只發(fā)光管順時旋轉來顯示秒,中間四只LED數(shù)碼管用于顯示時間,中下方的七只LED燈順時旋轉,供裝飾用。其主要功能有: 整點報時; 四只LED數(shù)碼管顯示當前時分; 每隔一秒鐘周邊的60只LED發(fā)光管旋轉一格; 當發(fā)生停電事件時,由后備電池供電,系統(tǒng)進入低功耗狀態(tài),所 有顯示部件停止顯示,這樣即延長了電池的壽命,同時又保證了 CPU繼續(xù)計數(shù),不至于因停電而時鐘停止運行。 當恢復供電后,系統(tǒng)自動恢復工作狀態(tài),不影響計時。

4、52 系統(tǒng)的硬件構成及功能 電子鐘的原理框圖如圖2所示。它由以下幾個部件組成:單片機89C2051、電源、時分顯示部件、60秒旋轉譯碼驅動電路。 時分顯示采用動態(tài)掃描,以降低對單片機端口數(shù)的要求,同時也降低系統(tǒng)的功耗。時分顯示模塊、60秒旋轉譯碼驅動電路以及顯示驅動都通過89C2051的I/O口控制。 電源:電源部分有二部分組成。一部分是由220V的市電通過變壓、整流穩(wěn)壓來得到+5V電壓,維持系統(tǒng)的正常工作;另一部分是由3V的電池供電,以保證停電時正常計時。正常情況下電池是不提供電能的,以保證電池的壽命。具體電路參見“新穎的60秒旋轉電子鐘參考電路原理圖”。 6圖2 電子鐘系統(tǒng)原理框圖721

5、AT89C2051單片機及其引腳說明 AT89C2051單片機是51系列單片機的一個成員,是8051單片機的簡化版。內部自帶2K字節(jié)可編程FLASH存儲器的低電壓、高性能COMS八位微處理器,與Intel MCS-51系列單片機的指令和輸出管腳相兼容。由于將多功能八位CPU和閃速存儲器結合在單個芯片中,因此,AT89C2051構成的單片機系統(tǒng)是具有結構最簡單、造價最低廉、效率最高的微控制系統(tǒng),省去了外部的RAM、ROM和接口器件,減少了硬件開銷,節(jié)省了成本,提高了系統(tǒng)的性價比。 AT89C2051是一個有20個引腳的芯片,引腳配置如圖3所示。與8051相比,AT89C2051減少了兩個對外端口

6、(即P0、P2口),使它最大可能地減少了對外引腳下,因而芯片尺寸有所減小。AT89C2051芯片的20個引腳功能為: 8圖3 AT89C2051引腳配置 VCC 電源電壓;GND 接地;RST 復位輸入。當RST變?yōu)楦唠娖讲⒈3?個機器周期時,所有I/O引腳復位至“1”;XTAL1 反向振蕩放大器的輸入及內部時鐘工作電路的輸入;XTAL2 來自反向振蕩放大器的輸出。9P1口 8位雙向I/O口。引腳P1.2P1.7提供內部上拉,當作為輸入并被外部下拉為低電平時,它們將輸出電流,這是因內部上拉的緣故。P1.0和P1.1需要外部上拉,可用作片內精確模擬比較器的正向輸入(AIN0)和反向輸入(AIN1

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

8、.4T0(定時器0外部輸入)P3.5T1(定時器1外部輸入)表1 P3口特殊功能112.2 60秒旋轉譯碼驅動原理 按常規(guī)傳統(tǒng)設計,需60進制譯碼驅動電路才能實現(xiàn)60秒旋轉譯碼驅動,若用六片十進制計數(shù)譯碼器構成六十進制計數(shù)譯碼電路,則電路連線多(需要120根連線),硬件電路龐大,開銷大。為此,我們巧妙地采用了兩片CD4017進行六十進制計數(shù)譯碼,實現(xiàn)60秒旋轉譯碼驅動。既減少了電路的復雜程度又可降低了成本。圖4為CD4017功能引腳圖,圖5為其時序圖。 12圖5 CD4017時序圖 圖4 CD4017引腳圖 13 CD4017集成電路是十進制計數(shù)/時序譯碼器,共有10個譯碼輸出Q0Q9;每個譯

9、碼輸出通常處于低電平,且在時鐘脈沖由低到高的上升沿輸出高電平;每個高電平輸出維持1個時鐘周期;每輸入10個時鐘脈沖,輸出一個進位脈沖,因此進位輸出信號可作為下一級計數(shù)器的時鐘信號。在清零輸入端(R)加高電平或正脈沖時,只有輸出端Q0為高電平,其余各輸出端均為低電平“0”。 為實現(xiàn)對發(fā)光二極管的驅動,將每一個譯碼輸出端口接一只發(fā)光二極管,并將二極管串聯(lián)限流電阻后接地。當譯碼端口Q0Q9中任一端口為高電平,則對應的發(fā)光二極管點亮,如圖6所示。 14 仔細考查CD4017的功能,可發(fā)現(xiàn)其10個輸出的高電平是相互排斥的,即任一時刻只有一只發(fā)光二極管點亮,因此可將圖6電路進一步簡化為如圖7所示,從而簡化

10、電路設計。 圖6 CD4017控制LED原理圖圖7 優(yōu)化后控制LED原理圖15 在本電子鐘設計中,每秒點亮一個發(fā)光二極管,循環(huán)點亮一周共需60個發(fā)光二極管,若用上述的6片CD4017實現(xiàn)驅動,顯然電路復雜。為此我們選用兩片CD4017和一片6反相器,采用“縱橫雙譯碼”技術,巧妙地實現(xiàn)60秒旋轉譯碼驅動,其中一片接成10進制,一片接成6進制,實現(xiàn)610=60的功能,具體連接方法如圖8所示。16圖8 發(fā)光二極管“縱橫雙譯碼”循環(huán)點亮LED原理圖17 將周期為1秒的輸入脈沖作為其中一片CD4017的時鐘脈沖,而此片的級聯(lián)進位輸出端(QC)作為另一片的時鐘輸入,并將Q6與復位端相連。在兩片譯碼輸出端交

11、叉點上接入發(fā)光二極管,構成610矩陣。根據(jù)CD4017時序特點,在初始狀態(tài),作為高位(縱)的CD4017譯碼器輸出端口Q0處于高平,經(jīng)反相器反相后為低電平。當作為低位(橫)的CD4017譯碼器輸出端口Q0Q9依次輸出高電平后,則對應的二極管LD1LD10依次點亮;此后由于QC端的進位,高位CD4017譯碼輸出端口Q1輸出高電平,反相后輸出低電平,當?shù)臀坏腃D4017譯碼輸出端口Q0Q9依次輸出高電平后,二極管LD11LD20依次點亮。如此往復,直至高位Q6向復位端輸入高電平,CD4017復位,60秒循環(huán)點亮重新開始。 182.3 時分顯示部件 由于系統(tǒng)要顯示的內容較簡單,顯示量不多,所以選用數(shù)

12、碼管既方便又經(jīng)濟。LED有共陰極和共陽極兩種。如圖8所示。 二極管的陰極連接在一起,通常此公共陰極接地,而共陽極則將發(fā)光二極管的陽極連接在一起,接入+5V的電壓。一位顯示器由8個發(fā)光二極管組成,其中7個發(fā)光二極管構成字型“8”的各個筆劃(段)ag,另一個小數(shù)點為dp發(fā)光二極管。當在某段發(fā)光二極管施加一定的正向電壓時,該段筆劃即亮;不加電壓則暗。為了保護各段LED不被損壞,需外加限流電阻。19圖9 LED數(shù)碼管結構原理圖20 眾所周知,LED顯示數(shù)碼管通常由硬件7段譯碼集成電路,完成從數(shù)字到顯示碼的譯碼驅動。本系統(tǒng)采用軟件譯碼,以減小體積,降低成本和功耗,軟件譯碼的另一優(yōu)勢還在于比硬件譯碼有更大

13、的靈活性。所謂軟件譯碼,即由單片機軟件完成從數(shù)字到顯示碼的轉換。從LED數(shù)碼管結構原理可知,為了顯示字符,要為LED顯示數(shù)碼管提供顯示段碼,組成一個“8”字形字符的7段,再加上1個小數(shù)點位,共計8段,因此提供給LED數(shù)碼管的顯示段碼為1個字節(jié)。各段碼位與顯示段的對應關系如表2。 段碼位D7D6D5D4D3D2D1D0顯示段dpgfedcba表2 各段碼位的對應關系21字型共陽段碼共陰段碼字型共陽段碼共陰段碼0C0H3FH990H6FH1F9H06HA88H77H2A4H5BHB83H7CH3BOH4FHCC6H39H499H66HDA1H5EH592H6DHE86H79H682H7DHF84H

14、71H7F8H07H空白FFH00H880H7FHP8CH73H表3 LED顯示段碼本表所列各字符的顯示段碼均為小數(shù)點不亮的情況。 22 根據(jù)AT89C2051單片機灌電流能力強,拉電流能力弱的特點,我們選用共陽數(shù)碼管。將AT89C2051的P1.0P1.7分別與共陽數(shù)碼管的ag及dp相連,高電平的位對應的LED數(shù)碼管的段暗,低電平的位對應的LED數(shù)碼管的段亮,這樣,當P0口輸出不同的段碼,就可以控制數(shù)碼管顯示不同的字符。例如:當P0口輸出的段碼為1100 0000,數(shù)碼管顯示的字符為0。 數(shù)碼管顯示器有二種工作方式,即靜態(tài)顯示方式和動態(tài)掃描顯示方式。為節(jié)省端口及降低功耗,本系統(tǒng)采用動態(tài)掃描顯

15、示方式。動態(tài)掃描顯示方式需解決多位LED數(shù)碼管的“段控”和“位控”問題,本電路的“段控”(即要顯示的段碼的控制)通過P0口實現(xiàn);而每一位的公共端,即LED數(shù)碼管的“位控”,則由P3口控制。 23 這種連接方式由于多位字段線連在一起,因此,要想顯示不同的內容,必然要采取輪流顯示的方式,即在某一瞬間,只讓其中的某一位的字位線處于選通狀態(tài),其它各位的字位線處于斷開狀態(tài),同時字段線上輸出這一位相應要顯示字符的字段碼。在這一瞬時,只有這一位在顯示,其他幾位則暗。在本系統(tǒng)中,字位線的選通與否是通過PNP三極管的導通與截止來控制,即三極管處于“開關”狀態(tài)。 系統(tǒng)的時分顯示部件由4只7段共陽LED數(shù)碼管構成,

16、前兩只用于時的顯示,后兩只用于分的顯示。值得一提的是,在設計中需要實現(xiàn)時與分之間的兩個閃爍點,為此,將第三只LED數(shù)碼管倒置擺放,這樣就很巧妙地形成了兩個很自然的閃爍點。與此同時,為了能使兩點顯示能夠形象的表示時鐘“秒”的變化,設計時,將兩個點由P1.7單獨控制,每隔一秒使P1.7發(fā)送一個正脈沖,從而實現(xiàn)了兩個點的閃爍顯示,閃爍周期為一秒。 243 系統(tǒng)的軟件構成及功能 本系統(tǒng)的軟件系統(tǒng)主要可分為主程序和定時器中斷程序兩大模塊。在程序過程中,加入了抗干擾措施。下面對部分模塊作介紹。31 系統(tǒng)主程序設計 主程序的功能是完成系統(tǒng)的初始化,在顯示時間之前,對系統(tǒng)是否停電狀態(tài)進行檢測;若停電,將系統(tǒng)進

17、入低功耗狀態(tài),用電池電壓維持單片機計時工作,但此時不顯示時間,用節(jié)省用電;若不停電,則將時分發(fā)送顯示。程序流程如圖9所示。32 中斷程序設計 中斷程序(如圖10所示)完成時間計數(shù),時間調整,誤差消除等功能。中斷采用AT89C2051內部T0中斷實現(xiàn),定時時間為125ms,當時間到達125ms8,即1分鐘時,分計數(shù)緩沖器MINBUFFER增加1,到達1小時,則時計數(shù)緩沖器HOURBUFFER增加1,并將分、時的個位、十位放入顯示緩沖器。當分計數(shù)緩沖器和時計數(shù)緩沖器分別到達60min、24h時,則對它們清零,以便從新計數(shù)。在中斷設計中,還通過軟件實現(xiàn)了累計誤差消除功能,使整個系統(tǒng)時間的精確度得到保

18、證。 25圖10 系統(tǒng)主程序流程圖26圖11 定時中斷程序274 結束語 上述電子鐘,無論在外觀上還是功能上都實現(xiàn)了較為完善的設計。特別值得一提的是本系統(tǒng)在精度上的設計,突破傳統(tǒng)的方法,對可能產(chǎn)生的積累誤差采用“抵消法”,從而有效地降低了時間誤差。 由于計數(shù)時產(chǎn)生的積累誤差所導致的時間誤差,是所有的電子計時系統(tǒng)共同存在的問題。但在目前市場上的電子時鐘產(chǎn)品,如計算機中的時鐘,手機中的時鐘等并沒有有效的采取消除誤差的措施。本系統(tǒng)設計的消除積累誤差來減少時間誤差的軟件方法,并不需要任何的硬件,因此在不增加成本的情況下,可以普遍用于所有的電子時鐘產(chǎn)品。 28名稱型號數(shù)量 單片機AT89C20511 數(shù)

19、字集成芯片CD40172 數(shù)字集成芯片CD40691超高亮數(shù)碼管共陽 尺寸0.5inch4超高亮發(fā)光二極管直徑3 紅、透明13超高亮發(fā)光二極管直徑3 綠、透明50 普通二極管IN40014 普通二極管IN41482 穩(wěn)壓二極管C4V7( 4.7V)1 三極管90125 三極管90131新穎60秒旋轉電子鐘器件清單 29新穎60秒旋轉電子鐘器件清單 名稱型號數(shù)量 輕觸按鍵?。ǔ叽?6mm5.5)3 蜂鳴器5 V1 晶振6M(小體積)1 底座14腳1 底座16腳2 底座20腳1 底座40腳1 電阻220歐姆,1/8瓦8 電阻4.7K,1/8瓦530名 稱型號數(shù)量 電阻100歐姆,1/8瓦1 電阻2

20、70歐姆,1/8瓦2 電容100微法/25伏2 電容220微法/25伏1 電容30P 瓷片3 電容104(0.1微法)3 變壓器5 V/100 M A1 電源線150cm1 固定腳銅3套 PCB線路板直徑1151 熱縮管直徑20.2米新穎60秒旋轉電子鐘器件清單 3132電子鐘電源 33新穎60秒LED旋轉電 子 鐘正 面 圖34新穎60秒LED旋轉電 子 鐘反 面 圖35新穎60秒LED旋轉電 子 鐘顯示溫度36新穎60秒LED旋轉電 子 鐘夜間靚姿 37新穎60秒旋轉電子鐘實物 238 60秒旋轉電子鐘部分參考程序清單ALARMHBUFF2 EQU 77H ;鬧鈴時間的時十位計時綬沖ALA

21、RMHBUFF1 EQU 76H ;鬧鈴時間的時個位計時綬沖ALARMMBUFF2 EQU 75H ;鬧鈴時間的分十位計時綬沖ALARMMBUFF1 EQU 74H ;鬧鈴時間的分個位計時綬沖HBUFF2 EQU 73H ;時十位計時綬沖HBUFF1 EQU 72H ;時個位計時綬沖MBUFF2 EQU 71H ;分十位計時綬沖MBUFF1 EQU 70H ;分個位計時綬沖DP EQU 6FH ;控制數(shù)碼管點的亮暗NUM EQU 78H ;前四秒還是后四秒計數(shù) SBUFF EQU 79H ;秒十進制計時綬沖(低四位對應個位, 高四位對應十位)39MBUFF EQU 7AH ;分十進制計時綬沖H

22、BUFF EQU 7BH ;時十進制計時綬沖ALARMMBUFF EQU 7CH ;鬧鈴時間的分十進制計時綬沖ALARMHBUFF EQU 7DH ;鬧鈴時間的時十進制計時綬沖NUMT1 EQU 67H ;用于控制時間調整時按鍵p3.2 一次按 下時,計數(shù)器T1中斷的次數(shù)NUMT2 EQU 68H ;用于控制時間調整時按鍵p3.3 一次按下時,計數(shù)器T1中斷的次數(shù)KEYNUMT1 EQU 69H ;用于存儲NUMT1已經(jīng)計數(shù)到第幾個半秒 KEYNUMT2 EQU 6AH ;用于存儲NUMT1已經(jīng)計數(shù)到第幾個半秒STOREKEYNUMT2 EQU 6BH ;用于存儲當前KEYNUMT1的值,以

23、和下次做比較,看是否有變化STOREKEYNUMT1 EQU 6CH ;用于存儲當前KEYNUMT2的值,以和下次做比較,看是否有變化 40 ORG 0000H AJMP START ORG 000BH MOV TH0 , #0BH ;設置計數(shù)初值 ,R4用來存儲低位的初值 MOV TL0 , R4 AJMP INTERT0 ORG 001BH AJMP INTERT1 ORG 0040HSTART: MOV NUMT1 , #00H MOV NUMT2 , #00H MOV KEYNUMT1 , #00H MOV KEYNUMT2 , #00H MOV STOREKEYNUMT2 , #00

24、H MOV STOREKEYNUMT1 , #00H MOV NUM , #8 MOV DPTR , #TAB41 MOV ALARMHBUFF , #18H ;置鬧鈴時間初始值為18:55 MOV ALARMMBUFF , #55H MOV ALARMHBUFF2, #01H MOV ALARMHBUFF1, #08H MOV ALARMMBUFF2 , #05H MOV ALARMMBUFF1 , #05H MOV HBUFF2, #01H ;置鬧鐘時間為18:53 MOV HBUFF1, #08H MOV MBUFF2 , #05H MOV MBUFF1 , #03H MOV HBUFF

25、 , #18H MOV MBUFF , #53H MOV SBUFF , #3CH ;置初始秒為60,計時時減 MOV TCON , #05H ;下降沿觸發(fā) MOV TMOD , #11H ;初始化定時器,T0 ,T1 16位計時 MOV TH0 , #0BH ;設置計數(shù)初值,125ms計時42 MOV TL0 , #0DBH MOV TH1 , #3CH ;T1置初值,進行100ms計時,用于調整時間 MOV TL1 , #0B0H MOV IE , #82H ;開T0中斷 SETB PT0 ;T0中斷優(yōu)先級最高 SETB TR0 ;允許T0計數(shù) SETB P3.2 SETB P3.3STA

26、RT1: MOV A , HBUFF ; 顯示時,7點以前及21點以后亮度調暗 SUBB A , #7H JC START2 MOV A , HBUFF SUBB A , #21H JNC START2 ACALL DISPLAY ACALL ZDBS AJMP START343START2: ACALL NIGHTDISPLAYSTART3: MOV A ,ALARMHBUFF ;檢測是否是定鬧時間 CJNE A , HBUFF , START4 MOV A , ALARMMBUFF CJNE A , MBUFF ,START4 MOV C, DP ;若是定鬧時間,則利用dp的值來決定蜂鳴

27、MOV P3.2, C MOV A , SBUFF JNZ START1 ;若還沒到1分鐘,則繼續(xù)蜂鳴 SETB P3.2START4: JNB P3.2,ADJUSTTIME1 ;循環(huán)等待中斷,并檢測是否 鍵按下,若是,則進入相應程序 JNB P3.3,ADJUSTTIME2 AJMP START1 44INT0中斷子程序ADJUSTTIME1: NOP MOV KEYNUMT1 ,#00H MOV TH1 , #3CH ;T1置初值,進行100ms計時, 用于調整時間 MOV TL1 , #0B0H SETB ET1 ;開T1中斷 SETB PT1 ;設T1中斷優(yōu)先級最高 SETB TR1

28、 ;允許T1計時 MOV STOREKEYNUMT1 , KEYNUMT1 ;存儲當前 次KEYNUMT1的值 TIME1_1:ACALL DISPLAY MOV A , KEYNUMT1 CJNE A , STOREKEYNUMT1,TIME1_2 ;若當前 KEYNUMT1的值與上一次的值不等,則時間加1分,否則 繼續(xù)循環(huán),等等至半分鐘 AJMP TIME1_345TIME1_2: MOV STOREKEYNUMT1 , KEYNUMT1 ;加1后存儲 當前的KEYNUMT1的值 ACALL ADDBUFF0 ;分加1TIME1_3: JNB P3.2,TIME1_1 ;若p3.2已關,則

29、退出增時, 否則繼續(xù)循環(huán) CLR ET1 CLR PT1 CLR TR1 AJMP START1 46時間增1分ADDBUFF0: MOV A , MBUFF ; 若按鍵小于1s,則分增1 ADD A , #1 DA A MOV MBUFF , A ANL A , #0FH MOV MBUFF1 , A MOV A , MBUFF SWAP A ANL A , #0FH MOV MBUFF2 , A MOV A , MBUFF CJNE A , #60H , ADDBUFF1 MOV MBUFF , #00H MOV MBUFF2 , #00H MOV MBUFF1 , #00H MOV A

30、, HBUFF ;時增1 47 ADD A , #1 DA A MOV HBUFF , A ANL A , #0FH MOV HBUFF1 , A MOV A , HBUFF SWAP A ANL A , #0FH MOV HBUFF2 , A MOV A , HBUFF CJNE A , #24H , ADDBUFF1 ;若沒到24小時, 則不必初值置0 MOV HBUFF , #00H MOV HBUFF2 , #00H MOV HBUFF1 , #00HADDBUFF1: RET 48INT1中斷子程序 ADJUSTTIME2: NOP ACALL DL100MS MOV C , P3.

31、3 JC TIME2_6 ;如果(P3.3按鍵100ms以上) 則不做處理 MOV KEYNUMT2 , #00H ;否則進入定鬧設置 MOV STOREKEYNUMT2 , KEYNUMT2 ;記錄當前NUMT2的 數(shù)據(jù),以看下次有沒改變TIME2_1: NOP MOV TH1 , #3CH ;T1置初值,進行100ms計時, 用于調整時間 MOV TL1 , #0B0H SETB ET1 ;開T1中斷 SETB PT1 ;設T1中斷優(yōu)先級最高 SETB TR1 ;允許T1計時 TIME2_2: ACALL ALARMDISPLAY MOV A , KEYNUMT2 CJNE A , STO

32、REKEYNUMT2 ,TIME2_3 AJMP TIME2_4 49TIME2_3: MOV STOREKEYNUMT2 , KEYNUMT2 MOV A , ALARMMBUFF ; 若按鍵小于1s,則分增1 ADD A , #1 DA A MOV ALARMMBUFF , A ANL A , #0FH MOV ALARMMBUFF1 , A MOV A , ALARMMBUFF SWAP A ANL A , #0FH MOV ALARMMBUFF2 , A MOV A , ALARMMBUFF CJNE A , #60H , TIME2_4 MOV ALARMMBUFF , #00H M

33、OV ALARMMBUFF2 , #00H MOV ALARMMBUFF1 , #00H MOV A , ALARMHBUFF ;時增1 ADD A , #1 DA A 50 MOV ALARMHBUFF , A ANL A , #0FH MOV ALARMHBUFF1 , A MOV A , ALARMHBUFF SWAP A ANL A , #0FH MOV ALARMHBUFF2 , A MOV A , ALARMHBUFF CJNE A , #24H , TIME2_4 ;若沒到24小時,則初值不必置0 MOV ALARMHBUFF , #00H MOV ALARMHBUFF2 , #

34、00H MOV ALARMHBUFF1 , #00HTIME2_4: NOP JNB P3.3,TIME2_2 ;若按鍵已經(jīng)未按,則退出循環(huán) CLR ET1 CLR TR1 MOV KEYNUMT2 , #00H MOV NUMT2 , #00H51 MOV R2 , #10 ; 直到p3.3 20s鐘內都是未按, 此時復原數(shù)據(jù),即退出設置TIME2_7: MOV R1 , #200 TIME2_5: ACALL ALARMDISPLAY ACALL DL1MS JNB P3.3 , TIME2_1 DJNZ R1 , TIME2_5 DJNZ R2 , TIME2_7TIME2_6: CLR

35、 ET1 CLR PT1 CLR TR1 LJMP START1 52T1中斷子程序INTERT1: NOP MOV TH1 , #3CH ;T1置初值,進行100ms計時, 用于調整時間 MOV TL1 , #0B0H PUSH ACC PUSH PSW CLR ET0 CLR ET1 ;關T1中斷 MOV A , NUMT1 INC A MOV NUMT1 , A ;中斷一次則相應的增加NUMT1 CJNE A , #5 , INTERT1NEXT ;每中斷五次,即半秒, 都增加KEYNUMT1 MOV A ,KEYNUMT1 INC A MOV KEYNUMT1 , A MOV NUMT

溫馨提示

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

評論

0/150

提交評論