單片機(jī)與嵌入式系統(tǒng)應(yīng)用出租車計(jì)價(jià)器設(shè)計(jì)_第1頁
單片機(jī)與嵌入式系統(tǒng)應(yīng)用出租車計(jì)價(jià)器設(shè)計(jì)_第2頁
單片機(jī)與嵌入式系統(tǒng)應(yīng)用出租車計(jì)價(jià)器設(shè)計(jì)_第3頁
單片機(jī)與嵌入式系統(tǒng)應(yīng)用出租車計(jì)價(jià)器設(shè)計(jì)_第4頁
單片機(jī)與嵌入式系統(tǒng)應(yīng)用出租車計(jì)價(jià)器設(shè)計(jì)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、單片機(jī)與嵌入式系統(tǒng)應(yīng)用課程作業(yè)出租車計(jì)價(jià)器設(shè)計(jì) 伍龍軍 05075 機(jī)械設(shè)計(jì)及理論2006年7月14日摘要:本文介紹了利用單片機(jī)AT89C52進(jìn)行出租車計(jì)價(jià)器的設(shè)計(jì)的過程,簡要介紹了DS1302涓流充電時(shí)鐘保持芯片的原理與應(yīng)用,并用Proteus軟件仿真。關(guān)鍵詞:出租車計(jì)價(jià)器,單片機(jī),DS13021 引言隨著生活水平的不斷提高,越來越多的人在短距離出行時(shí)選擇乘坐出租車,因此設(shè)計(jì)一個(gè)性能穩(wěn)定、計(jì)費(fèi)準(zhǔn)確、功能強(qiáng)大、使用方便的計(jì)價(jià)器就成為了人們關(guān)心的問題。本文對(duì)出租車計(jì)價(jià)器進(jìn)行了初步的設(shè)計(jì),現(xiàn)有功能基本能滿足當(dāng)前的需求。2 基本要求 (1)計(jì)價(jià)功能,在白天與夜間收費(fèi)標(biāo)準(zhǔn)不同;(2)時(shí)間顯示及修改功能

2、。假設(shè):輪胎每轉(zhuǎn)一圈為0.5m,價(jià)格為:白天起價(jià)1公里5元,單價(jià)每公里1.4元;夜間起價(jià)1公里6元,單價(jià)每公里1.8元。夜間為22:00次日06:00前。3 硬件電路設(shè)計(jì)3.1計(jì)價(jià)器總體硬件結(jié)構(gòu)計(jì)價(jià)器總體組成框圖如圖1所示。3.2基本外圍電路基本外圍電路包括晶振電路和復(fù)位電路。晶振采用12MHz,方便計(jì)時(shí)。由于在Proteus中找不到專用復(fù)位芯片,所以采用基本的上電與按鈕復(fù)位電路。如附錄1中所示。3.3各部分電路下面介紹各部分電路的設(shè)計(jì)。計(jì)費(fèi)電路在實(shí)際應(yīng)用中,常常使用霍爾傳感器測距,輪胎每轉(zhuǎn)一圈即發(fā)送一個(gè)方波。為方便模擬,這里加入一個(gè)信號(hào)發(fā)生器代替霍爾傳感器,用來產(chǎn)生汽車行駛產(chǎn)生的方波。而且信

3、號(hào)發(fā)生器產(chǎn)生的方波信號(hào)可以改變頻率,就相當(dāng)于改變了汽車的行駛速度。再加入示波器后,非常便于觀察。采用單片機(jī)的T0計(jì)數(shù)器計(jì)數(shù)。并將其設(shè)置為門控方式,當(dāng)外部中斷0的值為1時(shí)打開中斷。如電路圖中所示,當(dāng)計(jì)價(jià)開關(guān)閉合后,相當(dāng)于將“空車”牌按下,從而打開T0計(jì)數(shù)器中斷,從而當(dāng)方波進(jìn)入T0后即計(jì)數(shù),使金額和里程增加。當(dāng)計(jì)價(jià)開關(guān)打開后,外部中斷0接口的值變?yōu)?,又會(huì)引發(fā)外部中斷0,此時(shí)調(diào)用清零程序,可將金額、里程等值復(fù)位。時(shí)鐘及金額、里程顯示電路該設(shè)計(jì)采用兩片6位8段LED顯示器。一片顯示當(dāng)前時(shí)間,格式為HH:MM:SS。一片顯示金額和里程,分別顯示三位:金額顯示十元、元和角,里程顯示十公里、公里、十分之一

