谁有51单片机控制直流电机正反转和调速的电路和程序
展开全部
#include<reg52.h>
sbit K1 =P0^0; //PWM值增加键
sbit K2 =P0^1; //PWM值减少键
sbit pwm=P1^0;
sbit pwm1=P1^2;
unsigned char PWM=0x7f ; //赋初值
/*********************************************************/
void delayms(unsigned char ms) // 延时子程序
{
unsigned char i ;
while(ms--)
{
for(i=0 ; i<114 ; i++)
;
}
}
/*********************************************************/
void main()
{
TMOD=0x21; //timer1为8位定时器,timer0为16位定时器方式1
TH0=0xfe; //1ms延时常数
TL0=0x66; //频率调节
TH1=PWM; //脉宽调节
TL1=0; //每次定时器中断,TL1会自动装载
EA=1;
ET0=1;
ET1=1;
TR0=1;
while(1)
{
do{
if(PWM!=0xff)
{
PWM++ ;
delayms(10);
}
}while(K1==0);
do{
if(PWM!=0x01)
{
PWM-- ;
delayms(10);
}
}while(K2==0);
}
}
/*********************************************************/
void timer0() interrupt 1 //定时器0中断服务程序 (频率)
{
TR1=0; //先把定时器1关掉
TH0=0xfe; //1ms延时常数
TL0=0x66; //频率调节
TH1=PWM;
TR1=1;
pwm=0; //启动输出
pwm1=0; //启动输出
}
/*********************************************************/
void timer1() interrupt 3 //定时器1中断服务程序 (脉宽)
{
TR1=0 ;
pwm=1 ; //结束输出
pwm1=1 ; //结束输出
}
/*********************************************************/
sbit K1 =P0^0; //PWM值增加键
sbit K2 =P0^1; //PWM值减少键
sbit pwm=P1^0;
sbit pwm1=P1^2;
unsigned char PWM=0x7f ; //赋初值
/*********************************************************/
void delayms(unsigned char ms) // 延时子程序
{
unsigned char i ;
while(ms--)
{
for(i=0 ; i<114 ; i++)
;
}
}
/*********************************************************/
void main()
{
TMOD=0x21; //timer1为8位定时器,timer0为16位定时器方式1
TH0=0xfe; //1ms延时常数
TL0=0x66; //频率调节
TH1=PWM; //脉宽调节
TL1=0; //每次定时器中断,TL1会自动装载
EA=1;
ET0=1;
ET1=1;
TR0=1;
while(1)
{
do{
if(PWM!=0xff)
{
PWM++ ;
delayms(10);
}
}while(K1==0);
do{
if(PWM!=0x01)
{
PWM-- ;
delayms(10);
}
}while(K2==0);
}
}
/*********************************************************/
void timer0() interrupt 1 //定时器0中断服务程序 (频率)
{
TR1=0; //先把定时器1关掉
TH0=0xfe; //1ms延时常数
TL0=0x66; //频率调节
TH1=PWM;
TR1=1;
pwm=0; //启动输出
pwm1=0; //启动输出
}
/*********************************************************/
void timer1() interrupt 3 //定时器1中断服务程序 (脉宽)
{
TR1=0 ;
pwm=1 ; //结束输出
pwm1=1 ; //结束输出
}
/*********************************************************/
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询