基于AT89C51单片机的温度计设计

点击链接获取Keil源码与Project Backups仿真图:
https://download.csdn.net/download/qq_64505944/87773445
在这里插入图片描述

源码获取

主要内容:
设计一个简易温度计;要求电路实现如下功能:
设计通过单片机和数码管、led灯等组成,可以显示温度,并且可以显示大于零度的温度和小于零度的温度,还可以超出限定温度时可以报警。
基本要求:
1、设计一个能显示温度的简易温度计。
2、该建议温度计可以正常显示相应环境的温度。
3、通过单片机课程设计,熟练掌握汇编语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。
4、完成控制系统的硬件设计、软件设计、仿真调试。
主要参考资料:
[1] 胡宴如主编.模拟电子技术[M] 高等教育出版社,2008-2-1
[2] 赵利主编.数字电子技术[M] 冶金工业出版社,2009-1-1
[3] 李华.单片机C语言编程[M].北京:北京航空航天大学出版社,2005-8-1.
[4] 张晔、王玉民等.单片机应用技术[M] .北京:高等教育出版社.2006-3
[5] 王东峰等.单片机C语言应用100例[M].电子工业出版社,2009.

           完  成  期  限:12 月 11 日 - 12 月 26 日  
        指导教师签名:                     
           课程负责人签名:                           

摘 要
随着时代的进步和发展﹐单片机技术已经普及到我们生活、工作、科研、各个领域﹐已经成为一种比较成熟的技术惇,本文详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析﹐特别是数字温度传感器DS18B20的数据采集过程。对各部分的电路也一一进行了介绍﹐该系统可以方便的实现实现温度采集和显示﹐并可根据需要任意设定上下限报警温度﹐它使用起来相当方便﹐具有精度高、量程宽、灵敏度高、体积小、功耗低等优点﹐适合于我们日常生活和工、农业生产中的温度测量﹐也可以当作温度处理模块嵌入其它系统中﹐作为其他主系统的辅助扩展。DS18B20与AT89C51结合实现最简温度检测系统﹐该系统结构简单﹐抗干扰能力强﹐适合于恶劣环境下进行现场温度测量﹐有广泛的应用前景。
本设计是一款简单实用的小型数字温度计,本次数字温度计的设计共分为六部分﹐主控制器,LED显示部分﹐传感器部分﹐复位部分﹐时钟电路﹐报警电路。主控制器即单片机部分﹐用于存储程序和控制电路;LED显示部分是指四位共阴极数码管﹐用来显示温度﹔传感器部分﹐即温度传感器﹐用来采集温度﹐进行温度转换﹔复位部分﹐即复位电路。测量的总过程是﹐传感器采集到外部环境的温度﹐并进行转换后传到单片机,经过单片机处理判断后将温度传递到数码管显示。
关 键 词:数字温度传感器;单片机

目录

摘 要 I
1 概述 1
1.1设计背景 1
1.2设计意义 1
1.3设计目标 1
2方案总体设计 2
2.1总体设计 2
2.2方案工作原理 2
3硬件设计 3
3.1 AT89C51芯片 3
3.2 时钟电路 3
3.3 温度传感电路 4
3.4 温度报警电路 5
3.5 显示电路 5
4 软件设计 6
4.1 系统流程 6
4.2 延时源代码 6
4.3 数码管显示代码 6
4.4 DS18B20初始化 7
4.5 写命令函数 8
4.6 读取温度函数 8
4.7 温度数据处理函数 8
4.8 报警提示电路函数 9
4.9 主函数 9
5 系统仿真与调试 10
5.1 Proteus 10
5.2 软件调试 10
5.3 硬件调试 11
6运行结果分析 11
6.1 仿真图 11
6.2 运行结果 11
6.3 运行分析 12
总结 13
参考文献 14

