新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PWM控制LED臺(tái)燈程序帶紅外遙控

        PWM控制LED臺(tái)燈程序帶紅外遙控

        作者: 時(shí)間:2012-10-31 來源:網(wǎng)絡(luò) 收藏

        ;/*************************************************
        ;* 標(biāo)題: 程序*
        ;* 文件: .asm *
        ;* 日期: 2008-12-18 *
        ;* 版本: 1.0*
        ;* 作者: *
        ;****************************************************
        ; 程序帶有功能*
        ; 利用定時(shí)器控制產(chǎn)生占空比可變的PWM 波*
        ; 按K1,PWM 值增加,則占空比減小,LED 燈漸暗。*
        ; 按K2,PWM 值減小,則占空比增加,LED 燈漸亮。*
        ; 我的5644遙控器上的0~9數(shù)字鍵對(duì)應(yīng)10個(gè)亮度等級(jí)。*
        ; 當(dāng)PWM 值增加到最大值或減小到最小值時(shí),蜂鳴器將報(bào)警*
        ; 資源:p1 口,數(shù)碼管。p3.4,p3.5 亮度控制按鍵P3.0 PWM端口,p3.1 蜂鳴器報(bào)警*
        ;*********************************************************
        LEVEL0EQU2FH;亮度等級(jí)9
        LEVEL1EQU4FH;亮度等級(jí)8
        LEVEL2EQU6FH;亮度等級(jí)7
        LEVEL3EQU8FH;亮度等級(jí)6
        LEVEL4EQU0AFH;亮度等級(jí)5
        LEVEL5EQU0BFH;亮度等級(jí)4
        LEVEL6EQU0CFH;亮度等級(jí)3
        LEVEL7EQU0DFH;亮度等級(jí)2
        LEVEL8EQU0EFH;亮度等級(jí)1
        LEVEL9EQU0FFH;亮度等級(jí)0

        PWM EQU 7FH ;PWM 賦初始值

        LED_RAMEQU30H
        IRCOM EQU 50H;50H-53H IR 使用
        IR_NEWEQU 60H;新的遙控代碼值用

        LED_PORTEQUP1 ;數(shù)碼管接口,共陰極
        PWM_OUT EQU P3.0 ;輸出接口
        INCKEY EQU P3.5 ;K1,PWM 值增加鍵。
        DECKEY EQU P3.4 ;K2,PWM 值減小鍵。
        BEEP EQU P3.1 ;蜂鳴器
        IRINEQU P3.2

        ;---------------------------
        ORG 0000H
        SJMP START
        ORG 0003H
        LJMP REMOT;IRF
        ORG 000BH
        SJMP INTT0
        ORG 001BH
        SJMP INTT1
        ORG 0030H
        ;---------------------------
        ;主程序
        ;定時(shí)器0 工作在模式1,定時(shí)器1 工作在模式2。
        ;---------------------------

        START:
        MOV SP,#30H
        MOV TMOD,#21H
        MOV IP,#00001010B
        MOV TH1,PWM ;脈寬調(diào)節(jié)
        MOV TL1,#00H

        MOV TH0,#0FEH ;1ms 延時(shí)常數(shù)0FC
        MOV TL0,#0CH ;頻率調(diào)節(jié)066

        SETB EA;開總中斷
        SETB ET0 ;定時(shí)器0允許
        SETB ET1 ;定時(shí)器1允許
        SETB TR0 ;定時(shí)器0啟動(dòng)
        SETB EX0;外中斷0打開
        SETB IT0;外中斷0采用脈沖方式 ;
        LOOP:
        LCALL DISPLAY
        MOV A,PWM ;
        JB INCKEY,LOOP1 ;增加鍵是否按下?
        CALL DELAY ;延時(shí)去抖動(dòng)
        JB INCKEY,LOOP1
        CJNE A,#0FFH,PWMINC ;是否到最大值?
        CALL BEEP_BL ;是,蜂鳴器報(bào)警。
        SJMP LOOP

        PWMINC: INC PWM ;調(diào)節(jié)脈寬(脈寬減小)
        SJMP LOOP

        LOOP1: JB DECKEY,LOOP2 ;減小鍵是否按下?
        CALL DELAY ;延時(shí)去抖動(dòng)
        JB DECKEY,LOOP2
        CJNE A,#01H,PWMDEC ;是否到最小值?
        CALL BEEP_BL ;是,蜂鳴器報(bào)警。
        SJMP LOOP

        PWMDEC: DEC PWM ;調(diào)節(jié)脈寬(脈寬增加)
        LOOP2: SJMP LOOP

        ;-----------------------------
        ;T0 中斷服務(wù)子程序(頻率)
        ;控制定時(shí)器1 中斷
        ;-----------------------------
        INTT0:
        CLR TR1
        MOV TH0,#0FEH ;1ms 延時(shí)常數(shù)
        MOV TL0,#0CH ;頻率調(diào)節(jié)
        MOV TH1,PWM
        SETB TR1
        CLR PWM_OUT ;啟動(dòng)輸出
        RETI

        ;-----------------------------
        ;T1 中斷服務(wù)子程序(脈寬)
        ;控制PWM 脈沖寬度
        ;-----------------------------
        INTT1:
        CLR TR1 ;脈寬調(diào)節(jié)結(jié)束
        SETB PWM_OUT ;結(jié)束輸出
        RETI

        ;-----------------------------
        ;************************有接收到遙控器信號(hào)*******
        REMOT:
        CLR EA
        PUSH ACC
        PUSH PSW
        SETB PSW.3;選擇工作寄存器組1(SETB PSW.3)
        CLR PSW.4; (CLR PSW.4)
        MOV R0,#IRCOM
        I1: JNB IRIN,I2 ;等待IR 信號(hào)出現(xiàn)
        JMP IR_SHOW1;I1;原值I1
        I2: MOV R4,#20
        I20: CALL DEL
        DJNZ R4,I20
        JB IRIN,IR_SHOW1;I1 ;確認(rèn)IR 信號(hào)出現(xiàn)
        I21: JB IRIN,I3 ;等IR 變?yōu)楦唠娖?BR>CALL DEL
        JMP I21
        I3: MOV R3,#0 ;8 位數(shù)清為0
        LL:JNB IRIN,I4 ;等IR 變?yōu)榈碗娖?BR>CALL DEL
        JMP LL
        I4: JB IRIN,I5 ;等IR 變?yōu)楦唠娖?BR>CALL DEL
        JMP I4
        I5: MOV R2,#0 ;0.14ms 計(jì)數(shù)
        L1: CALL DEL
        JB IRIN, N1 ;等IR 變?yōu)楦唠娖?IR=0,檢查R2 中的計(jì)數(shù)值
        MOV A,#8
        CLR C
        SUBB A,R2 ;判斷高低位;IF C=0 BIT=0
        MOV A,@R0
        RRC A
        MOV @R0,A ;處理完一位
        INC R3
        CJNE R3,#8,LL ;需處理完8 位
        MOV R3,#0
        INC R0
        CJNE R0,#54H,LL ;收集到4 字節(jié)了
        JMP IR_SHOW
        N1: INC R2
        CJNE R2,#30,L1 ;30--0.14ms 計(jì)數(shù)過長則時(shí)間到自動(dòng)離開
        JMP IR_SHOW1

        紅外遙控器相關(guān)文章:紅外遙控器原理

        pwm相關(guān)文章:pwm原理


        蜂鳴器相關(guān)文章:蜂鳴器原理

        上一頁 1 2 下一頁

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 钟祥市| 岢岚县| 石泉县| 兰考县| 高雄县| 黑河市| 南城县| 宁陕县| 建平县| 巨鹿县| 九龙城区| 包头市| 黔西县| 嘉祥县| 襄汾县| 同仁县| 韶山市| 阳曲县| 武定县| 梨树县| 东乌| 平阳县| 榆林市| 克山县| 林州市| 贵定县| 区。| 都江堰市| 昔阳县| 当涂县| 汝南县| 柏乡县| 梅河口市| 垦利县| 浦城县| 潜山县| 淮安市| 上饶县| 梅河口市| 徐水县| 石河子市|