PWM控制LED台灯程序带红外遥控.docx

上传人:b****8 文档编号:13119600 上传时间:2023-06-11 格式:DOCX 页数:11 大小:17.02KB
下载 相关 举报
PWM控制LED台灯程序带红外遥控.docx_第1页
第1页 / 共11页
PWM控制LED台灯程序带红外遥控.docx_第2页
第2页 / 共11页
PWM控制LED台灯程序带红外遥控.docx_第3页
第3页 / 共11页
PWM控制LED台灯程序带红外遥控.docx_第4页
第4页 / 共11页
PWM控制LED台灯程序带红外遥控.docx_第5页
第5页 / 共11页
PWM控制LED台灯程序带红外遥控.docx_第6页
第6页 / 共11页
PWM控制LED台灯程序带红外遥控.docx_第7页
第7页 / 共11页
PWM控制LED台灯程序带红外遥控.docx_第8页
第8页 / 共11页
PWM控制LED台灯程序带红外遥控.docx_第9页
第9页 / 共11页
PWM控制LED台灯程序带红外遥控.docx_第10页
第10页 / 共11页
PWM控制LED台灯程序带红外遥控.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

PWM控制LED台灯程序带红外遥控.docx

《PWM控制LED台灯程序带红外遥控.docx》由会员分享,可在线阅读,更多相关《PWM控制LED台灯程序带红外遥控.docx(11页珍藏版)》请在冰点文库上搜索。

PWM控制LED台灯程序带红外遥控.docx

PWM控制LED台灯程序带红外遥控

PWM控制LED台灯程序带红外遥控

