用18b20做很简单啊。
温度的子程序给你,,你重定义一下接口,主程序已经调用出温度了,你送到显示就行了。。

void delay(uint t)
{
uint i;
while(t--)
{
for (i=0;i<125;i++)
{}
}
}
void TxReset(void)
{
uint i;
DQ = 0;
i = 100;
while (i>0) i--;
DQ = 1; // 产生上升沿
i = 4;
while (i>0) i--;
}
void RxWait(void)
{
uint i;
while(DQ);
while(~DQ); // 检测到应答脉冲
i = 4;
while (i>0) i--;
}
bit RdBit(void)
{
uint i;
bit b;
DQ = 0;
i++;
DQ = 1;
i++;i++; // 延时15us以上,读时隙下降沿后15us,DS18B20输出数据才有效
b = DQ;
i = 8;
while(i>0) i--;
return (b);
}
uchar RdByte(void)
{
uchar i,j,b;
b = 0;
for (i=1;i<=8;i++)
{
j = RdBit();
b = (j<<7)|(b>>1);
}
return(b);
}

void WrByte(uchar b)
{
uint i;
uchar j;
bit btmp;
for(j=1;j<=8;j++)
{
btmp = b&0x01;
b = b>>1; // 取下一位(由低位向高位)
if (btmp)
{
DQ = 0;
i++;i++; // 延时,使得15us以内拉高
DQ = 1;
i = 8;
while(i>0) i--; // 整个写1时隙不低于60us
}
else
{
DQ = 0;
i = 8;
while(i>0) i--; // 保持低在60us到120us之间
DQ = 1;
i++;
i++;
}
}
}
void convert(void)
{
TxReset(); // 产生复位脉冲,初始化DS18B20
RxWait(); // 等待DS18B20给出应答脉冲
delay(1); // 延时
WrByte(0xcc); // skip rom 命令
WrByte(0x44); // convert T 命令
}
void RdTemp(void)
{
TxReset(); // 产生复位脉冲,初始化DS18B20
RxWait(); // 等待DS18B20给出应答脉冲
delay(1); // 延时
WrByte(0xcc); // skip rom 命令
WrByte(0xbe); // read scratchpad 命令
tplsb = RdByte(); // 温度值低位字节(其中低4位为二进制的“小数”部分)
tpmsb = RdByte(); // 高位值高位字节(其中高5位为符号位)
}
void main(void)
{
do
{
delay(1); // 延时1ms
convert(); // 启动温度转换,需要750ms
delay(1000); // 延时1s
RdTemp(); // 读取温度

}
while(1);
}
一般有:仪表盘档位故障灯闪烁;变速箱没有单数档或是双数档;仪表盘发生变速箱的各种各样故障码等。
机电单元是操纵全自动变速箱一切正常运转的主要构件之一,机电单元依靠继电器进而操纵自动变速箱工作中的全过程。机电单元键入电源电路接纳感应器和其他设备键入的数据信号,随后对数据信号,随后对数据信号开展过滤解决和变大,再转换成电子信号推动操纵的继电器工作中。


