好文档 - 专业文书写作范文服务资料分享网站

电子信息工程毕业论文

天下 分享 时间: 加入收藏 我要投稿 点赞

车载可测温式电子万年历

cc=j;

delay1(500); if(P34==0) { while(!P34); j++; if(j==10) j=0; d=j+(10*i); } else if(P35==0) { while(!P35); if(j==0) j=10; j--; d=j+(10*i); } XBYTE[0x7e02]=d; XBYTE[0x7e04]=e; }

while(!P32) { delay1(500); while(!P32); delay1(20); }

while(P32) { dd=10;

delay1(500); dd=i;

delay1(500); if(P34==0) { while(!P34); i++; if(i==6)

-19-

车载可测温式电子万年历

i=0; d=j+(10*i); } else if(P35==0) { while(!P35); if(i==0) i=6; i--; d=j+(10*i); } XBYTE[0x7e02]=d; XBYTE[0x7e04]=e; }

while(!P32) { delay1(500); while(!P32); delay1(20); }

while(P32) { ee=10;

delay1(500); ee=m;

delay1(500); if(P34==0) { while(!P34); m++; if(m==10) m=0; e=m+(10*n); } else if(P35==0) { while(!P35); if(m==0)

-20-

车载可测温式电子万年历

m=10; m--; e=m+(10*n); } XBYTE[0x7e02]=d; XBYTE[0x7e04]=e; }

while(!P32) { delay1(500); while(!P32); delay1(20); }

while(P32) { ff=10;

delay1(500); ff=n;

delay1(500); if(P34==0) { while(!P34); n++; if(n==3) n=0; e=m+(10*n); } else if(P35==0) { while(!P35); if(n==0) n=3; n--; e=m+(10*n); } XBYTE[0x7e02]=d; XBYTE[0x7e04]=e; }

-21-

车载可测温式电子万年历

delay1(2000); }

3.5 温度采集程序设计

3.5.1 DS18B20的初始化

(1)先将数据线置高电平“1”。

(2)延时(该时间要求的不是很严格,但是尽可能的短一点)。 (3)数据线拉到低电平“0”。

(4)延时750微秒(该时间的时间范围可以从480到960微秒)。 (5)数据线拉到高电平“1”。

(6)延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。

(7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。

(8)将数据线再次拉高到高电平“1”后结束。

3.5.2 DS18B20的写操作

(1)数据线先置低电平“0”。

(2)延时确定的时间为15微秒。

(3)按从低位到高位的顺序发送字节(一次只发送一位)。 (4)延时时间为45微秒。 (5)将数据线拉到高电平。

(6)重复上(1)到(6)的操作直到所有的字节全部发送完为止。 (7)最后将数据线拉高。

3.5.3 DS18B20的读操作

(1)将数据线拉高“1”。 (2)延时2微秒。

(3)将数据线拉低“0”。 (4)延时15微秒。 (5)将数据线拉高“1”。 (6)延时15微秒。

(7)读数据线的状态得到1个状态位,并进行数据处理。

-22-

车载可测温式电子万年历

(8)延时30微秒。 程序如下:

sbit TMDAT=P2^7;

dmsec(unsigned int count) //1ms delay {unsigned int i; while(count--) {for(i=0;i<125;i++){} } }

void tmreset(void) //复位子程序 { unsigned int i; TMDAT=0;

i=103;while(i>0) i--; //900vs TMDAT=1;

i=4;while(i>0) i--; }

void tmpre (void) //复位结束 {unsigned int i; while(TMDAT); while(~TMDAT); i=4;while(i>0)i--; }

bit tmrbit() //读一位数据的子程序 {unsigned int i; bit dat;

TMDAT=0;i++; TMDAT=1;i++;i++; dat=TMDAT; i=8;while(i>0)i--; return(dat); }

unsigned char tmrbyte(void) //读一字节子程序 {unsigned char i,j,dat; dat=0; for(i=1;i<=8;i++) {j=tmrbit(); dat=(j<<7)|(dat>>1) ; }return(dat);

-23-

电子信息工程毕业论文

车载可测温式电子万年历cc=j;delay1(500);if(P34==0){while(!P34);j++;if(j==10)j=0;d=j+(10*i);}elseif(P35==0){while(!P35);if(j==0)j=10;j--;
推荐度:
点击下载文档文档为doc格式
95dny8lwhv8c83h0epna2cg5h8ins2016f6
领取福利

微信扫码领取福利

微信扫码分享