4、公里。當(dāng)未計(jì)費(fèi)時(shí)不顯示金額和里程??紤]到實(shí)際情況,金額和里程均不會(huì)達(dá)到100,因此采用6位LED顯示已足夠。整個(gè)顯示過程采用輪流顯示每一位的方式,由T1計(jì)時(shí)器計(jì)時(shí),每4ms顯示一位。顯示內(nèi)容由P0口輸出。用2片24譯碼器74LS139,可將P2口低4位送出的內(nèi)容譯碼為16個(gè)地址,這里采用其中的12個(gè),代表12位LED的顯示地址。按鍵電路這里使用了3個(gè)按鍵,分別為:設(shè)置按鍵、鍵、鍵。當(dāng)未計(jì)費(fèi)時(shí)即可使用這三個(gè)鍵設(shè)置時(shí)間。按一下設(shè)置按鍵為設(shè)置小時(shí),兩下設(shè)置分鐘,三下設(shè)置秒鐘,第四下保存設(shè)置。設(shè)置過程中設(shè)置指示燈點(diǎn)亮。若在設(shè)置過程中開始計(jì)費(fèi),則設(shè)置不會(huì)被保存,且指示燈熄滅。按鍵分別接入P2口的高3位,

5、由外部中斷1響應(yīng)。當(dāng)按下按鍵后即觸發(fā)外部中斷1。由于按鍵時(shí)間相對(duì)于單片機(jī)響應(yīng)時(shí)間來說非常長,所以此時(shí)可根據(jù)P2口的高3位判斷是哪個(gè)按鍵按下,再在中斷程序中做出相應(yīng)操作。 DS1302芯片接口電路DS1302是DALLAS公司推出的涓流充電時(shí)鐘芯片,內(nèi)含有一個(gè)實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)靜態(tài)RAM通過簡單的串行接口與單片機(jī)進(jìn)行通信。實(shí)時(shí)時(shí)鐘/日歷電路提供秒、分、時(shí)、日、日期、月、年的信息,每月的天數(shù)和閏年的天數(shù)可自動(dòng)調(diào)整,時(shí)鐘操作可通過AM/PM 指示決定采用24或12小時(shí)格式。DS1302與單片機(jī)之間能簡單地采用同步串行的方式進(jìn)行通信,僅需用到三個(gè)口線:(1)RES復(fù)位,(2)I/O(數(shù)據(jù)線),(

6、3)SCLK(串行時(shí)鐘)。時(shí)鐘/RAM的讀/寫數(shù)據(jù)以一個(gè)字節(jié)或多達(dá)31個(gè)字節(jié)的字符組方式通信。DS1302工作時(shí)功耗很低,保持?jǐn)?shù)據(jù)和時(shí)鐘信息時(shí)功率小于1mW。DS1302是由DS1202改進(jìn)而來,增加了以下的特性:雙電源管腳用于主電源和備份電源供應(yīng),Vcc1為可編程涓流充電電源,附加七個(gè)字節(jié)存儲(chǔ)器。它廣泛應(yīng)用于電話、傳真、便攜式儀器以及電池供電的儀器儀表等產(chǎn)品領(lǐng)域。下面將主要的性能指標(biāo)作一綜合:實(shí)時(shí)時(shí)鐘具有能計(jì)算2100 年之前的秒、分、時(shí)、日、日期、星期、月、年的能力,還有閏年調(diào)整的能力u 318位暫存數(shù)據(jù)存儲(chǔ)RAMu 串行I/O 口方式使得管腳數(shù)量最少u 寬范圍工作電壓:2.05.5Vu

