标题:
一个单片机控制直流电机小程序,求助大神指点
[打印本页]
作者:
小学生
时间:
2017-6-20 18:34
标题:
一个单片机控制直流电机小程序,求助大神指点
尝试修改个单片机小程序,部分功能无法实现,特请各位大神指点!
功能如下:
按正转键,电机正转运行,松开按键,电机停止。(能实现)
按反转键,功能同上。(不成功,不知如何写)
按加速键,电机加速。
按减速减,电机减速(到设定值不能在减,没能成功)
程序如下,程序编译有一处警告,同时仿真运行不稳定。请大神修改并指点错误地方!!!
#include <reg51.h>
typedef unsigned char uchar;
sbit P0_0=P0^0;
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_3=P0^3;
sbit P0_4=P0^4;
sbit P2_0=P2^0;
sbit P2_1=P2^1;
uchar time=0;
uchar period=35;
uchar high=10;
uchar th0=0;
uchar tl0=1;
bit dir;
void dealy()
{
uchar i;
for(i=0;i<100;i++);
}
void timer0() interrupt 1 using 1 //定时器0中断服务程序
{
TH0=0xfc; //定时器初值重装载
TL0=0x18;
time++;
if(dir==1)
{
if(time==high) //高电平持续时间结束,变低
P2_0=th0; //经过反相器反相
else if(time==period) //周期时间到,变高
{
time=0;
P2_0=tl0; //经过反相器反相
}
}
else if(time==high) //高电平持续时间结束,变低
P2_1=th0; //经过反相器反相
else if(time==period) //周期时间到,变高
{
time=0;
P2_1=tl0; //经过反相器反相
}
}
void main()
{
P0=0x1f;
P2=0x00;
TMOD=0x01; //定时器0方式1
TH0=0xfc; //定时器装载初值,设置脉冲信号的占空比为1/5
TL0=0x18;
ET0=1; //开定时器0中断
TR0=1; //启动定时器0
EA=1;
while(1)
{
EA=0;
if(P0_0==0) //正转
EA=1; //开CPU中断
else
EA=0;
if(P0_1==0)? //反转如何编写、???
EA=1; //关CPU中断
else
EA=0;
if(P0_3==0)、//加速
{
high++;
if(high==30)
high=29;
while(P0_3!=1)
{}
}
if(P0_4==0) //减速
{
high--;
if(high==30)
high=29;
while(P0_4!=1)
{}
}
}
}
复制代码
作者:
15041248153
时间:
2017-6-20 23:01
将电机的两个PI口 0 / 1 电平反转就欧克了0 1正传 1 0反转
作者:
xlw14
时间:
2017-6-20 23:43
不错哦,加油
作者:
雨天stay
时间:
2017-6-20 23:53
按正转键,电机正转运行,松开按键,电机停止。(能实现)
按反转键,功能同上。(不成功,不知如何写)
按加速键,电机加速。
按减速减,电机减速(到设定值不能在减,没能成功)
作者:
51mcu
时间:
2017-6-21 06:30
if(P0_3==0)、//加速
{
high++;
while((P0_3==0);
if(high>30)
high=30;
}
if(P0_4==0) //减速
{
high--;
while((P0_4==0);
if(high<1)
high=30;
}
作者:
覃学巨
时间:
2020-12-2 22:23
有仿真图吗
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1