基于AT89S52的串口通信的测温系统设计

发布者:美人如玉剑如虹最新更新时间:2011-09-19 关键字:AT89S52  串口通信  测温系统 手机看文章 扫描二维码
随时随地手机看文章

  介绍了以AT89S52 单片机为核心的温度控制系统的工作原理和设计方法。系统由芯片DS18B20 采集温度信号传输给微控制器,通过外围设备LCD1602 显示现场温度值,并设计上位机程序通过串口通信实时获取温度。系统设计包括硬件电路设计、软件设计。单片机程序采用C51,在KEIL 开发环境中调试通过完成;PC 后台软件采用VB6.0 完成。给出了前后台软件设计流程图。最后给出了设计实现的硬件实物图和采集到的前后台温度显示结果。

  温度是工业控制中主要的被控参数之一,在日常生活及工农业生产中经常要用到温度的检测及控制,因此研究温度的测量方法和装置具有重要的意义。传统方法多以热电阻和热电偶等为温度传感元件,而这种模拟温度传感器输出为模拟信号,必须经过A/D 转换环节获得数字信号后才能与单片机等微处理器接口,使得硬件电路结构比较复杂、抗干扰性差、布线麻烦以及成本高等缺点。

  针对上述问题,该设计提出了基于Dallas 半导体公司的数字式温度传感器DS18B20[1-2]和ATMEL 公司AT89S52 单片机构成的温度测量系统,并可通过串口连接在PC 系统上进行实时显示,该系统安装简易,可靠性高,适用于恶劣环境的现场温度测量。

  1 系统构成

  测温系统由微控制器、温度采集、串口通信、LCD 显示和上位机显示等几部分组成,如图1 所示。

 

图1 系统组成

  数据采集流程为:单片机 AT89S52 获取温度传感器DS18B20 采集的温度值,经处理后传输给LCD1602 现实,并且通过串口通信上传给上位机,供上位机显示。

  1.1 DS18B20 数字式温度传感器

  DS18B20 温度传感器是美国DALLAS 半导体公司推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程读取9~12 位数字温度值。DS18B20 的性能特点如下:

  ①适应电压范围更宽(3.0~5.5 V),在寄生电源方式下可由数据线供电;

  ②独特的单线接口方式。与微处理器连接时仅需要一条线即可实现双向通讯;

  ③DS18B20 支持多点组网功能;

  ④DS18B20 在使用中不需要任何外围元件,全部传感元件及转换电路集成在一只形如三极管的集成电路内;

  ⑤温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃;

  ⑥可编程的分辨率为9~12 位,对应的分辨率分别为0.5℃、0.25℃、0.125℃和0.062 5℃,可实现高精度测温;

  ⑦转换时间为93.75 ms(9 位)和750 ms(12 位),对于一般的实时测温系统已经足够了;

  ⑧测量结果直接输出数字温度信号,以丹总线串行传送给CPU,同时可传送CRC 校验码,具有极强的抗干扰纠错能力;

  ⑨负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。

  1.2 RS_232 串口通信标准

  RS_232C 是美国电子工业协会(EIA)制定的异步串行通信中应用最广的标准总线。该标准适用于数据传输速率在0~20Kbps 范围内的通信,已成为数据终端设备DTE 与计算机和数据通信设备DCE 的接口标准,是PC 机与通信工业中应用最广泛的一种串行接口。其工作电平规定如下:对于数据(逻辑“1”的电平低于-3V;逻辑“0”的电平高于+3V)。对于控制信号(“信号有效”的电平高于+3V,“信号无效”的电平低于-3V)。在实际工作中应保证电平在±(3~15)V。其串行口的9 根针脚功能有其固定的定义。该设计中,只要用RXD 和TXD 两条数据线即可。

  1.3 AT89S52

  AT89S52 是一款低功耗、高性能CMOS 工艺8 位微控制器,携有8K 在系统可编程Flash 存储器。与80C51 产品指令和引脚完全兼容。使其能为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52 还含有:256 字节RAM、32 位I/O 口线、看门狗定时器、2 个数据指针、三个16 位定时器/计数器、一个6 向量2 级中断结构、全双工串行口、片内晶振及时钟电路。另外,AT89S52 可降至0 Hz静态逻辑操作,支持2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保模式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

 


1.4 LCD1602 显示模块

  液晶显示模块具有体积小、功耗低、显示内容丰富、超薄轻巧等优点,在袖珍式仪表和低功耗应用系统中得到广泛的应用。目前字符型液晶显示模块已经是单片机应用设计中最常用的信息显示期间,LCD1602 液晶显示模块可以显示两行,每行16 个字符,其字符发生器ROM 中自带数字和英文字母及一些特殊符号的字符库,没有汉字。利用LCD1602可以建立8 个6×8 点阵自定义字库的特点。它采用单+5V电源供电,外围电路配置简单,价格便宜,具有很高的性价比。

  LCD1602 的驱动方式有并口驱动和串口驱动两种,并口驱动须占用单片机大量宝贵的I/O 接口;而串口驱动须在单片机的UART 接口空闲的基础上。其主要功能如下:40 通道点阵LCD 驱动、可选择当作行驱动或列驱动、输入/输出信号:输出能产生20×2 个LCD 驱动波形;输入接受控制器送出的串行数据和控制信号,偏压(V1∽V6)、通过单片机控制将所测的频率信号读数显示出来。

  2 硬件系统设计

  2.1 温度采集电路

  在设计电路时,要想使DS18B20 能够进行精确的温度转换,I/0 线必须在转换期间保证供电。由于DS18B20 的工作电流达到了1 mA,所以仅靠5 K 上拉电阻提供电源是不行的,当几只DS18B20 挂在同一根I/0 线上并同时想进行温度转换时,这个问题变得更加尖锐。考虑到本系统只进行单点测量,故采用从VDD 引脚接入一个外部电源的方法。

  2.2 主控电路及复位电路

  AT89S52 具有多种封装形式,该系统为便于焊接,采用PDIP 封装形式。AT89S52 单片机内资源丰富,为解决该系统的设计提供了多种多样的方案设计,该系统占用AT89S52I/0 端口P1、P2、P3 的部分资源。

  2.3 电平转换电路

  RS_232 是用正负电压来表示逻辑状态,与TTL 以高低电平表示逻辑状态的规定不同,因此,为了能够同计算机接口或终端的TTL 器件连接,必须在RS_232 与TTL 电路之间进行电平和逻辑关系的变换,实现这种变换的方法可用分立元件,也可以用集成电路芯片。考虑到数据的双向传递性,该系统采用MAX232 芯片,可以完成TTL 到RS_232 双向电平转换。

  2.4 显示电路

  LCD1602 是常见的液晶显示器,其特点是读写简易,显示精度高,与用动态数码管显示相比其占用资源较少,且显示数据稳定,抗干扰能力强。

  2.5 硬件构成总电路图

  系统整体硬件电路包括温度采集电路、主控制器电路、电平转换电路和显示电路这四部分,电路如图2 所示。

 

图2 系统硬件电路总图[page]

  3 软件系统设计

  3.1 下位机软件设计

  下位机程序设计包含三部分:微控制器的初始化、对DS18B20 的访问和对LCD1620 的读写。AT89S52 是该系统的核心部分,控制着温度的转换以及读取温度数值并转化成十进制数以及相应的ASCII 值在1602 上进行显示,通过RS232供PC 机读取温度值。其主要工作流程为:初始化内部部件以达到环境运行要求、初始化DS18B20 以及LCD1602;读取温度值并将采集到的数据进行相应的转化传送到1602 上进行显示;当遇到中断时,进入中断服务函数,检查上位机是否向其请求发送数据。一旦检测到正确的请求即将读取的温度数值按照一定的格式放到缓冲器中,直到数据发送结束,返回中断点继续执行原函数。流程图如图3(a)所示。

  3.2 上位机软件设计

  为方便进行远程控制可将采集到的温度数据通过RS_232 口传输到控制中心的电脑上,以便实时监测。采用VB6.0[4]作为开发平台,可高效快速地完成软件的开发设计。

  采用Viusal Basic 开发串口通信程序主要有两种方法:①使用MSComm 串口控件;②调用Window API 函数。

 

