天堂草原最受欢迎的角色,天堂动漫,天堂在线,色天堂下载,天堂中文在线资源,亚洲男人天堂

技術(shù)熱線(xiàn): 4007-888-234

專(zhuān)注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

提供開(kāi)發(fā)工具、應(yīng)用測(cè)試 完善的開(kāi)發(fā)代碼案例庫(kù)分享

從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無(wú)限潛能!

技術(shù)支持

PIC16C55單片機(jī)控制多用電子鐘

更新時(shí)間: 2019-03-22

本電子鐘采用PIC16C55單片機(jī)控制,適于溫室的定時(shí)恒溫或自來(lái)水的定時(shí)定壓控制等。PIC16C55單片機(jī)工作電壓為2.5~6.25V,功耗低、驅(qū)動(dòng)能力強(qiáng)。本電子鐘可以控制一路負(fù)載在24小時(shí)內(nèi)的3次開(kāi)/關(guān);一個(gè)雙限觸發(fā)的定時(shí)輸出口,既可接傳統(tǒng)的功率保持型繼電器,也可接脈沖繼電器。本機(jī)用四位LED數(shù)碼管掃描式顯示,還有消隱(省電)工作方式,使用起來(lái)非常靈活、方便。
  一、工作原理
  電子鐘電路見(jiàn)圖1。
  RB7口是定時(shí)指示端,在定時(shí)開(kāi)期間輸出高電平,驅(qū)動(dòng)V1發(fā)光,該口也可經(jīng)緩沖作定時(shí)輸出口;RB6是雙限觸發(fā)控制的定時(shí)輸出口,其工作方式是:在RB7高電平期間,若RB1為高電平,則RB6輸出高電平;若RB0為高電平,RB6輸出低電平;若RB1、RB0同為低電平,RB6保持原態(tài);同為高電平時(shí),RB6輸出低電平。RB5、RB4用于驅(qū)動(dòng)脈沖繼電器,RB6上升沿觸發(fā)RB5輸出高電平開(kāi)脈沖;在RB6下降沿觸發(fā)RB4時(shí),RB4端輸出高電平關(guān)脈沖,開(kāi)/關(guān)脈沖的持續(xù)時(shí)間均為125ms。
  RB3是消隱控制器,接高電平(即SK1閉合)時(shí),顯示屏及秒閃正常;否則,顯示消隱。顯示消隱時(shí),時(shí)鐘及各控制邏輯都正常運(yùn)行,如忽略RB4至RB7各口的驅(qū)動(dòng)電流,則在3V供電時(shí),整機(jī)電流不足20μA,即兩節(jié)5號(hào)電池可用數(shù)月!RB2選擇數(shù)碼管極性,RB2為低電平,使用共陰LED;RB2為高電平,則用共陽(yáng)LED。數(shù)碼管的極性是在上電初始化時(shí),根據(jù)RB2口狀態(tài)確定的,工作過(guò)程中改變RB2的電平則不起作用。

本機(jī)設(shè)S1~S4四個(gè)按鍵,S1是功能選擇鍵,S2是小時(shí)增量調(diào)整,S3是分鐘增量,S4用于分鐘減量調(diào)節(jié),其使用方法為:
  上電時(shí),RB5至RB7均為低電平,RB4端送出一個(gè)關(guān)脈沖,使SK1閉合,整機(jī)正常顯示、工作,RC7口送出秒閃脈沖,RC6~RC0送字段碼。RA3~RA0分別為10時(shí)、時(shí)、10分、分位的位碼輸出。這時(shí),按一下S2或S3(時(shí)增量/分增量鍵),可使RB7端置位或復(fù)位。
  在正常走時(shí)期間,秒閃正常;在校對(duì)或設(shè)置定時(shí)時(shí),秒停閃。例如:在正常走時(shí)期間,按一下S1鍵,秒閃停止,屏幕顯示J-,表示可以校對(duì)時(shí)間。這時(shí)再按S2~S4中任一鍵,屏幕顯示現(xiàn)在時(shí)間,但秒不閃,此刻可按S2~S4校對(duì)時(shí)鐘。再次按S1,屏幕顯示1∪,表示可以設(shè)定第一次開(kāi)時(shí)間,此時(shí)按S2~S4對(duì)時(shí)間進(jìn)行查看及設(shè)置。繼續(xù)按S1,系統(tǒng)顯示1∩,表示可設(shè)置第一次關(guān)時(shí)間……依次進(jìn)行。設(shè)置好系統(tǒng)及3次開(kāi)關(guān)時(shí)間后,整機(jī)回到正常顯示狀態(tài),秒閃恢復(fù)。
  如欲取消某次開(kāi)/關(guān)定時(shí),只需把該次的開(kāi)與關(guān)時(shí)間設(shè)置成相同值即可。
  筆者曾把該時(shí)鐘用于定時(shí)定壓供水控制系統(tǒng),RB6端用于驅(qū)動(dòng)繼電器(也可用RB5與RB4兩端驅(qū)動(dòng)脈沖繼電器),RB1端接水壓(水位)的低限輸入,RB0端接高限輸入,設(shè)置好定時(shí),一個(gè)簡(jiǎn)易的定時(shí)定壓自動(dòng)供水系統(tǒng)即告完成。
  二、編程技巧
  PIC16C55單片機(jī)程序存儲(chǔ)器只有512字節(jié),加上采用外接32768Hz晶體振蕩方式,時(shí)鐘速度較低,因此,統(tǒng)籌好系統(tǒng)的工作時(shí)序與人機(jī)界面之間的關(guān)系是軟件設(shè)計(jì)成敗的關(guān)鍵。本機(jī)編程采用如下方案:
  軟件工作流程見(jiàn)附圖2。