7、工作電流:2.0V時(shí),小于300nAu 讀/寫時(shí)鐘或RAM數(shù)據(jù)時(shí),有兩種傳送方式:單字節(jié)傳送和多字節(jié)傳送(字符組方式)u 8腳DIP封裝或可選的8腳SOIC封裝(根據(jù)表面裝配)u 簡單3 線接口u 與TTL 兼容(Vcc=5V)u 可選工業(yè)級(jí)溫度范圍-40 度+85度u 與DS1202 兼容u 在DS1202 基礎(chǔ)上增加的特性: 對(duì)Vcc1有可選的涓流充電能力 雙電源管用于主電源和備份電源供應(yīng) 備份電源管腳可由電池或大容量電容輸入 附加的7 字節(jié)暫存存儲(chǔ)器DS1302 的管腳排列及描述如下圖及表所示管腳描述:X1,X2 -32.768KHz 晶振管腳GND -地RST -復(fù)位腳I/O -數(shù)據(jù)輸

8、入/輸出引腳SCLK -串行時(shí)鐘Vcc1,Vcc2 -電源供電管腳該電路通過從DS1302芯片接收數(shù)據(jù)獲取時(shí)間。若時(shí)間為夜間(22:00次日06:00前),則點(diǎn)亮夜間指示燈,并改變價(jià)格。4 程序設(shè)計(jì)4.1總體程序框圖如圖所示為總體程序框圖4.2子程序設(shè)計(jì)子程序主要包括:初始化程序INIT、讀取時(shí)間程序RDTIME、寫入時(shí)間程序WTTIME。兩個(gè)時(shí)間程序還需調(diào)用:從DS1302讀取數(shù)據(jù)的子程序RECEIVE、從DS1302發(fā)送數(shù)據(jù)的子程序SEND。初始化程序INIT主要功能是將各項(xiàng)數(shù)據(jù)賦初值、開中斷。讀取時(shí)間程序RDTIME則給控制字賦值,然后調(diào)用RECEIVE程序,再將返回的值分別保存到小時(shí)、

9、分鐘、秒鐘。最后根據(jù)小時(shí)對(duì)單價(jià)作出調(diào)整。寫入時(shí)間程序WTTIME則給控制字賦值,然后調(diào)用SEND程序分別將小時(shí)、分鐘、秒鐘保存到DS1302芯片中。4.3中斷程序設(shè)計(jì)中斷程序在整個(gè)程序中占有最重要到地位。下面分別作介紹。 計(jì)數(shù)器T0的中斷程序計(jì)數(shù)器T0的中斷程序START框圖如下。在該程序中,接收到第一個(gè)脈沖后開始計(jì)算里程,將金額設(shè)置為起價(jià)5元。之后每100個(gè)脈沖(50米)對(duì)里程做一次加法運(yùn)算。當(dāng)脈沖數(shù)達(dá)到2000個(gè)(1公里)后開始對(duì)金額遞增。外部中斷0的中斷程序當(dāng)計(jì)時(shí)開關(guān)斷開后會(huì)觸發(fā)外部中斷0,從而調(diào)用中斷程序CLEAR。該程序?qū)⒏黜?xiàng)數(shù)據(jù)復(fù)位。外部中斷1的中斷程序當(dāng)沒有計(jì)費(fèi)且按下按鍵時(shí)觸發(fā)外

10、部中斷1。首先判斷按下哪個(gè)鍵。若按下設(shè)置鍵則改變?cè)O(shè)置類型。按一次設(shè)置鍵,則設(shè)置小時(shí);按兩次則設(shè)置分鐘;按三次設(shè)置秒鐘;按四次則調(diào)用WTTIME程序?qū)⒃O(shè)置好的值寫入DS1302芯片中。若按下鍵,則判斷設(shè)置類型,根據(jù)設(shè)置類型分別對(duì)小時(shí)、分鐘、秒鐘加一。若按下鍵,則根據(jù)設(shè)置類型分別對(duì)小時(shí)、分鐘、秒鐘減一。定時(shí)器T1的中斷程序定時(shí)器T1的中斷程序即為顯示程序。該程序每4ms顯示一位。若沒有處于設(shè)置時(shí)間狀態(tài),則每秒鐘讀取一次時(shí)間;否則不讀取時(shí)間,只顯示當(dāng)前值,以便于對(duì)時(shí)間進(jìn)行設(shè)置。顯示程序輪流對(duì)12位LED進(jìn)行顯示,并在適當(dāng)?shù)胤郊由闲?shù)點(diǎn)。若沒有計(jì)費(fèi),則不顯示金額和里程。流程圖見下頁。5總結(jié)該設(shè)計(jì)實(shí)現(xiàn)了

