APP下载

基于51单片机控制的TC72数字温度计设计

2017-05-30孙伟峰李文龙

科技风 2017年15期

孙伟峰 李文龙

摘 要:随着现代信息技术的飞速发展和传统工业改造的逐步实现.能够独立工作的温度检测和显示系统应用于诸多领域。控制部分采用AT89C51单片机,由于TC72数字温度计采用SPI同步串行通信,而AT89C51中没有SPI接口,故设计中不需要外部接SPI通信模块,只需要用软件模拟SPI时序即可。该方法具有节省资源,可靠的优点。本文通过对基于TC72数字温度计的设计制作以及技术原理进行分析,并得出心得体会。

关键词:AT89C51 ;TC72;SPI;数字温度计

一、系统硬件设计

主要利用AT89C51单片机、TC72数字温度传感器而设计的数字温度计,实现对空气温度的测量。

系统原理框图

硬件实现原理:如图所示,该温度计通过TC72数字传感器进行采集,将数据传送给单片机,在数码管上显示。

(一)AT89C51与外围电路

AT89C51作为控制系统的核心,周围与时钟电路、复位电路组成单片机最小系统。利用4位共阳数码管显示温度。

特性概述:AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

因此由于其主要特性,故选择AT89C51即可满足本实验所需要求。

(二)TC72数字温度传感器

1.特性: 温度/数字转换器

SPI兼容接口、十位分辨率(0.25°C/位)、40°C 至 +85°C 的精度为 ±2°C (最大值)、55°C 至 +125°C 的精度为 ±3°C (最大值)、2.65V 至 5.5V 工作电压范围

2.温度数据格式

使用10 位二进制补码数字字的格式来表示温度值,分辨率为 0.25°C/位。温度数据以二进制补码的格式存储在温度寄存器中。 ADC 转换器的量程为128°C 至+127°C,但是 TC72 的工作范围规定为 55°C 至+125°C。

3.串行总线接口

串行接口包括片选 CE 、串行时钟SCK 、串行数据输入SDI以及串行数据输出SDO 信号线。TC72 作为从器件工作,它符合SPI 总线规范CE 为高电平有效, 当 CE 等于逻辑高电平时,数据可以写入器件或从器件读出。CE 为低电平时, SCK 输入被禁止。CE 线的上升沿启动读或写操作,而CE 的下降沿结束读或写操作。SCK 输入由外部单片机提供,用于同步 SDI 和 SDO 线的数据。 SDI 输入向 TC72 的控制寄存器写入数据,而SDO 从温度寄存器中输出温度数据和控制寄存器关断位的状态。

先发送地址字节,随后为数据。地址的最高位 A7 決定要进行读操作还是写操作。如果 A7 =“0”,将进行一个或多个读操作;否则 A7 = “1”,进行一个或多个写操作。

注意:在发送命令前后要先将CE拉高,再拉低

4.控制寄存器

控制寄存器为可读写寄存器,用于选择关断模式、连续转换模式或单次转换模式。TC72 每隔约 150 ms 进行一次温度转换。上电时, SHDN 位设置为 “1”。 因此, TC72 最初处于关断工作模式。通过在控制寄存器的 SHDN 位写入“0”,选择连续温度转换模式。

5.温度寄存器

温度寄存器为只读寄存器,保存以 10 位二进制补码表示的温度测量值。 LSB 温度寄存器的 Bit 0 至 Bit 5 始终设置成 “0”。

(三)SPI

环形数据交换数据传输通常会包含一次数据交换。当主节点向从节点发送数据时,从节点也会向主节点发送数据。为此,主节点的内部移位寄存器和从节点被设置成环形。由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变 (上沿和下沿为一次),就可以完成8位数据的传输。

下面软件中将要介绍一下软件模拟SPI通信。

二、系统软件设计

软件设计关系到数字温度计的功能是否能够正常实现,因此它是数字温度计十分重要的组成部分,好的程序能使设备更加精确,良好设计的程序可以提高软件的执行效率。AT89C51的程序编写采用Keil4语言的开发环境,所用到的语句简单易学,适合初学者进行入门掌握。

SPI时序软件模拟:

int Read_OneByte(char SPI_byte)

{unsigned char SPI_count;

for (SPI_count = 8; SPI_count > 0; SPI_count)

{SDI = SPI_byte & 0x80; SPI_byte = SPI_byte << 1;

SCLK = 0x01; SPI_byte |= SDO; SCLK = 0x00; }

return (SPI_byte);

}

三、心得与体会

通过这次数字温度计的设计,发现自己的能力有所提高,在实验的过程中,遇到许多问题,发现问题,并且解决问题。在这过程中,不断去复习以前学过的模电、数电以及C语言。同时又对新学的单片机的知识加以掌握和运用,在这个过程中不断地去提升自己的能力。同时也有一些需要加强的地方,比如:画PCB板和画原理图,以及熟练运用C语言。

参考文献:

[1]姜宇鹏,陈越惠,肖棋文.基于51单片机的数字温度计设计.企业技术开发,2011年第30卷第7期.

[2]谭浩强.C程序设计.第三版.清华大学出版社.

[3]张兰红.单片机原理及应用.机械工业出版社.

作者简介:孙伟峰(1995),男,本科,研究方向:测控技术与仪器;李文龙(1995),男,本科,研究方向:测控技术与仪器。