给你原理图,修改一下,
两个程序修改一下。。
实在弄不来我再帮忙
这是控制正反转的程序:
#include <reg52.h>
bit Flag;//定义正反转标志位
unsigned char code F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}; //正转表格
unsigned char code B_Rotation[4]={0xf8,0xf4,0xf2,0xf1}; //反转表格
/******************************************************************/
/* 延时函数 */
/******************************************************************/
void Delay(unsigned int i)//延时
{
while(--i);
}
/******************************************************************/
/* 主函数 */
/******************************************************************/
main()
{
unsigned char i;
EX1=1; //外部中断0开
IT1=1; //边沿触发
EA=1; //全局中断开
while(!Flag)
{
P0=0x71;//显示 F 标示正转
for(i=0;i<4;i++) //4相
{
P1=F_Rotation[i]; //输出对应的相 可以自行换成反转表格
Delay(800); //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
}
while(Flag)
{
P0=0x7C;//显示 b 标示反转
for(i=0;i<4;i++) //4相
{
P1=B_Rotation[i]; //输出对应的相
Delay(500); //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
}
}
/******************************************************************/
/* 中断入口函数 */
/******************************************************************/
void ISR_Key(void) interrupt 2 using 1
{
Delay(300);
Flag=!Flag; //s3按下触发一次,标志位取反
}
这是控制转速的程序:
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
sbit KEY1 = P3^1; //定义调速按键
sbit PWM = P1^5; //定义调速端口
unsigned char CYCLE; //定义周期 该数字X基准定时时间 如果是10 则周期是10 x 0.1ms
unsigned char PWM_ON ;//定义高电平时间
/******************************************************************/
/* 延时函数 */
/******************************************************************/
void delay(unsigned int cnt)
{
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:P0=0x06;PWM_ON=0;break;//高电平时长
case 1:P0=0x5B;PWM_ON=4;break;
case 2:P0=0x4F;PWM_ON=6;break;
case 3:P0=0x66;PWM_ON=8;break;
default:break;
}
}
}
}
}
/******************************************************************/
/* 定时器中断函数 */
/******************************************************************/
void tim(void) interrupt 1 using 1
{
static unsigned 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; //灯亮
}
}
追问怎么不是51或者是52单片机呢?
追答52和51唯区别只有内部寄存器的大小,
51是4K 52是8K
其他的操作都一样。。。都兼容的。。。
怎样用单片机控制电机或马达的正反转以及转速。要有电路设计,如果有pro...
Delay(800); \/\/改变这个参数可以调整电机转速 ,数字越小,转速越大 } } while(Flag){ P0=0x7C;\/\/显示 b 标示反转 for(i=0;i<4;i++) \/\/4相 { P1=B_Rotation[i]; \/\/输出对应的相 Delay(500); \/\/改变这个参数可以调整电机转速 ,数字越小,转速越大 } } } \/***\/ \/...
...怎样控制电机的正反转和变速,最好是proteus仿真的电路图
用51做一个PWM波就可以控制转速了
如何用proteus软件仿真电路图
1、首先我们打开电脑,找到proteus图标,鼠标左键双击,将软件打开,其界面如图所示。2、然后我们点击界面上方的库,在弹出来的选项中选择第一个拾取元件,然后进入库中搜索电路图需要的元件,选中元件后点击界面右下角的确定,就可以将该元件添加到软件界面里。3、点击界面左边,红色方框里面的图标,就可以...
单片机中怎样用io口驱动电机
第一步:先在Proteus软件中设计仿真电路原理图。第二步:再在Keil C51软件中编写且编译程序,程序后缀必须是.c。然后在打开的“Option for Target‘Target 1’”选项卡,“Target”标签下频率设置为“11.0592”, “Output”标签下,将“Creat HEX File”项打勾选中,设置生成一个.hex文件。第三步:...
...自己仿照编写的步进电机控制程序,用proteus仿真步进电机不动_百度...
delay();P2=0x01;delay();这个delay()的时间长短是控制转速的,有一定范围的,在一定范围内,越小越快,超过了的话,电机识别不了脉冲就不转了。include<reg52.h> define uchar unsigned char define uint unsigned int define MotorData P0 \/\/步进电机控制接口定义 uchar phasecw[4] ={0x...
Proteus单片机控制直流电机测速部分 74LS386 编码电机motor-encoder...
可以参考之前我的回答:proteus motor-encoder有五根线,左右两侧两根线接电源。下面三根线,左右两侧两根线输出相位差90度的脉冲,每旋转一圈输出多少个脉冲可以在设置对话框中设置,中间那根线,每圈输出一个脉冲。motor-encoder的电源电压可以在设置框中设置。转速显示的单位是rpm.有单片机开发控制器订做...
如何使用Proteus做单片机仿真
使用proteus仿真单片机,一般需要做以下工作:1、利用proteus平台设计原理图。2、利用KEIL等设计相应的控制软件,最好编译成HEX文件。3、可以连接KEIL与proteus互动仿真,也可以用proteus载入HEX文件直接仿真。
...的板子 控制液晶显示的 有必要用proteus仿真吗
但有一点值得注意:proteus仿真电路是在器件电气条件理想的前提下仿真的,在实际做PCB板的时候,要注意实际条件下的电气特点,适当的在电路中增加一些器件保障板子的性能!以51单片机P0口为例:实际上P0口不具备上拉功能,要在P0口上加上拉电阻,但是在proteus仿真软件中不加上拉它也仿真,因为proteus库中...
怎么样利用LPC2124 L297 L298在Proteus环境中实现步进电机的转速和方...
方向控制 给L297方向控制位输入高低电平即可 转速调节 控制单片机脉冲输出频率即可,脉冲频率越高L297输出频率越高,电机转速越快。具体可以通过循环语句实现
求高手赐教关于proteus模拟单片机控制步进电机的问题
实际上的原因很简单,就是因为proteus里面的延时时间和你在实际单片机上的延时时间是不一致的,你试着调整一下延时时间试试,先从数码管着手,延时时间对了肯定不会闪