数字温度传感器DS18B20应用

数字温度传感器DS18B20应用, 使用protues单片机对温度传感器进行仿真,测试,Protues8.5及以上软件打开仿真

应用介绍

数字温度传感器DS18B20应用, 使用protues单片机对温度传感器进行仿真,测试,Protues8.5及以上软件打开仿真

#include<reg51.h>									   
#include<DS18B20.c>
code uchar seven_seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar cp2;
uint aa,cp1;
uint temp_num,temp_num1,temp_dot,temp;
sbit P1_0=P1^0;
void timer0_isr()interrupt 1	   //中断服务函数
{
	TH0 = (65536-2000)/256;			  //TH0重置函数
	TL0 = (65536-2000)%256;			  //TL0重置函数
	cp1++;
	if(cp1>=500)					  //1秒
	{
		cp1 = 0;
		temp_num = Read_Temperature();			  //将读取到的温度赋值给temp_num
		temp_dot = c * 0.625;					   //得到温度的小数
		if((temp_num&0x80)==0x80)				  //如果温度为负值
		{
			temp_dot = (0x0f-c)*0.625;			  //补码转换原码,小数处理
			temp_num1 = 0xff - temp_num;		  //补码转换原码,整数处理
		}
		else temp_num1 = temp_num;				  //小数转换为十进制
	}
	P0 = 0xff;									  //消隐
	switch(cp2)
	{
		case 0:P1_0 = 0;P0 = 0x01;P1_0 = 1;P1_0 = 0;
		P0 = seven_seg[temp_dot];break;	      //显示小数
		case 1:P1_0 = 0;P0 = 0x02;P1_0 = 1;P1_0 = 0;
		P0 = 0x7f&seven_seg[temp_num1%10];break;	//显示个位并加小数点
		case 2:
		{
			if(temp_num<10)break;	 //如果温度小于10度,且不为负值,十位0不显示
			if((temp_num>0x80)&&(temp_num1<10))	 //如果温度小于10度,并为负值,十位0不显示,只显示――
			{
				P1_0 = 0;P0 = 0x04;P1_0 = 1;P1_0 = 0;
				P0 = 0xbf;break;
			}
			P1_0 = 0;P0 = 0x04;P1_0 = 1;P1_0 = 0;//如果温度大于10度,十位正常显示
			P0=seven_seg[temp_num1/10];
			break;
		}	  
		case 3:
		{
			if((temp_num>0x80)&&((temp_num1/10)>0))	   //如果为负值,且十位不为0,百位显示――
			{
				P1_0 = 0;P0 = 0x08;P1_0 = 1;P1_0 = 0;
				P0 = 0xbf;
				break;	
			}
		}
	}
	cp2++;
	if(cp2>=4)cp2 = 0;		
}
void timer0_init()
{
	TMOD = 0x01;					   //方式一
	TH0 = (65536-2000)/256;			   //TH0 预置,65536十六进制低8位。
	TL0 = (65536-2000)%256;			   //TL0 预置,65536十六进制高8位。
	EA = 1;							   //终端总开关打开
	TR0 = 1;						   //定时计数器T0的起停控制位打开
	ET0 = 1;						   //定时计数器T0的中断端控制位打开
}
void main()
{
	timer0_init();
	write_temprom(128,-55);	//向18B20的暂存写上、下限温度分别为128,-55
	Write_OneChar(0x48);	//向18B20的rom中写数据		
	while(1);
	//{
	//	temp = read_temprom;	//从DS18B20中读取的温度给变量temp 
	//}
}

文件列表(部分)

名称 大小 修改日期
ds18b20应用.DSN15.91 KB2019-09-03
ds18b20应用.pdsprj.J8X8KE978YQ8Z68.Administrator.workspace0.36 KB2019-09-03
ds18b20应用.PWI0.38 KB2019-09-03
Last Loaded ds18b20应用.DBK15.93 KB2019-09-03
DS18B203.95 KB2019-09-03
DS18B20.build_log.htm0.76 KB2019-09-03
ds18b20.c1.02 KB2019-09-03
DS18B20.hex1.56 KB2019-09-03
DS18B20.lnp0.03 KB2019-09-03
DS18B20.M512.09 KB2019-09-03
DS18B20.plg0.21 KB2019-09-03
DS18B20.uvgui.Administrator4.77 KB2019-09-03
DS18B20.uvopt1.55 KB2019-09-03
DS18B20.uvproj2.83 KB2019-09-03
DS18B20_uvopt.bak5.83 KB2019-09-03
DS18B20_uvproj.bak0.00 KB2019-09-03
main.c1.03 KB2019-09-03
main.LST1.57 KB2019-09-03
main.OBJ3.91 KB2019-09-03
仿真0.00 KB2019-09-03
程序0.00 KB2019-09-03
项目12-数字温度传感器DS18B20应用0.00 KB2019-09-03

立即下载

相关下载

[这样的嵌入式经验,没十年,你悟的出来吗?] 嵌入式行业需要什么样的技术人才?仔细观察各种招聘的岗位要求吧,无非是两方面。
[用单片机实现温度远程显示资料] 此文档是用单片机实现温度远程显示资料。 文档介绍了用AT89S8252单片机的串行接口与智能温度巡回检测仪(XJ-08S)通过RS—485总线相互通讯实现热水温度远程显示的一种低成本解决方案,内容涉及RS—485总线通讯、单片机驱动数码管显示、数据转换以及键盘处理软硬件设计等内容。
[基于GSM短信模块的家庭防盗报警系统论文资料] 此文档是基于GSM短信模块的家庭防盗报警系统论文资料。 文档的系统主要由单片机和GSM短信模块组成,借助最可靠、最成熟的GSM移动网络,以最直观的中文短消息或电话形式,直接把报警地点的情况反映到您的手机屏幕上。
[基于单片机的简易逻辑分析仪设计论文资料] 此文档基于单片机的简易逻辑分析仪设计论文资料。
[多功能出租车计价器设计论文资料] 此文档是多功能出租车计价器设计论文资料。 文档讲解了用单片机技术来实现一台多功能出租车计价器,具有性能可靠、电路简单、成本低等特点。
[单片机C语言程序设计实训100例——基于8051+Proteus仿真] 此文档是单片机C语言程序设计实训100例——基于8051+Proteus仿真。 文档中包括:基础部分、硬件应用、综合设计、程序、基于8051+PROTEUS仿真100实例。

评论列表 共有 1 条评论

vera24 1年前 回复TA

666666666666

微信捐赠

微信扫一扫体验

立即
上传
发表
评论
返回
顶部