版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、绍 兴 文 理 学 院数 理 信 息 学 院课 程 设 计 报 告 书题目 温度测量仪表 物电 系 电子信息工程 专业 101 班姓 名 姚丽平 指导教师 朱敏杰 时 间 2013年 7月12日 1 / 40课程设计任务书班 级电信101姓 名姚丽平题 目温度测量仪表技术参数、设计要求、检测数据1、 能完成温度的数据传输2、 完成串口通信3、 在ARM开发板上显示出温度设计进度安排或工作计划2013.7.3 2013.7.5: 教师布置课题,学生查询相关资料,完成方案选择、确定验证方案。2013.7.62013.7.8: 设计模块划分、实现及各模块仿真图设计。2013.7.82013.7.11
2、:设计整体实现、调试及验证,并开始撰写报告。2012.7.12:课程设计报告撰写并定稿,上交。其 它认真阅读智能仪器仪表课程设计报告撰写规范;课题小组经协商好要指定组长并明确分工,形成良好团队工作氛围;基于课题基本要求,各小组与指导老师讨论,再将课题细化、增加要求;课题小组每成员均需各自撰写一份课程设计报告。温度测量仪表摘 要随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术,本文主要介绍了一个基于 89S51 单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系
3、统流程进行了详尽分析,特别是数字温度传感器DS18B20数据采集过程。对各部分的电路也一一进行了介绍,该系统可以方便的实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20与AT89C51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。嵌入式系统采用的是微处理器,实现相对单一的功能,采用独立的操作系统,往往不需要大量的外围器件。因而在体积上
4、功耗上有其自身的优势,相比之下,一个使用Windows CE的PDA,仅靠机内电源使用几天,而一台笔记本仅仅能够支持三小时左右。其实一个软硬件高度结合的产物,能提高执行速度和系统的可靠性。关键词 单片机 ;DS18B20 ;温度传感器 ;数字温度计; AT89S51;嵌入式系统目 录课程设计任务书I摘 要II1. 设计概述12. 设计方案23. 设计实现23.1系统设计原理23.1.1温度测量模块23.1.2 AT89S51单片机73.1.3 ARM核心控制模块73.2系统设计程序流程框图104. 设计验证115. 总结12参考文献13附录141. 设计概述温度控制系统广泛应用于社会生活的各个
5、领域,如家电、汽车、材料、电力电子等 ,常用的控制电路根据应用场合和所要求的性能指标有所不同 , 在工业企业中,如何提高温度控制对象的运行性能一直以来都是控制人员和现场技术人员努力解决的问题。这类控制对象惯性大,滞后现象严重,存在很多不确定的因素,难以建立精确的数学模型,从而导致控制系统性能不佳,甚至出现控制不稳定、失控现象。传统的继电器调温电路简单实用 ,但由于继电器动作频繁 ,可能会因触点不良而影响正常工作。控制领域还大量采用传统的PID控制方式,但PID控制对象的模型难以建立,并且当扰动因素不明确时,参数调整不便仍是普遍存在的问题。而采用数字温度传感器DS18B20,因其内部集成了A/D
6、转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。数字温度传感器DS18B20只用一个引脚即可与单片机进行通信,大大减少了接线的麻烦,使得单片机更加具有扩展性。由于DS18B20芯片的小型化,更加可以通过单跳数据线就可以和主电路连接,故可以把数字温度传感器DS18B20做成探头,探入到狭小的地方,增加了实用性。更能串接多个数字温度传感器DS18B20进行范围的温度检测。2. 设计方案我们选取的方案主要实现温度的检测以及通过ARM板显示这两个大功能,以及读取这个相对较为容易的功能。因此在温度检测这一模块上,利用DS18B20这一目前比较先进的温度传感器,可以
7、很精确地感测实时温度,对于DS18B20的通讯协议的控制,读取测量的温度值,经过一定的算法,可以把温度转化为十进制,先暂存起来。经显示模块调用,通过ARM,最终在电脑上显示。图 2-1硬件总框图3. 设计实现3.1系统设计原理3.1.1温度测量模块图 3- 1 DS18B20图例DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出北侧温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实
8、现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.05.5V;零待机功能;温度以9或12位数字量读出;用户可定义的非易失性温度报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图2所示。 图 3- 2 DS18B20内部结构图64位ROM的位结构如图3所示。开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。非易失性温度报
9、警器触发器TH和TL,可通过软件写入户报警上下限。图 3- 3 64位ROM结构图DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图4所示。头2个字节包含测得的温度信息,第3和第4字节是TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率。 DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义热图5所示。低5位一直为1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被
10、设置为0,用户不要改动,R1和R0决定温度转换得精度位数,即用来设置分辨率,定义方法见表1。图 3- 4高速暂存RAM结构图图 3- 5配置寄存器表3- 1 DS18B20分辨率的定义规定由表3-1可见,DS18B20温度转换的时间比较长,而且设定的分辨率越高,所需要的温度转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存RAM的第6,7,8字节保存未用,表现为逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第
11、1,2字节。单片机可以通过单线接口读出数据,读数据时低位在先,高位在后,数据格式以0.0625/LSB形式表示。温度值格式如图3-6所示。 图 3- 6温度数据值格式当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码转换为原码,再计算十进制。表3-2是一部分温度值对应的二进制温度数据。表3- 2 DS18B20温度与测得值对应表DS18B20完成温度转换后,就把测得的温度值与RAM中的TH,TL字节内容作比较。若T>TH或T<TL,则将该器件内的报警标志置位,并对主机发出报警搜索命令作出响应。因此,可用多只
12、DS18B20同时测量温度并进行报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机根据ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到ROM数据是否正确。DS18B20的测温原理如图3-8所示。图中第温度系数晶振的震荡频率受温度的影响很小,用于产生固定频率的脉冲送给减法计数器1;高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入.图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数震荡器产生的时钟脉冲计数,进而完成温度测量。计数门的开启时间由高温度系数震荡器来决定,每次测量前,首先将-5
13、5所对应的一个基数分别置入减法计数器1,温度寄存器中,减法计数器1和温度寄存器被预置在-55所对应的一个基数值。减法计数器1所对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置值将被重新装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值就是所测温度值。图3-7中的斜率累加器用于补偿和修正测温过程中的非线形性,其输出用于减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直到温度寄存器值达到被预测值。另外,由于DS18B20单线通信功能
14、是分时完成的,它有严格的时隙概念,因此读写时序很重要,系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20发ROM功能命令发存储器操作命令处理数据。图 3-7 DS18B20测温原理图DS18B20与单片机的接口电路 DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图3-8所示.单片机端口接单线总线,为为保证有效DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。图 3-8 DS18B20采用寄生电源的电路图当DS18B20处于写存储器操作和
15、温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD和GND端均接地。由于单线制只有一根线,因此发送接口必须是三态的。3.1.2 AT89S51单片机图 3- 9 AT89S51引脚图本设计中所用的单片机型号为AT89S51 ,其主要特性为:1)有CHMOS工艺的节能运行方式2)兼容MCS51指令系统 3)3个16位可编程定时/计数器中断4)2个串行中断5)2个外部中断源6)2个读写中断口线7)低功耗空闲和掉电模式8)8k可反复擦写(>1000次)Flash ROM9)256x8 bit内部RAM10)时钟频率0-24MHz11)可编程UA
16、RT串行通道12)共6个中断源,3级加密位13)软件设置睡眠和唤醒功能3.1.3 ARM核心控制模块 ARM Cortex-A8处理器基于 ARMv7 体系结构,能够将速度从 600MHz 提高到 1GHz 以上。Cortex-A8 处理器可以满足需要在 300mW 以下运行的移动设备的功率优化要求;以及需要 2000 Dhrystone MIPS 的消费类应用领域的性能优化要求。图 3-10 ARM Cortex-A8Tiny210核心板介绍:Tiny210 核心板主要采用了2.0mm间距的双排针,引出 CPU大部分常用功能引脚,并力求和Tiny6410 核心板大小一致(64x50mm),引
17、脚兼容(P1,P2,CON2);另外还根据 S5PV210 芯片的性,分别引出了标准的 miniHDMI 接口,和 1.0mm间距的贴片 CON1 座(51Pin),以作用户扩之用,Tiny210 标配512M 内存和 512M 闪存(SLC),并可选配 256M/1GB闪存(SLC)。串口介绍:S5PV210 本身总共有 4 个串口,其中 UART1 为四线的功能串口,UART0、2、3 为两线串口。 在本开发板上,UART0 和 UART1 已经经过 RS232 电平转换,它们分别对应于 COM0 和COM1,你可以通过附带的交叉串口线和 PC 互相通讯。 图 3- 11引脚定义图图 3-
18、 12 引脚定义图 ARM微控制器是整个系统的核心部件,主要功能为控制各个功能模块正常的工作。在系统初始化完毕后,ARM-CORTEXA8启动温度传感器,然后对所采集的数据进行处理,将需要备份的数据存储到FLASH当中。同时通过PS232将数据送到上位机进行处理显示。3.2系统设计程序流程框图图 3- 13 主函数流程图对DS18B20温度模块进行初始化,利用51单片机调用DS18B20头文件读取温度数据,并进行数据处理。编写串口通信程序利用串口向ARM发送数据,最后在ARM端读取串口数据获取温度值,并显示在LCD上。4. 设计验证图 4- 1串口助手接收到的数据图4-1中,数据按5个字节发送
19、,首先发送01,再将转化成十进制的数据按百位、十位、个位的顺序分别加上0x30,最后按和校验方式发送第五个数据,即将前四个数据的高位和低位相加所得。所以图中标识数据所得的温度为33.5度。图 4- 2 linux显示的数据图中第二行与第三行为正常的数据发送,以01为首数据,按8个字节发送,即图中数据分别为34.5度和34.4度,校验正确。5. 总结在做课程设计的过程中,通过理论联系实际,不断的学习和总结经验,巩固了所学的知识,提高了处理实际问题的能力。我的理论和实践水平都有了较大的提高。在本设计中,我熟练掌握了单片机硬件设计和接口技术,对温度传感器的原理及应用有了一定的了解,同时,我对linu
20、x系统有了一定的了解,掌握了各种控制电路及其相关元器件的使用。这次课程设计过程中也让我认识到了团队合作的重要性。通过这次课程设计,我不仅学会如何将所学专业知识运用到实际生活中,还学会如何克服未知的困难,解决难题的方法,为将来毕业设计的顺利进行打下了基础。这次设计过程中也让我认识到了很多不足,在今后的学习过程中我一定努力补缺补漏,多实践,将理论知识更好地应用于实践。最后感谢各位指导老师的指导。参考文献1 童诗白,华成英.模拟电子技术基础M. 北京:高等教育出版社,20062 张齐,杜群贵.单片机应用系统设计技术M.北京:电子工业出版社,20073 中国机械工业教育协会组编.单片机原理与应用.机械
21、工业出版社.20014 求是科技单片机通信技术与工程实践M.北京:人民邮电出版社,20055 张洪润电子线路与电子技术M.清华大学出版社M,20056 郭永贞主编数字电子技术M.西安电子科技大学出版社 20007 李广弟单片机基础M,北京:北京航空航天大学出版社,20018 杨金岩等.8051单片机数据传输接口扩展技术与应用实例M北京:人民邮电出版社,2005附录实物图主程序源代码51单片机代码:主函数:#include <REG52.H>#include <ds18b20.h>#include <hd7279.h>#include <stdio.h&
22、gt;#include <intrins.h>/*#define HD7279_RESET 0xa4#define HD7279_TEST 0xbf#define HD7279_RLC 0xa3#define HD7279_RRC 0xa2#define HD7279_RL 0xa1#define HD7279_RR 0xa0#define HD7279_DECODE0 0x80/0x80代表数码管1 10进制#define HD7279_DECODE1 0xc8/0xC8代表数码管1 16进制#define HD7279_UNDECODE 0x90/0x90代表数码管1 直接显示
23、#define HD7279_HIDE 0x98#define HD7279_FLASH 0x88#define HD7279_SEGON 0xe0#define HD7279_SEGOFF 0xc0#define HD7279_READ 0x151、下载数据并按方式0译码数据格式 1 0 0 0 0 a2 a1 a0 dp x x x d3 d2 d1 d02、下载数据并按方式1译码数据格式 1 1 0 0 1 a2 a1 a0 dp x x x d3 d2 d1 d03、下载数据但不译码数据格式 1 0 0 1 0 a2 a1 a0 dp a b c d e f g4、闪烁控制数据格式 1
24、 0 0 0 1 0 0 0 d7 d6 d5 d4 d3 d2 d1 d05、消隐控制数据格式 1 0 0 1 1 0 0 0 d7 d6 d5 d4 d3 d2 d1 d06、段点亮控制数据格式 1 1 1 0 0 0 0 0 X X d5 d4 d3 d2 d1 d07、段关闭控制数据格式 1 1 0 0 0 0 0 0 X X d5 d4 d3 d2 d1 d0读键盘指令:数据格式 0 0 0 1 0 1 0 1 d7 d6 d5 d4 d3 d2 d1 d0*/*延时函数, 延时单位1ms*/unsigned char rev=0xaa;unsigned char flag=0x00
25、;unsigned int temp5;unsigned int num;void Delay_ms(unsigned int Ms)int us,usn;while(Ms!=0) usn = 4;while(usn!=0)us=0xfa;while (us!=0)us-;usn-;Ms-;void send_int(void) TMOD = 0x20;/ 定时器1工作于8位自动重载模式, 用于产生波特率/ 定时器0工作在16位方式TH1 = 0xFD;/ 波特率9600TL1 = 0xFD;SCON = 0x50;/ 设定串行口工作方式PCON= 0x00;/ 波特率倍增TR1 = 1;vo
26、id send_char(unsigned char txd)/ 传送一个字符SBUF = txd;while(!TI);/ 等特数据传送TI = 0;/ 清除数据传送标志void main() unsigned int t0,i;char t1;send_byte(HD7279_RESET);/注意:HD7279复位后,必须经过大概25MS,才会正常工作!Delay_ms(50);send_int();/串口初始化while(1)t0=ReadTemperature();temp0=t0%10; /个temp1=t0%100/10;temp2=t0%1000/100;/百temp3=t0/1
27、000;/千 t1=0x01;send_char(t1); t1=temp2+0x30;send_char(t1);t1=temp1+0x30;send_char(t1);t1=temp0+0x30;send_char(t1);t1=0x91+temp0+temp1+temp2;send_char(t1);for(i=0;i+;i<100) _nop_(); if(RI=1)rev=SBUF;RI=0;HD7279头文件:#include "reg52.h"#include <intrins.h> #ifndef _HD7279A_H_#define _H
28、D7279A_H_sbit HD7279A_CS=P22;/pin1sbit HD7279A_CLK=P11;/pin2sbit HD7279A_DATA=P12;/pin3sbit HD7279A_KEY=P13;/pin4/command define#define HD7279_RESET 0xa4#define HD7279_TEST 0xbf#define HD7279_RLC 0xa3#define HD7279_RRC 0xa2#define HD7279_RL 0xa1#define HD7279_RR 0xa0#define HD7279_DECODE0 0x80#defin
29、e HD7279_DECODE1 0xc8#define HD7279_UNDECODE 0x90#define HD7279_HIDE 0x98#define HD7279_FLASH 0x88#define HD7279_SEGON 0xe0#define HD7279_SEGOFF 0xc0#define HD7279_READ 0x15void Delay_ms(unsigned int Ms);void Delay_us(unsigned char Us);void send_byte(unsigned char c);unsigned char recv_byte(void);vo
30、id write_hd7279(unsigned char cmd, unsigned char dat);unsigned char read_hd7279(unsigned char cmd);void send_byte(unsigned char c) unsigned char i,j,k; HD7279A_CS=0;HD7279A_DATA=1; for (i=0;i<30;i+)/_nop_();for(i=0;i<8;i+) if(c&0x80)HD7279A_DATA=1; elseHD7279A_DATA=0; HD7279A_CLK=1; for (j
31、=0;j<8;j+)/_nop_();HD7279A_CLK=0; for (k=0;k<8;k+)/_nop_();c<<=1; /HD7279A_CS=1;/*读回按键值*/unsigned char recv_byte(void) unsigned char ret; unsigned char i,j,k; HD7279A_CS=0;HD7279A_DATA=1;/读口线之前要先拉高P1口 for (i=0;i<30;i+)_nop_(); for(i=0;i<8;i+) HD7279A_CLK=1; for (j=0;j<8;j+)_nop_
32、(); ret<<=1; if(HD7279A_DATA)ret|=0x01; HD7279A_CLK=0; for (k=0;k<8;k+)_nop_(); HD7279A_DATA=0; HD7279A_CS=1;return ret;void write_hd7279(unsigned char cmd, unsigned char dat)send_byte(cmd); send_byte(dat);unsigned char read_hd7279(unsigned char cmd) send_byte(cmd); return recv_byte();DS18B
33、20头文件:#ifndef _DS18b20_2007_8_11_#define _DS18b20_2007_8_11_/*ds18b20*/sbit DQ =P37; /定义通信端口#define uint unsigned int #define uchar unsigned char /*延时函数*/void delay(unsigned int i) while(i-);/*初始化函数*/Init_DS18B20(void) uchar x=0; DQ = 1; /DQ复位 delay(8); /稍做延时 DQ = 0; /单片机将DQ拉低 delay(80); /精确延时 大于 48
34、0us DQ = 1; /拉高总线 delay(14); x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(20);/*读一个字节*/ReadOneChar(void)uchar i=0;uchar dat = 0;for (i=8;i>0;i-) DQ = 0; / 给脉冲信号 dat>>=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; delay(4); return(dat);/*写一个字节*/WriteOneChar(unsigned char dat) uchar i=0; for (i=8; i>0;
35、 i-) DQ = 0; DQ = dat&0x01; delay(5); DQ = 1; dat>>=1; /delay(4);/*读取温度*/uint ReadTemperature(void)uchar a=0;uchar b=0;uint t=0;Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=ReadOneChar();b=ReadOneChar();t=b;t<<=8;t=t|a;t=t*0.625;/有效位到小数点后1位r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论