PIC16C55單片機(jī)的一個(gè)機(jī)器周期是4個(gè)時(shí)鐘周期,不難算出,本系統(tǒng)中每秒有8192個(gè)機(jī)器周期。在編制軟件時(shí),先設(shè)定單片機(jī)內(nèi)部定時(shí)計(jì)數(shù)器F1的計(jì)數(shù)方式為機(jī)器周期的64分頻。這樣,每當(dāng)F1溢出時(shí),系統(tǒng)遞加2秒。平時(shí),系統(tǒng)每128個(gè)機(jī)器周期內(nèi)用RC口與RA口驅(qū)動(dòng)掃描一次顯示屏,可保證每秒內(nèi)掃描64次顯示屏,基本上無(wú)閃爍感。而128個(gè)機(jī)器周期正是F1的第0位(為便于敘述以下簡(jiǎn)記為F10)每次下降沿的間隔時(shí)間,我們可以編一段程序,當(dāng)F10的下降沿到來(lái)時(shí),掃描一次顯示屏,每當(dāng)F1的低4位為全0時(shí)(125ms一次)使系統(tǒng)檢測(cè)一次RB口與按鍵狀態(tài),并進(jìn)行相關(guān)處理,部分相關(guān)程序如下:
WAIT  BTFSC 1,0    ;等待F10的下降沿,編程時(shí)
      GOTO  WAIT   ;要保證每次下降沿前到此

MOVFW 1
      SKPNZ
      GOTO  CLOCK ;F1=0,滿(mǎn)2秒,轉(zhuǎn)時(shí)鐘處理
      ANDLW 0FH ;屏蔽F1高4位
      SKPZ
      GOTO DISPLAY;F1低4位不為0,轉(zhuǎn)顯示
      MOVLW 0C0H ;滿(mǎn)125mS,使RB口脈沖復(fù)位
      ANDWF 6,1
      MOVLW 0FH   ;檢測(cè)按鍵
      TRIS  7
      MOVFW 7
      ANDLW 0FH ;保留按鍵數(shù)據(jù)
      SKPZ
      GOTO AN  ;有鍵值,轉(zhuǎn)按鍵處理
DISPLAY ……      ;顯示掃描,定時(shí)管理RB口
CLOCK    ……      ;時(shí)鐘,定時(shí)處理程序
AN    ……      ;按鍵管理程序
  經(jīng)近一年的運(yùn)行,該系統(tǒng)非常的穩(wěn)定、可靠。有興趣者不妨一試


PIC16C55單片機(jī)控制多用電子鐘2


PIC16C55單片機(jī)控制多用電子鐘1