1 概述
1.1设计背景
随着现代信息技术的飞速发展和传统工业改造的逐步实现﹐能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低﹐但需后续信号处理电路﹐而且可靠性相对较差﹐测温准确度低﹐检测系统也有一定的误差。这里设计的数字温度计具有读数方便﹐测温范围广,测温精确﹐数字显示﹐适用范围宽等特点。本设计选用AT89C51型单片机作为主控制器件﹐DS18B20作为测温传感器,通过LCD1602实现温度显示。通过DS18B20直接读取被测温度值﹐进行数据转换﹐该器件的物理化学性能稳定﹐线性度较好﹐在0℃~100°C最大线性偏差小于0.01℃。该器件可直接向单片机传输数字信号﹐便于单片机处理及控制。另外﹐该温度计还能直接采用测温器件测量温度﹐从而简化数据传输与处理过程。
1.2设计意义
1、掌握单片机电路的设计原理、组装与调试方法;
2、掌握LED数码显示电路的设计和使用方法;
3、掌握DS18B20温度传感器的工作原理与使用方法。

1.3设计目标
由于本设计主要用于温度的测量,因此在设计上尽量使其安全以及简单易操作。其次,在这次设计可行性上进行分析如下:
1、经济可行性:所谓经济可行性,即在这次设计上需要投入资金的多少,由于课程设计是提高我们的动手能力以及资金有限。因此在经济.上必须能够承受,比较理想化的对于我们课程设计来说是不可行的。通过分析后,无论是在器件价格或是常见度.上均是可行的。
2、技术可行性:技术可行性主要是分析技术条件上是否能够顺利开展并完成课程设计的主要问题,硬件、软件能否满足设计者的需要等。通过分析各种软件环境,硬件仿真环境等均已经具备。
综上所述,本系统设计目标已经明确,在经济与技术上均可行,因此本系统的开发是完全可行的。

2方案总体设计
本次课程设计的课题所要达到的要求如下:
1、设计一个数字式温度计,要求使用DS18B20温度传感器测量温度。
2、经单片机处理后,要求用四位一体共阴LED数码管来设计显示电路,以显示测量的温度值。
3、要求在设计中加入上下限警报温度设置电路。
4、另外还要求在设计中加入警报系统,如果我们所设计的系统用来监控某一设备,当设备的温度超过或低于我们所设定的温度值时,系统会产生报警。
2.1总体设计

在这里插入图片描述

图2-1 单片机总体框架图

2.2方案工作原理
在做数字温度计的单片机电路中﹐对信号的采集电路大多都是使用传感器﹐这是非常容易实现的﹐所以可以采用一只温度传感器DS18B20,此传感器﹐可以很容易直接读取被测温度值﹐进行转换﹐就可以满足设计要求。采集之后,通过使用51系列的单片机,可以对数据进行相应的处理﹐再由LED显示电路对其数据进行显示。

3硬件设计
3.1 AT89C51芯片
AT89C51提供以下标准功能:4k字节Flash闪速存储器,256字节片内数据存储器(00H-7FH为片内RAM,80H-FFH为特殊功能寄存器SFR),32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。单片机引脚图如图2所示:
在这里插入图片描述

图3-1 AT89C51
3.2 时钟电路
80C51时钟有两种方式产生,即内部方式和外部方式。80C51中有一个构成内部震荡器的高增益反向放大器﹐引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。本次采用内部震荡电路,瓷片电容采用22PF,晶振为12MHZ。

在这里插入图片描述

图3-3 时钟电路图

3.3 温度传感电路
DALLAS最新单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。DALLAS半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线"接口的温度传感器。温度测量范围为-55~+125摄氏度﹐可编程为9位~12位转换精度﹐测温分辨率可达0.0625摄氏度﹐分辨率设定参数以及用户设定的报警温度存储在EEPROM中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出。
DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列、各种封装形式,DQ为数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源;GND为地信号;VDD为可选择的VDD引脚。当工作于寄生电源时﹐此引脚必须接地﹐如下图所示。

在这里插入图片描述

图3-5 数码管电路图

3.4 温度报警电路
对于数字温度计的设计﹐除了温度的数字显示功能外还加入了报警系统,当测量的温度超过或低于我们所设定的温度值时﹐系统会产生报警并亮红灯报警。

在这里插入图片描述