使用MSComm 串口控件实现通信的方法比调用API 动态链接库函数的方法方便、快捷、而且用编写代码量少的有点,可以大大地提高编程效率和系统设计的稳定性。该部分软件完成窗体的设计,设置Timer 的间隔为300ms,完成MSComm控件的添加,设置其相应的属性,对所得的数据进行分析计算并在窗口中显示。流程图如图3(b)所示。

 

图3 测温系统程序流程

  4 结语

  这里项目根据实际需要完成了测温系统的设计和实现。

  包括:整体架构设计、下位机底层硬件和软件的具体实现、PC 串口上位机软件设计,较好地达到了预期目的。系统实物图如图4 所示,前后台温度显示如图5(a)、图5(b)所示。

  系统充分利用了DS18B20 微型化、低功耗、高性能、抗干扰能力强等优点,将温度数据通过串口传输到上位机进行统一管理,有利于温度数据的保存和查询,节省了人力成本。

  该系统可应用于较多的测温场合。更高级的基于嵌入式系统和无线传感网络的测温系统目前也是人们研究的热点。下一步的工作将展开基于反馈控制的温控系统设计。

 

图4 系统实物

 

图5 测温结果显示

 

 

关键字:AT89S52  串口通信  测温系统 引用地址:基于AT89S52的串口通信的测温系统设计

上一篇:利用80C552构成的噪声测量自动定位装置的
下一篇:ISD2500+ATmega8实现智能语音系统

推荐阅读最新更新时间:2024-03-16 12:41

