|
- #include<reg52.h>
- #include<intrins.h>
- #include<wendu.h>
- uchar temget()
- {
- uchar low,high;
- int temp;
- float temperature;
- dsinit();
- write(0xcc);
- write(0x44);
- Delay_us(100);
- dsinit();
- write(0xcc);
- write(0xbe);
- Delay_us(100);
- low=read();
- high=read();
- temp=((high<<8)|low);
- temperature=temp*0.0625;//分辨率是0.0625
- // temp=high<<4;
- // temp|=(low>>4); //显示整数
- return temperature;
- }
- uchar read()
- {
- uchar i;
- uchar dat;
- for(i=0;i<8;i++)
- {
- DQ=0;
- _nop_();_nop_();_nop_();_nop_();_nop_();
- dat>>=1;
- DQ=1;
- if(DQ==1)
- {
- dat|=0x80;
- }
- Delay_us(100);
- }
- return dat;
- }
- void write(uchar dat)
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- DQ=0;
- DQ=dat&0x01;
- Delay_us(70);
- DQ=1;
- dat>>=1;
- }
- }
- void dsinit()
- {
- DQ=0;
- Delay_us(80);
- DQ=1;
- Delay_us(80);
- }
- void Delay_us(uchar us)
- {
- while(us--);
- }
复制代码
|
|