十五、汽车刮水器控制电路(LM298)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_42810361/article/details/99941720

0.原理图

在这里插入图片描述

1.稳压电路

输出4.75~5.25V电压,最大输出电流为1.5A,当输出电流较大时,7805应加散热板。
在这里插入图片描述

2.单片机电路

参考:传送门
在这里插入图片描述

3.电机驱动电路

采用L298驱动芯片和四个续流二极管控制电机转速和方向。
在这里插入图片描述

4.按键功能及LED电路

通过LED亮灭区别功能是否实现。
在这里插入图片描述

5.程序代码

Created with Raphaël 2.2.0 主程序 定时器0初始化 LED全灭 按键选择 停止? 结束 yes no
#include<reg52.h>
#include"intrins.h"

sbit K1 = P1^5;
sbit K2 = P1^6;
sbit K3 = P1^7;
sbit K4 = P3^7;

#define uchar unsigned char
#define uint  unsigned int

uchar code FFW[8] = {0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};  //四相八拍正转编码
uchar code REV[8] = {0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};  //四相八拍反相编码

uint count = 0;
uint Temp_Count;
uint i;
uint n = 0;

uchar K1_flag,K2_flag,K3_flag;

void delay(uint t)
{
    uint k;
    while(t--)
    {
        for(k=0;k<125;k++);
    }
}

void delay5us(uint n)		//@12.000MHz
{
	uint j;
    for(j=0;j<n;j++)
    {
        _nop_();
        _nop_();
    }
}

/* 电机正转 */
void motor_forword(void)
{
    for(i=0;i<4;i++)
        for(Temp_Count=0;Temp_Count<8;Temp_Count++)
        {
            P1 = FFW[Temp_Count];
            delay5us(n);
        }
    P1 = 0xf0;
}

/* 电机反转 */
void motor_back(void)
{
    for(i=0;i<4;i++)
        for(Temp_Count=0;Temp_Count<8;Temp_Count++)
        {
            P1 = REV[Temp_Count];
            delay5us(n);
        }
    P1 = 0xf0;
}

/* 按键扫描 */
void Key_Scan(void)
{
    if(K1==0)
    {
        K1_flag = 1;
        K2_falg = K3_flag = 0;
        n = 60;
    }
    if(K2==0)
    {
        K2_flag = 1;
        K1_falg = K3_flag = 0;
        n = 100;
    }
    if(K3==0)
    {
        K3_flag = 1;
        K2_falg = K1_flag = 0;
        n = 200;
    }
}

/* 主函数 */
void main(void)
{
    while(1)
    {
        Key_Scan();
        motor_forword();
        delay5us(1000);
        motor_back();
    }
}

猜你喜欢

转载自blog.csdn.net/qq_42810361/article/details/99941720