
不是的。
电控单元(ECU)是发动机的综合控制装置。它的功用是根据自身存储的程序对发动机各传感器输入的各种信息进行运算、处理、判断、然后输出指令,控制有关执行器动作,达到快速、准确、自动控制发动机工作的目的。它的基本构成主要是微型计算机。
1、输入回路。
从传感器来的信号,首先进入输入回路。在输入回路里,对输入信号进行预处理,一般是去除杂波和把正弦变为矩形波后,在转换成电压信号。
2、A/D转换器(模拟/数字转换器)。
从传感器送出的信号有相当一部分是模拟信号,经输入回路处理后,虽已变成相应的电压信号,但这些信号微机还不能直接处理,需经过相应的A/D转换器,将其模拟信号转换成数字信号后再输入微机。
扩展资料
工作过程:
当发动机起动时,电控单元进入工作状态,某些程序和步骤从ROM中取出,进入CPU。这些程序可以是控制点火时刻、控制汽油喷射、控制怠速等。通过CPU的控制,一个个指令逐个地进行循环。执行程序中所需的发动机信息,来自各个传感器。
从传感器来的信号,首先进入输入回路,对其信号进行处理。如是数字信号,根据CPU的安排,经I/O接口,直接进入微机。如是模拟信号,还要经过A/D转换器,转换成数字信号后,才能经I/O接口进入微机。大多数信息,暂存在RAM内,根据指令再从RAM送至CPU。
下一步是将存储器ROM中参考数据引入CPU,使输入传感器的信息与之比较。对来自有关传感器的每个信号,依次取样,并与参考数据进行比较。CPU对这些数据比较运算后,作出决定并发出输出指令信号,经I/O接口进行放大,必要的信号还经D/A转换器变成模拟信号,最后经输出回路去控制执行器动作。
自己看注释改一下就行 函数都写好了了 没用的删掉就可以了
#include<reg52h>
#include<mathh>
#define uchar unsigned char
#define uint unsigned int
#define L_M 1
#define R_M 2
uchar temp2,temp1,t,m1,m2,redline;
sbit tr=P2^4; //超声波
sbit ec=P2^5; //
sbit en=P2^7; //液晶的EN
sbit rs=P2^6; //液晶RS选择端
//液晶数据口 P0口
sbit Rin_1=P2^0; //寻迹管脚输入
sbit Rin_2=P2^1;
sbit Lin_2=P2^2;
sbit Lin_1=P2^3;
sbit L_EN=P1^0; //左侧电机使能
sbit L_1=P1^1; //左侧电机控制 1
sbit L_2=P1^2; //左侧电机控制 2
sbit R_1=P1^3; //右侧电机控制 1
sbit R_2=P1^4; //右侧电机控制 2
sbit R_EN=P1^5; //右侧电机使能
void delay(uint z) //延时程序1
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delay1s(uchar t) //1s延时函数
{
uchar a,h,i,j,k;
for(a=t;a>0;a--)
{
for(h=5;h>0;h--)
for(i=4;i>0;i--)
for(j=116;j>0;j--)
for(k=214;k>0;k--);
}
}
void v_cotrol(uchar number,uchar speed)
{
if(speed<100)
{
if(number==1)
m1=abs(speed);
if(number==2)
m2=abs(speed);
}
}
void turnleft()
{
L_1=1; // left fan zhuan //
L_2=0;
R_1=1; // right fanzhuan
R_2=0;
}
void turnright()
{
L_1=0; // left zheng zhuan
L_2=1;
R_1=0; // right fanzhuan
R_2=1;
}
void gostright()
{
L_1=0; // left zheng zhuan
L_2=1;
R_1=1; // right zhengzhuan
R_2=0;
}
void goback()
{
L_1=1; // left zheng zhuan
L_2=0;
R_1=0; // right zhengzhuan
R_2=1;
}
void stop()
{
L_1=1; // stop
L_2=1;
R_1=1; // stop
R_2=1;
}
void timer0_int()
{
TMOD=0X01;
TH0=-100/256;
TL0=-100%256;
EA=1;
ET0=1;
TR0=1;
}
state_int()
{
Rin_1=1;
Rin_1=1;
Lin_1=1;
Lin_1=1;
t=0;
m1=50;
m2=50;
stop();
}
void main()
{
timer0_int();
state_int();
while(1)
{
//避障程序
if((Lin_1==1)&&(Lin_2==1)&&(Rin_1==1)&&(Rin_2==1))
gostright();
if((Lin_1==1)&&(Lin_2==1)&&(((Rin_1==1)&&(Rin_2==0))||((Rin_1==0)&&(Rin_2==1))||((Rin_1==0)&&(Rin_2==0))))
turnleft();
if((Rin_1==1)&&(Rin_2==1)&&(((Lin_1==1)&&(Lin_2==0))||((Lin_1==0)&&(Lin_2==1))||((Lin_1==0)&&(Lin_2==0))))
turnright();
if((((Lin_1==1)&&(Lin_2==0))||((Lin_1==0)&&(Lin_2==1))||((Lin_1==0)&&(Lin_2==0)))&&(((Rin_1==1)&&(Rin_2==0))||((Rin_1==0)&&(Rin_2==1))||((Rin_1==0)&&(Rin_2==0))))
goback();
if((Lin_1==1)&&(Lin_2==1)&&(Rin_1==1)&&(Rin_2==1))
gostright();
if((Lin_1==1)&&(Lin_2==1)&&(((Rin_1==1)&&(Rin_2==0))||((Rin_1==0)&&(Rin_2==1))||((Rin_1==0)&&(Rin_2==0))))
turnleft();
if((Rin_1==1)&&(Rin_2==1)&&(((Lin_1==1)&&(Lin_2==0))||((Lin_1==0)&&(Lin_2==1))||((Lin_1==0)&&(Lin_2==0))))
turnright();
if((((Lin_1==1)&&(Lin_2==0))||((Lin_1==0)&&(Lin_2==1))||((Lin_1==0)&&(Lin_2==0)))&&(((Rin_1==1)&&(Rin_2==0))||((Rin_1==0)&&(Rin_2==1))||((Rin_1==0)&&(Rin_2==0))))
goback();
}
while(1);
}
timer0() interrupt 1
{
TH0=-100/256;
TL0=-100%256;
if(t==0)
{
temp1=m1;
temp2=m2;
}
if(t==temp1)
L_EN=0;
if(t==temp2)
R_EN=0;
t++;
if(t==50)
{
t=0;
L_EN=1;
R_EN=1;
}
}
“电源开关指示灯也出现相同频率的闪烁“,这个现象说明电源电压有较大波动,应该是因为电源输出功率不够,请楼主说明用的是什么电源
USB口的输出电流设计最大是500mA,应该不足以驱动你两个减速电机,加上单片机和数码管的电流,用1A电流以上输出的电源会比较好
缺少数字1和2,我理解为这两位不亮,检查一下数码管的焊接吧
调试的时候,你可以把电机拔掉,或者程序里面停掉电机,看数码管显示是否正常,这样就可以知道数码管部分是否有焊接不良的地方了,
以上就是关于汽车ECU就是单片机吗全部的内容,包括:汽车ECU就是单片机吗、用c语言写一个单片机控制小车走直线的程序,小车一共3个轮子,一个万向轮,另两个是电机驱动的,用51单片、有关单片机小车的问题,小车车轮不动,数码管显示闪烁等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)