基于單片機(jī)的定時(shí)開關(guān)控制器_第1頁
基于單片機(jī)的定時(shí)開關(guān)控制器_第2頁
基于單片機(jī)的定時(shí)開關(guān)控制器_第3頁
基于單片機(jī)的定時(shí)開關(guān)控制器_第4頁
基于單片機(jī)的定時(shí)開關(guān)控制器_第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、17 基于單片機(jī)的定時(shí)開關(guān)控制器摘要:本實(shí)驗(yàn)基于STC89C51RC為核心,設(shè)計(jì)具備按鍵功能和數(shù)碼管顯示功能的外圍硬件電路,以便控制器能夠在設(shè)定的開關(guān)時(shí)刻控制輸出繼電器的動(dòng)作,進(jìn)而控制負(fù)載電源的啟閉,并完成軟件程序設(shè)計(jì)??梢詫?shí)現(xiàn)電源的直接啟動(dòng)/關(guān)閉;也可以通過按鍵設(shè)置負(fù)載電源的啟動(dòng)時(shí)間,最大預(yù)約時(shí)間為12小時(shí)。關(guān)鍵詞:STC89C51RC;繼電器 Timer Switch Controller Based On MCUAbstract: Based on the experimental STC89C51RC as the core, the design has the key functi

2、on and digital tube display peripheral hardware circuit function, so that the controller can control the output relay set the switch point of the action,then control the opening and closing load power supply, and complete the software program design. Direct start / can realize the power off; can als

3、o set the button load power start-up time, maximum reservation for 12 hours.Key Words :STC89C51RC;Relay 目錄 1 硬件部分結(jié)構(gòu)功能簡介1 1.1 STC89C51RC單片機(jī)介紹1 1.2 STC89C51RC單片機(jī)的主要性能1 1.3 STC89C51RC單片機(jī)管腳說明2 2 硬件電路設(shè)計(jì)3 2.1 單片機(jī)最小系統(tǒng)3 2.1.1 復(fù)位電路3 2.1.2 時(shí)鐘電路3 2.2 按鍵電路4 2.3 顯示功能5 2.4 中斷系統(tǒng)5 2.5 繼電器7 2.6 電路設(shè)計(jì)7 3 軟件設(shè)計(jì)8 總 結(jié)10 參

4、考文獻(xiàn)11 致 謝12 附 錄13 1 硬件部分結(jié)構(gòu)功能簡介1.1 STC89C51RC單片機(jī)介紹STC89C51RC系列單片機(jī)是深圳宏晶科技公司推出的新一代高速、低功耗、超強(qiáng)抗干擾的單片機(jī),指令代碼完全兼容傳統(tǒng)8051單片機(jī)。STC89C51RC系列單片機(jī)具有ISP(在系統(tǒng)中可編程)動(dòng)能和IAP(在應(yīng)用可編程)功能,無需購買專用編輯器,可以通過串行口直接下載用戶程序。單片機(jī)主控電路的主要元件是STC89C51RC單片機(jī),其外形如下圖(圖1-1): 圖1-1 STC89C51RC各個(gè)引腳 1.2 STC89C51RC單片機(jī)的主要性能 與單片機(jī)產(chǎn)品兼容4K字節(jié)在系統(tǒng)可編程Flash存儲(chǔ)器、100

5、0次擦寫周期、全靜態(tài)操作:0Hz33Hz、三級(jí)加密程序存儲(chǔ)器、32個(gè)可編程/口、三個(gè)16位定時(shí)器/計(jì)數(shù)器、八個(gè)中斷源、全雙工UART串行通道低功耗空閑和掉電模式、掉電后中斷可喚醒看門狗定時(shí)器,雙數(shù)據(jù)指針、掉電標(biāo)識(shí)符。1.3 STC89C51RC單片機(jī)管腳說明VCC供電電壓。GND接地。P0口8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。P1口帶內(nèi)部上拉電阻的8位雙向I/O口

6、,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 P2口帶內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢,當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸

7、出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。P3口帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。在編程/校驗(yàn)時(shí),P3口可接收某些控制信號(hào)。RST復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的

8、1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。/EA/VPP當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000HFFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部

9、鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2來自反向振蕩器的輸出。 2 硬件電路設(shè)計(jì)2.1單片機(jī)最小系統(tǒng) 2.1.1 復(fù)位電路復(fù)位電路就是在RST端(9腳)外接的一個(gè)電路,目的是使單片機(jī)上的電開始工作時(shí),內(nèi)部電路從初始狀態(tài)開始工作,或者在工作中人為讓單片機(jī)重新從初始狀態(tài)開始工作。在時(shí)鐘工作的情況下,只要復(fù)位引腳高電平保持在兩個(gè)機(jī)器周期以上的時(shí)間,STC89C51RC便能完成系統(tǒng)重置的各項(xiàng)工作,使得內(nèi)部特殊功能寄存器的內(nèi)容均被設(shè)置成已知狀態(tài),并且從地

10、址0000H處讀入程序代碼而執(zhí)行程序。(圖2-1) 圖2-1 復(fù)位電路 2.1.2. 時(shí)鐘電路時(shí)鐘電路是產(chǎn)生CPU校準(zhǔn)時(shí)序,是單片機(jī)的控制核心。STC89C51RC的時(shí)鐘信號(hào)可通過內(nèi)部振蕩方式和外部振蕩方式兩種方式得到。本次設(shè)計(jì)使用的是片內(nèi)振蕩方式,通過外接12MHz的晶振來實(shí)現(xiàn)時(shí)鐘電路的時(shí)序控制。在使用片內(nèi)振蕩器時(shí),XTAL1和XTAL2分別為反向放大器的輸入端和輸出端。外接晶體以及電容C1和C2構(gòu)成并聯(lián)諧振電路,接在放大器的反饋回路中。當(dāng)使用外部時(shí)鐘驅(qū)動(dòng)時(shí),XTAL2引腳應(yīng)懸空,而由XTAL1引腳上的信號(hào)驅(qū)動(dòng),或者XTAL1引腳應(yīng)懸空,而由XTAL2引腳上的信號(hào)驅(qū)動(dòng)。外部振蕩器再通過一個(gè)2

11、分頻的觸發(fā)器來形成內(nèi)部時(shí)鐘所需要的信號(hào)。在電容器C1、C2選擇時(shí)方面,一般選擇其值為530pF。本系統(tǒng)中所用的電容值為22pF,具體的電路接法如圖2-2所示。 圖2-2 晶振電路圖2.2按鍵電路 按鍵電路如圖2-3所示 圖2-3 按鍵電路系統(tǒng)中共有四六個(gè)獨(dú)立按鍵,分別與P2.0、P2.1、P2.2、P2.3、P2.3、P2.4、P2.5連接。開始鍵(P2.0):按下該鍵,電源和負(fù)載接通或當(dāng)預(yù)約調(diào)試結(jié)束后按下該鍵, 電源將在設(shè)定時(shí)間到達(dá)后接通。關(guān)閉鍵(P2.1):按下該鍵,切斷電源。預(yù)約鍵(P2.2):第一次按下該鍵,可以對(duì)電源的接通時(shí)間進(jìn)行“小時(shí)”調(diào)整;第二次按下該鍵,可以對(duì)電源接通時(shí)間進(jìn)行“