11、計(jì)價(jià)器的基本功能。若要進(jìn)行擴(kuò)展,可在以下方面進(jìn)行考慮:語音功能、打印功能、防作弊功能、IC卡的使用以及其它對(duì)系統(tǒng)的保護(hù)功能等。通過這次設(shè)計(jì),我對(duì)8051系列單片機(jī)的內(nèi)部結(jié)構(gòu)、存儲(chǔ)空間有了更深入細(xì)致的了解,對(duì)匯編程序的編寫及中斷的應(yīng)用更加熟練;通過對(duì)DS1302芯片、LED顯示器和按鍵的使用,對(duì)接口技術(shù)對(duì)應(yīng)用有了初步的認(rèn)識(shí)。希望今后通過努力,使自己對(duì)該課程知識(shí)及應(yīng)用能達(dá)到熟練掌握直至精通的程度。附錄1:電路圖附錄2:計(jì)價(jià)效果圖(晚上時(shí)間21:09:10,公里數(shù)為8.4,價(jià)格為15.3)附錄3:時(shí)間設(shè)置效果圖(當(dāng)前時(shí)間:21:24:20,設(shè)置時(shí)間:23:37:56)附錄4:源代碼;*;出租車計(jì)價(jià)器

12、程序;05075,伍龍軍;*;各項(xiàng)常量;*PRICE EQU 1FH ;保存單價(jià)地址PULSE EQU 1EH ;保存脈沖數(shù)的地址TURN EQU 1DH ;顯示輪換記錄器,為12時(shí)顯示小時(shí)十位,為11時(shí)顯示小時(shí)個(gè)位,依次類推RDTM EQU 1CH ;讀取時(shí)間計(jì)數(shù)器,0.5秒鐘讀一次SUMYUAN EQU 1BH ;保存金額元(BCD碼)地址SUMJF EQU 1AH ;保存金額角和分(BCD碼)地址DISM EQU 19H ;保存路程公里數(shù)地址DISF EQU 18H ;保存路程小數(shù)地址TIMEH EQU 17H ;保存時(shí)間小時(shí)地址TIMEM EQU 16H ;保存時(shí)間分鐘地址TIMES

13、EQU 15H ;保存時(shí)間秒鐘地址BITCNT EQU 14H ;保存?zhèn)鬏斘坏牡刂稢MD EQU 13H ;保存命令字的地址RCV EQU 12H ;接收數(shù)據(jù)緩沖區(qū)的地址SND EQU 11H ;發(fā)送數(shù)據(jù)緩沖區(qū)的地址SETTM EQU 10H ;設(shè)置時(shí)間SPRICE EQU 09H ;保存起價(jià)地址HOUR1 EQU 0FH ;小時(shí)十位顯示地址HOUR0 EQU 0EH ;小時(shí)個(gè)位顯示地址MIN1 EQU 0DH ;分鐘十位顯示地址MIN0 EQU 0CH ;分鐘個(gè)位顯示地址SEC1 EQU 0BH ;秒鐘十位顯示地址SEC0 EQU 0AH ;秒鐘個(gè)位顯示地址TENY EQU 09H ;金額十

14、元顯示地址ONEY EQU 08H ;金額元顯示地址TENTHY EQU 07H ;金額角顯示地址TENM EQU 06H ;路程十公里顯示地址ONEM EQU 05H ;路程公里顯示地址TENTHM EQU 04H ;路程十分之一公里顯示地址DSIO BIT P1.0 ;DS1302的數(shù)據(jù)傳送總線地址DSCLK BIT P1.1 ;DS1302的時(shí)鐘控制總線地址DSRST BIT P1.2 ;DS1302的復(fù)位總線地址LEDNT BIT P1.7 ;夜晚指示燈LEDSET BIT P1.6 ;設(shè)置時(shí)間指示燈STTM BIT P2.5 ;設(shè)置按鍵口STADD BIT P2.6 ;時(shí)間增加按鍵口

