湖北大学 单片机实验考查报告 直流电动机

本文详细介绍了如何使用51单片机通过PWM技术控制直流电动机的转速,包括硬件电路设计,如L298驱动芯片的使用,以及软件程序设计,利用定时器和中断实现电机速度的调整和编码器脉冲的处理,同时通过串口通信进行数据交互和显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

请选择一款直流电动机,利用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位数据,可变波特率
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值