Proteus仿真-DS18B20温度传感器使用方法

一、硬件链接

在元件库中搜索DS18B20,按下图的连接方式链接。

 二、驱动代码

#define uchar unsigned char 
#define uint unsigned int
sbit DS1820_dat=P3^2;


void DS18B20_delay(uint T)							   //????
{
	while(T--);
}

 
void Initial()			 
{
    DS1820_dat=1;
   	DS18B20_delay(8);		  //??16??
    DS1820_dat=0;
    DS18B20_delay(80);
    DS1820_dat=1;
    DS18B20_delay(15);
} 
 
void Input(uchar f)			//18B20???????
{
    uchar j;
    for (j=0;j<8;j++)
    {
        DS1820_dat=0;
        DS1820_dat=f&0x01;
        DS18B20_delay(10);
        DS1820_dat=1;
        f>>=1;
    }
}

uchar Output()		   //18b20 ????????
{
    uchar j,b;
    for (j=0;j<8;j++)
    {
        DS1820_dat=0;
        b>>=1;
        DS1820_dat=1;
        if (DS1820_dat)
        {
            b=b|0x80;
        }
        DS18B20_delay(10);
    }
    return(b);
}
int Temper()
{	  
	int Store;
	int Store_2,Store_1;
	Initial();				   //对 DS18B20 复位
	Input(0xcc);			  	//跳过 ROM
	Input(0x44);			   //启动温度转换
	Initial();				   //对 DS18B20 复位
	Input(0xcc);			   //跳过 ROM
	Input(0xbe);			   //读 RAM 命令
	Store_1=Output();		   //读温度的低字节
	Store_2=Output();	 	   //读温度的高字节	 
	Store_2=(Store_2*256)+Store_1;	   //合起来为温度的整数部分
	Store=(int) Store_2*0.625;
	return Store;
}

三、软件示例

完整代码功能为51单片机温度控制系统,proteus仿真资料
功能:
1、低于设定最低温度时加热丝加热,高于最高温度时停止加热。可用按键设置高低温度。

2、显示当前时间,时间可设置。
3、DAC液位监测,液位低于10%开启电机上水,高于90%关闭电机上水,百分比可在程序中修改

/*****************主函数********************/
void main()
{	
	
	beep = 0;				    //开机蜂鸣器叫一声
	delay_1ms(200);
	P0 = P1 = P2 = P3 = 0xff;   //初始化IO口
	init_time0();		 //初始化定时器
 	init_1602();		 //lcd1602初始化
	init_1602_dis_csf(); //lcd1602初始化显示
	do
     {
	  temp=Temper();
     }
    while(temp==850);   	       //因为DS18B20上电之后会读出来850,但不是温度值,所以等待读出温度值   
 	delay_1ms(100);
	while(1)
	{
		key();			 //按键程序
 		if(key_can > 0)
		{
			beep = 0;
			delay_1ms(50);
			beep = 1;			
 			key_with();	
		}
		
		if(flag_200ms == 1)
		{	
			flag_200ms = 0;
			if(menu_1 == 0)
			{
				read_time();		  //读时间
				init_1602_ds1302();   //显示时钟
				vol_value=VOL_VAL*A_D()/256;               //获取模拟电压值
				percent = 100.0*vol_value/VOL_VAL;
				display_temp(55);

			}
		}
		delay_1ms(1);
	}
}

关注下方公众号,回复公众号“204”获取完整工程文件

  • 2
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值