μC/OS—II的嵌入式串口通信模块设计
在嵌入式应用中,使用RTOS的主要原因是为了提高系统的可靠性,其次是提高开发效率、缩短开发周期。μC/OS-II是一个占先式实时多任务内核,使用对象是嵌入式系统,对源代码适当裁减,很容易移植到8~32位不同框架的微处理器上。但μC/OS-II仅是一个实时内核,它不像其他实时操作系统(如嵌入式Linux)那样提供给用户一些API函数接口。在μC/OS-II实时内核下,对外设的访问接口没有统一完善,有很多工作需要用户自己去完成。串口通信是单片机测控系统的重要组成部分,异步串行口是一个比较简单又很具代表性的中断驱动外设。本文以单片机中的串口为例,介绍μC/OS—II下编写中断服务程序以及外设驅动程序的一般思路。   1 μC/OS-I
[应用]
STM32中如何使用printf()函数?
STM32串口通信中使用printf发送数据配置方法(开发环境 Keil RVMDK) 在STM32串口通信程序中使用printf发送数据,非常的方便。可在刚开始使用的时候总是遇到问题,常见的是硬件访真时无法进入main主函数,其实只要简单的配置一下就可以了。 下面就说一下使用printf需要做哪些配置。 有两种配置方法: 一、对工程属性进行配置,详细步骤如下 1、首先要在你的main 文件中 包含“stdio.h” (标准输入输出头文件)。 2、在main文件中重定义函数 如下: // 发送数据 int fputc(int ch, FILE *f) { USART_SendData(USA
[单片机]
【JZ2440笔记】串口通信(中断方式)
一、前言 本文是在上一篇文章《【JZ2440笔记】串口通信》的基础上写的,上一篇使用的是查询的方式,这一篇使用中断的方式,具体的串口介绍和配置就不写了,都在上一篇了,关于中断方面的设置在《【JZ2440笔记】裸机实验使用中断》中有讲到,这里直接贴出本文代码。 二、程序编写 程序分为以下几个文件: head.S;启动文件。 init.c:关闭看门狗,初始化时钟的函数。 uart.c:串口相关配置。 uart.h:串口头文件。 main.c:主函数。 Makefile:编译程序。 每个文件具体内容如下: head.S @**************************************
[单片机]
采用AT89S52和VC++的实现步进电机实时显示控制系统设计
1 引言 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下, 电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给 电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周 期性的误差而无累积误差,使得在速度、位置等控制领域,用步进电机来控制变的非常的简 单。本文设计了一种基于AT89S52 单片机和VC++的步进电机控制系统,可以实现对步进 电机的基本控制及状态实时显示。 2 系统组成 使用、控制步进电机必须由环形脉冲源、功率放大电路等部分组成控制系统,脉冲信号 一般由单片机或CPU产生,一般脉冲信号的占空比为0.3-0.4左右,电机转速越高,占空
[单片机]
采用<font color='red'>AT89S52</font>和VC++的实现步进电机实时显示控制<font color='red'>系统</font>设计
51单片机串口通信错误的原因
之前发过一篇博文《MCU-51串口通信程序》,程序挺好用的,之后一直把串口当做测试用途,像正在调试USB,用的是CH372,PC通过CH372(USB)发一个字符到单片机,单片机再通过串口回传这个字符,从而验证CH372是否收到字符,结果出现意想不到的错误,错误还挺有规律的。就是发16位字符0A,接收到字符用16位显示是8A;发2A,显示AA;发2B,显示AB,就是最高位(第8位)0变为1了,试验了几个都是一样。 之前老板也是同样的问题(可见这事是多么普遍),不过当时由于不是我的事,就没管。问了一下老板,才知道是晶振的问题,之前板子是用11.0952MHz晶振,现在的板子是12MHz,程序中串口通信也没改预置值,直接就下载了
[单片机]
51单片机<font color='red'>串口通信</font>错误的原因
STM32F407多路串口通信进行数据收发
一直被说是就不能把几个串口放在一起,写个标准例程直接用,非要每次用哪个串口才现场改程序,被迫把usart1,usart2,usart3进行了资源整合,挂在这以备不时之需。 功能简述: 串口1,串口2,串口3串口内自收自发数据,串口之间通信互发数据,读取串口的缓冲区进行收发都可以,资源冲突已经解决,可以直接用。 程序声明: 根据标准例程对usart1,usart2,usart3进行了GPIO,时钟,串口等配置,放在了一个工程中,为每个串口定义了自己的缓冲区(大小也是)用于存储串口接收到的数据。 因为主要用的是usart1来进行调试,所以就为usart1中配置了标准库函数,若需要用其他串口来打印输出,可以将下方代码
[单片机]
基于ADC0809和AT89S52单片机的数字电压表的设计
1.引言 本设计待测的输入电压为8路,电压范围为0~5V,使用目前广泛使用的AT89S52来做控制系统,用ADC0809来进行模拟电压的采集及模数转换,实现采集8路数据,并将结果在四位一体数码管上进行滚动显示或单独显示的功能,测量的最小分辨率为0.019V. 2 硬件设计 2 . 1 系统构成 该系统主要包括几大模块:数据采集模块、A/D转换模块、控制模块、显示模块、按键模块等。采用AT89S52作为控制模块,A/DC0 8 0 9作为A/D转换模块的核心,ADC0809本身具有8路模拟量输入端口,通过C、B、A,3位地址输入端,能从8路中选择一路进行转换。如每隔一段时间依次轮流改变3位地址输入端的地址,就能依次对8路输入电压
[单片机]
基于ADC0809和<font color='red'>AT89S52</font>单片机的数字电压表的设计
基于AT89S52与PIC16F877A的在线编程控制系统的设计
l 引 言 通常进行单片机的实验或开发时,传统的并行编程方法中,编程器是必不可少的。仿真、调试完的程序需要借助编程器烧到单片机内部或外接的程序存储器中。在开发过程中,程序每改动一次就要拔下电路板上的芯片,编程后再插上。随着计算机技术的发展,许多公司推出了带有片内FLASH存储器的MCU,FLASH存储器具有电可擦除、无需后备电源保护数据、可在线编程等特点。在线编程目前有两种实现方法:在线系统编程(ISP)和在线应用编程(IAP)。ISP一般是通过单片机专用的串行编程接口对单片机内部的FLASH存储器进行编程,例如AT-MEL公司的单片机AT89S52就提供了一个SPI串行接口对内部程序存储器编程(ISP)。 在线编程(ISP)
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved