直流电机
1.ULN2003芯片:驱动芯片,可用来驱动直流电路。
假设:
输入为低“0”,输出为高“1”。
1B——0;1C——1;
例:正转
输入为高“1”,输出为低“0”。
1B——1;1C——0;
例:反转
直流电机没有正负极,连接两个输出端。
COM——VCC
直流电机一端固定连接COM——VCC,另一端连接一个输出端。
2.硬件设计
A2-A4
3.软件设计
P0口输入高电平“1”,对应OUT1口输出低电平“0”。
电动机有电流转动。
P0口输入低电平“0”,对应OUT1口输出高电平“1”高阻态不会得电。
电动机无电流停止转动。
效果1:
电动机转动五秒后停止
代码:
#include <REGX51.H>
typedef unsigned char u8;
typedef unsigned int u16;
sbit DC_Motor=P1^0;
#define DC_MOTOR_RUN_TIME 5000
void delay_10us(u16 ten_us)
{
while(ten_us–);
}
void delay_ms(u16 ms)
{
u16 i,j;
for(i=ms;i>0;i–)
for(j=110;j>0;j–);
}
void main()
{
DC_Motor=1;//输入高电平电动机转动
delay_ms(DC_MOTOR_RUN_TIME);//宏定义控制时间
//delay_ms(5000);
DC_Motor=0;
while(1)
{
}
}
**效果2:**电动机一直转动
代码:
#include <REGX51.H>
typedef unsigned char u8;
typedef unsigned int u16;
sbit DC_Motor=P1^0;
#define DC_MOTOR_RUN_TIME 5000
void delay_10us(u16 ten_us)
{
while(ten_us–);
}
void delay_ms(u16 ms)
{
u16 i,j;
for(i=ms;i>0;i–)
for(j=110;j>0;j–);
}
void main()
{
while(1)
{
DC_Motor=1;//输入高电平电动机转动
delay_ms(DC_MOTOR_RUN_TIME);//宏定义控制时间
//delay_ms(5000);
DC_Motor=0;//输入低电平电动机停止转动
}
}