12、分鐘”調(diào)整。加“1”鍵(P2.3):按下該鍵,調(diào)“小時(shí)”時(shí)間加1,最大可加到11;調(diào)“分鐘”時(shí)間加1,最大可加到59.即最長定時(shí)時(shí)間為11小時(shí)59分鐘。減“1”鍵(P2.4):按下該鍵,調(diào)“小時(shí)”時(shí)小時(shí)減1,最小值為0;調(diào)“分鐘”時(shí)分鐘減1,最小值為0.預(yù)留鍵(P2.5):在本設(shè)計(jì)中,沒有作用。2.3 顯示功能1.按鍵指示燈D1:只要有按鍵按下,該指示燈會(huì)點(diǎn)亮。2.電源開關(guān)狀態(tài)指示燈D3:當(dāng)電源和負(fù)載接通時(shí),該燈點(diǎn)亮。3.四位數(shù)碼管(圖2-4):前兩位顯示小時(shí),后兩位顯示分鐘。上電即顯示“-”;預(yù)約調(diào)小時(shí)前兩位閃爍,預(yù)約調(diào)分鐘后兩位閃爍。預(yù)約時(shí)間內(nèi),倒計(jì)時(shí)顯示。 圖2-4 LED數(shù)碼管 2.4

13、中斷系統(tǒng)中斷系統(tǒng)的作用主要是對(duì)外部或內(nèi)部的終端請(qǐng)求進(jìn)行管理與處理。STC89S51RC共有5個(gè)中斷源,其中有2個(gè)外部中斷源和3個(gè)內(nèi)部中斷源。中斷函數(shù)如下/-外部中斷0中斷函數(shù)- void int0()interrupt 0 using 0 uchar keynum; display(); /動(dòng)態(tài)顯示程序作為去抖動(dòng) if(INT0=0) /判斷是否有按鍵按下 keynum=GetKeyNum(); /有效鍵,獲取鍵值 while(INT0=0); /等待按鍵釋放 Keyprocess(keynum); /按鍵處理 /-定時(shí)器0中斷子函數(shù)- void time0() interrupt 1 /處理

14、調(diào)時(shí)、顯示器閃爍 static uchar ledcnt,num; /設(shè)置靜態(tài)變量 TH0=(65536-50000)/256; /定時(shí)50ms TL0=(65536-50000)%256; if(Onflag && (hour | min)!=0) |! Onflag) /指示燈每隔0.5s閃爍 ledcnt+; if(ledcnt=10) / 10 X 50mS=0.5S ledcnt=0; LED=LED; if(Setflag!=0) /調(diào)時(shí)閃爍 num+;if(num=5) num=0; flag=flag;/-定時(shí)器1中斷子函數(shù)-void time1() inter

15、rupt 3 TH1=(65536-50000)/256; TL1=(65536-50000)%256;calculate(); /計(jì)時(shí) 2.5 繼電器 本設(shè)計(jì)是用單片機(jī)控制繼電器達(dá)到以弱控強(qiáng)的電路,下面再來介紹一下單片機(jī)和強(qiáng)電之間的橋梁-電磁繼電器。電磁繼電器是有觸點(diǎn)電繼電器是有觸點(diǎn)電繼電器的一種。它是利用電磁效應(yīng)實(shí)現(xiàn)電路開、關(guān)控制作用的原件,廣泛應(yīng)用在電子設(shè)備、儀器儀表及自動(dòng)化設(shè)備中。在各種自動(dòng)設(shè)備中,都要求用一個(gè)低電壓電路提控制一個(gè)高電壓的電器電路。這樣不僅可以為電子線路和電器電路提供良好的電隔離,還可以保護(hù)電子電路和人員安全。 圖2-5 繼電器開關(guān)電路 2.6 電路設(shè)計(jì) 根據(jù)設(shè)計(jì)要求,

16、選用STC89C51RC作為電路控制核心,電路中包含了時(shí)鐘電路、復(fù)位電路作為單片機(jī)的最小系統(tǒng)。晶體振蕩器頻率為12MHz,這樣單片機(jī)的機(jī)器周期恰好為1s。P0.0-P0.7作為四位七段數(shù)碼管的段碼輸出端,P1.0-P1.3作為四位數(shù)碼管(共陰極)的位碼輸出端。P2.0-P2.5作為鍵盤信號(hào)的輸入端。P3.6作為控制信號(hào)的輸出端控制繼電器吸合與釋放。 由于P0口輸出端為漏極開路門,他要輸出高電平才有效,必須外接上拉電阻,本設(shè)計(jì)中上空電阻阻值為10K。由于P0口輸出電流有限,為減輕單片機(jī)的負(fù)擔(dān),在P0口外接了一個(gè)8路同相三態(tài)雙向驅(qū)動(dòng)器(起電流放大作用)。19腳是它的片選端,低電平有效,1腳是輸入/

