直流电机
将直流电能转换成机械能(直流电动机)、或将机械能转换成直流电能(直流发电机)的旋转电机。
由定子和转子组成。
静止不动的叫定子。 转动的部分叫转子。 没有正负极。 改变电流方向、影响电机的旋转方向。
ULN2003芯片介绍
用于驱动大功率器件的芯片。(因为单片机的电压不足以直接驱动电机、需要一个中转来驱动)

步进电机1C-7C无法输出1(需要上拉电阻)
所以直流电机在连接时、1端连接COM、一段连接1c-7C的一个。
由图可知
1B输入高、1C输出低。
程序
使用定时中断、2.5秒旋转直流电机、2.5秒停止...循环

这里的电路图和实际开发板上有点不一样。
一端连接实际板子上的01(电路图中的2)、一端连5V 1.电路图中、向P10输入1->OUT1输出0->2输出0

代码
1.Timer0.c
#include <REGX52.H>
/**
*
* @brief 定时中断初始化
* @param
* @retval
*/
void Timer0_Init()
{
EA=1;
ET0=1;
TR0=1;
TMOD=0X01;
}
/**
*
* @brief 5ms中断一次
* @param
* @retval
*/
void Timer0_05ms_Init()
{
TL0 = 0x00; //设置定时初值
TH0 = 0x4C; //设置定时初值
}
2.main.c
#include <REGX52.H>
#include "Timer0.H"
typedef unsigned char u8;
typedef unsigned int u16;
sbit DC_Motor = P1^0;
#define DC_MOTOR_RUN_TIME 2000
//中断一次+1
u8 Count=0;
void main()
{
//P1^0默认输出为高电频 开机时可能会转、先设置0关闭
DC_Motor =0;
Timer0_Init();
Timer0_05ms_Init();
while(1)
{
}
}
void Timer0_Interrupt() interrupt 1
{
Timer0_05ms_Init();
// Code ...
Count++;
//2秒执行一次取反
if(Count>=40){
Count=0;
DC_Motor = ~DC_Motor;
}
}