使用UART对MMC进行寄存器设置,控制直流电机的程序流程。
可以独立控制3个通道的直流电机。
程序流程:
1) MCU初始化
2) 延时一段时间,等待硬件初始化(可以是毫秒级)
3) 通过UART发送设置MMC寄存器的指令。
例如,设置1通道,发送控制指令50,并等待2mS,然后再发送地址为00的寄存器的值C0,再等待2ms,然后再发其他需要设置的寄存器的值。
4) 设置OK,电机开始转动啦!
感谢的话就不用多说了,祝大家开发顺利,哈哈。
void delay(int t)
{
while(t--);
}
void main( void )
{
unsigned char ch1mode[]={0x50};
unsigned char ch2mode[]={0x54};
unsigned char ch3mode[]={0x58};
unsigned char ch1duty[]={0x53};
unsigned char ch2duty[]={0x57};
unsigned char ch3duty[]={0x5B};
unsigned char ch1modevalue[]={0xC0};
unsigned char ch2modevalue[]={0xC0};
unsigned char ch3modevalue[]={0xC0};
unsigned char ch1dutyvalue[]={0x55};
unsigned char ch2dutyvalue[]={0x45};
unsigned char ch3dutyvalue[]={0x45};
unsigned char read[]={0xA7};
UART0_Start();
delay(2000);//2ms
UART0_SendData(ch1duty,1) ;
delay(2000);
UART0_SendData(ch1dutyvalue,1) ;
delay(2000);
UART0_SendData(ch1mode,1) ;
delay(2000);
UART0_SendData(ch1modevalue,1) ;
delay(2000);
UART0_SendData(ch2duty,1) ;
delay(2000);
UART0_SendData(ch2dutyvalue,1) ;
delay(6000);
UART0_SendData(ch2mode,1) ;
delay(2000);
UART0_SendData(ch2modevalue,1) ;
delay(2000);
UART0_SendData(ch3duty,1) ;
delay(2000);
UART0_SendData(ch3dutyvalue,1) ;
delay(2000);
UART0_SendData(ch3mode,1) ;
delay(2000);
UART0_SendData(ch3modevalue,1) ;
delay(2000);
while (1) {
UART0_SendData(read,1) ;
delay(2000);
}
}