《基于单片机温度计说明书.doc》由会员分享,可在线阅读,更多相关《基于单片机温度计说明书.doc(14页珍藏版)》请在三一办公上搜索。
1、基于单片机的数字温度计设计目 录1、背景知识32、课程设计目的33、工具/准备工作44、设计步骤及原理6步骤1:方案框图6步骤2:程序设计7步骤3:电路硬件设计及Proteus软件仿真95、设计结果及分析106、总结及心得体会107、对本设计过程及方法、手段的改进建议118、参考文献119、评价16基于单片机的数字温度计设计1、 背景知识在生活和生产中,经常要用到一些测温设备,但是传统的测温设备具有制作成本高、硬件电、和软件设计复杂等缺点。基于AT89S52单片机的数字温度计具有制作简单、成本低、读数方便、测温围广和测温准确等优点,应用前景广阔。很多领域对温度参数的采集、记录是极其重要的工作之
2、一。常见的玻璃管温度计,是靠管水银升降来判断温度值的高低。当光线较暗时,就看不清水银位置,给观察带来不便,并且有时候在某些领域其应用被限制,而且测量精度在一定领域并不能符合相关要求。在有些应用时要求温度计具有一定的报警功能,能一定程度上提醒并能减少损失。随着微处理器技术及超大规模集成电路技术的高速发展, 使得各种功能强大的自动化、智能型温控系统的设计方案被不断的提出。这些温度监控系统灵敏度高,测量精确,能及时提醒温度是否在一定能够围。设计原理:整个电路由电源电路,中央处理电路,显示电路等部分组成。测温电路对外界温度进行检测,输出与温度相对应的数据船只单片机,单片机将数据处理后控制显示电路将温度
3、以十进制形式显示在数码管上。整个电路主要应用了数字温度传感技术,数码管动态显示技术等。2、 课程设计目的本次课程设计,就是用单片机实现温度控制,传统的温度检测大多以热敏电阻为温度传感器,但热敏电阻的可靠性差,测量温度准确率低,而且必须经过专门的接口电路转换成数字信号才能由单片机进行处理。本次采用DS18B20数字温度传感器来实现基于51单片机的数字温度计的设计。3、 工具/准备工作原件清单基于STC89C52单片机的数字温度计元件清单如表1所示。元件名称型号数量/个用途单片机STC89C521控制核心集成块DS18B201测温电路 集成块74LS071显示驱动集成块74LS2451显示驱动电容
4、30pF2晶振电路晶振12MHz1晶振电路电解电容10uF/10v1复位电路电阻10k5复位电路、上拉电阻电阻4.7 k1测温电路按键1复位电路数码管4位共阳1显示电路ISP接口线1*41下载程序万用板140脚IC锁紧座1 表1 基于AT89S52单片机的数字温度计元件清单原件介绍1. STC89C52的功能特性STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8K字节Flash,512
5、字节RAM, 32 位I/O 口线,看门狗定时器,置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。 2. DS18B20的特点本设计的测温系统采用芯片DS18B20,DS18B20是DALLAS公司的最新单线数字温度传感器,它的体积更小,
6、适用电压更宽,更经济。实现方法简介DS18B20采用外接电源方式工作,一线测温一线与STC89C51连接,测出的数据放在寄存器中,将数据经过BCD码转换后送到LED显示。DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压围为3.05.5;零待机功耗;温度以9或12位数字;用户可
7、定义报警设置;报警搜索命令识别并标志超过程序限定温度温度报警条件的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; DS18B20部结构主要由四部分组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。DS18B20的管脚排列如图2-3-1所示。64位光刻ROM是出厂前被光刻好的,它可以看作是该DS18B20的地址序列号。不同的器件地址序列号不同。C64 位RO和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器Vdd图1 DS18B20的部结构图2 DS18B20的引脚分布图4、 设计步骤及原
8、理步骤1:方案框图基于STC89C52单片机的数字温度计设计由STC89C52单片机控制器、电源、显示电路、温度传感器、复位电路和时钟电路组成,系统框图如图1所示。电源给整个电路供电,显示电路显示温度值,时钟电路为STC89C52提供时钟频率。传感器采用美国DALLAS半导体公司生产的一种智能温度传感器DS18B20,其测温围为-55125,最高分辨率可达0.0625,完全符合设计要求。电源电路复位电路时钟电路STC89C52控制器显示电路DS18B20图3 基于STC89C52单片机的数字温度计系统框图步骤2:程序设计1 程序流程图主程序的主要功能是负责温度的实时显示、读出并处理DS18B2
9、0测量的当前温度值,温度测试每1S进行一次。这样可以在1S之测量一次被测温度,其程序流程图如图3所示。读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写,其程序流程图如图4所示。初始化调用显示子程序1S到?读出温度值温度计算处理显示数据刷新发温度转换开始命令初次上电NYYN发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?移入温度暂存器结束图4 主程序流程图图5 读温度流程图温度转换命令子程序主要是发温度转换开始命令,采用12位分辨率转换时间约为750ms。程序设计中采用1s显示程序延时等待转
10、换的完成。计算温度子程序将RAM中读取值进行BCD码地转换运算,并进行温度值正负的判定,显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。步骤3:电路硬件设计及Proteus软件仿真图6 Proteus软件仿真图 图7 电路硬件实物图5、 设计结果及分析系统的性能调试以1、主程序为主。硬件调试比较简单,首先检查电路的焊接是否正确,然后用万用表测试。软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主程序、从程序的编写和调试,由于DS18B20与单片机采用串行数据传送,因此对DS18B20进行编程时必须严格地保证读写时序,否则将无
11、法读取测量结果。性能测试可用制作的温度计和已有的成品温度计来同时测量比较,由于DS18B20精度较高,所以误差指标可以限制在0.1C以,另外,-55C至+125C的测温围使得该温度计完全适用于一般的应用场合,其低电压供电的特性可做成电池供电的手持电子温度计。6、 总结及心得体会三个星期的课程设计,从了解各个芯片的性能特点到合理设计硬件电路,从从数字温度计设计方案框图到编写相应的程序,从proteus仿真到模块焊接,再到系统性能调试。每一步都深深地体会到其中的不容易。开始设计方案时,必须熟悉原件的特点,引脚的含义,这都靠自己翻阅书籍和上网查找。为后面的总体设计打好基础。编写程序必须与Proteu
12、s相结合,才能保证程序的准确性。模块焊接就是考验你的动手能力。这过程中,需要耐心,耐心,再耐心,细心,细心,再细心。最后的性能调试,不断发现问题,然后解决问题。这次课程设计很好地全方位地培养了我们的能力,我们的专业知识,动手能力,独立工作能力与创造力,解决实际工程技术问题的能力,查阅图书资料、产品手册和各种工具书的能力,工程绘图的能力,书写技术报告和编制技术资料的能力。在专业知识与研究方法方面为日后的毕业设计乃至毕业后的工作奠定良好的基础7、 对本设计过程及方法、手段的改进建议根据设计,基于单片机的数字温度计由单片机控制器,电源,显示电路,温度传感器,复位电路和时钟电路组成。制作简单,测温围在
13、-55度到100度。根据情况,可以加入温度报警器,误差围控制在0.1。这样会使这个设计应用更广,性价比更高。针对编写好的程序进行软件调试,在proteus软件中模拟,电路温度测试正常。证明系统程序编写正确。根据设计的电路图焊接实物。针对个各种芯片的引脚特点检查硬件焊接是否正确。性能调试过程中出现的问题及解决方案1LED数码管只显示初始温度,过程中温度无变化。检查DS18B20温度传感器。发现焊接电路出现问题,重新焊接。电路运行正常,温度计正确测量。2LED数码管显示不全。检查LED数码管焊接电路。3在proteus模拟的电路图,在实际焊接时,并不可行。必须查找芯片对应的引脚功能,再去焊线。8、
14、 参考文献1 倪晓军.单片机原理与接口技术教程.:清华大学,2009 2 林立 俊亮 单片机原理及应用 :电子工业,2009 3 广弟.单片机基础. :航空航天大学,1994 4年春 向华Protel99SE基础教程.人民名邮电,2009附件:源程序#include reg52.h#include intrins.h /延时函数用#define Disdata P1 /段码输出口#define discan P2 /扫描口#define uchar unsigned char#define uint unsigned intsbit DQ=P37; /温度输入口sbit DIN=P17; /L
15、ED小数点控制uint h;uchar code ditab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;/温度小数部分用查表法uchar code dis_712=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf;/* 共阳LED段码表 0 1 2 3 4 5 6 7 8 9 不亮 - */ uchar code scan_con4=0xfe,0xfd,0xfb,0xf7; / 列扫描控制字uchar d
16、ata temp_data2=0x00,0x00; / 读出温度暂放uchar data display5=0x00,0x00,0x00,0x00,0x00;/显示单元数据,共4个数据,一个运算暂存用void delay/11微秒延时函数for0;t-;scan/显示扫描函数char k; fork=0;k /四位LED扫描控制 Disdata=dis_7displayk; ifDIN=0; discan=scan_conk;delay;discan=0x00; ow_reset/18B20复位函数char presence=1;whilewhile DQ=1;_nop_;_nop_;DQ=0
17、; delay; / 550usDQ=1; delay; / 66uspresence=DQ; / presence=0继续下一步delay; /延时500uspresence = DQ;DQ=1; void write_byte/18B20写命令函数uchar i;for 0; i- /DQ=1;_nop_;_nop_; DQ = 0;_nop_;_nop_;_nop_;_nop_;_nop_;/5usDQ = val&0x01; /最低位移出delay; /66usval=val/2; /右移一位DQ = 1;delay; uchar read_byte/从总线上读取一个字节uchar i
18、;uchar value = 0;for 0;i-DQ=1;_nop_;_nop_;value=1;DQ = 0; /_nop_;_nop_;_nop_;_nop_; /4usDQ = 1;_nop_;_nop_;_nop_;_nop_; /4us ifvalue|=0x80;delay; /66usDQ=1;return;read_temp/读出温度函数ow_reset; /总线复位write_byte; / 发Skip ROM命令write_byte; / 发读命令temp_data0=read_byte; /温度低8位temp_data1=read_byte; /温度高8位ow_rese
19、t;write_byte; / Skip ROMwrite_byte; / 发转换命令work_temp/温度数据处理函数uchar n=0; /if127 temp_data1=;temp_data0=;n=1;/负温度求补码display4=temp_data0&0x0f;display0=ditabdisplay4;display4=4|;/display3=display4/100;display1=display4%100;display2=display1/10;display1=display1%10;ifdisplay3=0x0A;ifdisplay2=0x0A;/最高位为0时都不显示ifdisplay3=0x0B;/负温度时最高位显示-main/主函数Disdata=0xff; /初始化端口discan=0xff;forh=0;hdisplayh=8;/开机显示8888ow_reset; / 开机先转换一次write_byte; / Skip ROMwrite_byte; / 发转换命令forh=0;h scan; /开机显示88882秒while read_temp; /读出18B20温度数据 work_temp; /处理温度数据 forh=0;h scan; /显示温度值2秒 9、 评价报告评分:指导教师签字:14 / 14