新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 智能定時插座程序

        智能定時插座程序

        作者: 時間:2012-10-27 來源:網絡 收藏


        KEY_RET:
        MOV A,P1
        ORL A,#11110000B
        CPL A
        JNZ KEY_RET
        RET
        ;****************************延時程序****************************
        DELAY:
        PUSH PSW
        SETB RS0
        MOV R7,#50
        D1: MOV R6,#10
        D2: DJNZ R6,D2
        DJNZ R7,D1
        POP PSW
        RET
        ;***********************************************
        INIT_T0:
        MOV TMOD,#01H
        MOV TH0,#HIGH(TMRVAR)
        MOV TL0,#LOW(TMRVAR)
        SETB ET0;開T0中斷
        SETB TR0;定時器T0開始運行
        RET
        ;*******************************中斷程序*********************************
        INT_T0:
        PUSH ACC
        PUSH PSW
        MOV TH0,#HIGH(TMRVAR);重新裝入初值
        MOV TL0,#LOW(TMRVAR)
        AAA: INC TCOUNT ;軟件計數器加1
        MOV A,TCOUNT
        CJNE A,#TCOUNTER,INT_N2;判斷是否等于250,即是否計數到1秒。
        CPL P2.6;P2.6接發光二極管,實現每秒閃光
        MOV TCOUNT,#0
        JNB STARTRUN,INT_N2;若等于0,轉移。即是否開始運行
        DJNZ R7,AAA;實現分計數,循環60次。1S乘以60.
        MOV R7,#60

        MOV A,SCOUNT2
        CJNE A,#0,BBB;若小時計數器不為0,轉
        JMP EEE
        BBB:
        MOV A,SCOUNT
        CJNE A,#0,EEE;若分計數器不為0,轉
        LJMP CCC

        EEE: DEC SCOUNT;分計數器減1
        MOV A,SCOUNT
        JNZ INT_N2;若不為0,轉到顯示程序
        MOV A,SCOUNT2
        JNZ CCC
        JMP DDD
        CCC: DEC SCOUNT2;小時計數器減1
        MOV SCOUNT,#59;分計數器裝載59
        JMP INT_N2;轉顯示程序
        ;**************************報警,控制繼電器程序**************************************
        DDD:
        MOV R6,#10
        LOOP4: CPL P3.7
        CPL P3.6
        MOV R5,#200
        LOOP3:LCALL DELAY
        DJNZ R5,LOOP3
        DJNZ R6,LOOP4
        LOOP5: CLR P3.4;繼電器工作。輸出低電平。
        CLR P3.6
        CLR EA
        LJMP $


        ;**************************************顯示程序************************************88
        INT_N2:
        ORL P2,#00001111B;關所有顯示器
        MOV A,Counter;取計數器值
        MOV DPTR,#BitTab;將位碼地址送到DPTR
        MOVC A,@A+DPTR
        ANL P2,A;送位碼
        JNB ACC.1,XIAOSHUDIAN;是否顯示第二位。是則轉,加小數點處理。
        MOV A,#DISPBUF
        ADD A,Counter
        MOV R0,A
        MOV A,@R0
        MOV DPTR,#DISPTAB
        MOVC A,@A+DPTR
        MOV P0,A;送段碼
        LJMP SSS
        XIAOSHUDIAN:
        MOV A,#DISPBUF+1
        MOV R0,A
        MOV A,@R0
        MOV DPTR,#DISPTAB
        MOVC A,@A+DPTR
        CLR C
        SUBB A,#80H
        MOV P0,A;送段碼
        SSS: INC Counter
        MOV A,Counter
        CJNE A,#4,DISPEXIT;如果計數器為4,讓它回0
        MOV Counter,#0
        DISPEXIT:
        POP PSW
        POP ACC
        RETI
        DISPTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;0到9的碼字
        BitTAb: DB 0FEH,0FDH,0FBH,0F7H;位碼
        END


        本程序初稿完整版本下載: http://www.51hei.com/ziliao/file/chazuo1.rar
        修改了部分功能后的終稿:http://www.51hei.com/ziliao/file/chazuo2.txt
        效果圖:

        點擊瀏覽下一頁
        希望大家能制作成功.


        上一頁 1 2 下一頁

        關鍵詞: 定時插座 繼電器控制 數碼管

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 运城市| 邮箱| 西畴县| 镇安县| 昌邑市| 万州区| 河曲县| 蚌埠市| 平江县| 怀化市| 鹰潭市| 建阳市| 阿拉善盟| 余姚市| 淳安县| 沈阳市| 铁岭县| 札达县| 龙门县| 方山县| 民乐县| 浏阳市| 朝阳区| 资源县| 博兴县| 锡林郭勒盟| 罗城| 启东市| 广宁县| 囊谦县| 图们市| 天水市| 客服| 丹东市| 虎林市| 高唐县| 建阳市| 响水县| 高阳县| 湾仔区| 高雄县|