图3-6 温度报警电路

3.5 显示电路
对于数字温度的显示,我们采用4位一体共阴LED数码管,足够显示0到100中各位数,并且还能显示一位小数部分。

在这里插入图片描述

图3-7 显示电路

4 软件设计

4.1 系统流程
在这里插入图片描述

图4-1 程序流程图

4.2 延时源代码

void delay(uint t)
{
	for(;t>0;t--);
}

4.3 数码管显示代码

void xianshi()
{
	int j;
	for(j=0;j<4;j++)
	{
		switch(j)
		{
			case 0:
			dm=table_dm[display[0]];;
			w0=0;
			delay(300);
			w0=1;						
			case 1:
			dm=table_dm1[display[1]];
			w1=0;
			delay(300);
			w1=1;					
			case 2:
			dm=table_dm[display[2]];
			w2=0;
			delay(300);
			w2=1;					   			
case 3:
			dm=table_dm[display[3]];
			w3=0;
			delay(300);
			w3=1;								
}
	}
}

4.4 DS18B20初始化

ow_reset(void)
{
	char presence=1;
	while(presence)
	{
		while(presence)
		{
			DQ=1;_nop_();_nop_();
			DQ=0;
			delay(50);
			DQ=1;
			delay(6);
			presence=DQ;
		}
		delay(45);
		presence=~DQ;
	}
	DQ=1;	
	return presence;
}

4.5 写命令函数

void write_byte(uchar val)
{
	uchar i;
	for(i=8;i>0;i--)
	{
		DQ=1;_nop_();_nop_();
		DQ=0;_nop_();_nop_();_nop_();_nop_();
		DQ=val&0x01;
		delay(6);
		val=val>>1;		
	}
	DQ=1;
	delay(1);
}	

4.6 读取温度函数

read_temp()
{
	ow_reset();
	delay(200);
	write_byte(0xcc);
	write_byte(0x44);
	ow_reset();
	delay(1);
	write_byte(0xcc);
	write_byte(0xbe);
	temp_data[0]=read_byte();
	temp_data[1]=read_byte();
	temp=temp_data[1];
	temp<<=8;
	temp=temp|temp_data[0];
	return temp;
}

4.7 温度数据处理函数

work_temp(uint tem)
{
	uchar n=0;
	if(tem>6348)
	{
		tem=65536-tem;
		n=1;
	}
	display[4]=tem&0x0f;
	display[0]=ditab[display[4]];
	display[4]=tem>>4;
	display[3]=display[4]/100;
	display[1]=display[4]%100;			    
	display[2]=display[1]/10;
	display[1]=display[1]%10;
	r=display[1]+display[2]*10+display[3]*100;
	if(!display[3])
	{
		display[3]=0x0a;
		if(!display[2])	
		{
			display[2]=0x0a;
		}
	}
	if(n)
	{
		display[3]=0x0b;
	}
	return n;
}

4.8 报警提示电路函数

void BEEP()
{


	if((r>27))
	{
		beep=!beep;
	}
		else
	{
		beep=0;
	}}

4.9 主函数

void main()
{
	beep=0;
	dm=0x00;
	w0=0;
	w1=0;
	w2=0;
	w3=0;
	for(h=0;h<4;h++)
	{
		display[h]=0;
	}
	ow_reset();
	write_byte(0xcc);
	write_byte(0x44);
	for(h=0;h<50;h++)
	{
		xianshi();
	}
	while(1)
	{
		if(temp1==0)
		{
		work_temp(read_temp());
		xianshi(); 
		BEEP();		 		}
	}
}

5 系统仿真与调试
5.1 Proteus
Proteus是功能强大的单片机仿真软件。Proteus与其他的仿真软件相比较,在下面的优点:(1)能仿真模拟电路、数字电路、数模混合电路;(2)能绘制原理图、PCB图;(3)几乎包括实际中所有使用的仪器(4)其最大的亮点在于能够对单片机进行实物级的仿真。从程序的编写,编译到调试,目标版的仿真一应俱全。支持汇编语言和C语言的编程。还可配合Keil C实现程序的联合调试,将Proteus中绘制的原理图作为实际中的目标板,而用Keil C集成环境实现对目标板的控制,与实际中通过硬件仿真器对目标板的调试几乎完全相同。

