|
直接上图。
提问背景:我是一个刚学51单片机的小白,并且51单片机是我接触的第一款硬件。所以很多学习方法都不会,比如查资料,如何查看芯片的手册方面都无从下手。 在看视频学完基本的PWM原理后,我打算自己尝试用51最小系统来控制电机的转动做一个小车的实验。于是在某宝买了小车平台,51最小系统,以及最让我头疼的上图中的板子。这个板子是专门为Arduino设计的,用来驱动电机的模块,板子上有两个L293D和一个74HC595芯片。但我确定这个板子可以用51来控制(我见到了成品,只是联系不上作者),于是我查阅了好多天的材料,试验了很多次,始终没有将电机驱动起来(哪怕是转一圈,我也不哭了)
我的设计过程以及连线:(以下带圈的数字分别对应图中的数字)
①、⑤:接四个直流电机
⑥:电源与最小系统板上的VCC、GND分别相连,实现最小系统给这块板子供电
11号数字引脚接在最小系统的P10端(我在编程里将P10端输出PWM)
**********************************************************************************
代码部分
#include <reg52.h>
//--定义使用的IO口--//
sbit PWM=P1^0;
//--定义一个全局变量--//
unsigned char timer1;
void Time1Config();
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main(void)
{
Time1Config();
while(1)
{
if(timer1>100) //PWM周期为100*0.5ms
{
timer1=0;
}
if(timer1 < 30) //改变30这个值可以改变直流电机的速度
{
PWM=1;
}
else
{
PWM=0;
}
}
}
/*******************************************************************************
* 函 数 名 : Time1Config
* 函数功能 : 设置定时器
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Time1Config()
{
TMOD|= 0x10; //设置定时计数器工作方式1为定时器
//--定时器赋初始值,12MHZ下定时0.5ms--//
TH1 = 0xFE;
TL1 = 0x0C;
ET1 = 1; //开启定时器1中断
EA = 1;
TR1 = 1; //开启定时器
}
/*******************************************************************************
* 函 数 名 : Time1
* 函数功能 : 定时器1的中断函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Time1(void) interrupt 3 //3 为定时器1的中断号 1 定时器0的中断号 0 外部中断1 2 外部中断2 4 串口中断
{
TH1 = 0xFE; //重新赋初值
TL1 = 0x0C;
timer1++;
}
求大神们指点一下关于连线和程序错误的方面,感激不尽!!!!!!!
|
-
正.jpg
(1.08 MB, 下载次数: 73)
|