查看: 565|回复: 8
打印 上一主题 下一主题

利用PWM控制LED增减光问题

[复制链接] qrcode

1

主题

1

帖子

5

积分

新手上路

Rank: 1

积分
5
楼主
跳转到指定楼层
发表于 2015-10-26 10:41 AM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,小弟最近用51调试, 利用PWM控制LED增减光,但接电时,实验板上的LED都全亮了,而且按键也没有任何反应,想请大师们帮忙看下我的程序是错了吗???
下面是程序,
附件是电路,感谢

-----------------------------------------------------------------------------------------
OUT EQU P1
K1 BIT P3.2;
K2 BIT P3.3;
ORG 0
AJMP MAIN
ORG 0BH
AJMP TO_SRV0
ORG 1BH
AJMP TO_SRV1
;---------------------------------------------------------------------------------------
MAIN:
ACALL INIT_TIMER
LOOP:
JNB K1,ADD_K1
JNB K2,DEC_K2
AJMP LOOP
;--------------------
ADD_K1:
ACALL DELAY
JB K1, LOOP
MOV A, TH1
CJNE A, #250,ADK1
AJMP LOOP
ADK1:
INC TH1
AJMP LOOP
;--------------------
DEC_K2:
ACALL DELAY
JB K2, LOOP
MOV A,TH1
JZ LOOP
DEC TH1
AJMP LOOP

;--------------------------------------------------------------------
INIT_TIMER:
MOV TMOD,#22H
MOV TH1, #0
MOV TL1, #0
MOV TH0, #0
MOV TL0, #0
SETB TR0
SETB ET1
SETB ET0
SETB EA
RET
;---------------------------------------------
TO_SRV0:
MOV OUT,#0FFH
MOV TL0,#0
SETB TR1
RETI
;---------------------------------------------
TO_SRV1:
MOV OUT,#0
CLR TR1
RETI
;------------------------------------------------------------------------
DELAY:
MOV R6, #10
MOV R7, #248
DLY1: DJNZ R7, $
DJNZ R6, DLY1
RET
;--------------------------------------------
END
;----------------------------------------------------------------------------------------
回复

使用道具 举报

4

主题

24

帖子

56

积分

注册会员

Rank: 2

积分
56
沙发
发表于 2015-11-4 09:05 AM | 只看该作者
建议你自己画一个流程图出来 自己先理清楚 当然也要检查电路是不是有问题                                                                                                                                                                       
回复 支持 反对

使用道具 举报

4

主题

30

帖子

68

积分

注册会员

Rank: 2

积分
68
板凳
发表于 2015-12-30 01:36 AM | 只看该作者
呵呵我不会汇编,只会C,否则可以帮你解答一下                                                                                                                                                                       
回复 支持 反对

使用道具 举报

136

主题

868

帖子

1880

积分

金牌会员

Rank: 6Rank: 6

积分
1880
地板
发表于 2013-2-22 05:46 AM | 只看该作者
C的话我也试过,但接电LED都不亮了,下次尝试下加个电容
这位兄弟能否帮忙看下这个C有设错的地方吗
P1是LED接脚,P3.2,3.3,3.4是按键位置

#include
void timer0_initialize(void);
unsigned int sp=1843;
unsigned int sn=7373;
unsigned int temp;
void delay(unsigned char b)
{
unsigned char i,j;
for(i=0;i for(j=0;j<255;j++);
}
void timer0_initialize(void)
{
EA=0;
IE|=0x82;
TMOD|=0x01;
temp=65536-sp;
TH0=temp/256;
TL0=temp%256;
TR0=1;
P1_0=1;
}
void timer0_isr(void) interrupt TF0_VECTOR using 1
{
if(P1_0==1)
{
TR0=0;
temp=65536-sn;
TH0=temp/256;
TL0=temp%256;
TR0=1;
P1_0=0;
}
else
{
TR0=0;
temp=65536-sp;
TH0=temp/256;
TL0=temp%256;
TR0=1;
P1_0=1;
}
}
main()
{
timer0_initialize();
P1_0=0;
while(1)
{
delay(10);
if(P3_2==0)sn=9206;
if(P3_3==0)sn=3686;
if(P3_4==0)sn=10;
sp=9216-sn;
}
}
回复 支持 反对

使用道具 举报

3

主题

117

帖子

247

积分

中级会员

Rank: 3Rank: 3

积分
247
5#
发表于 2013-2-27 10:26 AM | 只看该作者
如果用stc的12系列,好像有专门的PWM输出,,,但我也不是很熟练。呵呵                                                                                                                                                                       
回复 支持 反对

使用道具 举报

3

主题

117

帖子

247

积分

中级会员

Rank: 3Rank: 3

积分
247
6#
发表于 2013-2-27 12:51 PM | 只看该作者
不知道你用的多大的晶振,我看了一下代码,没有试验,应该是定时时间都太短,所以按键没区别..                                                                                                                                                                       
回复 支持 反对

使用道具 举报

4

主题

30

帖子

68

积分

注册会员

Rank: 2

积分
68
7#
发表于 2013-2-27 02:05 PM | 只看该作者
好多MCU都有专门的PWM控制,比定时器端口控制有效也精确多了!这个程序都是靠定时器运算延迟的,而且对于51架构都是假中断,根本没法通过定时器精确控制PWM的占空比,我曾做了个PCM的PWM控制无刷电机和舵机,结果过大的误差造成舵机不停地抖动。就算做出来了也没有实际意义,实际产品中允许你这么大误差的占空比么?                                                                                                                                                                       
回复 支持 反对

使用道具 举报

136

主题

868

帖子

1880

积分

金牌会员

Rank: 6Rank: 6

积分
1880
8#
发表于 2013-2-27 02:43 PM | 只看该作者
要想看出按键的区别,延时至少应该是0.1秒以上,不然1毫秒和10毫秒你的眼睛根本分不出来.                                                                                                                                                                       
回复 支持 反对

使用道具 举报

1

主题

2

帖子

7

积分

新手上路

Rank: 1

积分
7
9#
发表于 2013-2-27 04:22 PM | 只看该作者
要想看出按键的区别,延时至少应该是0.1秒以上,不然1毫秒和10毫秒你的眼睛根本分不出来.                                                                                                                                                                       
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表