帮助我10kHz的PWM来控制AT89C52的直流电动机

M

member_tdh

Guest
大家好!
我有一个项目是控制直流电动机(1千瓦)。我试图在10kHz脉冲产生的PWM但successed。大家能否hepl我如何使用产生脉冲在10kHz的PWM芯片AT89C52的。
感谢所有!

 
下面是一个如何使用产生的PWM定时器0中断..例如

尝试按照它
, 如果您有任何进一步的问题-回来..
http://www.iguanalabs.com/pwm.htm

关心,
IanP

 
您好!
我想编写一个由C language.Can任何人帮助我的代码!

 
member_tdh:
这不是明智的使用AT89C52单片机的PWM生产10,000,除非你给任务的芯片很少。
不过,我会回答你的问题。
使用Keil C语言编译下面的C方案

/ /使用24M服务振荡器

#定义T0_Init_Data 0x38
sbit PWM_Pin =岛^ 0;
无符号字符High_V_Data;
无符号字符Low_V_Data;
无符号字符PWM_Flag = 0;

无效Init_T0(无效)/ /启动T0代

TH0 = T0_Init_Data;
TL0 = TH0;
/ /定时器T0代的使用功能和运作模式2
TMOD&= 0xf8;
TMOD = 0x02;
/ /使中断
鄂A = 1;
ET0的= 1;


无效Set_PWM(无符号字符数据)/ /脉宽调制方法的参数高voltage.The数据的范围:0 ---(0xff,T0_Init_Data)

/ /停止定时器T0代
TR0 = 0;
/ /设置新的脉宽调制参数
High_V_Data = 0xff(T0_Init_Data 数据);
Low_V_Data =数据;

PWM_Flag = 1;
TH0 = High_V_Data;
/ /启动定时器T0代
TR0 = 1;


/ / T0代溢出中断服务
无效int_T0中断1

如果(PWM_Flag == 1)

PWM_Pin = 0;
PWM_Flag = 0;
TH0 = Low_V_Data;

如果(PWM_Flag == 0)

PWM_Pin = 1;
PWM_Flag = 1;
TH0 = High_V_Data;



这是一个漫长的时间
, 我没有使用51Core芯片,如果没有这一方案的任何错误,我为此道歉。
如果有任何问题,plz给我的电子邮件:aaaaaaaaaalyl(上)163.com
我会尽我所能来帮助您。

 
嗨!
这是我的测试源:(。c)在你的代码
, 您gived我,但这个代码不运行良好。u能解决一下?
谢谢!

无效Init_T0(无效)

TMOD | = 0x22; / /定时器1,模式2,定时器,模式2
TH0 = T0_Init_Data;
TL0 = TH0;
ET0的= 1;
鄂A = 1;


无效Set_PWM(字节脉宽调制)

TR0 = 0;
High_V_Data = 0xff(T0_Init_Data 脉宽调制);
Low_V_Data =脉宽调制;
PWM_Flag = 1;
TH0 = High_V_Data;
TR0 = 1;


无效int_T0()中断TF0_VECTOR / / 1

如果(PWM_Flag&1)

PWM_Pin = 0;
PWM_Flag = 0;
TH0 = Low_V_Data;

其他的

PWM_Pin = 1;
PWM_Flag = 1;
TH0 = High_V_Data;



无效的主要(无效)

Init_T0();

而(1)

Set_PWM(pwm_val);
SenChr(PWM_Pin);

如果(Inc_pwm_val == 0)

延迟(12000);
而(Inc_pwm_val == 0)

pwm_val = 1;
如果(pwm_val“250)pwm_val = 250;


其他的

如果(Dec_pwm_val == 0)

延迟(12000);
而(Dec_pwm_val == 0)

pwm_val - = 1;
如果(pwm_val“5)pwm_val = 5;




)/ /结束时
)/ /结束主

 
您好IanP,

此网页无法打开
, 我同样的问题

我需要汇编代码...2006年3月23日10点11回复:帮我10kHz的PWM来控制AT89C52的直流电动机

-------------------------------------------------- ------------------------------

下面是一个如何使用产生的PWM定时器0中断..例如

尝试按照它
, 如果您有任何进一步的问题-回来..
ħ ** p:/ / www.iguanalabs.com / pwm.htm

关心,
大规模攻击

 
这就像IGUANALABS服务器看起来有问题
, 或者它了..
与此同时,也许这简短的例子将使用的任何你..
代码:

$ NOPAGING

$ MOD252; 8051和PWM牛津0000h

LJMP开始牛津000Bh

LJMP定时器开始:

检验手段TMOD,#00000001b

检验手段TH0,#11101010b

检验手段TL0,#01111001b

setb TR0

setb ET0的

setb鄂

检验手段R0,#0d

检验手段R1,#85d

R2的检验手段,#170d

检验手段的P2,#11111111b

检验手段甲,#255d

再次:

公司阿

检验手段乙,R0

cjne甲,乙,Next_1

CLR的P2.0

Next_1:

检验手段乙,R1

cjne甲,乙,Next_2

CLR的P2.1

Next_2:

检验手段乙,R2的

cjne甲,乙,Next_3

CLR的P2.2

Next_3:

cjne甲,#255d,再

检验手段的P2,#11111111b

ljmp再次定时器:

公司R0

公司R1

公司R2的

检验手段TH0,#11101010b

检验手段TL0,#01111001b

雷蒂末端
 
与AT89C52单片机.........使用SG3525并产生20kHz的脉宽调制则U将得到很好的结果

 
试试这虽然是故意的PCB钻孔控制器用于连接,它与其他直流电机工程,我已经做了非常好的状态这一点
, 但所有的年。

http://www.web-ee.com/Electronic-Projects/projects/pcb_drill/index.shtml

 

Welcome to EDABoard.com

Sponsor

Back
Top