单片机课程设计

核心提示用18b20做很简单啊。温度的子程序给你,,你重定义一下接口,主程序已经调用出温度了,你送到显示就行了。。void delay(uint t){uint i;while(t--){/* 对于11.0592M时钟,约延时

用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);

}

一般有:仪表盘档位故障灯闪烁;变速箱没有单数档或是双数档;仪表盘发生变速箱的各种各样故障码等。

机电单元是操纵全自动变速箱一切正常运转的主要构件之一,机电单元依靠继电器进而操纵自动变速箱工作中的全过程。机电单元键入电源电路接纳感应器和其他设备键入的数据信号,随后对数据信号,随后对数据信号开展过滤解决和变大,再转换成电子信号推动操纵的继电器工作中。

 
友情链接
鄂ICP备19019357号-22