5.2 软件调试
调试主要方法和技巧:通常一个调试程序应该具有至少四种性能:跟踪、断点、查看变量、更改数值。整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序进行分别调试。

图5-2 生成相应程序的HEX软件

然后再将生成的hex文件放到仿真中。

5.3 硬件调试
硬件调试是针对单片机部分进行的调试。
在上电之前,先确保电路中不存在断路或短路情况,这一工作是整个调试工作的第一步,也是非常重要的一个步骤。在这部分调试中主要使用的工具是万用表,用来完成检测电路中是否存在断路或者短路情况的任务。注意焊点之间,确保焊点没有短接在一起,同时注意焊点的美观,确保没有开路以及短路的现象出现。

6运行结果分析
6.1 仿真图

图6-1 仿真图
6.2 运行结果

图6-2 运行结果

6.3 运行分析
总体来说,此次单片机课程设计功能基本完成,虽然课程设计的过程中遇到了很多困难与问题,但是最终还是完成了设计的任务及要求。具体来说可以分为以下几点:
优点:整体各元器件布局清晰,各个程序模块运行顺利,功能基本完成。可以准确从测量温度。
缺点:可以再添加一些开始或停止的功能。

总结
这次课程设计中,通过进行试验,已经基本掌握了单片机电路的设计原理、组装与调试方法,也学习了LED数码显示电路的设计和使用方法,同时也掌握了DS18B20温度传感器的工作原理与使用方法。
通过在软件上的一步一步实验,不仅巩固了我学过的单片机知识,也锻炼了我解决实际问题的能力。虽然在过程中经常会出现一些命令、方法上的错误,但通过资料的查阅以及老师、同学们的帮助已经逐个发现并及时修正,我也体会到了做实验的时候不能太心急,没有对实验进行复查就继续进行,结果导致的是一步错,步步错。许多操作需要细心并且耐心地进行,否则一不小心就可能会导致测试失败。对于一些经常用到的操作,一定要反复地进行练习。在这个过程中,我也明白了许多道理,不过做什么我们都要相信自己,不能遇到什么困难就要放弃,什么都需要去尝试。
当然在这次宝贵的课程设计活动中,经验才是对于我们最大的收获,而且还增强了自身对未知问题以及对知识的深化认识的能力,用受益匪浅这个词语来概括再合适不过。在今后的实验设计里,我相信我会通过自己的努力做的越来越好。

