您现在的位置: 主页 > 嵌入式开发入门到精通 > 单片机技术进阶 > 直流电机调速C51程序 -
本文所属标签:
为本文创立个标签吧:

直流电机调速C51程序 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-07 

[导读]
直流电机调速C51程序#includeunsignedcharcodef_rotation[4]={0x02,0x04,0x08,0x10};//正转表格unsignedcharcodeb_rotation[4]={0x10,0x08,0x040,0x02};//反转表格voiddelay(unsignedinti)//延时{while

直流电机调速C51程序

本文引用地址: http://www.21ic.com/app/mcu/201806/764824.htm

#include

unsignedcharcodef_rotation[4]={0x02,0x04,0x08,0x10};//正转表格
unsignedcharcodeb_rotation[4]={0x10,0x08,0x040,0x02};//反转表格



voiddelay(unsignedinti)//延时
{
while(--i);
}

main()
{

unsignedchari;

while(1)
{
for(i=0;i<4;i++)//4相
{
p1=f_rotation[i];//输出对应的相可以自行换成反转表格
delay(10000);//改变这个参数可以调整电机转速
}
}
}

10.直流电机调速


#include
sbitkey1=p3^1;
sbitPWM=p1^5;
unsignedcharcycle;//定义周期该数字x基准定时时间如果是10则周期是10x0.1ms
unsignedcharpwm_on;//定义高电平时间
voiddelay(unsignedintcnt)
{
while(--cnt);
}


main()
{
unsigned char pwm_num;//定义档位
tmod |=0x01;//定时器设置 1ms in 12m crystal
th0=(65536-1000)/256;
tl0=(65536-1000)%256;//定时1ms
ie= 0x82; //打开中断
tr0=1;

cycle = 10;// 时间可以调整 这个是10步调整 周期10ms 8位pwm就是256步
while(1)
{
if(!key1)
{
delay(10000);
if(!key1)
{
pwm_num++;
if(pwm_num==4)pwm_num=0;
switch(pwm_num){
case 0:p1=0xfe;pwm_on=0;break;//高电平时长
case 1:p1=0xfd;pwm_on=4;break;
case 2:p1=0xfb;pwm_on=6;break;
case 3:p1=0xf7;pwm_on=8;break;
default:break;
}
}

}
}

}


void tim(void) interrupt 1 using 1
{
statICunsigned char count; //
th0=(65536-1000)/256;
tl0=(65536-1000)%256;//定时1ms

if (count==pwm_on)
{
pwm = 1; //灯灭
}
count++;
if(count == cycle)
{
count=0;
if(pwm_on!=0) //如果左右时间是0 保持原来状态
pwm = 0;//灯亮

}

}




              查看评论 回复



 

"直流电机调速C51程序 -"的相关文章

网站地图

围观()