本可調(diào)倒計時提醒器具有:電路簡潔,、顯示醒目,、定時準(zhǔn)確、制作容易、可調(diào)倒計0~99 分鐘,,使用方便的優(yōu)點。它既有制作的趣味性,,又有使用的實用性,。
一,、硬件電路
如圖1所示,,電源變壓器T1將AC220V市電變換為AC9V交流電壓后,經(jīng)D1~D4整流,、C4濾波、U2MC7805(或LM7805)穩(wěn)壓后,,得到5V直流電壓,為整機供電,。
主控芯片為PIC16F627單片機,,其每個端口的拉電流或灌電流可達25mA,無需外加三極管,,就可以直接驅(qū)動LED數(shù)碼管,。
設(shè)PIC16F627的RB口為輸出,其中RB0~RB6用于數(shù)碼管的段驅(qū)動,,因選用的是LG5621BH共陽數(shù)碼管,,故只有當(dāng)RBO~RB6輸出低電平時,數(shù)碼管才能被點亮,,RB7口用于控制蜂鳴器,三極管Q3(S8050)作驅(qū)動放大,,只有在RB7輸出高電平時,蜂鳴器才能鳴響報警,。設(shè)RA0~RA2為輸出口,其中RA0,、RAI用于數(shù)碼管的位驅(qū)動,,輸出為低電平使能;RA2用于數(shù)碼管的小數(shù)點位驅(qū)動,低電平使能,,用作定時器工作指示燈,當(dāng)定時器工作時,,數(shù)碼管的小數(shù)點位以2s的頻率閃爍,。設(shè)RA5、RA4,、RA3為輸入口,RR4,、RR5、R6為RA5,、RA4、RA3口的上拉電阻,。在RA5、RA4,、RA3口上接有按鍵開關(guān)S1~S3,。S1為啟動/報警解除鍵;S2為十位數(shù)預(yù)置調(diào)整鍵,,按一次該鍵,定時器的十位數(shù)減1,,減到0時再按一下該鍵,數(shù)值回到了9,,如此循環(huán)顯示;S3為定時器個位數(shù)預(yù)置調(diào)整鍵,調(diào)整方法與S2相同,。至此,,PIC16F627單片機的所有端口都用上了,。
定時器功能:定時器初始上電時,,兩位數(shù)碼管顯示99,,并處于待機狀態(tài),。此時,如按一下個位定時數(shù)預(yù)置鍵S3,,個位數(shù)碼管顯示值減1,如按一下S2,,則十位數(shù)碼管顯示值減小1。
S1為啟動/報警解除鍵,。按動S1,,定時器進入工作狀態(tài),,倒計時開始(定時時間為分鐘),,定時時長從數(shù)碼管當(dāng)前的顯示值開始倒計時。在倒計時期間,,數(shù)碼管的小數(shù)點dp位以2s的頻率閃爍,并且每過一分鐘,,個位顯示值減1;每過10分鐘,十位顯示值減1,,當(dāng)數(shù)碼管顯示值減至00后,,再過60秒,,蜂鳴器開始報警,。在報警期間,數(shù)碼管始終顯示00,,直至再次按下S1鍵,,蜂鳴器才會停止報警,數(shù)碼管顯示上次預(yù)置的定時時間,。
在倒計時期間內(nèi),按鍵S1~S3均被屏蔽,,不能使能。

二,、程序設(shè)計
1.程序流程主程序流程如圖2 (略)所示。1 分鐘定時子程序流程如圖3 (略)所示,。數(shù)碼管顯示子程序流程如圖4(略)所示,。
2.程序設(shè)計要點
(1)本定時器使用PIC16F627 的定時器模塊TM10 做成50ms 定時中斷,再用寄存器的遞減,、判零語句“DECFSZ F”判斷是否到20 次中斷來確定顯示到1 分鐘沒有,,未到1 分鐘,繼續(xù)顯示當(dāng)前的數(shù)碼值,,到1 分鐘,當(dāng)前顯示的數(shù)碼值減1 后再顯示1 分鐘??,,這樣,每過1 分鐘數(shù)碼管個位顯示值減1,,每過10 分鐘,數(shù)碼管十位顯示值減1,,直到兩位數(shù)碼管的顯示值減到00 為止。
(2)定時器如何區(qū)分在程序設(shè)計中,,用一個寄存器的標(biāo)志位區(qū)分預(yù)置顯示程序和定時工作顯示程序。該標(biāo)志位為0,,執(zhí)行預(yù)置顯示程序;為1,,執(zhí)行定時器工作程序,。
(3)按鍵的防抖動問題,,機械按鍵在按下和抬起的瞬間均存在著多次接通與斷開的情況,本程序使用軟件來解決按鍵防抖問題,。具體方法是,在按鍵按下和抬起的過程中均加有延時程序,,一般延時時間以10ms 左右為宜。
(4)周用顯示查表程序,,用查表法作數(shù)碼管的數(shù)碼值顯示可使軟、硬件設(shè)計變得更加簡潔,、易懂。但本定時器設(shè)計中把數(shù)碼管的小數(shù)點位用作了“工作指示燈”,,又由于數(shù)碼管采用的是“動態(tài)掃描”的方式點亮的,所以此查表碼非彼查表碼,,即查表碼發(fā)生了變化。右邊為本項目共陽極數(shù)碼所用的查表程序的碼表,。
如將碼表的值顛倒書寫,,即將RETLW 0X40 寫在最前面,RETLW 0X10 寫在最后面,,則本定時器就變成“正”定時器了。
三,、程序燒寫注意事項
燒寫程序時,一定要注意編程器的“配置位”設(shè)置,,否則可能導(dǎo)致程序不能正常運行等問題,。