17、輸出端口轉(zhuǎn)換用,當(dāng)該引腳接高電平時(shí),信號(hào)由“A”端傳向“B”端,當(dāng)該引腳接低電平,信號(hào)由“B”端傳向“A”端。P1口通過一個(gè)六反相器74LS04和數(shù)碼管的位碼輸入端相連,故P1.0-P1.3輸出低電平時(shí),相應(yīng)的數(shù)碼管點(diǎn)亮。附錄2中六個(gè)獨(dú)立按鍵分別和P2.0-P2.5相連接,通過上拉電阻和電源相連接,當(dāng)按鍵沒有按下時(shí),P2.0-P2.5端口輸入為“1”,表示沒有信號(hào)輸入。這六個(gè)按鍵只要有一個(gè)按鍵按下時(shí),8輸入與非門74HC30的輸出端必然輸出高電平(它的邏輯功能為:全1出0,由0出1),經(jīng)非門電路74LS04倒相后,按鍵按下時(shí)輸出為低電平,該低電平信號(hào)接單片機(jī)的外部中斷信號(hào)輸入端(即P3.2引腳

18、),從而引起單片機(jī)中斷正常執(zhí)行的主程序,轉(zhuǎn)而去執(zhí)行中斷服務(wù)程序。 3 軟件設(shè)計(jì) 程序開始首先對(duì)按鍵變量和小時(shí)、分鐘變量進(jìn)行定義,對(duì)共陰極數(shù)碼管的段碼(字型碼)以一維數(shù)組方式定義。另外對(duì)延時(shí)函數(shù)、定時(shí)器初始化子函數(shù)、求按鍵子函數(shù)、按鍵處理子函數(shù)、計(jì)時(shí)子函數(shù)、顯示子函數(shù)進(jìn)行聲明。 主函數(shù) 圖3-1 程序主函數(shù)在定時(shí)器T0、T1初始化和外部中斷0()子函數(shù)中,規(guī)定定時(shí)器T0、T1的工作模式為方式1,定時(shí)時(shí)間為50ms。外部中斷0采用下降沿觸發(fā)方式。定時(shí)器工作在中斷方式,即定時(shí)時(shí)間到,立即停止執(zhí)行主函數(shù),轉(zhuǎn)而去執(zhí)行中斷服務(wù)函數(shù)。 圖3-2 定時(shí)器T0中斷服務(wù)函數(shù) 圖3-3 外部中斷T1中斷服務(wù)函數(shù) 圖

19、3-4 外部中斷0中斷服務(wù)函數(shù)在顯示子函數(shù)中,上電復(fù)位后4位數(shù)碼管顯示“- - - -”。其中包括走時(shí)轉(zhuǎn)換函數(shù),負(fù)責(zé)將定時(shí)器走時(shí)數(shù)據(jù)轉(zhuǎn)換為分鐘的十位和個(gè)位,超過60分鐘的數(shù)據(jù)再轉(zhuǎn)換為小時(shí)的十位和個(gè)位。在計(jì)時(shí)子函數(shù)中,設(shè)置每50ms中斷1次,秒計(jì)數(shù)器中計(jì)數(shù)值為200時(shí),時(shí)間為1分鐘。分鐘計(jì)數(shù)器計(jì)數(shù)值為60時(shí),時(shí)間為1小時(shí)預(yù)約時(shí)間到,單片機(jī)P3.6引腳輸出低電平,驅(qū)動(dòng)三極管飽和導(dǎo)通,繼電器的線圈中有電流經(jīng)過,從而產(chǎn)生吸合動(dòng)作,接通電源,用電器開始工作。(程序見附錄2) 總 結(jié)經(jīng)過幾周的辛苦設(shè)計(jì),現(xiàn)在終于可以畫上一個(gè)圓滿句號(hào)了。回想起來做畢業(yè)設(shè)計(jì)的整個(gè)過程,其中有苦也有甜。畢業(yè)設(shè)計(jì)的難度不僅是檢驗(yàn)大