15、STDEC BIT P2.7 ;時(shí)間減少按鍵口;*;程序開始;* ORG 0000H AJMP MAIN ORG 0003H ;外部中斷0程序,清零 AJMP CLEAR ORG 000BH ;T0中斷程序,計(jì)價(jià),計(jì)里程 AJMP START ORG 0013H AJMP BUTTON ;外部中斷1程序,響應(yīng)按鍵 ORG 001BH ;T1中斷程序,顯示 AJMP DISPMAIN: ACALL INIT AJMP $;*;子程序;*;初始化程序;設(shè)置初值,開中斷;*INIT: MOV SP,#30H ;設(shè)置堆棧到用戶RAM區(qū) MOV DPTR,#TAB MOV PRICE,#07H MOV

16、SPRICE,#05H CLR LEDNT CLR LEDSET MOV SETTM,#4 MOV TURN,#12 MOV SUMYUAN,#0ABH ;金額為0 MOV SUMJF,#0AAH MOV DISM,#0ABH ;路程為0 MOV DISF,#0AAH MOV PULSE,#22 ACALL RDTIME ;讀取時(shí)間 MOV RDTM,#250 ;讀取時(shí)間計(jì)數(shù)器初值 MOV TMOD,#00011101B ;T1以方式1計(jì)時(shí),非門控方式 ;T0以方式1計(jì)數(shù),門控方式 SETB TR0 ;T0采用門控方式 SETB IT0 ;外部中斷0為邊沿觸發(fā)方式 SETB IT1 ;外部中斷

17、1為邊沿觸發(fā)方式 CLR P3.2 MOV TH1,#0F0H ;4ms產(chǎn)生一次中斷 MOV TL1,#060H MOV TH0,#0FFH ;第一個(gè)脈沖發(fā)生中斷賦初值 MOV TL0,#0FFH SETB EA ;開CPU中斷 SETB EX0 ;開外部中斷0 SETB EX1 ;開外部中斷1 SETB ET0 ;開T0中斷 SETB ET1 ;開T1中斷 SETB TR1 ;T1計(jì)時(shí)開始 RET;*;RDTIME讀取時(shí)間程序;從DS1302讀取時(shí)間;*RDTIME: MOV CMD,#85H ;接收小時(shí)控制字#85H ACALL RECEIVE MOV TIMEH,RCV MOV CMD,

18、#83H ;接收分鐘控制字#83H ACALL RECEIVE MOV TIMEM,RCV MOV CMD,#81H ;接收秒鐘控制字#81H ACALL RECEIVE MOV TIMES,RCV MOV A,TIMEH ;判斷時(shí)間, ;若在6點(diǎn)之前或22點(diǎn)之后,價(jià)格改變 CJNE A,#06H,$+3 JNC SKIP6 MOV PRICE,#09H ;6點(diǎn)之前 MOV SPRICE,#06H SETB LEDNT AJMP NIGHTSKIP6: CJNE A,#22H,$+3 JC DAY MOV PRICE,#09H ;22點(diǎn)之后 MOV SPRICE,#06H SETB LEDNT

19、 AJMP NIGHTDAY: MOV PRICE,#07H ;白天 MOV SPRICE,#05H CLR LEDNTNIGHT: RET;*;WTTIME寫入時(shí)間程序;將調(diào)整的時(shí)間輸入DS1302;*WTTIME: MOV CMD,#84H ;發(fā)送小時(shí)控制字#84H MOV SND,TIMEH ACALL SEND MOV CMD,#82H ;發(fā)送分鐘控制字#82H MOV SND,TIMEM ACALL SEND MOV CMD,#80H ;發(fā)送秒鐘控制字#80H MOV SND,TIMES ACALL SEND RET;*;從DS1302讀出數(shù)據(jù)的程序;*RECEIVE: CLR DS

