资源描述:
《DSP温度采集与显示设计程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#includesbitDQ1=P1^3;sbitDQ2=P1^4;//温度输入口sbitDP=P1^2;inttable[]={0xff,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f},i,k,value,MSB,LSB,temp,ss,w1,w2,w3,w4;voiddelay_50us(intm){intj;for(;m>0;m--)for(j=5;j>0;j--);}voiddelay(intt){while(t--);}/****************DS18B20复位函数************
2、************/voidinit1(){DQ1=1;delay(8);DQ1=0;delay(80);//大约600u秒,在12M晶振下DQ1=1;delay(15);}/****************DS18B20写命令函数************************///向1-WIRE总线上写1个字节voidwrite_byte1(intdat)//写一个字节{for(i=0;i<8;i++){DQ1=0;DQ1=dat&0x01;//此条语句可延时1u秒delay(4);DQ1=1;dat>>=1;}delay(4);}/****************DS
3、18B20读1字节函数************************///从总线上取1个字节intread_byte1()//读一个字节{for(k=0;k<8;k++){DQ1=0;value>>=1;DQ1=1;//释放总线if(DQ1)value=value
4、0x80;delay(4);}returnvalue;}/****************读出温度函数************************/intread_temperature1()//读温度函数{init1();write_byte1(0xcc);//跳过ROM命令write_byte1(0x44);
5、//写转换指令delay(300);init1();write_byte1(0xcc);write_byte1(0xbe);//写读温度指令LSB=read_byte1();MSB=read_byte1();ss=MSB&0x0f8;if(ss==0x00){MSB<<=4;MSB=MSB
6、(LSB&0xf0)>>4;//整数部分?}else{DP=0;delay(50);DP=1;P2=7;P0=table[0];MSB=0x00;}returnMSB;}/****************温度数据处理函数************************/voiddisplay1
7、()//显示函数{while(MSB<10
8、
9、MSB>50){DP=0;delay(50);DP=1;P2=7;P0=table[0];read_temperature1();}P2=4;P0=0x40;delay_50us(5);P2=5;P0=table[temp/10+1];delay_50us(5);P2=6;//整数部分显示P0=table[temp%10+1]
10、0x80;delay_50us(5);LSB=LSB&0x0f;P2=7;P0=table[LSB%10+1];//小数部分显示delay_50us(5);}/****************DS18B20复位
11、函数************************/voidinit2(){DQ2=1;delay(8);DQ2=0;delay(80);//大约600u秒,在12M晶振下DQ2=1;delay(15);}/****************DS18B20写命令函数************************///向1-WIRE总线上写1个字节voidwrite_byte2(intdat)//写一个字节{for(i=0;i<8;i++){DQ2=0;DQ2=dat&0x01;//此条语句可延时1u秒delay(4);DQ2=1;dat>>=1;}delay(4);}/****
12、************DS18B20读1字节函数************************///从总线上取1个字节intread_byte2()//读一个字节{for(k=0;k<8;k++){DQ2=0;value>>=1;DQ2=1;//释放总线if(DQ2)value=value
13、0x80;delay(4);}returnvalue;}/****************读出温度函数************************/intread_temperatur