;/*******************************************************************************

;*标题:

LED台灯程序*

;*文件:

LED台灯PWM控制带红外遥控.asm*

;*日期:

2008-12-18*

;*版本:

1.0*

;*作者:

*

;********************************************************************************

;LED台灯程序带有红外遥控功能*

;利用定时器控制产生占空比可变的PWM波*

;按K1,PWM值增加,则占空比减小,LED灯渐暗。

*

;按K2,PWM值减小,则占空比增加,LED灯渐亮。

*

;我的5644遥控器上的0~9数字键对应10个亮度等级。

*

;当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警*

;资源:

p1口,数码管。

p3.4,p3.5亮度控制按键P3.0PWM端口,p3.1蜂鸣器报警*

;********************************************************************************

LEVEL0EQU2FH;亮度等级9

LEVEL1EQU4FH;亮度等级8

LEVEL2EQU6FH;亮度等级7

LEVEL3EQU8FH;亮度等级6

LEVEL4EQU0AFH;亮度等级5

LEVEL5EQU0BFH;亮度等级4

LEVEL6EQU0CFH;亮度等级3

LEVEL7EQU0DFH;亮度等级2

LEVEL8EQU0EFH;亮度等级1

LEVEL9EQU0FFH;亮度等级0

PWMEQU7FH;PWM赋初始值

LED_RAMEQU30H

IRCOMEQU50H;50H-53HIR使用

IR_NEWEQU60H;新的遥控代码值用

LED_PORTEQUP1;数码管接口,共阴极

PWM_OUTEQUP3.0;PWM控制输出接口

INCKEY

EQUP3.5;K1,PWM值增加键。

DECKEY

EQUP3.4;K2,PWM值减小键。

BEEP

EQUP3.1;蜂鸣器

IRIN

EQUP3.2

;---------------------------

ORG0000H

SJMPSTART

ORG0003H

LJMPREMOT;IRF

ORG000BH

SJMPINTT0

ORG001BH

SJMPINTT1

ORG0030H

;---------------------------

;主程序

;定时器0工作在模式1,定时器1工作在模式2。

;---------------------------

START:

MOVSP,#30H

MOVTMOD,#21H

MOVIP,#00001010B

MOVTH1,PWM;脉宽调节

MOVTL1,#00H

MOVTH0,#0FEH;1ms延时常数0FC

MOVTL0,#0CH;频率调节066

SETBEA

;开总中断

SETBET0;定时器0允许

SETBET1;定时器1允许

SETBTR0;定时器0启动

SETBEX0;外中断0打开

SETBIT0

;外中断0采用脉冲方式

;

LOOP:

LCALLDISPLAY

MOVA,PWM;

JBINCKEY,LOOP1;增加键是否按下?

CALLDELAY;延时去抖动

JBINCKEY,LOOP1

CJNEA,#0FFH,PWMINC;是否到最大值?

CALLBEEP_BL;是,蜂鸣器报警。

SJMPLOOP

PWMINC:

INCPWM;调节脉宽(脉宽减小)

SJMPLOOP

LOOP1:

JBDECKEY,LOOP2;减小键是否按下?

CALLDELAY;延时去抖动

JBDECKEY,LOOP2

CJNEA,#01H,PWMDEC;是否到最小值?

CALLBEEP_BL;是,蜂鸣器报警。

SJMPLOOP

PWMDEC:

DECPWM;调节脉宽(脉宽增加)

LOOP2:

SJMPLOOP

;-----------------------------

;T0中断服务子程序(频率)

;控制定时器1中断

;-----------------------------

INTT0:

CLRTR1

MOVTH0,#0FEH;1ms延时常数

MOVTL0,#0CH;频率调节

MOVTH1,PWM

SETBTR1

CLRPWM_OUT;启动输出

RETI

;-----------------------------

;T1中断服务子程序(脉宽)

;控制PWM脉冲宽度

;-----------------------------

INTT1:

CLRTR1;脉宽调节结束

SETBPWM_OUT;结束输出

RETI

;-----------------------------

;************************有接收到遥控器信号*******

REMOT:

CLREA

PUSHACC

PUSHPSW

SETBPSW.3;选择工作寄存器组1(SETBPSW.3)

CLRPSW.4;

(CLRPSW.4)

MOVR0,#IRCOM

I1:

JNBIRIN,I2;等待IR信号出现

JMPIR_SHOW1;I1;原值I1

I2:

MOVR4,#20

I20:

CALLDEL

DJNZR4,I20

JBIRIN,IR_SHOW1;I1;确认IR信号出现

I21:

JBIRIN,I3;等IR变为高电平

CALLDEL

JMPI21

I3:

MOVR3,#0;8位数清为0

LL:

JNBIRIN,I4;等IR变为低电平

CALLDEL

JMPLL

I4:

JBIRIN,I5;等IR变为高电平

CALLDEL

JMPI4

I5:

MOVR2,#0;0.14ms计数

L1:

CALLDEL

JBIRIN,N1;等IR变为高电平;IR=0,检查R2中的计数值

MOVA,#8

CLRC

SUBBA,R2;判断高低位;IFC=0BIT=0

MOVA,@R0

RRCA

MOV@R0,A;处理完一位

INCR3

CJNER3,#8,LL;需处理完8位

MOVR3,#0

INCR0

CJNER0,#54H,LL;收集到4字节了

JMPIR_SHOW

N1:

INCR2

CJNER2,#30,L1;30--0.14ms计数过长则时间到自动离开

JMPIR_SHOW1

;------------------------------------------------

IR_SHOW:

;使用我的5644遥控器。

MOVA,50H

;

XRLA,#40H

;判断遥控器低8位地址是否正确(40H)

JNZIR_SHOW1

;

MOVA,51H

XRLA,#3FH

;再判断遥控器高8位地址是否正确(3FH)

JNZIR_SHOW1

MOVA,52H

CPLA;

将52H取反后和53H比较

CJNEA,53H,IR_SHOW1;如果不等表示接收数据发生错误,放弃。

CALLD1;解码成功则调用相应按键的处理程序+++++++++++++++++++++++++

;MOVA,IR_NEW

;CJNEA,#0FFH,IR_PWM;不是数字键则退出

;JMPIR_SHOW1

IR_PWM:

MOVDPTR,#IR_ASC

MOVA,IR_NEW

MOVCA,@A+DPTR

MOVPWM,A

IR_SHOW1:

POPPSW

POPACC

SETBIRIN

SETBEA

RETI

D1:

MOVA,52H

CJNEA,#01H,D2;是数字键1吗?

MOVIR_NEW,#01H;是则送数据01H

CALLBEEP_BL;蜂鸣器报警。

RET

D2:

CJNEA,#02H,D3;是数字键2吗?

MOVIR_NEW,#02H;是则送数据02H

CALLBEEP_BL;蜂鸣器报警。

RET

D3:

CJNEA,#03H,D4;是数字键3吗?

MOVIR_NEW,#03H;是则送数据03H

CALLBEEP_BL;蜂鸣器报警。

RET

D4:

CJNEA,#04H,D5;是数字键4吗?

MOVIR_NEW,#04H;是则送数据04H

CALLBEEP_BL;蜂鸣器报警。

RET

D5:

CJNEA,#05H,D6;是数字键5吗?

MOVIR_NEW,#05H;是则送数据05H

CALLBEEP_BL;蜂鸣器报警。

RET

D6:

CJNEA,#06H,D7;是数字键6吗?

MOVIR_NEW,#06H;是则送数据06H

CALLBEEP_BL;蜂鸣器报警。

RET

D7:

CJNEA,#07H,D8;是数字键7吗?

MOVIR_NEW,#07H;是则送数据07H

CALLBEEP_BL;蜂鸣器报警。

RET

D8:

CJNEA,#08H,D9;是数字键8吗?

MOVIR_NEW,#08H;是则送数据08H

CALLBEEP_BL;蜂鸣器报警。

RET

D9:

CJNEA,#09H,D0;是数字键9吗?

MOVIR_NEW,#09H;是则送数据09H

CALLBEEP_BL;蜂鸣器报警。

RET

D0:

CJNEA,#00H,D15;是数字键0吗?

MOVIR_NEW,#00H;是则送数据00H

CALLBEEP_BL;蜂鸣器报警。

RET

D13:

CJNEA,#11H,D14;是音量加键吗?

实现速度加

MOVIR_NEW,#0FFH;非数字键标示为0FFH

INCPWM

MOVA,PWM

CJNEA,#00H,D13_OUT

CALLBEEP_BL;蜂鸣器报警。

MOVPWM,#0FFH

D13_OUT:

RET

D14:

CJNEA,#10H,D15;是音量减键吗?

实现速度减

MOVIR_NEW,#0FFH;非数字键标示为0FFH

DECPWM

MOVA,PWM

CJNEA,#0FFH,D14_OUT;9

CALLBEEP_BL;蜂鸣器报警。

MOVPWM,#01H

D14_OUT:

RET

D15:

;MOVIR_NEW,#0FFH;非数字键标示为0FFH

RET

;**********************************************

;判断显示程序

;-------------

DISPLAY:

DIS0:

MOVA,PWM

SUBBA,#LEVEL0

JNCDIS1

MOVLED_RAM,#9

JMPLED_DISP

DIS1:

MOVA,PWM

SUBBA,#LEVEL1

JNCDIS2

MOVLED_RAM,#8

JMPLED_DISP

DIS2:

MOVA,PWM

SUBBA,#LEVEL2

JNCDIS3

MOVLED_RAM,#7

JMPLED_DISP

DIS3:

MOVA,PWM

SUBBA,#LEVEL3

JNCDIS4

MOVLED_RAM,#6

JMPLED_DISP

DIS4:

MOVA,PWM

SUBBA,#LEVEL4

JNCDIS5

MOVLED_RAM,#5

JMPLED_DISP

DIS5:

MOVA,PWM

SUBBA,#LEVEL5

JNCDIS6

MOVLED_RAM,#4

JMPLED_DISP

DIS6:

MOVA,PWM

SUBBA,#LEVEL6

JNCDIS7

MOVLED_RAM,#3

JMPLED_DISP

DIS7:

MOVA,PWM

SUBBA,#LEVEL7

JNCDIS8

MOVLED_RAM,#2

JMPLED_DISP

DIS8:

MOVA,PWM

SUBBA,#LEVEL8

JNCDIS9

MOVLED_RAM,#1

JMPLED_DISP

DIS9:

MOVA,PWM

SUBBA,#LEVEL9

JNCLED_DISP

MOVLED_RAM,#0

LED_DISP:

MOVDPTR,#LED_ASC

MOVA,LED_RAM

MOVCA,@A+DPTR

MOVLED_PORT,A

RET

LED_ASC:

;共阴极LED代码

DB3FH,06H,5BH,4FH,66H;0~F代码

DB6DH,7DH,07H,7FH,6FH

DB77H,7CH,39H,5EH,79H

DB71H

DB0BFH,086H,0DBH,0CFH,0E6H;0.~9.(带小数点)代码

DB0EDH,0FDH,087H,0FFH,0EFH

DB039H;字符“C”

;****************************************************

IR_ASC:

DB0FAH,0EAH,0DAH,0CAH,0BAH

DB0A0H,80H,60H,40H,02H

;------------------------------------------------

;DELAYR5*0.14MS

DEL:

MOVR5,#1;IR解码使用

DEL0:

MOVR6,#2

DEL1:

MOVR7,#32

DEL2:

DJNZR7,DEL2

DJNZR6,DEL1

DJNZR5,DEL0

RET

;------------------------

;10ms延时子程序,按键去抖动用

DELAY:

MOVR5,#50

DELAY1:

MOVR6,#100

DJNZR6,$

DJNZR5,DELAY1

RET

;-----------------------------------------------

;蜂鸣器响一声子程序

BEEP_BL:

MOVR6,#100

BL1:

CALLBL2

CPLBEEP

DJNZR6,BL1

MOVR5,#25

CALLDELAY2

RET

BL2:

MOVR7,#180

BL3:

NOP

DJNZR7,BL3

RET

DELAY2:

MOVR6,#50;延时R5×10MS

BL4:

MOVR7,#100

BL5:

DJNZR7,BL5

DJNZR6,BL4

DJNZR5,DELAY2

RET

;---------------------------------------------------

END

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 职业教育 > 其它

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2