请选择一款直流电动机,利用51单片机控制该直流电动机的转速,给出上述功能系统的硬件设计电路和软件设计程序。
硬件设计电路:
软件程序设计:
#include <REG51.H>
#define K 21/8
void UartInit(void);
void UART_SendByte(unsigned char Byte);
void Timer0Init(void);
sbit motor1_IN1=P0^0;
sbit motor1_IN2=P0^1;
sbit motor1_ENA1=P0^2;
sbit ADD=P0^3;
sbit SUBTRACT=P0^4;
unsigned char led_mod[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳极字模
unsigned char led_point[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//带小数点字模
unsigned char counter,compare;//compare为占空比
unsigned int n,m,rad;//n为脉冲数
void delay(unsigned char time) //1ms@11.0592MHz
{
unsigned char i, j;
i = 15*time;
j = 90;
do
{
while (--j);
} while (--i);
}
void Display() //LED显示
{
P2=(0x01);
P1=led_mod[(rad/100)%10];
delay(1);
P2=(0x01<<1);
P1=led_mod[(rad/10)%10];
delay(1);
P2=(0x01<<2);
P1=led_point[rad%10];
delay(1);
P2=(0x01<<3);
P1=led_mod[(rad%10)];
delay(1);
}
void move(void) //启动电机
{
motor1_IN1=1;
motor1_IN2=0;
}
void UartInit(void) //9600bps@11.0592MHz
{
SCON = 0x50; //8位数据,可变波特率