基于单片机控制的温度采集 与测量
系 别: 电气工程系
专 业: 电气自动化
班 级: 电30
姓 名 田云星
学 号: ************
指导教师: 孔红 马宁
2011年 月 日
摘 要
近年来,随着大规模集成电路的发展,单片机继续朝快速、高性能方向发展,从4位、8位单片机发展到16位、32位单片机。单片机主要用于控制,它的应用领域遍及各行各业,大到航天飞机,小至日常生活中的冰箱、彩电,单片机都可以大显其能。
单片机技术与传感与测量技术、信号与系统分析技术、电路设计技术、可编程逻辑应用技术、微机接口技术、数据库技术以及数据结构、计算机操作系统、汇编语言程序设计、高级语言程序设计、软件工程、数据网络通信、数字信号处理、自动控制、误差分析、仪器仪表结构设计和制造工艺等的结合,使得单片机的应用非常广泛。同时,单片机具有较强的管理功能。采用单片机对整个测量电路进行管理和控制,使得整个系统智能化、功耗低、使用电子元件较少、内部配线少、成本低,制造、安装、调试及维修方便。
本设计是基于单片机ATMAGE16设计的实时温度采集仪,通过本次设计,我成功的实现了利用单片机对温度的采集和测量。
关键词 单片机;DS18B20;ICCAVR
1 绪论 1
1.1 单片机的基础知识课题背景 1
1.2 课题背景 1
1.3设计目的及系统功能 1
2.电路的设计 1
2.1 温度测量电路的设计 1
2.2 串口通信电路的设计 1
3 分布式温度采集系统设计 1
4 ICCAVR制作环境及介绍 1
4.1 ICCAVR介绍 1
4.2 ICCAVR向导 1
结 论 1
参考文献 1
附件1:总系统的原理图如下: 1
1 绪论
二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称PC机。它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。它的出现是近代计算机技术发展史上的一个重要里程碑,因为它体积小,通常都藏在被控机械的“肚子”里。它在这个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。
单片机具有体积小、功能强、应用面广等优点,目前正以前所未见的速度取代着传统电子线路构成的经典系统,蚕食着传统数字电路与模拟电路固有的领地。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机了解计算机原理与结构的最佳选择。
自从1976年Intel公司推出第一批单片机以来,80年代单片机技术进入快速发展时期,近年来,随着大规模集成电路的发展,单片机继续朝快速、高性能方向发展,从4位、8位单片机发展到16位、32位单片机。单片机主要用于控制,它的应用领域遍及各行各业,大到航天飞机,小至日常生活中的冰箱、彩电,单片机都可以大显其能。单片机在国内的三大领域中应用得十分广泛:第一是家用电器业,例如全自动洗衣机、智能玩具;第二是通讯业,包括电话、手机和BP机等等;第三是仪器仪表和计算机外设制造,例如软盘、硬盘、收银机、电表。除了上述传统领域外,汽车、电子工业在国外也是单片机应用十分广泛的一个领域。它成本低、集成度高、功耗低、控制功能多能灵活的组装成各种智能控制装置,由它构成的智能仪表解决了长期以来测量仪器中的误差的修正、线性处理等问题。单片机将微处理器、存储器、定时/计数器、I/O接口电路等集成在一个芯片上的大规模集成电路,本身即是一个小型化的微机系统。单片机技术与传感与测量技术、信号与系统分析技术、电路设计技术、可编程逻辑应用技术、微机接口技术、数据库技术以及数据结构、计算机操作系统、汇编语言程序设计、高级语言程序设计、软件工程、数据网络通信、数字信号处理、自动控制、误差分析、仪器仪表结构设计和制造工艺等的结合,使得单片机的应用非常广泛。
1.1单片机的基础知识
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲,一块芯片就成了一台计算机。 MCS-51单片机是美国INTEL公司于1980年推出的产品,与MCS- 48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MSC-51单片机作为代表进行理论基础学习。 MCS-51系列单片机主要包括8031、8051和8751等通用产品。 DP-51S单片机仿真实验仪是由广州致远电子有限公司设计的DP系列单片机仿真实验仪之一,是一种功能强大的单片机应用技术学习、调试
1.2课题背景
分布式温度采集系统广泛应用在使用了空调的大型商场、厂房、办公大楼等大型建筑内。本课题主要用温度传感器对环境温度实施实时监测,各结点控制单元可将有关信息上传给计算机,本课题研究主要解决的问题为分布式控制结构设计、多单片机串行通信、温度的采集与处理。
本设计是基于单片机ATMAGE16设计的实时温度采集仪,采用DS18B20可以采集多路温度数据(本设计只用了2路),同时实时显示所采集到的温度值。在传统的温度
测量系统设计中,往往采用模拟技术进行设计,这样就不可避免地遇到诸如引线误差补偿、多点测量中的切换误差和信号调理电路的误差等问题;而其中某一环节处理不当,就可能造成整个系统性能的下降。随着现代科学技术的飞速发展,特别是大规模集成电路设计技术的发展,微型化、集成化、数字化正成为传感器发展的一个重要方向。美国Dallas半导体公司推出的数字温度传感器DSl8B20,具有独特的单总线接口,仅需要占用一个通用I/O端口即可完成与微处理器的通信;在-10~+85℃温度范围内具有±O.01℃精度;用户可编程设定9~12位的分辨率。以上特性使得DSl8B20非常适用于构建高精度、多点温度测量系统。
1.3 设计目的及系统功能
本设计的目的是以单片机为核心设计出一个分布式温度采集系统。在传统测量系统中,传感器与计算机接口的连接是通过若干条导线连接。当传感器数量较多时,尤其是信号线的长距离传输时,相互容易产生干扰。一个室内多点温度测量中,系统的接线会非常多,导线往往不易铺设,使得测量工作非常困难。采用总线结构数字式传感器,配合单片机及PC机串口进行长距离数据通信,则可以很容易解决这个问题,该系统最多可以检测256 路温度信号,在室内多点温度测量控制中能达到很好的效果。通过本课题设计,综合运用单片机及接口技术、微机原理、通信协议,锻炼动手操作能力,综合运用能力,学习论文的写作方法和步骤。
设计的温度控制系统有以下功能及特点:
(a)实现在一条数据总线上接多个DS18B20器件;
(b)测温范围0℃~99℃;
(c)温度显示:采用2个4位数码管,显示采样温度值; 并在电脑上一同显示;
(d)精度±0.01℃。
2 电路的设计
本章分析了分布式温度采集系统的各主要功能模块的设计与实现,具体包括温度测量电路模块和串口通信电路模块。
2.1 温度测量电路的设计
温度测量采用DS18B20 数字式温度传感器。由DS18B20 构成的智能温度测量装置由三部分组成:DS18B20 温度传感器、ATMAGE16、显示模块。产品的主要技术指标:①测量范围:-55℃~+125℃,②测量精度:0.5℃,③反应时间≤500ms。为了达到更高的精度,则在对DSl8B20测温原理进行详细分析的基础上,采取直接读取DSl8B20内部暂存寄存器的方法,将DSl8B20 的测温分辨率提高到0.01℃~0.1℃,DSl8B20内部暂存寄存器的分布如表4-1所列,其中第7字节存放的是当温度寄存器停止增值时计数器l的计数剩余值,第8字节存放的是每度所对应的计数值。这样,就可以通过下面的方法获得高分辨率的温度测量结果。
表4-1 DS18B20内部暂存器
序号 | 寄存器名称 | 作用 | 序号 | 寄存器名称 |
0 | 温度低字节 | 以16位补码形式存放 | 4、5 | 保存字节1、2 |
1 | 温度高字节 | 6 | 计数器余值 | |
2 | TH/用户字节1 | 存放温度上限 | 7 | 计数器/℃ |
3 | HL/用户字节2 | 存放温度下限 | 8 | CRC |
图2.1 温度测量电路
温度传感器DS18B20将被测环境温度转化成带符号的数字信号(以十六位补码形式,占两个字节),传感器可置于离装置150米以内的任何地方,输出脚I/O直接与单片机的P1.1 相连,R1为上拉电阻,传感器采用外部电源供电。ATMAGE16 是整个装置的控制核心,ATMAGE16内带1K字节的FlashROM,用户程序存放在这里。显示器模块由四位一体的共阳数码管和4个9012组成。系统程序分传感器控制程序和显示器程序两部分,传感器控制程序是按照DS18B20的通信协议编制。系统的工作是在程序控制下,完成对传感器的读写和对温度的显示。
2.2 串口通信电路的设计
为了增加单片机多机通信的距离,该部分电路采用RS232标准接口,通信距离可以达到15米;如果采用RS422 或是RS485 接口,通信距离会更远。多机通信接口原理图见图1 。在数据传输过程中采用的是RS232 电平,提高了抗干扰能力。需要在主机串行接口和从机串行接口进行电平转换:TTL-RS232-TTL。这都是用MAX232 接口芯片实现的,具体的电路如图4.2所示。
图4.2 TTL-RS232-TTL电平转换电路
3 分布式温度采集系统设计
数字式传感器一般采用单总线技术(1-WIREBUS),即在单片机或计算机接口中只用一根导线(输入/ 输出信号线),美国Dallas公司最新推出的1-WireBus数字式温度传感器DS18B20,与传统的温度传感器不同,它能够直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式,可以分别在93.75ms 和750ms内将温度值转化为9 位和12位的数字量,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃;为实现与PC机串口长距离数据通信,系统采用了RS232 串行接口,通信距离可以达到15m,如果采用RS422或RS485串行接口可以达到1000m。串口通信由PC机与单片机的通信和单片机多机通信组成,每个从机负责温度的测量然后通过多机通信把温度数据发送到主单片机上,最后PC机通过VB程序控制串口把主单片机上的所有温度数据收集起来。系统框图如图所示。
系统框图
4 ICCAVR制作环境及介绍
本章介绍了ICCAVR的制作环境,ICCAVR 中的文件类型及其文件的扩展名、附注和扩充,并介绍了IAR 或其它ANSI C 编译系统的代码转换。
4.1 ICCAVR 介绍
本节主要介绍了ICCAVR文件的基本特点、类型、扩展名等。
4.1.1 ImageCraft 的ICCAVR 介绍
ImageCraft 的ICCAVR 是一种使用符合ANSI 标准的C 语言来开发微控制器(MCU)程序的一个工具,它有以下几个主要特点:
ICCAVR 是一个综合了编辑器和工程管理器的集成工作环境(IDE),其可在WINDOWS9X/NT 下工作。
源文件全部被组织到工程之中,文件的编辑和工程的构筑也在这个环境中完成。编译错误显示在状态窗口中,并且当你用鼠标单击编译错误时,光标会自动跳转到编辑窗口中引起错误的那一行。这个工程管理器还能直接产生您希望得到的可以直接使用的INTEL HEX 格式文件,INTEL HEX 格式文件可被大多数的编程器所支持,用于下载程序到芯片中去。
ICCAVR 是一个32 位的程序,支持长文件名。
本论文并不介绍通用的C 语言语法知识,仅介绍使用ICC AVR 所必须具备的知识。
4.1.2 ICCAVR 中的文件类型及其扩展名
文件类型是由它们的扩展名决定的,IDE 和编译器可以使用以下几种类型的文件。
输入文件:
.c 扩展名----表示是C 语言源文件
.s 扩展名----表示是汇编语言源文件
.h 扩展名----表示是C 语言的头文件
.prj 扩展名----表示是工程文件,这个文件保存由IDE 所创建和修改的一个工程的有
关信息。
.a 扩展名----库文件,它可以由几个库封装在一起。libcavr.a 是一个包含了标准C 的库和AVR 特殊程序调用的基本库。如果库被引用,链接器会将其链接到您的模块或文件中。您也可以创建或修改一个符合你需要的库。
输出文件
.s 对应每个C 语言源文件,由编译器在编译时产生的汇编输出文件。
.o 由汇编文件汇编产生的目标文件,多个目标文件可以链接成一个可执行文件。
.hex INTEL HEX 格式文件,其中包含了程序的机器代码。
.eep INTEL HEX 格式文件,包含了EEPROM 的初始化数据。
.cof COFF 格式输出文件,用于在ATMEL 的AvrStudio 环境下进行程序调试。
.lst 列表文件,在这个文件中列举出了目标代码对应的最终地址。
.mp 内存映象文件 它包含了您程序中有关符号及其所占内存大小的信息
.cmd NoICE 2.xx 调试命令文件。
.noi NoICE 3.xx 调试命令文件。
.dbg ImageCraft 调试命令文件。
4.1.3 代码转换
IAR 或其它ANSI C 编译系统的代码转换
IAR C 编译器作为应用于AVR 的第一个C 编译器,它有十分丰富的源代码。当你从IAR编译系统转换到ImageCraft 编译系统时,绝大多数符合ANSI C标准的程序代码不需要转换,IAR C 中IO 寄存器的定义与ICCAVR 也是相同的。
中断操作描述,ICCAVR 使用pragma 附注描述中断操作函数,而IAR 引入了语法扩充(interrupt 关键字),下面是一个对照:
在 ICCAVR 中:
#pragma interrupt_handler func:4 // 4 是这个中断的向量号,func 为中断处理函数名称,ICCAVR 可以使多个中断向量共用一个中断处理函数。
在 IAR 中:
interrupt [vector_name] func() // vector_name 是某一个中断向量的名称,IAR C 的中断向量地址使用中断名称来代替,以增加程序的可读性。
扩充关键字
IAR 引入flash 关键字将项目分配进入程序存贮空间(FLASH 存贮器),ICCAVR 使用const 关键字来达到相同的目的。
过程调用转换。在两个编译系统之间函数参数传递使用的寄存器是不同的,这仅影响手工写的汇编函数。在线汇编、宏等,IAR 不支持在线汇编符号,而ICCAVR 支持在线汇编。
4.2 ICCAVR 向导
自你启动 IDE 后,首先从Project 菜单系统选择Open 命令,进入\\icc\\examples.avr 目录并且选择并打开“led”工程,工程管理器显示在这个工程中只有一个文件led.c。 然后从Project 菜单中选择Options 命令打开工程编译选项,在"Target"标号下选择目标处理器。然后从Project 菜单中选择Make Project 命令,IDE 将调用编译器编译这个工程文件,并且在状态窗口中显示所有的信息。4.3 ICCAVR 的IDE 环境
4.2.1 编译一个单独的文件
正常建立一个输出文件的次序是,你首先应该建立一个工程文件并且定义属于这个工程的所有文件。然而,我们有时也需要将一个文件单独地编译为目标文件或最终的输出文件。这时可以这样操作:从IDE 菜单“File” 中选择“Compile File...”命令,来执行“to Object”和“to Output”中的任意一个。当你调用这个命令时,文件应该是打开的并且在编辑窗口中可以编辑的。
编译一个文件为目标文件(to Object),对检查语法错误和编译一个新的启动文件是很有用的。编译一个文件为输出文件(to Output),对较小的并且是一个文件的程序较为有用。
4.2.2 创建一个新的工程
为创建一个新的工程,从菜单“Project”中选择“New”命令,IDE 会弹出一个对话框,在对话框中你可以指定工程的名称,这也是你的输出文件的名称。如果你使用一些已经建立的源文件,你可在菜单“Project”中选择“AddFile(s) ”命令。
另外,你可以在菜单“File”中选择“New”命令来建立一个新的源文件来输入你的代码,你可以在菜单“File”中选择“Save”或“Save As”命令来保存文件。然后你可以象上面所述调用“AddFile(s)”命令将文件加入到工程中,也可在当前编辑窗口中单击鼠标右键选择“Add to Project”将文件加入已打开的工程列表中。通常你输出源文件在工程同一个目录中,但也可不作这样要求。
工程的编译选项使用菜单中 “Project”中的“Options”命令。
4.2.3 工程管理
工程管理允许你将多个文件组织进同一个工程,而且定义它们的编译选项,这个特性允许你将工程分解成许多小的模块。当你处理工程构筑时,只有一个文件被修改和重新编译,如果一个头文件作了修改,当你编译包含这个头文件的源文件时,IDE 会自动重新编译已经改变的头文件。
一个源文件可以写成 C 或汇编格式的任意一种。C 文件必须使用“.c”扩展名汇编文件必须使用“.s”扩展名。你可以将任意文件放在工程列表中,对目标器件不同的工程,可以在编译选项中设置有关参数。当你新建一个工程时,使用默认的编译选项,你可以将现有编译选项设置成默认选项,也可将默认编译选项装入现有工程中。默认编译选项保存在default.prj 文件中。为避免你的工程目录混乱,你可以指定输出文件和中间文件到一个指定的目录,通常这个目录是你的工程目录的一个子目录。
4.2.4 编辑窗口
编辑窗口是你与 IDE 交流信息的主要区域,在这个窗口中你可以修改相应的文件。当编译存在错误时,用鼠标单击有关错误信息时,编辑器会自动将光标定位在错误行的位置。
4.2.5 应用构筑向导
应用构筑向导是用于创建外围设备初始化代码的一个图形界面。你可以单击工具条中的“Wizard”按钮或菜单“Tools”中的“ApplicationBuilder”命令来调用它。
应用构筑向导使用编译选项中指定的目标MCU来产生相应的选项和代码。
应用构筑向导显示目标 MCU 的每一个外围设备子系统,它的使用是很显而易见的。在这里你可以设置MCU 的所具有的中断、内存、定时器、IO 端口、UART 、SPI 和模拟量比较器等外围设备,并产生相应的代码,如果你需要的话,还可产生main( )函数。
4.2.6 终端仿真
IDE 有一个内置的终端仿真器,注意它不包含任意一个ISP(在系统编程)功能,但它可以作为一个简单的终端,或许可以显示你的目标装置的调试信息,也可下载一个ASC码文件。从 6.20 版本开始IDE 加入了对ISP 的支持。
结 论
在传统的温度测量系统中,往往采用模拟的温度传感器进行设计,必须经过A/D转换后才可以被微处理器识别和处理。这样的设计方法不仅对前端模拟信号处理电路提出了更高的要求,而且不具有数字通信和网络功能。本设计文结合DSl8B20的新特性和现代温度测量系统提出的新要求,提出了基于智能数字温度传感器DSl8820的高精度、分布式多点温度测量系统设计方案。该方案具有安装方便、数字化程度高、精度高、适应性强等特点,在多种温度检测中具有广阔的应用前景。经过模块化的电路测试、软件调试和系统组装,测温精度可以达到±0.01℃。设计出的多路远距离自动化、智能化温度采集系统可以广泛应用于工业控制领域。本次设计只给出2路从机采集,根据需要可以增加更多从机进行温度采集。
参 考 文 献
1 何立民.单片机应用系统设计系统配置与接口技术.北京:北京航空航天大学出版社.1999
2 李广弟.单片机基础.北京:北京航空航天大学出版社.1999
3 刘守义.单片及应用技术.西安:西安电子科技大学出版社.2002
4 潘新民.微型计算机与传感技术.北京:人民邮电出版社.1988
5 辛友顺等.单片机应用系统设计与实现.福州:福建科学技术出版社.2005
6 陈嘉庆.工业控制计算机应用100例.北京:微计算机信息编辑部.2002
7 王幸之.AT系列单片机原理与接口技术.北京:北京航空航天大学出版社.2004
8 张 军.AVR单片机应用系统开发典型实例.第一版.中国电力出版社
9 谭浩强.C语言程序设计(第二版).北京清华大学出版社.2005
10马忠梅.单片机的C语言应用程序设计(第三版).北京:北京航空航天大学出版社.2003
11夏路易.电路原理图与电路板设计教程PROTEL99SE.北京:北京希望电子出版社