⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tempsend.c

📁 个人单片机入门程序集合 。很适合刚学单片机的人。用的是keil proteus
💻 C
字号:
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define send_bus P0	/**********************定义PT2262发射引脚P2口的低四位******/
sbit DQ=P2^0;

uchar  temp,tem10sb,tem01sb,temxsb;
dlay(int a)
{
   while(--a);


}



reset(void)
{
   unsigned char x=0;
   DQ = 1;    //DQ复位
   dlay(8);  //稍做延时
   DQ = 0;    //单片机将DQ拉低
   dlay(80); //精确延时 大于 480us
   DQ = 1;    //拉高总线
   dlay(14);
   x=DQ;      //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
   dlay(20);
}
//读一个字节
unsigned char read_byte(void)
{
  unsigned char i=0;
  unsigned char dat = 0;
  for (i=8;i>0;i--)
  {
     DQ = 0; // 给脉冲信号
     dat>>=1;
     DQ = 1; // 给脉冲信号
     if(DQ)
        dat|=0x80;        /*LSB to MSB*/
     dlay(4);
   }
   return(dat);
}

//写一个字节
write_byte(unsigned char dat)
{
   unsigned char i=0;
   for (i=8; i>0; i--)
   {
      DQ = 0;
      DQ = dat&0x01;
      dlay(5);
      DQ = 1;
      dat>>=1;
   }
}

//读取温度
unsigned char read_temperature(void)
{
   uchar  tplsb,pp;
   uchar  tpmsb;
  // uchar  xstemp;小数

   reset();
   write_byte(0xCC); // 跳过读序号列号的操作
   write_byte(0x44); // 启动温度转换
   reset();
   write_byte(0xCC); //跳过读序号列号的操作
   write_byte(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
   tplsb=read_byte();
   tpmsb=read_byte();
  // xstemp=tplsb&0x0f;小数
   tpmsb=tpmsb<<4;
   tplsb=tplsb>>4;
	pp=tplsb|tpmsb;
    return(pp);
}
void dellay()
{ 
    int i;

  for(i=0;i<25;i++)
   dlay(105);
  

}

void send_temp(void)
{ 
 
temp=read_temperature();
  
  
  
  temxsb= temp&0x03;
  temxsb=temxsb|0x0c;	//di两位


  tem10sb=temp;
  tem10sb=tem10sb&0x30;
  tem10sb>>=4;
  tem10sb=tem10sb|0x08;//次高位


  tem01sb=temp;
  tem01sb=tem01sb&0x0c;
  tem01sb>>=2;
  tem01sb=tem01sb|0x04;	 //00001100	  	 


 

   
 


  
 send_bus=tem10sb;
          dellay();
          dellay();
		 


   send_bus=tem01sb;
     dellay();
   	 dellay();	
	 
				 
   send_bus=temxsb;
     dellay();
   	  dellay();

	 send_bus=temxsb;
     dellay();
   	  dellay();
	

	 send_bus=tem01sb;
     dellay();
   	 dellay();
	 
	  
  send_bus=tem10sb;
          dellay();
          dellay();
		 

    
    
   
  	
  
  
 
} 

main()
{ 
  
 
  
  while(1)    
 {  
    
    send_temp();


 }	  
	  
}


    
  
   














⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -