已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
23單片機課程設計摘要 LED數(shù)碼管時鐘電路采用24 h計時方式,時、分、秒用六位數(shù)碼管顯示。該電路采用AT89C2051單片機,使用3 V電池供電,只使用一個按鍵開關即可進入調(diào)時、省電(不顯示LED數(shù)碼管)和正常顯示三種狀態(tài)。 AT89C2051單片機的應用意義采用ATMEL的AT89C2051微處理器,是基于以下幾個因素:1)89C2051為51內(nèi)核,仿真調(diào)試軟硬件資源豐富;2)性價比高,貨源充足;3)DIP20封裝,體積小,便于產(chǎn)品小型化;4)為EEPROM程序存儲介質(zhì),1000次以上擦/寫周期,便于編程調(diào)試;5)具有IDLE和POWER-DOWN兩種工作模式,便于進行低功耗設計;6)工作電壓范圍寬:2.76V,便于交直流供電。 AT89C2051主要特點1)指令與MCS-51芯片兼容。2)內(nèi)含2K字節(jié)的可反復電氣燒錄及可擦除內(nèi)存。3)工作電壓2.7V至6V。4)工作頻率最高至24MHZ。5)內(nèi)含128字節(jié)RAM。6)15條可編程控制I/O線。7)一個模擬電壓比較器關鍵字:數(shù)碼管 脈沖 定時 計數(shù)目錄單片機簡介 38051單片機介紹 48051單片機內(nèi)部定時器/計數(shù)器簡介 6時鐘電路硬件設計 7系統(tǒng)主要程序的設計 8主程序流程圖 9T0中斷服務程序 10AT89C2051時鐘程序 11計數(shù)初值 19學習心得 20參考文獻 20單片機簡介單片機又稱單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計算機系統(tǒng)集成到一個芯片上。概括的講:一塊芯片就成了一臺計算機。它的體積小、質(zhì)量輕、價格便宜、為學習、應用和開發(fā)提供了便利條件。同時,學習使用單片機是了解計算機原理與結(jié)構(gòu)的最佳選擇。 可以說,二十世紀跨越了三個“電”的時代,即電氣時代、電子時代和現(xiàn)已進入的電腦時代。不過,這種電腦,通常是指個人計算機,簡稱PC機。它由主機、鍵盤、顯示器等組成。還有一類計算機,大多數(shù)人卻不怎么熟悉。這種計算機就是把智能賦予各種機械的單片機(亦稱微型控制器)。顧名思義,這種計算機的最小系統(tǒng)只用了一片集成電路,即可進行簡單運算和控制。因為它體積小,通常都藏在被控機械的“肚子”里。它在整個裝置中,起著有如人類頭腦的作用,它出了毛病,整個裝置就癱瘓了?,F(xiàn)在,這種單片機的使用領域已十分廣泛,如智能儀表、實時工控、通訊設備、導航系統(tǒng)、家用電器等。各種產(chǎn)品一旦用上了單片機,就能起到使產(chǎn)品升級換代的功效,常在產(chǎn)品名稱前冠以形容詞“智能型”,如智能型洗衣機等?,F(xiàn)在有些工廠的技術人員或其它業(yè)余電子開發(fā)者搞出來的某些產(chǎn)品,不是電路太復雜,就是功能太簡單且極易被仿制。究其原因,可能就卡在產(chǎn)品未使用單片機或其它可編程邏輯器件上。 單片機的應用領域 : 1.單片機在智能儀器儀表中的應用; 2.單片機在工業(yè)測控中的應用; 3.單片機在計算機網(wǎng)絡和通訊技術中的應用; 4.單片機在日常生活及家電中的應用; 5.單片機在辦公自動化方面。 目前單片機滲透到我們生活的各個領域,幾乎很難找到哪個領域沒有單片機的蹤跡。導彈的導航裝置,飛機上各種儀表的控制,計算機的網(wǎng)絡通訊與數(shù)據(jù)傳輸,工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機、攝像機、全自動洗衣機的控制,以及程控玩具、電子寵物等等,這些都離不開單片機。更不用說自動控制領域的機器人、智能儀表、醫(yī)療器械了。因此,單片機的學習、開發(fā)與應用將造就一批計算機應用與智能化控制的科學家、工程師。 8051單片機介紹MCS-51系列單片機芯片均為40條引腳,HMOS工藝制造的芯片用雙列直插(DIP)方式封裝,其引腳示意及功能分類如圖所示。各引腳功能說明如下:1. 主電源引腳Vcc(40腳):接+5V電源正端。Vss(20腳):接+5V電源地端。 2. 外接晶體引腳XTAL1(19腳):接外部石英晶體的一端。在單片機內(nèi)部,它是一個反相放大器的輸入端,這個放大器構(gòu)成了片內(nèi)振蕩器。當采用外部時鐘時,對于HMOS單片機,該引腳接地;對于CHMOS單片機,該引腳作為外部振蕩信號的輸入端。XTAL2(18腳):接外部石英晶體的另一端。在單片機內(nèi)部,它是片內(nèi)振蕩器的反相放大器的輸出端。當采用外部時鐘時,對于HMOS單片機,該引腳作為外部振蕩信號的輸入端;對于CHMOS單片機,該引腳懸空不接。2. 輸入/輸出引腳 (1) P0口(3932腳):P0.0P0.7統(tǒng)稱為P0口。在不接片外存儲器與不擴展I/O口時,可作為準雙向輸入/輸出口。在接有片外存儲器或擴展I/O口時,P0口分時復用為低8位地址總線和雙向數(shù)據(jù)總線。 (2) P1口(18腳):P1.0P1.7統(tǒng)稱為P1口,可作為準雙向I/O口使用。對于52子系列,P1.0與P1.1還有第二功能:P1.0可用作定時器/計數(shù)器2的計數(shù)脈沖輸入端T2,P1.1可用作定時器/計數(shù)器2的外部控制端T2EX。(3) P2口(2128腳):P2.0P2.7統(tǒng)稱為P2口,一般可作為準雙向I/O口使用;在接有片外存儲器或擴展I/O口且尋址范圍超過256字節(jié)時,P2口用作高8位地址總線。 表2.1 P3口第二功能引 腳 第二功能P3.0 RXD 串行口輸入P3.1 TXD 串行口輸出端P3.2 INT0 外部中斷0請求輸入端,低電平有效P3.3 INT1外部中斷1請求輸入端,低電平有效P3.4 T0 定時器/計數(shù)器0計數(shù)脈沖輸入端P3.5 T1 定時器/計數(shù)器1計數(shù)脈沖輸入端P3.6 WR 外部數(shù)據(jù)存儲器寫選通信號輸入端,低電平有效P3.7 RD 外部數(shù)據(jù)存儲器讀選通信號輸入端,低電平有效(4) P3口(1017腳):P3.0P3.7統(tǒng)稱為P3口。除作為準雙向I/O口使用外,還可以將每一位用于第二功能,而且P3口的每一條引腳均可以獨立定義為第一功能的輸入輸出或第三功能。P3口的第二功能如表2.1所示。4. 控制線 (1) ALE/PROG(30腳):地址鎖存有效信號輸入端。ALE在每個機器周期內(nèi)輸出兩個脈沖。在訪問片外程序存儲器期間,下降沿用于控制鎖存P0輸出的低8位地址;在不訪問片外程序存儲器期間,可作為對外輸出的時鐘脈沖或用于定時目的。但要注意,在訪問片外數(shù)據(jù)存儲器期間,ALE脈沖會跳空一個,此時作為時鐘輸出就不妥了。對于片內(nèi)含有EPROM的機型,在編程期間,該引腳用作編程脈沖PROG的輸入端。 (2) PSEN(29腳):片外程序存儲器讀選通信號輸出端,低電平有效。當從外部程序存儲器讀取指令或常數(shù)期間,每個機器周期該信號兩次有效,以通過數(shù)據(jù)總線P0口讀回指令或常數(shù)。在訪問片外數(shù)據(jù)存儲器期間,PSEN信號將不再出現(xiàn)。 (3) RST/VPD引腳(9腳):RST即為RESET,VPD為備用電源。該引腳為單片機的上電復位或掉電保護端。當單片機振蕩器工作時,該引腳上出現(xiàn)持續(xù)兩個機器周期的高電平,就可實現(xiàn)復位操作,使單片機回復到初始狀態(tài)。上電時,考慮到振蕩器有一定的起振時間,該引腳上高電平必須持續(xù)10ms以上才能保證有效復位。當Vcc發(fā)生故障,降低到低電平規(guī)定值或掉電時,該引腳可接上備用電源VPD(+5V)為內(nèi)部RAM供電,以保證RAM中的數(shù)據(jù)不丟失。 (4)EA/Vpp(31腳):EA為片外程序存儲器選用端。該引腳有效(低電平)時,只選用片外程序存儲器,否則單片機上電或復位后選用片內(nèi)程序存儲器。對于片內(nèi)含有EPROM的機型,在編程期間,此引腳用作21V編程電源Vpp的輸入端。8051單片機內(nèi)部定時器/計數(shù)器簡介 AT89C51內(nèi)部有兩個可變成的定時器/計數(shù)器,分別稱為定時器/計數(shù)器0和定時器/計數(shù)器1(簡寫為T0和T1)。它們都具備定時和計數(shù)功能,有4種工作方式可供選擇。定時器/計數(shù)器結(jié)構(gòu)與功能CPU通過內(nèi)部總線與定時器/計數(shù)器交換信息。定時器/計數(shù)器0由TH0(地址為8CH)和TL0(地址為8AH)組成;定時器/計數(shù)器1由TH1(地址為8DH)和TL1(地址為8BH)組成。TH0(TH1)表示高8位,TL0(TL1)表示低8位。這4個8位計數(shù)器均屬于特殊功能寄存器。TMOD寄存器用來確定工作方式;TCON是控制寄存器,用來控制T0和T1的啟動、停止、定時、計數(shù)操作并設置溢出標志。1. 計數(shù)功能AT89C51有T1/P3.4和T1/P3.5引腳,分別為計數(shù)器的計數(shù)脈沖輸入端。外部輸入的計數(shù)脈沖在負跳變有效,計數(shù)器加1。計數(shù)方式下,單片機CPU在每個及其周期的S5P2狀態(tài)對外部計數(shù)脈沖采樣。如果前一個機器周期采樣為高電平,后一個機器周期采樣為低電平,那么在下一個機器周期的S3P1狀態(tài)進行計數(shù)??梢姴蓸佑嫈?shù)脈沖是在2個機器周期內(nèi)進行的,計數(shù)脈沖頻率不能高于晶振頻率的1/24。假如晶振頻率為6MHz,則計數(shù)脈沖頻率應低于1/4MHz。當計數(shù)器滿后,再來一個計數(shù)脈沖,計數(shù)器全部回0。這就是溢出。 脈沖的計數(shù)長度與計數(shù)器預先裝入的初值有關。初值越大,計數(shù)長度越?。怀踔翟叫?,計數(shù)長度越大。最大計數(shù)長度為65536(216 )個脈沖(初值為0)。2. 定時功能定時工作方式是對芯片內(nèi)部的機器周期計數(shù),或者說計數(shù)脈沖來自芯片內(nèi)部。每來一個機器周期,計數(shù)器加1,直到計數(shù)器滿,再來一個機器周期信號,定時器全部回0。這就是溢出。因為每個機器周期的時間固定(晶振為12MHz,機器周期為1us;晶振為6MHz,機器周期為2us),由開始計數(shù)到溢出這段時間就是定時時間。在機器周期一定的情況下,定時時間與定時器預先裝入的初值有關。初值越大,定時時間越短;初值越小,定時時間越長。最長的定時時間為65536(216)個機器周期(初值為0)。例如,晶振為12MHz,最長定時為65.536ms;晶振為6MHz,最長定時為131.072ms。時鐘電路硬件的設計數(shù)碼管時鐘電路如圖所示,其采用AT89C2051單片機最小化應用設計,LED顯示采用動態(tài)掃描方式實現(xiàn),P1口輸出段碼數(shù)據(jù),P3.13.5口作掃描輸出,P3.7接按鈕開關。為了提供LED數(shù)碼管的驅(qū)動電流,用三極管9012作電源驅(qū)動輸出。為了提高秒計時的精確性,采用12MHZ晶振。系統(tǒng)主要程序的設計 (1)主程序 本設計中的計時采用定時器T0中斷完成,其余狀態(tài)循環(huán)調(diào)用顯示子程序,當P3.7下時,轉(zhuǎn)入調(diào)時功能程序。系統(tǒng)主流程圖如圖7.2所示。 (2)顯示子程序 數(shù)碼顯示的數(shù)據(jù)存放在內(nèi)存單元70H75H中,其中70H71H存放秒數(shù)據(jù),72H73H存放分數(shù)據(jù),74H75H存放時數(shù)據(jù),每一地址單元內(nèi)均為十進制BCD碼。由于采用軟件動態(tài)掃描實現(xiàn)數(shù)據(jù)顯示功能,顯示用十進制BCD碼數(shù)據(jù)的對應段碼存放在ROM表中。顯示時,先取出70H75H某一地址中的數(shù)據(jù),然后查得對應的顯示用段碼從P1口輸出。P3口將對應的數(shù)碼管選中,就能顯示該地址單元的數(shù)據(jù)值。 (3)定時器T0中斷服務程序 定時器T0用于時間計時。定時溢出中斷周期設為50ms,中斷累計20次(即1s)時對秒計數(shù)單元進行加1操作。時間計數(shù)單元地址分別在70H71H(s)、76H77H(min)、78H79H(h),7AH單元內(nèi)存放“熄滅符”數(shù)據(jù)(#0AH)。在計數(shù)單元中采用十進制BCD碼計數(shù),滿60進位。T0中斷服務程序流程圖如圖7.3所示。 (4)T1中斷服務程序 T1中斷服務程序用于指示調(diào)整單元數(shù)字的亮閃。在時間調(diào)整狀態(tài)下,每過0.3s,將對應單元的顯示數(shù)據(jù)換成“熄滅符”數(shù)據(jù)(#0AH).這樣,在調(diào)整時間時,對應調(diào)整單元的顯示數(shù)據(jù)就會間隔閃亮。 (5)調(diào)時功能程序 調(diào)時功能程序的設計方法是:按下按鍵,若按下時間小于1s,進入省電狀態(tài)(數(shù)碼管不亮,時鐘不停),否則進入調(diào)分狀態(tài)。等待操作,此時計時器停止走動。當再次按下按鈕時,若按下時間小于0.5s,則時間加1min;若按下時間大于0.5s,則進入小時調(diào)整狀態(tài)。在小時調(diào)整狀態(tài)下,當按鍵按下的時間大于0.5s時退出調(diào)整狀態(tài),時鐘繼續(xù)走動。主程序流程圖開始顯示單元清零T0、T1設為16位計數(shù)器模式允許T0中斷調(diào)用顯示子程序P3.7=0? N Y進入調(diào)時程序TO中斷服務程序T0中斷保護現(xiàn)場1s到? N Y秒單元加1=60s? N Y秒單元清零,分加1=60min? N Y分單元清零,時加1=24h? N Y時單元清零恢復現(xiàn)場,中斷返回 AT89C2051時鐘程序 定時器T0、T1溢出周期為50ms,T0為秒計數(shù)用,T1為調(diào)整時閃爍用, P3.7為調(diào)整按鈕,P1口為字符輸出口,采用共陽顯示管, 中斷入口程序 ORG 0000H ;程序執(zhí)行開始地址LJMP START ;跳到標號START執(zhí)行ORG 0003H ;外中斷0中斷程序入口RETI ;外中斷0中斷ORG 000BH ;定時器0中斷程序入口LJMP INTT0 ;跳至INTT0執(zhí)行ORG 0013H ;外中斷1中斷程序入口RETI ;外中斷1中斷返回ORG 001BH ;定時器1中斷程序入口LJMP INTT1 ;跳至INTT1執(zhí)行ORG 0023H ;串行中斷程序入口地址RETI ;串行中斷程序返回主程序 START:MOV R0,#70H ;清70H7AH共11個內(nèi)存單元 MOV R7,#0BH ;CLEARDISP:MOV R0,#00H ; INC R0 ; DJNZ R7,CLEARDISP ; MOV 20H,#00H ;清20H(標志用) MOV 7AH,#0AH ;放入“熄滅符”數(shù)據(jù) MOV TMOD,#11H ;設T0、T1為16位定時器 MOV TL0,#0B0H ;50ms定時初值(T0計時用) MOV TH0,#3CH ;50ms定時初值 MOV TL1,#0B0H ;50ms定時初值(T1閃爍定時用) MOV TH1,#3CH ;50ms定時初值 SETB EA ;總中斷開放 SETB ET0 ;允許T0中斷 SETB TR0 ;開啟T0定時器 MOV R4,#14H ;1s定時用初值(50ms*20) START1:LCALL DISPLAY ;調(diào)用顯示子程序 JNB P3.7,SETMM1 ;P3.7口為0時轉(zhuǎn)時間調(diào)整程序 SJMP START1 ;P3.7口為1時跳回START1 SETMMI:LJMP SETMM ;轉(zhuǎn)到時間調(diào)整程序SETMM 1s計時程序T0中斷服務程序 INTT0:PUSH ACC ;累加器入棧保護 PUSH PSW ;狀態(tài)字入棧保護 CLR ET0 ;關T0中斷允許 CLR TR0 ;關閉定時器T0 MOV A,#0B7H ;中斷響應時間同步修正 ADD A,TL0 ;低8位初值修正 MOV TL0,A ;重裝初值(低8位修正值) MOV A,#3CH ;高8位初值修正 ADDC A,TH0 ; MOV TH0,A ;重裝初值(高8位修正值) SETB TR0 ;開啟定時器T0 DJNZ R4,OUTT0 ;20次中斷未到中斷退出 ADDSS:MOV R4,14H ;20次中斷到(1s)重賦初值 MOV R0,#71H ; 指向秒計時單元(71H72H) ACALL ADD1 ;調(diào)用加1程序(加1s操作) MOV A,R3 ;秒數(shù)據(jù)放入A(R3為2位十進制數(shù)組合) CLR C ;清進位標志 CJNE A,#60H,ADDMM ; ADDMM:JC OUTT0 ;小于60s時中斷退出 ACALL CLR0 ;大于或等于60s時對秒計時單元清0 MOV R0,#77H ;指向分計時單元(76H77H) ACALL ADD1 ;分計時單元加1min MOV A,R3 ;分數(shù)據(jù)放入A CLR C ;清進位標志 CJNE A,#60H,ADDHH ; ADDHH:JC OUTT0 ;小于60min時中斷退出 ACALL CLR0 ;大于或等于60min時分計時單元清0 MOV R0,#79H ;指向小時計時單元(78H79H) ACALL ADD1 ;小時計時單元加1h MOV A,R3 ;時數(shù)據(jù)放入A CLR C ;清進位標志 CJNE A,#24H,HOUR ; HOUR:JC OUTT0 ;小于24h中斷退出 ACALL CLR0 ;大于或等于24h小時計時單元清0 OUTT0:MOV 72H,76H ;中斷退出時將分,時計時單元數(shù)據(jù)移 MOV 73H,77H ;入對應顯示單元 MOV 74H,78H ; MOV 75H,79H ; POP PSW ;恢復狀態(tài)字(出棧) POP ACC ;恢復累加器 SETB ETO ;開放T0中斷 RETI ;中斷返回 閃動調(diào)整程序T1中斷服務程序,用作時間調(diào)整時調(diào)整單元閃爍指示INTT1:PUSH ACC ;中斷現(xiàn)在保護 PUSH PSW ; MOV TL1,#0B0H ;裝定時器T1定時初值 MOV TH1,#3CH ; DJNZ R2,INTT1OUT ;0.3s未到退出中斷(50ms中斷6次) MOV R2,#06H ;重裝0.3s定時出初值 CPL 02H ;0.3s定時到對閃爍標志取反 JB 02H,FLASHI ;02H位為1時顯示單元“熄滅” MOV 72H,76H ;02H位為0時正常顯示 MOV 73H,77H ; MOV 74H,78H ; MOV 75H,79H ; INTT1OUT:POP PSW ;恢復現(xiàn)場 POP ACC ; RETI ;中斷退出 FLASH1:JB 01H,FLASH2 ;01H位為1時,轉(zhuǎn)小時熄滅控制 MOV 72H,76H ;01H位為0時,“熄滅符”數(shù)據(jù)放入分 MOV 73H,77H ;顯示單元(72H73H),將不顯示分數(shù)據(jù) MOV 74H,78H ; MOV 75H,79H ; AJMP INTT1OUT ;轉(zhuǎn)中斷退出 FLASH2:MOV 72H,76H ;01H位為1時,“熄滅符”數(shù)據(jù)放入小時 MOV 73H,77H ;顯示單元(74H75H),小時數(shù)據(jù)將不顯示 MOV 74H,78H ; MOV 75H,79H ; AJMP INTT1OUT ;轉(zhuǎn)中斷退出 加1子程序 ADD1:MOV A,R0 ;取當前計時單元數(shù)據(jù)到A DEC R0 ;指向前一地址 SWAP A ;A中數(shù)據(jù)高4位與低4位交換 ORL A,R0 ;前一地址中數(shù)據(jù)放入A中低4位 ADD A,#01H ;A加1操作 DA A ;十進制調(diào)整 MOV R3,A ;移入R3寄存器 ANL A,#0FH ;高4位變0 MOV R0,A ;放回前一地址單元 MOV A,R3 ;取回R3中暫存數(shù)據(jù) INC R0 ;指向當前地址單元 SWAP A ;A中數(shù)據(jù)高4位與低4位交換 ANL A,#0FH ;高4位變0 MOV R0,A ;數(shù)據(jù)放入當前地址單元中 RET ;子程序返回 清零程序?qū)τ嫊r單元復零用 CLR0:CLR A ;清累加器 MOV R0,A ;清當前地址單元 DEC R0 ;指向前一地址 MOV R0,A ;前一地址單元清0 RET ;子程序返回 時鐘調(diào)試程序當調(diào)時按鍵按下時進入此程序 SETMM:CLR ET0 ;關定時器T0中斷 CLR TR0 ;關閉定時器T0 LCALL DL1S ;調(diào)用1s延時程序 JB P3.7,CLOSEDIS ;鍵按下時間小于1s,關閉顯示(省電) MOV R2,#06H ;進入調(diào)時狀態(tài),賦閃爍定時初值 SETB ET1 ;允許T1中斷 SETB TR1 ;開啟定時器T1 SET2:JNB P3.7,SET1 ;P3.7口為0(鍵未釋放),等待 SETB 00H ;鍵釋放,分調(diào)整閃爍標志置1 SET4:JB P3.7,SET3 ;等待鍵按下 LCALL DL05S ;有鍵按下,延時0.5s JNB P3.7,SETHH ;按下時間大于0.5s轉(zhuǎn)調(diào)小時狀態(tài) MOV R0,#77H ;按下時間小于0.5s加1min操作 LCALL ADD1 ;調(diào)用加1子程序 MOV A,R3 ;取調(diào)整單元數(shù)據(jù) CLR C ;清進位標志 CJNE A,#60H,HHH ;調(diào)整單元數(shù)據(jù)與60比較 HHH:JC SET4 ;調(diào)整單元數(shù)據(jù)小于60轉(zhuǎn)SET4循環(huán) LCALL CLR0 ;調(diào)整單元數(shù)據(jù)大于或等于60時清0 CLR C ;清進位標志 AJMP SET4 ;跳轉(zhuǎn)到SET4循環(huán) CLOSEDIS:SETB ET0 ;省電(LED不顯示)狀態(tài),開T0中斷 SETB TR0 ;開啟T0定時器(開時鐘) CLOSE:JB P3.7,CLOSE ;無按鍵按下,等待 LCALL DISPLAY ;有鍵按下,調(diào)顯示子程序延時消抖 JB P3.7,CLOSE ;是干擾返回CLOSE等待 WAITH:JNB P3.7,WAITH ;等待鍵釋放 LJMP START1 ;返回主程序(LED數(shù)據(jù)顯示亮) SETHH:CLR 00H ;分閃爍標志清除(進入調(diào)小時狀態(tài)) SETHH1:JNB P3.7,SET5 ;等待鍵釋放 SETB 01H ;小時調(diào)整標志置1 SET6:JB P3.7,SETOUT ;等待按鍵按下 LCALL DL05S ;有鍵按下延時0.5s JNB P3.7,SETOUT ;按下時間大于0.5s退出時間調(diào)整 MOV P0,#79H ;按下時間小于0.5s加1h操作 LCALL ADD1 ;調(diào)加1子程序 MOV A,R3 ; CLR C ; CJNE A,#24H,HOUU ;計時單元數(shù)據(jù)與24比較 HOUU:JC SET6 ;小于24轉(zhuǎn)SET6循環(huán) LCALL CLR0 ;大于或等于24時清0操作 AJMP SET6 ;跳轉(zhuǎn)到SET6循環(huán) SETOUT:JNB P3.7,SETOUT1 ;調(diào)時退出程序。等待鍵釋放 LCALL DISPLAY ;延時消抖 JNB P3.7,SETOUT ;是抖動,返回SETOUT再等待 CLR 01H ;清調(diào)小時標志 CLR 00H ;清調(diào)分標志 CLR 02H ;清閃爍標志 CLR TR1 ;關閉定時器T1 CLR ET1 ;關定時器T1中斷 SETB TR0 ;開啟定時器T0 SETB ET0 ;開定時器T0中斷(計時開始) LJMP START1 ;跳回主程序 SET1:LCALL DISPLAY ;鍵釋放等待時調(diào)用顯示程序(調(diào)分) AJMP SET2 ;防止鍵按下時無時鐘顯示 SET3:LCALL DISPLAY ;等待調(diào)分按鍵時時鐘顯示用 AJMP SET4 ; SET5:LCALL DISPLAY ;鍵釋放等待時調(diào)用顯示程序(調(diào)小時) AJMP SETHH1 ;防止鍵按下時無時鐘顯示 SET7:LCALL DISPLAY ;等待調(diào)小時按鍵時時鐘顯示用 AJMP SET6 ; SETOUT1:LCALL DISPLAY ;退出時鐘調(diào)整時鍵釋放等待AJMP SETTOUT ;防止鍵按下時無時鐘顯示 顯示程序顯示數(shù)據(jù)在70H75H單元內(nèi),用六位LED共陽數(shù)碼管顯示,P1口輸出段碼數(shù)據(jù),P3口作掃描控制,每個LED數(shù)碼管亮1ms時間再逐位循環(huán) DISPLAY:MOV R1,#70H ;指向顯示數(shù)據(jù)首址 MOV R5,#0FEH ;掃描控制字初值 PLAY:MOV A,R5 ;掃描字放入A MOV P3,A ;從P3口輸出 MOV A,R1 ;取顯示數(shù)據(jù)到A MOV DPTR,#TAB ;取段碼表地址 MOVC A,A+DPTR ;查顯示數(shù)據(jù)對應斷碼 MOV P1,A ;段碼放入P1口 LCALL DL1MS ;顯示1ms INC R1 ;指向下一地址 MOV A,R5 ;掃描控制字放入A JNB ACC.5,ENDOUT ;ACC.5=0時一次顯示結(jié)束 RL A ;A中數(shù)據(jù)循環(huán)左移 MOV R5,A ;放回R5內(nèi) AJMP PLAY ;跳回PLAY循環(huán) ENDOUT:SETB P3.5 ;一次顯示結(jié)束,P3口復位 MOV P1,#0FFH ;P1口復位 RET ;子程序返回 TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH共陽段碼表“0” “1” “2” “3” “4” “5” “6” “7” “8” “9” “不亮” 延時程序1ms延時程序,LED顯示程序用 DL1MS:MOV R6,#14H DL1:MOV R7,#19H DL2:DJNZ R7,DL2 DJNZ R6,DL1 RET20ms延時程序,采用調(diào)用顯示子程序以改善LED的顯示閃爍現(xiàn)象 DS20MS:LCALL DISPLAY LCALL DISPLAY LCALL DISPLAY RET延時程序,用作按鍵時間的長短判斷 DL1S:LCALL DL05S LCALL DL05S RET DL05S:MOV R3,#20H ;8msX32=0.256s DL05S1:LCALL DISPLAY DJNZ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 雙十二購房指南
- 體育用品行業(yè)保安工作總結(jié)
- 軍訓心得體會15篇
- 教育的項目計劃書精彩3篇
- 建筑工程施工合同范文集合8篇
- 2023年-2024年崗位安全教育培訓試題及參考答案【培優(yōu)】
- 文學作品意識形態(tài)解讀-洞察分析
- 宇宙常數(shù)與宇宙結(jié)構(gòu)形成-洞察分析
- 遺傳進化機制探究-洞察分析
- 工抵房協(xié)議模板
- 校本課程《典籍里的中國》教案
- CNAS-CV03-2022 溫室氣體 第三部分 溫室氣體聲明審定與核查規(guī)范和指南
- 四年級上冊信息技術教案-9演示文稿巧編輯 |人教版
- 2022年人力資源管理各專業(yè)領域必備知識技能
- 租賃(出租)物品清單表
- 提高聚氯乙烯卷材地面一次驗收合格率
- 【部編版】2022年語文七年級上:作文能力提升—謀篇布局(含答案)
- 甲型H1N1流感防治應急演練方案(1)
- LU和QR分解法解線性方程組
- 漏油器外殼的落料、拉深、沖孔級進模的設計【畢業(yè)論文絕對精品】
評論
0/150
提交評論