本源程序系`一款多用電子鐘芯片'源程序,可有3開(kāi)3關(guān)定時(shí),且有受雙限觸發(fā)的定時(shí)口
 ;該程序硬件系采用PIC16C55芯片LP振蕩方式外接32768Hz晶振

   ORG      000H      
TOP             XORLW    0FFH      
                XORLW    0FFH      
                XORLW    0FFH      
                XORLW    0FFH      
                MOVLW    08H         ;F 12H--1DH依次為K1F--G3S
                MOVWF    4         
QL              CLRF     0         
                INCF     4,1       
                CLRWDT  
                MOVFW    4         
                ANDLW    1FH       
                SKPZ    
                GOTO     QL        
                CLRF     4         
                BTFSC    6,2       
                BSF      0BH,2       ;共陽(yáng)
                GOTO     CSH       
HBCD            NOP     
DBCD            ANDLW    0FH        

CLRWDT  
                NOP     
                ADDWF    2,1       
                RETLW    01H         ;0(共陽(yáng))
                RETLW    4FH         ;1
                RETLW    12H         ;2
                RETLW    06H         ;3
                RETLW    4CH         ;4
                RETLW    24H         ;5
                RETLW    20H         ;6
                RETLW    0FH         ;7
                RETLW    00H         ;8
                RETLW    04H         ;9
                RETLW    47H         ;A(校時(shí)) 顯示J
                RETLW    71H         ;B(鬧鈴) 顯示L
                RETLW    31H         ;C
                RETLW    63H         ;D(開(kāi))
                RETLW    6AH         ;E(關(guān))
                RETLW    7EH         ;F(杠)
CSH             CLRW                 ;初始化
                TRIS     5           ;F5,3--5,0共陽(yáng)顯示掃描10時(shí)--分
                BTFSS    0BH,2      

 MOVLW    0FH       
                MOVWF    5           ;關(guān)掃描
                MOVLW    0FH       
                TRIS     6         
                CLRF     6           ;關(guān)閉定時(shí)輸出
                BSF      6,4         ;輸出關(guān)脈沖
                MOVLW    11H         ;置顯示指針,F11H--時(shí),F10H--分
                MOVWF    4         
                MOVLW    05H         ;F1計(jì)數(shù)64分頻
                OPTION  
                MOVLW    01H       
                MOVWF    1         
                MOVLW    0E2H      
                MOVWF    0FH       
HBEGIN          BCF      0BH,0       ;清1/8秒標(biāo)志
                CLRWDT  
WAIT            BTFSC    1,0         ;至HXSCL-17
                GOTO     WAIT        ;1/64秒檢查
                MOVFW    1          

 SKPNZ   
                INCFSZ   0FH,1       ;秒增量(逢2秒1次)
                GOTO     DZJC      
                GOTO     HSZCL       ;整分處理
DZJC            ANDLW    0FH       
                SKPZ    
                GOTO     XSCL        ;轉(zhuǎn)顯示處理
                BSF      0BH,0       ;0BH.0-1/8秒標(biāo)志(啟動(dòng)/停止檢測(cè)時(shí)用)
                MOVLW    0C0H      
                ANDWF    6,1         ;關(guān)(繼電器)驅(qū)動(dòng)脈沖
                MOVLW    0FH       
                TRIS     7         
                MOVFW    7           ;檢查按鍵狀態(tài)(0.125S-1次)
                ANDLW    0FH         ;F7,3--7,0依次是功能,時(shí)加,分加,分減鍵
                SKPZ    
                GOTO     HAJCL       ;轉(zhuǎn)按鍵處理
XSCL            MOVF     0EH,1       ;F0EH-調(diào)節(jié)指針
                MOVLW    80H       
                SKPNZ   
                MOVLW    00H         ;在設(shè)定時(shí)間時(shí),

秒停閃
                BTFSS    6,3       
                MOVLW    0FFH        ;消隱時(shí),7段碼口為高阻態(tài)
                TRIS     7         
                BTFSS    0BH,2       ;共陽(yáng)/共陰選擇
                GOTO     DXSCL       ;轉(zhuǎn)共陰顯示
                BTFSC    0BH,6     
                GOTO     HBZXS       ;轉(zhuǎn)標(biāo)志顯示
HXSB            MOVFW    0AH         ;時(shí)間顯示(95)
                MOVWF    7           ;輸出10時(shí)碼
                BSF      5,3         ;開(kāi)10時(shí)線(xiàn)
                CLRW    
                BTFSC    0BH,0     
                MOVFW    6           ;每0.125秒`啟動(dòng)/停止'檢測(cè)1次
                ANDLW    03H       
                MOVWF    8         
                BTFSC    8,0       
                BCF      8,1         ;消除啟動(dòng)/停止競(jìng)爭(zhēng)
                MOVFW    0         
                CALL     HBCD        ;10
                BTFSC    1,6       
                IORLW    80H         ;準(zhǔn)備`時(shí)'數(shù)據(jù)
                BCF      5,3         ;關(guān)10時(shí)

MOVWF    7         
                BTFSS    0BH,7     
                CLRF     8         
                BSF      5,2         ;顯示時(shí)
                BTFSS    6,6       
                BCF      8,0         ;如已關(guān),不再停止
                BTFSC    6,6       
                BCF      8,1         ;如已開(kāi),不再啟動(dòng)
                BTFSC    8,0       
                BCF      6,6         ;如停止,復(fù)位開(kāi)電平
                DECF     4,1       
                SWAPF    0,0       
                CALL     HBCD        ;10
                BTFSC    1,6       
                IORLW    80H         ;準(zhǔn)備10分顯示數(shù)

據(jù)
                BCF      5,2         ;關(guān)掃描線(xiàn)
                MOVWF    7         
                BTFSC    8,1       
                BSF      6,6         ;如啟動(dòng),置位開(kāi)電平
                BSF      5,1         ;顯示10分
                SWAPF    08H,1     
                MOVFW    6         
                ANDLW    0C0H      
                IORWF    08H,1     
                MOVFW    08H       
                MOVWF    6           ;啟動(dòng)/停止輸出
                NOP     
                MOVFW    0         
                CALL     HBCD        ;10
                BTFSC    1,6       
                IORLW    80H         ;準(zhǔn)備分顯示數(shù)據(jù)
                BCF      5,1         ;關(guān)掃描線(xiàn)
                MOVWF    7         
                BSF      5,0         ;顯示分
                NOP     
                NOP      

 NOP     
                NOP     
                NOP                
                INCF     4,1         ;恢復(fù)時(shí)指針
                SWAPF    0,0         ;準(zhǔn)備10時(shí)7段碼
                CALL     HBCD        ;10
                BTFSC    1,6       
                IORLW    80H       
                MOVWF    0AH         ;10時(shí)位7段顯示碼暫存于F0AH中
                CLRF     5         
                GOTO     HBEGIN      ;時(shí)間顯示完,轉(zhuǎn)程序結(jié)束
HBZXS           RRF      0EH,0       ;調(diào)節(jié)指針(F0EH)除以2(71)
                ANDLW    0FH       
                MOVWF    1FH       
                SKPNZ   
                MOVLW    0AH         ; J 7段碼地址
                CALL     HBCD        ;(10)標(biāo)志指示1(10分位)

          MOVWF    7           ;此時(shí)可能顯示[J 1 2 3]
                BSF      5,1         ;開(kāi)(10分位)顯示
                MOVFW    6         
                ANDLW    03H       
                MOVWF    8           ;啟動(dòng)/停止數(shù)據(jù)暫存入F8中
                NOP     
                MOVLW    0DH         ; U 地址
                BTFSC    0EH,0     
                MOVLW    0EH         ; n 地址
                MOVF     1FH,1     
                SKPNZ   
                MOVLW    0FH         ; - 地址
                CALL     HBCD        ;10
                BCF      5,1         ;關(guān)10分位
                MOVWF    7         
                BSF      5,0         ;開(kāi)分位,可能顯示[- U n]
                BTFSS    0BH,0     
                CLRF     8           ;每0.125秒取1次啟動(dòng)/停止數(shù)據(jù)
                BTFSS    0BH,7     
                CLRF     8          

 BTFSC    8,0       
                BCF      8,1         ;免除啟/停競(jìng)爭(zhēng)(停止優(yōu)先)
                BTFSC    6,6       
                BCF      8,1         ;如已開(kāi),則清啟動(dòng)位
                BTFSS    6,6       
                BCF      8,0         ;如已關(guān),則清停止位
                SWAPF    8,1       
                BTFSC    8,5       
                BSF      6,6         ;如啟動(dòng),置位開(kāi)電平
                BTFSC    8,4       
                BCF      6,6         ;如停止,復(fù)位開(kāi)電平
                MOVFW    6           ;控制輸出
                ANDLW    0C0H      
                IORWF    08H,1      

 MOVFW    08H       
                MOVWF    6         
                CLRF     5           ;標(biāo)志顯示完
                GOTO     HBEGIN    
DXSCL           BTFSC    0BH,6     
                GOTO     DBZXS       ;轉(zhuǎn)標(biāo)志顯示
DXSB            MOVFW    0AH         ;時(shí)間顯示(84)
                MOVWF    7           ;輸出10時(shí)碼
                BCF      5,3         ;開(kāi)10時(shí)線(xiàn)
                CLRW    
                BTFSC    0BH,0     
                MOVFW    6           ;每0.125秒`啟動(dòng)/停止'檢測(cè)1次
                ANDLW    03H       
                MOVWF    8         
                BTFSC    8,0       
                BCF      8,1         ;消除啟動(dòng)/停止競(jìng)爭(zhēng)
                MOVFW    0         
                CALL     DBCD        ;9
                XORLW    7FH       
                BTFSC    1,6       
                IORLW    80H         ;準(zhǔn)備`時(shí)'數(shù)據(jù)
                BSF      5,3         ;關(guān)10時(shí)

 MOVWF    7         
                BTFSS    0BH,7     
                CLRF     8         
                BCF      5,2         ;顯示時(shí)
                BTFSS    6,6       
                BCF      8,0         ;如已關(guān),不再停止
                BTFSC    6,6       
                BCF      8,1         ;如已開(kāi),不再啟動(dòng)
                BTFSC    8,1       
                BSF      6,6         ;如啟動(dòng),置位開(kāi)電平
                DECF     4,1       
                SWAPF    0,0       
                CALL     DBCD        ;9
                XORLW    7FH       
                BTFSC    1,6       
                IORLW    80H         ;準(zhǔn)備10分顯示數(shù)據(jù)

 MOVWF    7         
                BTFSS    0BH,7     
                CLRF     8         
                BCF      5,2         ;顯示時(shí)
                BTFSS    6,6       
                BCF      8,0         ;如已關(guān),不再停止
                BTFSC    6,6       
                BCF      8,1         ;如已開(kāi),不再啟動(dòng)
                BTFSC    8,1       
                BSF      6,6         ;如啟動(dòng),置位開(kāi)電平
                DECF     4,1       
                SWAPF    0,0       
                CALL     DBCD        ;9
                XORLW    7FH       
                BTFSC    1,6       
                IORLW    80H         ;準(zhǔn)備10分顯示數(shù)據(jù)

 BTFSC    1,6       
                IORLW    80H       
                MOVWF    0AH         ;10時(shí)位7段顯示碼暫存于F0AH中
                MOVLW    0FH       
                MOVWF    5         
                GOTO     HBEGIN      ;時(shí)間顯示完,轉(zhuǎn)程序結(jié)束
DBZXS           RRF      0EH,0       ;調(diào)節(jié)指針(F0EH)除以2(66)
                ANDLW    0FH       
                MOVWF    1FH       
                SKPNZ   
                MOVLW    0AH         ; J 7段碼地址
                CALL     DBCD        ;標(biāo)志指示1(10分位)
                XORLW    7FH        

       MOVWF    7           ;此時(shí)可能顯示[J 1 2 3]
                BCF      5,1         ;開(kāi)(10分位)顯示
                MOVFW    6         
                ANDLW    03H       
                MOVWF    8         
                MOVLW    0DH         ; U 地址
                BTFSC    0EH,0     
                MOVLW    0EH         ; n 地址
                MOVF     1FH,1     
                SKPNZ   
                MOVLW    0FH         ; - 地址
                CALL     HBCD        ;10
                XORLW    7FH       
                BSF      5,1         ;關(guān)10分位
                MOVWF    7         
                BCF      5,0         ;開(kāi)分位,可能顯示[- U n]
                BTFSC    0BH,0     
                CLRF     8           ;每0.125秒取1次啟動(dòng)/停止數(shù)據(jù)
                BTFSS    0BH,7     
                CLRF     8           ;啟動(dòng)/停止數(shù)據(jù)暫存入F8中
                BTFSC    8,0       
                BCF      8,1         ;免除啟/停競(jìng)爭(zhēng)

BTFSC    6,6       
                BCF      8,1         ;如已開(kāi),則清啟動(dòng)位
                BTFSS    6,6       
                BCF      8,0         ;如已關(guān),則清停止位
                SWAPF    8,1       
                BTFSC    8,5       
                BSF      6,6         ;如啟動(dòng),置位開(kāi)電平
                BTFSC    8,4       
                BCF      6,6         ;如停止,復(fù)位開(kāi)電平
                MOVFW    6         
                ANDLW    0C0H      
                IORWF    8,1         ;準(zhǔn)備輸出控制數(shù)據(jù)

404
返回首頁(yè) |  返回上一頁(yè)
联系我们: 潮安县| 西贡区| 密云县| 邢台市| 西贡区| 德钦县| 高阳县| 芜湖县| 从化市| 青阳县| 华蓥市| 右玉县| 云浮市| 广灵县| 常宁市| 明星| 喀喇| 上饶市| 临高县| 五指山市| 特克斯县| 安顺市| 大新县| 南澳县| 博白县| 泰顺县| 昌黎县| 玉山县| 祁东县| 翁源县| 梨树县| 修文县| 临夏市| 梅州市| 威远县| 富民县| 石渠县| 涞水县| 长寿区| 宜兰县| 松溪县|