20、學(xué)所學(xué)的深度,也是對(duì)自己能力的一種提高。下面我對(duì)整個(gè)畢業(yè)設(shè)計(jì)的過程簡單的做一下總結(jié)。首先,進(jìn)行選題選定。選題是畢業(yè)設(shè)計(jì)的開端,選擇恰當(dāng)?shù)母信d趣的題目,這對(duì)于整個(gè)畢業(yè)設(shè)計(jì)是否能夠順利進(jìn)行關(guān)系極大。好比走路,開始的第一步具有決定意義的,第一步邁向何方,需要慎重考慮。否則,就可能走許多彎路、費(fèi)許多周折,甚至可能做的全是無用功。 參考文獻(xiàn)1戴佳 戴衛(wèi).51單片機(jī)C語言應(yīng)用程序設(shè)計(jì)實(shí)例精講.電子工業(yè)出版社,20062余宏生.吳建設(shè).電子CAD技能實(shí)訓(xùn).人民郵電出版社,20063李貴庭.單片機(jī)應(yīng)用技術(shù)及項(xiàng)目化訓(xùn)練.西南交通大學(xué)出版社,20094劉建清.從零開始學(xué)單片機(jī)C語言.國防工業(yè),20065鐘富昭等.

21、8051單片機(jī)典型模塊設(shè)計(jì)與應(yīng)用M.人民郵電出版社,20076李乃夫.可編程控制器原理、應(yīng)用、實(shí)驗(yàn) M.北京:中國輕工業(yè)出版社,2003.7章文浩.可編程控制器原理及實(shí)驗(yàn) M.北京:國防工業(yè)出版社,2003.8譚浩強(qiáng) 著.C語言設(shè)計(jì)(第三版)清華大學(xué)出版社9王洪慶 主編.微型計(jì)算機(jī)控制技術(shù) 機(jī)械工業(yè)出版社 .2012.910王靜霞 主編. 楊宏麗 劉俐 副主編.單片機(jī)應(yīng)用技術(shù) C語言版電子工業(yè)出版社.201211朱定華.單片機(jī)原理及接口技術(shù)實(shí)驗(yàn)M.北京:北方交通大學(xué)出版社,200212何立民.MCS51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)系統(tǒng)配置與接口技術(shù)M.北京:北京航空航天大學(xué)出版 社,1999.11

22、致謝首先要感謝在大學(xué)兩年半教育我的老師,沒有他們給予我扎實(shí)的基礎(chǔ),我想我是不能完成這次畢業(yè)設(shè)計(jì)的。在這兩個(gè)多月的畢業(yè)設(shè)計(jì)中,我真誠地感謝老師和同學(xué)們的幫助,在他們的幫助下我順利的完成了此次畢業(yè)設(shè)計(jì)。在本次設(shè)計(jì)過程中李學(xué)明老師始終給予了我無私的幫助,在最開始的設(shè)計(jì)思路的構(gòu)建、資料的選取等是我能順利完成這次設(shè)計(jì)的關(guān)鍵。 13附錄1系統(tǒng)仿真原理圖 13附錄2主程序 #include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit KEYON =P20; / 開始鍵 sbit KEYOFF=P21; /

23、 關(guān)閉鍵 sbit KEYSET=P22; / 預(yù)約鍵sbit KEYINC=P23; /加1鍵 sbit KEYDEC=P24; / 減1鍵 sbit KEYFREE=P25; /預(yù)留鍵sbit POWER=P36; /電源開關(guān)指示燈 sbit LED=P33 ; /按鍵指示燈uchar code dispcode=0x3f,0x06,0x05b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40; /0-9的字型碼uchar data disbuf=0,0,0,0; /顯示緩沖區(qū)uchar hour,min ; /小時(shí)、分變量bit Onflag,flag;uc

24、har Setflag;void delay(uchar); /延時(shí)子函數(shù)void init(void); /定時(shí)器初始化子函數(shù)uchar GetKeyNum(); /求按鍵號(hào)void Keyprocess(uchar); /按鍵處理子函數(shù)void calculate(); /計(jì)時(shí)子函數(shù)void display(); /顯示子函數(shù) /-主函數(shù)-void main(void) init(); P1=0x00; while(1) display(); /-定時(shí)器TO、T1初始化,外部中斷0初始化子函數(shù)-void init() TMOD=0x11; /TO、T1作定時(shí)器、工作方式1 TH0=(655

25、36-50000)/256 ; /定時(shí)50ms TL0=(65536-50000)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; IT0=1; /選擇外部中斷0為下降沿觸發(fā)方式 EX0=1; /開外部中斷0 ET1=1; /開定時(shí)器1 ET0=1; /開定時(shí)器0 EA =1; /開總中斷 TR0=1; /-顯示子函數(shù)-void display() uchar i,j=0x08; if(Setflag=0)&&!(min|hour) /數(shù)碼管顯示“- - - -”15 for(i=0;i<4;i+) disbufi=d

26、ispcode10;else / 正常顯示時(shí)間 disbuf0 = dispcodemin%10; /分個(gè)位 disbuf1 = dispcodemin/10; /分十位 disbuf2 = dispcodehour%10+0x80; /小時(shí)個(gè)位 disbuf3 = dispcodehour/10; /小時(shí)十位if(Setflag!=0)&flag) /如果調(diào)時(shí),數(shù)碼管閃爍顯示 for(i=0;i<4;i+) if(disbufi=0x3f)&&(i>2) /不顯示前面的0 P0=0; else P0=disbufi; if(Setflag=1) P1=j&

27、amp;0xfc; /調(diào)時(shí),關(guān)斷前兩位位碼 else P1=j & 0xf3; /調(diào)分,關(guān)斷后兩位位碼 delay(5); /延時(shí)2.5ms P1=0x00; j=j>>1;else /數(shù)碼管正常顯示 for(i=0;i<4;i+) if(disbufi=0x3f)&&(i>2) P0=0; /不顯示前面的0 else P0=disbufi; P1=j; /位選通 delay(5); /延時(shí)2.5ms P1=0X00; j=j>>1; /-外部中斷0中斷函數(shù)- void int0()interrupt 0 using 0 uchar

28、keynum; display(); /動(dòng)態(tài)顯示程序作為去抖動(dòng) if(INT0=0) /判斷是否有按鍵按下 keynum=GetKeyNum(); /有效鍵,獲取鍵值 while(INT0=0); /等待按鍵釋放 Keyprocess(keynum); /按鍵處理 /-定時(shí)器0中斷子函數(shù)- void time0() interrupt 1 /處理調(diào)時(shí)、顯示器閃爍 static uchar ledcnt,num; /設(shè)置靜態(tài)變量 TH0=(65536-50000)/256; /定時(shí)50ms15 TL0=(65536-50000)%256; if(Onflag && (hour |

29、 min)!=0) |! Onflag) /指示燈每隔0.5s閃爍 ledcnt+; if(ledcnt=10) / 10 X 50mS=0.5S ledcnt=0; LED=LED; if(Setflag!=0) /調(diào)時(shí)閃爍 num+;if(num=5) num=0; flag=flag;/-定時(shí)器1中斷子函數(shù)-void time1() interrupt 3 TH1=(65536-50000)/256; TL1=(65536-50000)%256;calculate(); /計(jì)時(shí)/-求按鍵號(hào)-uchar GetKeyNum()uchar temp;if(KEYON=0) temp=1;if(KEYOFF=0) temp=2;if(KEYSET=0) temp=3;if(KEYINC=0) te

溫馨提示

  • 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)論