PIC16F627 單片機(jī)端口的設(shè)置:
單片機(jī)的RA 有6 個(gè)I/O 端口,用RA《5 :0》
表示。本應(yīng)用中RA0-RA2 設(shè)置為輸出端口;其中RA0、RA1 端口分別用于兩個(gè)數(shù)碼管的“個(gè)位”和“十位”的“位碼”驅(qū)動,RA2 用于控制三極管Q3 的b 極工作,連帶控制繼電器J1 觸點(diǎn)的閉合與否,進(jìn)而,控制了定時(shí)插座JP1 的AC220V輸出電壓的有無。RA3 端口設(shè)置為輸入/ 輸出分時(shí)二重復(fù)用工作狀態(tài):①作輸入端口時(shí):用作定時(shí)插座的“個(gè)位定時(shí)時(shí)間預(yù)置調(diào)整鍵”;②作輸出端口時(shí):用于驅(qū)動LED1 發(fā)光二極管做為本定時(shí)插座的工作指示燈。在定時(shí)插座沒有進(jìn)入定時(shí)輸出供電的情況下,RA3 作為輸入端口,保持了用于設(shè)置定時(shí)器的個(gè)位數(shù)碼預(yù)置數(shù)的設(shè)置功能;在插座工作輸出電壓的情況下,RA3 轉(zhuǎn)換為輸出端口,用于驅(qū)動LED1 作為插座的工作指示燈。
RA4 端口設(shè)置為輸入端口,用于定時(shí)時(shí)間的十位數(shù)值預(yù)置調(diào)整鍵。RA5 端口為輸入端口,與之相接的按鈕開關(guān)S1 為“啟動/ 報(bào)警解除按鍵”。
RB 端口的設(shè)置:電路中PIC16F627 的RB 端口設(shè)置為輸出端口。其中RB0-RB6 端口分別用于LED 數(shù)碼管的“a-g”7 個(gè)“段碼”的驅(qū)動,因這里選用的是LG5621BH(紅色)共陽極LED 數(shù)碼管,故而,只有當(dāng)RB0-RB6 端口輸出“低電平”時(shí),LED 數(shù)碼管所對應(yīng)的“a-g”碼段才能被點(diǎn)亮。RB7 端口用于驅(qū)動有源蜂鳴器,在RB7端口輸出高電平時(shí),該高電平電壓通過1k 電阻R9 加至三極管Q4 的b 極上,Q4 導(dǎo)通,蜂鳴器鳴響報(bào)警。
電源定時(shí)插座功能:定時(shí)插座初始上電時(shí),兩位數(shù)碼管顯示值為:“99”,并處于停止走時(shí)的待機(jī)狀態(tài),其輸出插孔JP1 沒有電壓輸出。要是此時(shí)按下個(gè)位定時(shí)時(shí)間數(shù)值預(yù)置調(diào)整鍵S3,則個(gè)位數(shù)碼管從當(dāng)前的顯示值減小“1”個(gè)數(shù),如,第一次按下S3 并且釋放按鍵后,個(gè)位數(shù)碼管顯示值由“9”變?yōu)椤?”,再按一次S3,顯示值變?yōu)椤?”,……直至顯示值變?yōu)椤?”,再從“0”回到“9”往復(fù)循環(huán)顯示。
十位定時(shí)時(shí)間預(yù)置調(diào)整按鍵S2 功能與S3 相同,只不過每按動S2 一次,并且釋放后,十位數(shù)碼管顯示值減小“1”,同樣,顯示值也是從9 → 8 → 7 →…→ 0 → 9 往復(fù)循環(huán)顯示。S1 為啟動/ 報(bào)警解除鍵。
當(dāng)?shù)谝淮伟磩覵1 按鈕時(shí),定時(shí)插座進(jìn)入工作狀態(tài):
RA2 端口輸出高電平,此高電平經(jīng)過1K 限流電阻R8 加在三極管Q3 基極b 上,Q3 導(dǎo)通,繼電器J1 吸合,J1 的①、④ 觸點(diǎn)閉合,AC220V 交流市電的“火線”L 經(jīng)繼電器的定、動觸點(diǎn)④、①加至本插座的輸出JP1 的L 端口,從而JP1 插孔輸出AC220V 交流電壓,同時(shí)交流電壓輸出指示燈LED2 被點(diǎn)亮,表示插座有AC220V 電壓輸出。
同時(shí),定時(shí)時(shí)間以倒計(jì)時(shí)的方式開始計(jì)時(shí)、遞減,定時(shí)時(shí)間為分鐘,定時(shí)時(shí)長從數(shù)碼管當(dāng)前的顯示值開始到顯示00 結(jié)束。在倒計(jì)時(shí)的時(shí)間范圍內(nèi),LED1 工作指示燈開始以2S 的頻率閃爍點(diǎn)亮、熄滅一次,并且每過一分鐘,數(shù)碼管的個(gè)位顯示值遞減“1”個(gè)數(shù);每過10 分鐘,數(shù)碼管的十位顯示值減“1”,當(dāng)數(shù)碼管顯示值為“00”時(shí),再過60 秒鐘, 輸出插孔JP1 斷電,AC220V 輸出電壓指示燈LED2 同時(shí)熄滅;蜂鳴器開始報(bào)警鳴響。
在蜂鳴器報(bào)警其間內(nèi),數(shù)碼管始終顯示“00”值不變、LED1 工作指示燈停止閃爍,并且處于常亮狀態(tài)。直至再次按下S1 按鍵時(shí)蜂鳴器才能停止報(bào)警;數(shù)碼管顯示值跳回到上一次預(yù)置的定時(shí)時(shí)間的數(shù)值上,LED1 熄滅。
在倒計(jì)器的定時(shí)時(shí)間范內(nèi),S1 ~ S3 按鍵功能均被屏蔽、失效,不能使能。
程序設(shè)計(jì)要點(diǎn):程序設(shè)計(jì)包括PIC16F627 初始化程序,主程序,1 分鐘定時(shí)中斷子程序,蜂鳴器提示音子程序,查數(shù)碼表子程序等組成。
本程序設(shè)計(jì)中,LED1 閃爍點(diǎn)亮速度設(shè)置不宜太快或太慢,LED1 閃爍點(diǎn)亮速度太快,會使人看了后心理產(chǎn)生太“忙碌”, 感受心慌,閃爍的太慢又經(jīng)C1 濾波、MC7805 穩(wěn)壓、C3、C2 高、低頻濾波后得到穩(wěn)定的DC5V 直流電壓作為整機(jī)的工作電源。
本電源定時(shí)插座的主控MCU 芯片為PIC16F627 單片機(jī)。PIC16F 系列單片機(jī)優(yōu)點(diǎn)之一是:
端口驅(qū)動電流大,每個(gè)端口的拉電流或者灌電流均大于20mA,這樣用它的端口驅(qū)動能力就可以直接驅(qū)動LED 數(shù)碼管了,無需在加驅(qū)動三極管,使得該插座的硬件電路設(shè)計(jì)變得十分簡潔。
PIC16F627 單片機(jī)端口的設(shè)置:
單片機(jī)的RA 有6 個(gè)I/O 端口,用RA《5 :0》
表示。本應(yīng)用中RA0-RA2 設(shè)置為輸出端口;其中RA0、RA1 端口分別用于兩個(gè)數(shù)碼管的“個(gè)位”和“十位”的“位碼”驅(qū)動,RA2 用于控制三極管Q3 的b 極工作,連帶控制繼電器J1 觸點(diǎn)的閉合與否,進(jìn)而,控制了定時(shí)插座JP1 的AC220V輸出電壓的有無。RA3 端口設(shè)置為輸入/ 輸出分時(shí)二重復(fù)用工作狀態(tài):①作輸入端口時(shí):用作定時(shí)插座的“個(gè)位定時(shí)時(shí)間預(yù)置調(diào)整鍵”;②作輸出端口時(shí):用于驅(qū)動LED1 發(fā)光二極管做為本定時(shí)插座的工作指示燈。在定時(shí)插座沒有進(jìn)入定時(shí)輸出供電的情況下,RA3 作為輸入端口,保持了用于設(shè)置定時(shí)器的個(gè)位數(shù)碼預(yù)置數(shù)的設(shè)置功能;在插座工作輸出電壓的情況下,RA3 轉(zhuǎn)換為輸出端口,用于驅(qū)動LED1 作為插座的工作指示燈。
RA4 端口設(shè)置為輸入端口,用于定時(shí)時(shí)間的十位數(shù)值預(yù)置調(diào)整鍵。RA5 端口為輸入端口,與之相接的按鈕開關(guān)S1 為“啟動/ 報(bào)警解除按鍵”。
RB 端口的設(shè)置:電路中PIC16F627 的RB 端口設(shè)置為輸出端口。其中RB0-RB6 端口分別用于LED 數(shù)碼管的“a-g”7 個(gè)“段碼”的驅(qū)動,因這里選用的是LG5621BH(紅色)共陽極LED 數(shù)碼管,故而,只有當(dāng)RB0-RB6 端口輸出“低電平”時(shí),LED 數(shù)碼管所對應(yīng)的“a-g”碼段才能被點(diǎn)亮。RB7 端口用于驅(qū)動有源蜂鳴器,在RB7端口輸出高電平時(shí),該高電平電壓通過1k 電阻R9 加至三極管Q4 的b 極上,Q4 導(dǎo)通,蜂鳴器鳴響報(bào)警。
電源定時(shí)插座功能:定時(shí)插座初始上電時(shí),兩位數(shù)碼管顯示值為:“99”,并處于停止走時(shí)的待機(jī)狀態(tài),其輸出插孔JP1 沒有電壓輸出。要是此時(shí)按下個(gè)位定時(shí)時(shí)間數(shù)值預(yù)置調(diào)整鍵S3,則個(gè)位數(shù)碼管從當(dāng)前的顯示值減小“1”個(gè)數(shù),如,第一次按下S3 并且釋放按鍵后,個(gè)位數(shù)碼管顯示值由“9”變?yōu)椤?”,再按一次S3,顯示值變?yōu)椤?”,……直至顯示值變?yōu)椤?”,再從“0”回到“9”往復(fù)循環(huán)顯示。
十位定時(shí)時(shí)間預(yù)置調(diào)整按鍵S2 功能與S3 相同,只不過每按動S2 一次,并且釋放后,十位數(shù)碼管顯示值減小“1”,同樣,顯示值也是從9 → 8 → 7 →…→ 0 → 9 往復(fù)循環(huán)顯示。S1 為啟動/ 報(bào)警解除鍵。
當(dāng)?shù)谝淮伟磩覵1 按鈕時(shí),定時(shí)插座進(jìn)入工作狀態(tài):
RA2 端口輸出高電平,此高電平經(jīng)過1K 限流電阻R8 加在三極管Q3 基極b 上,Q3 導(dǎo)通,繼電器J1 吸合,J1 的①、④ 觸點(diǎn)閉合,AC220V 交流市電的“火線”L 經(jīng)繼電器的定、動觸點(diǎn)④、①加至本插座的輸出JP1 的L 端口,從而JP1 插孔輸出AC220V 交流電壓,同時(shí)交流電壓輸出指示燈LED2 被點(diǎn)亮,表示插座有AC220V 電壓輸出。
同時(shí),定時(shí)時(shí)間以倒計(jì)時(shí)的方式開始計(jì)時(shí)、遞減,定時(shí)時(shí)間為分鐘,定時(shí)時(shí)長從數(shù)碼管當(dāng)前的顯示值開始到顯示00 結(jié)束。在倒計(jì)時(shí)的時(shí)間范圍內(nèi),LED1 工作指示燈開始以2S 的頻率閃爍點(diǎn)亮、熄滅一次,并且每過一分鐘,數(shù)碼管的個(gè)位顯示值遞減“1”個(gè)數(shù);每過10 分鐘,數(shù)碼管的十位顯示值減“1”,當(dāng)數(shù)碼管顯示值為“00”時(shí),再過60 秒鐘, 輸出插孔JP1 斷電,AC220V 輸出電壓指示燈LED2 同時(shí)熄滅;蜂鳴器開始報(bào)警鳴響。
在蜂鳴器報(bào)警其間內(nèi),數(shù)碼管始終顯示“00”值不變、LED1 工作指示燈停止閃爍,并且處于常亮狀態(tài)。直至再次按下S1 按鍵時(shí)蜂鳴器才能停止報(bào)警;數(shù)碼管顯示值跳回到上一次預(yù)置的定時(shí)時(shí)間的數(shù)值上,LED1 熄滅。
在倒計(jì)器的定時(shí)時(shí)間范內(nèi),S1 ~ S3 按鍵功能均被屏蔽、失效,不能使能。
程序設(shè)計(jì)要點(diǎn):程序設(shè)計(jì)包括PIC16F627 初始化程序,主程序,1 分鐘定時(shí)中斷子程序,蜂鳴器提示音子程序,查數(shù)碼表子程序等組成。
本程序設(shè)計(jì)中,LED1 閃爍點(diǎn)亮速度設(shè)置不宜太快或太慢,LED1 閃爍點(diǎn)亮速度太快,會使人看了后心理產(chǎn)生太“忙碌”, 感受心慌,閃爍的太慢又會使人疑惑定時(shí)插座是否在走動、工作,以每2S鐘的頻率點(diǎn)亮、熄滅一次為妥。另外電路中增加了LED2 作為AC220V 輸出電源指示燈,當(dāng)定時(shí)插座工作時(shí),LED2 點(diǎn)亮,表示JP1 插孔有AC220V電壓輸出;LED2 熄滅則表示電源JP1 插孔無AC220V 電壓輸出,以示確認(rèn)插孔有否AC 電壓輸出。
PIC16F627 單片機(jī)初始化程序如下。
;*****【PIC16F627 初始化程序】***************
START
BCF STATUS,6
BSF STATUS,5
; 置STAUUS 寄存器的RP1=0,RPO=1
MOVLW 0
MOVWF TRISB
; 設(shè)B 口為輸出
MOVLW 0F8H
MOVWF TRISA
; 設(shè)A 口的R2-R0 位為輸出
; 設(shè)A 口的R5-R3 位為輸入
MOVLW 07H
MOVWF OPTION_REG
; 設(shè)置選項(xiàng)寄存器分頻器:TMR0
; 分頻比值設(shè)為:1 :256
BCF STATUS,5
MOVLW 07H
MOVWF CMCON
; 置數(shù)07H 到CMCON
; 關(guān)閉16F627 內(nèi)部比較器
MOVLW 0
MOVWF PORTB
; 清B 口
;---------- 以下為開中斷設(shè)置--------
MOVLW 0A0H
MOVWF INTCON
; 開TMR0 中斷使能位
; 和全局中斷使能位
BCF INTCON,T0IF
MOVLW TMR0_B
; 清TMR0 中斷標(biāo)志為
MOVWF TMR0
; 向TMR0 賦初值
; 并啟動TMR0 定時(shí)器
;*******【初始化程序結(jié)束】*********************
評論