参考文献
[1] 何立民.单片机高级教程[M].北京: 航空航天大学出版社,2001.
[2] 王东峰等.单片机C语言应用100例[M].电子工业出版社,2009.
[3] 马忠梅等.单片机的C语言应用程序设计.北京航空航天大学出版社,2003.
[4] 王晋凯.简简单单学通51单片机开发 [M].清华大学出版社,2014.
[5] 夏继强.单片机实验[M].北京: 航空航天大学出版社,2001.

  • 16
    点赞
  • 132
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
### 回答1: 基于AT89C51单片机的数显温度计设计,需要使用温度传感器来检测环境温度,并将检测到的温度值转换为数字信号,然后通过数码管显示出来。 具体的设计步骤包括: 1. 选择合适的温度传感器,如DS18B20等。 2. 将温度传感器连接到单片机的IO口,并编写相应的程序来读取传感器输出的温度值。 3. 将读取到的温度值进行数字信号转换,可以使用AD转换器或者其他数字信号转换芯片。 4. 将转换后的数字信号通过数码管进行显示,可以使用74HC595等芯片来控制数码管。 5. 编写完整的程序,实现温度检测和数码管显示功能。 需要注意的是,在设计过程中需要考虑到温度传感器的精度、数码管的显示效果以及程序的稳定性等因素。 ### 回答2: 在现代生活中,温度计已经成为了必不可少的一种仪器设备。而在数码时代,使用基于单片机设计的数显温度计就变得更加的方便,可靠和精确。本文将介绍一种基于AT89C51单片机的数显温度计设计。 首先,我们需要明确温度传感器的选择。在此设计中,我们选择了DS18B20数字温度传感器。该传感器具有高精度、数字输出、防水防尘等特点。它的封装形式为TO-92,足够小巧,便于安装。 然后,我们需要将该传感器与AT89C51单片机相连,实现温度值的读取和处理。由于DS18B20传感器采用单线通讯方式,因此我们只需要将其与P1.0相连即可。需要注意的是,P1.0口需要使用上拉电阻,以保证传感器的正常读取。 接下来,我们需要进行数字显示模块的设计。在该设计中,我们选择了共阳极的4位数码管。数码管的控制引脚需要与AT89C51单片机的8个输出口相连。 为了简化设计,我们选用了集成温度传感器和EEPROM的DS1302时钟芯片作为时钟电路,以实现时间日期的显示以及防止数字“闪屏”现象的产生。 整个温度计的实现过程可以分为以下几个步骤: 1. 初始化DS1302等时钟电路,并进行DS18B20传感器的初始化; 2. 从DS1302中读取实时时间日期信息,以便于后续显示; 3. 读取DS18B20传感器,获得当前温度数值; 4. 将温度数值进行处理,以实现数码管的显示; 5. 通过定时器中断实现数码管的动态显示和时钟的更新。 综上所述,基于AT89C51单片机的数显温度计设计是一种基于数字化技术的高精度测量温度的方法。该设计具有精度高、可靠性强、显示效果好的优点,广泛应用于生产和生活中。 ### 回答3: 单片机数显温度计是一种可靠精度高、使用方便的温度测量和显示系统,它可以帮助我们及时、准确地获取环境温度信息,从而更好地掌控环境变化并进行相应的调整。本文将针对基于AT89C51单片机的数显温度计设计进行详细阐述。 一、硬件设计 1.AT89C51单片机 AT89C51单片机是一种速度较快、内包含大量I/O端口、ROM和RAM等资源丰富的MCU,相对于其他单片机而言,它的操作更加稳定,所以我们选择使用AT89C51单片机温度检测的数据转化成数字信号并输出。 2.TS18B20温度传感器 TS18B20温度传感器是一种内部有模拟转数的数模转换器,可以将温度信号转换成数字信号,具有精度高、响应速度快、占用空间小、价格低廉等优点,是一种理论上不存在温漂和偏移的精密数字式温度传感器。我们可以通过I/O端口将传感器与单片机连接起来,从而实现对温度的监测。 3.数码管显示器 数码管显示器是一种智能化的数字显示设备,利用LED管的发光原理,在不需要背光灯的情况下显示出具体的数字、字母和符号等信息。我们可以选用较大的4位数码管显示器,通过数字信号实现对温度数值的显示。 二、电路原理图 经过上述的硬件选择,我们可以得到基于AT89C51单片机的数显温度计电路原理图: (注:其中DS18B20温度传感器连接的I/O端口可以根据具体情况进行调整) 三、软件设计 1.系统初始化 当系统上电后,程序会进入初始化状态,主要进行以下操作: (1)设置程序入口和出口。 (2)设置本机端口P1和P2为输入端口,接受传感器状态信号。 (3)设置波特率。 2.温度采集 我们可以通过程序读取传感器状态信号,从而实现温度采集,具体流程如下: (1)发出温度采集命令。 (2)等待传感器读取完成。 (3)获取传感器反馈的温度数据。 (4)将温度数据转化成需要的格式。 3.数码管显示 获取温度数据后,我们需要将其转化成数字信号并进行显示。我们将温度数据转化成ASCII(美国信息交换标准代码)码,并分别用P3.0-P3.3的I/O口输出到数码管上,从而实现对温度数据的数值显示。 本文针对基于AT89C51单片机的数显温度计设计进行了详细的阐述,通过对硬件和软件的选择和设计,我们可以更好地实现对温度的监测和掌控。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柒月玖.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值