20、RST ;復(fù)位引腳為低電平,所有數(shù)據(jù)傳送終止 NOP CLR DSCLK ;清時(shí)鐘總線 NOP SETB DSRST ;復(fù)位引腳為高電平,邏輯控制有效 NOP MOV A,CMD ;準(zhǔn)備發(fā)送命令字節(jié) MOV BITCNT,#8 ;命令字節(jié)為8位RB0: RRC A ;將最低位傳送給進(jìn)位位C MOV DSIO,C ;位傳送至數(shù)據(jù)總線 NOP SETB DSCLK ;時(shí)鐘上升沿,發(fā)送數(shù)據(jù)有效 NOP CLR DSCLK ;清時(shí)鐘總線 DJNZ BITCNT,RB0 ;位傳送未完畢則繼續(xù) NOP ;準(zhǔn)備接收數(shù)據(jù) CLR A ;清累加器 CLR C ;清進(jìn)位位C MOV BITCNT,#8 ;接收位數(shù)

21、為8位RB1: NOP MOV C,DSIO ;數(shù)據(jù)總線上的數(shù)據(jù)傳送給C RRC A ;從最低位接收數(shù)據(jù) SETB DSCLK ;時(shí)鐘總線置高 NOP CLR DSCLK ;時(shí)鐘下降沿接收數(shù)據(jù)有效 DJNZ BITCNT,RB1 ;接收未完成則繼續(xù) NOP CLR DSRST ;邏輯操作完畢,清RST MOV RCV,A ;接收到的完整數(shù)據(jù)字節(jié) ;放入接收數(shù)據(jù)緩沖區(qū) RET;*;向DS1302寫入數(shù)據(jù)的程序;*SEND: CLR DSRST ;復(fù)位引腳為低電平,所有數(shù)據(jù)傳送終止 NOP CLR DSCLK ;清時(shí)鐘總線 NOP SETB DSRST ;復(fù)位引腳為高電平,邏輯控制有效 NOP M

22、OV A,CMD ;準(zhǔn)備發(fā)送命令字節(jié) MOV BITCNT,#8SB0: RRC A MOV DSIO,C NOP SETB DSCLK NOP CLR DSCLK DJNZ BITCNT,SB0 NOP MOV A,SND ;準(zhǔn)備發(fā)送數(shù)據(jù),過程與上面相同 MOV BITCNT,#8SB1: RRC A MOV DSIO,C NOP SETB DSCLK NOP CLR DSCLK DJNZ BITCNT,SB1 NOP CLR DSRST RET;*;以下為中斷程序;*;T0的中斷程序;來一個(gè)脈沖記一次數(shù);*START: MOV TH0,#0FFH ;每100個(gè)脈沖(50米)計(jì)一次 MOV

23、TL0,#09CH MOV SETTM,#4 CLR LEDSET MOV A,PULSE CJNE A,#22,NEXT ;價(jià)格初始化 MOV SUMYUAN,SPRICE ;起價(jià) MOV SUMJF,#00H MOV DISM,#00H ;路程為0 MOV DISF,#00H MOV PULSE,#21 AJMP SKIPCTNEXT: MOV A,DISF ;每100個(gè)脈沖增加50米 ADD A,#5 DA A MOV DISF,A MOV A,DISM ADDC A,#0 DA A MOV DISM,A DJNZ PULSE,SKIPCT ;未到1公里(20*100個(gè)脈沖)不計(jì)費(fèi) MO

24、V A,SUMJF ;計(jì)算角和分 ADD A,PRICE ;加7分錢,夜間加9分 DA A ;調(diào)整為BCD碼 MOV SUMJF,A ;保存 MOV A,SUMYUAN ;計(jì)算元 ADDC A,#0 ;加進(jìn)位 DA A ;調(diào)整 MOV SUMYUAN,A ;保存 MOV PULSE,#1SKIPCT: RETI;*;外部中斷0中斷程序;將金額和路程清零;*CLEAR: MOV SETTM,#4 MOV SUMYUAN,#0ABH MOV SUMJF,#0AAH MOV DISM,#0ABH MOV DISF,#0AAH MOV PULSE,#22 MOV TH0,#0FFH ;第一個(gè)脈沖發(fā)生中

25、斷賦初值 MOV TL0,#0FFH RETI;*;外部中斷1程序BUTTON;按鍵程序,判斷是哪一個(gè)按鍵按下,并作出相應(yīng)設(shè)置;*BUTTON: MOV A,P2 ANL A,#0E0H ;取P2的最高三位 CJNE A,#0C0H,SETAD ;第5位為0時(shí)為設(shè)置鍵 DJNZ SETTM,ST ;若按到第4為設(shè)置時(shí)間成功 CLR LEDSET ;設(shè)置燈熄滅 ACALL WTTIME ;設(shè)置時(shí)間 MOV SETTM,#4 AJMP SKIPSTST: SETB LEDSET ;按1次為小時(shí)設(shè)置,2次為分鐘設(shè)置, ;3次為秒鐘設(shè)置 AJMP SKIPSTSETAD: CJNE A,#0A0H,S

26、ETDE ;第6位為0時(shí)為增加鍵 MOV A,SETTM CJNE A,#3,ADDM ;為3時(shí)設(shè)置小時(shí) MOV A,TIMEH INC A DA A CJNE A,#24H,HLT24 MOV A,#0HLT24: MOV TIMEH,A AJMP SKIPSTADDM: CJNE A,#2,ADDS ;為2時(shí)設(shè)置分鐘 MOV A,TIMEM INC A DA A CJNE A,#60H,MLT60 MOV A,#0MLT60: MOV TIMEM,A AJMP SKIPSTADDS: CJNE A,#1,SKIPST ;為1時(shí)設(shè)置秒鐘 MOV A,TIMES INC A DA A CJNE

27、 A,#60H,SLT60 MOV A,#0SLT60: MOV TIMES,A AJMP SKIPSTSETDE: MOV A,SETTM ;第7位為0時(shí)為減少鍵 CJNE A,#3,DECM MOV A,#99H ADD A,TIMEH DA A CJNE A,#99H,HGT0 MOV A,#23HHGT0: MOV TIMEH,A AJMP SKIPSTDECM: CJNE A,#2,DECS MOV A,#99H ADD A,TIMEM DA A CJNE A,#99H,MGT0 MOV A,#59HMGT0: MOV TIMEM,A AJMP SKIPSTDECS: CJNE A,

28、#1,SKIPST MOV A,#99H ADD A,TIMES DA A CJNE A,#99H,SGT0 MOV A,#59HSGT0: MOV TIMES,ASKIPST: RETI;*;T1的中斷程序;輪流顯示LED每一位;*DISP: MOV TH1,#0F0H ;恢復(fù)初值 MOV TL1,#060H MOV A,SETTM CJNE A,#4,HR1 DJNZ RDTM,HR1 ACALL RDTIME MOV RDTM,#250 ;1秒鐘讀取一次時(shí)間HR1: MOV A,TURN CJNE A,#12,HR0 MOV A,TIMEH ;顯示小時(shí)十位 MOV B,#10H DIV

29、AB MOVC A,A+DPTR MOV P0,A ANL P2,#0F0H MOV A,#HOUR1 ORL P2,A DEC TURN AJMP SKIPT1HR0: CJNE A,#11,MN1 MOV A,TIMEH ;顯示小時(shí)個(gè)位 ANL A,#0FH MOVC A,A+DPTR ADD A,#80H ;加小數(shù)點(diǎn) MOV P0,A ANL P2,#0F0H MOV A,#HOUR0 ORL P2,A DEC TURN AJMP SKIPT1MN1: CJNE A,#10,MN0 MOV A,TIMEM ;顯示分鐘十位 MOV B,#10H DIV AB MOVC A,A+DPTR M

30、OV P0,A ANL P2,#0F0H MOV A,#MIN1 ORL P2,A DEC TURN AJMP SKIPT1MN0: CJNE A,#9,SC1 MOV A,TIMEM ;顯示分鐘個(gè)位 ANL A,#0FH MOVC A,A+DPTR ADD A,#80H MOV P0,A ANL P2,#0F0H MOV A,#MIN0 ORL P2,A DEC TURN AJMP SKIPT1SC1: CJNE A,#8,SC0 MOV A,TIMES ;顯示秒鐘十位 MOV B,#10H DIV AB MOVC A,A+DPTR MOV P0,A ANL P2,#0F0H MOV A,#SEC1 ORL P2,A DEC TURN AJMP SKIPT1SC0: CJNE A,#7,STEN MOV A,TI

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論