职场文秘网

首页 > 总结汇报 > 年终总结 / 正文

基于单片机的数字温度计课程设计

2020-10-11 20:23:57

摘要 本文提出了关于MCS-51系列单片机的数字温度计的制作电路方法和编程思想。设计一直灌输着电子电路制作软硬结合,以硬件为主的理念。采用模块化的设计思想。硬件模块分为温度的感应模块、时钟模块、控制模块、显示模块。软件同样采用模块化设计,分为中断模块、温度转化模块、时间调整模块。控制器采用单片机AT89S51,时钟电路采用万年历芯片DS1302,温度传感器采用DS18B20,用数码管并行传送数据实现温度、时钟的显示。软硬结合以实现数字温度计对温度的显示、测量。

关键词:
数字;
温度;
传感器;
AT89S51 Abstract This paper presents a digital thermometer MCS-51 Series MCU on the production circuit method and programming ideas. The design had been instilled in the electronic circuit manufacture with the hard and soft, the hardware oriented concept. Adopts the idea of modular design. The hardware module is divided into induction module, clock module, temperature control module, display module. The software also uses the modular design, divided into interrupt module, temperature conversion module, time adjust module. AT89S51 single-chip controller, clock circuit adopts the perpetual calendar chip DS1302, temperature sensor DS18B20, with digital display temperature, clock parallel data transmission. Soft and hard combined to achieve the display, digital thermometer for temperature measurement. Keywords: digital; temperature; sensor; AT89S51 目录 摘要 1 Abstract 1 第一章、绪论 1 1.1.选题的背景与意义 1 1.2.数字温度计的概述 1 1.3.设计思路 1 第二章、设计内容及功能要求 2 2.1.工作原理 2 2.2.设计要求 2 第三章、整体方案系统设计 2 第四章、系统器件选择 3 4.1. 单片机的选择 3 4.2.温度传感器的选择 5 4.3.显示电路 6 第五章、系统整体硬件电路 7 第六章、系统程序设计 9 第七章、测量及其结果分析 10 第八章、总结 11 致谢 12 参考文献 13 附录 源程序 14 第一章、绪论 1.1.选题的背景与意义 温度是我们日常生产和生活中实时在接触到的物理量,但是它是看不到的,仅凭感觉只能感觉到大概的温度值,传统的指针式的温度计虽然能指示温度,但是精度低,使用不够方便,显示不够直观,数字温度计的出现可以让人们直观的了解自己想知道的温度到底是多少度。

随着时代的发展,控制智能化,仪器小型化,功耗微量化得到广泛关注。单片机控制系统无疑在这些方面起到了举足轻重的作用。单片机的应用系统设计业已成为新的技术热点,其中数字温度计就是一个典型的例子。人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。

1.2.数字温度计的概述 数字温度计采用温度敏感元件也就是温度传感器(如铂电阻,热电偶,半导体,热敏电阻等),将温度的变化转换成电信号的变化,如电压和电流的变化,温度变化和电信号的变化有一定的关系,如线性关系,一定的曲线关系等,这个电信号可以使用模数转换的电路即AD转换电路将模拟信号转换为数字信号,数字信号再送给处理单元,如单片机或者PC机等,处理单元经过内部的软件计算将这个数字信号和温度联系起来,成为可以显示出来的温度数值,如25.0摄氏度,然后通过显示单元,如LED,LCD或者电脑屏幕等显示出来给人观察。这样就完成了数字温度计的基本测温功能。数字温度计根据使用的传感器的不同,AD转换电路,及处理单元的不同,它的精度,稳定性,测温范围等都有区别,这就要根据实际情况选择符合规格的数字温度计。

1.3.设计思路 大多数单片机接口输入的是数字信号,或带有A/D转换的高端单片机也可以输入模拟信号,由单片机获取非电信号的温度信息,必须通过温度传感器。传统的温度测量多以热敏电阻作为温度传感器。但是,热敏电阻的可靠性较差,测量精度低,而且还需经过A/D转换成数字信号才能由单片机进行处理。因此,使用数字温度计可简化硬件设计、方便单片机读取数据、节约成本。

设计单片机数字温度计,需考虑以下三个方面:
(1)温度传感器芯片的选择;

(2)单片机和温度传感器的接口电路设计;

(3)控制温度传感器实现信息采集以及数据传输软件。

第二章、设计内容及功能要求 2.1.工作原理 数字温度计是通过温度传感器实现实时温度检测,然后通过单片机来根据传感器特性计算出温度,并且显示出来。

2.2.设计要求 本次设计的数字显示温度计,需满足以下设计要求:
(1)、传感器采用DS18B20;

(2)、测量温度范围在-55-125,误差在±0.5;

(3)、采用数码管显示 第三章、整体方案系统设计 采用数字温度芯片DS18B20 测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在0—100 摄氏度时,最大线形偏差小于1 摄氏度。DS18B20 的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89S51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大。采用51 单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。既可以单独对多DS18B20控制工作,还可以与PC 机通信上传数据,另外AT89S51 在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。

该系统利用AT89S51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。该系统扩展性非常强,它可以在设计中加入时钟芯片DS1302以获取时间数据,在数据处理同时显示时间,并可以利用AT24C16芯片作为存储器件,以此来对某些时间点的温度数据进行存储,利用键盘来进行调时和温度查询,获得的数据可以通过MAX232芯片与计算机的RS232接口进行串口通信,方便的采集和整理时间温度数据。

系统框图如图 3-1所示 图 3-1 DS18B20温度测温系统框图 第四章、系统器件选择 4.1. 单片机的选择 对于单片机的选择,可以考虑使用8031与8051系列,由于8031没有内部RAM,系统又需要大量内存存储数据,因而不适用。AT89S51 是美国 ATMEL 公司生产的低功耗,高性能 CMOS8 位单片机,片内含 4kbytes 的可编程的 Flash 只读程序存储器,兼容标准 8051 指令系统及引脚。它集 Flash 程序存储器既可在线编程(ISP),也可用传统方法进行编程,所以低价位 AT89S51单片机可为提供许多高性价比的应用场合,可灵活应用于各种控制领域,对于简单的测温系统已经足够。单片机AT89S51 具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。主要特性如下 ●与MCS-51 兼容 ●4K字节可编程闪烁存储器 ●寿命:1000写/擦循环 ●数据保留时间:10年 ●全静态工作:0Hz-24Hz ●三级程序存储器锁定 ●128*8位内部RAM ●32可编程I/O线 ●两个16位定时器/计数器 ●5个中断源 ●可编程串行通道 ●低功耗的闲置和掉电模式 ●片内振荡器和时钟电路 图 4-1 AT89S51单片机引脚图 89S51 引脚功能介绍 图 4-1 AT89S51单片机引脚图 AT89S51 单片机为40 引脚双列直插式封装。

其引脚排列和逻辑符号如图4.1 所示。

各引脚功能简单介绍如下:
●VCC:供电电压 ●GND:接地 ●P0口:P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。当P1口的管脚写“1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部电位必须被拉高。

●P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入“1”后,电位被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

●P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚电位被内部上拉电阻拉高,且作为输入。作为输入时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

●P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入时,由于外部下拉为低电平,P3口将输出电流(ILL),也是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口:
P3.0 RXD(串行输入口) l P3.1 TXD(串行输出口) l P3.2 INT0(外部中断0) l P3.3 INT1(外部中断1) l P3.4 T0(记时器0外部输入) l P3.5 T1(记时器1外部输入) l P3.6 WR (外部数据存储器写选通) l P3.7 RD (外部数据存储器读选通) 同时P3口同时为闪烁编程和编程校验接收一些控制信号。

●RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

●ALE / PROG :当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

●PSEN:外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期PSEN两次有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。

●EA/VPP:当EA保持低电平时,访问外部ROM;
注意加密方式1时,EA将内部锁定为RESET;
当EA端保持高电平时,访问内部ROM。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

●XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

●XTAL2:来自反向振荡器的输出。

4.2.温度传感器的选择 由于传统的热敏电阻等测温元件测出的一般都是电压,再转换成对应的温度,需要比较多的外部元件支持,且硬件电路复杂,制作成本相对较高。这里采用DALLAS公司的数字温度传感器DS18B20作为测温元件。

DS18B20 简单介绍: DALLAS 最新单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。DALLAS 半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。温度测量范围为-55~+125 摄氏度,可编程为9位~12 位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM 中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出;
其工作电源既可以在远端引入,也可以采用寄生电源方式产生;
多个DS18B20可以并联到3 根或2 根线上,CPU只需一根端口线就能与诸多DS18B20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。

DS18B20 的性能特点如下:
●独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯 ●DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温 ●DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内 ●适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电 ●温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃ ●零待机功耗 ●可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温 ●在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快 ●用户可定义报警设置 ●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件 ●测量结果直接输出数字温度信号,以“一线总线“串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力 ●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作 以上特点使DS18B20非常适用与多点、远距离温度检测系统。

DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列、各种封装形式如图 4.2 所示,DQ 为数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源;
GND为地信号;
VDD为可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。如下图:
图 4-2 外部封装形式 图4-3 传感器电路图 4.3.显示电路 显示电路采用四位共阳LED数码管,从P3口RXD,TXD串口输出段码。

LED数码管在仿真软件中如图4-4 图4-4 第五章、系统整体硬件电路 根据设计要求与设计思路,硬件电路设计框图如图5-1所示,在仿真软件Proteus上完成。其中LED数码管以动态扫描法实现温度显示,由四个PNP型晶体管Q2,Q3,Q4,Q5和八个电阻组成,基极与单片机的P1.0,P1.1,P1.2连接。DS18B20的数据I/O端与单片机P3.6引脚连接。外部晶振为12MHz。蜂鸣器通过Q1放大后与引脚P1.7相连。

图中有三个独立式按键可以分别调整温度计的上下限报警设置,图中蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时LED数码管将没有被测温度值显示,这时可以调整报警上下限,从而测出被测的温度值。图中的按健复位电路是上电复位加手动复位,使用比较方便,在程序跑飞时,可以手动复位,这样就不用在重起单片机电源,就可以实现复位。

图5-1系统总体硬件电路 第六章、系统程序设计 数字式温度计的应用程序主要包括主程序,温度检测程序,温度转换程序, LED显示程序等。

系统的主程序主要用来初始化一些系统参数,对DS18B20的配置数据进行一系列的设定。温度检测程序是对DS18B20的状态不断地查询,读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写,读取当前的温度值后,进行温度转化程序,对温度符号处理和温度值的BCD码处理,进行温度值正负的判定,将其段码送至显示缓冲区,以备定时扫描服务程序处理。LED显示程序主要对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时,将符号显示位移入下一位。本论文将采用汇编语言来设计程序。主程序采用模块化设计,流程图如下图所示。

QD置1 QD置0 延时500微秒 QD置1 延时,等待DS18B20响应 QD=0 初始化不成功 初始化成功 返回 图6-1主程序流程图 图6-2DS18B20初始化流程图 程序说明:
(1)正常的温度显示用键盘设置;

(2)该程序是使用LED数码管实现温度C显示格式显示。

(3)通过按键的加、减实现温度的调整,温度复位按S1键。

第七章、测量及其结果分析 Proteus仿真结果: 软件方面,在Proteus编译下进行,源程序编译及仿真调试。

在软件中选定传感器后可对其进行环境温度设置,如图7-1,将环境温度设为34.9。

图7-1 然后点击软件执行键,按操作步骤实施后,观察LED数码管示数,此时示数如图7-2。

图7-2 可见本次软件测试结果良好。

第八章、总结 在xx大学高等职业技术学院学习的xx,在毕业之际,要用我所学的知识做一个设计,来给与我这两年多的时间所学知识的一个肯定与验证。

经过两个多星期的时间,终于完成这次课程的设计。在这期间,其他同学提出了许多建设性意见,是这次设计终于完满成功了。

我觉得作为一名应用电子专业的学生,单片机的课程设计是很有意义的。更为重要的是如何把平时所学的东西应用到实际中。虽然自己所学知识有限,但在同学的协助和上网查阅相关资料,经过两个星期的时间,终于完成了本次课程设计。我觉得本次课程设计的过程是我对单片机的重要意义有了深刻的了解。在今后的学习中,我会更加努力的学习单片机知识,为以后打下坚固的基础。

致谢 作为一名应用电子专业的毕业生,我觉得做单片机课程设计是很有意义的,而且也是必要的。在做这次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的实际资料是十分必要的,也是必不可少的。

其次,在这次课程设计中,我们运用了以前学过的专业课知识,如:proteus仿真、汇编语言、模拟和数字电路知识等。在此,我得感谢我的老师们,是你们的循循教导才是我有了基本的专业知识。这也是论文得以完成的基础。

要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机有哪些资源;
要有一个清晰的思路和一个完整的软件流程图;
在设计程序时,不能妄想一次将整个程序设计好,反复修改、不断改进是程序设计的必经之路;
要养成注释程序的好习惯,这样为资料的保留和交流提供了方便;
在设计中遇到的问题要记录,以免下次遇到同样的问题。

在这次的课程设计中,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单片机更是如此,程序只有在经常写与读的过程中才能提高,这就是这次课程设计的最大收获。

再次感谢xx大学和所有帮助过我。给我鼓励的老师,同学和朋友。谢谢你们! 参考文献 [1]单片机原理与应用(第2版)朱兆优 陈坚 邓文娟 电子工业出版社. 2012.7 [2]单片机系统设计与应用实例 韩志军 机械工业出版社. 2009.10 [3]《DS18B20数据手册》 [4]电子线路CAD 99 SE(第2版) 王廷才 机械工业出版社. 2007.12 [5]单片机基础 北京航空航天出版社 李广弟 2001.7 [6]51系列单片机设计实例 北京航空航天出版社 楼然苗 2003.3 [7]单片机原理与应用 冶金工业出版社 唐俊翟 2003.9 [8]单片机原理及应用教程 机械工业出版社 刘瑞新 2003.7 附录 源程序 DATA_BUS BIT P3.3 FLAG BIT 00H ;标志位 TEMP_L EQU 30H ;温度值低字节 TEMP_H EQU 31H ;温度值高字节 TEMP_DP EQU 32H ;温度小数 TEMP_INT EQU 33H ;温度值整数 TEMP_BAI EQU 34H ;温度百位数 TEMP_SHI EQU 35H ;温度十位数 TEMP_GE EQU 36H ;温度个位数 DIS_BAI EQU 37H ;显示百位数 DIS_SHI EQU 38H ;显示十位数 DIS_GE EQU 39H ;显示个位数 DIS_DP EQU 3AH ;显示小数位 DIS_ADD EQU 3BH ;显示地址 ORG 0000H AJMP START ORG 0050H ;初始化 START: MOV SP, #40H MAIN: LCALL READ_TEMP ;调读温度程序 LCALL PROCESS ;调数据处理程序 AJMP MAIN 读温度程序 READ_TEMP: LCALL RESET_PULSE ;调用复位脉冲程序 MOV A, #0CCH ;跳过ROM命令 LCALL WRITE MOV A, #44H ;读温度 LCALL WRITE LCALL DISPLAY ;显示温度 LCALL RESET_PULSE ;调用复位脉冲程序 MOV A, #0CCH ;跳过ROM命令 LCALL WRITE MOV A, #0BEH ;读缓存命令 LCALL WRITE LCALL READ RET 复位脉冲程序 RESET_PULSE: RESET: SETB DATA_BUS NOP NOP CLR DATA_BUS MOV R7, #255 DJNZ R7, $ SETB DATA_BUS MOV R7, #30 DJNZ R7,$ JNB DATA_BUS, SETB_FLAG CLR FLAG AJMP NEXT SETB_FLAG: SETB FLAG NEXT: MOV R7, #120 DJNZ R7, $ SETB DATA_BUS JNB FLAG, RESET RET ;写命令 WRITE: SETB DATA_BUS MOV R6, #8 CLR C WRITING: CLR DATA_BUS MOV R7, #5 DJNZ R7, $ RRC A MOV DATA_BUS, C MOV R7, #30H DJNZ R7, $ SETB DATA_BUS NOP DJNZ R6, WRITING RET 循环显示段位 DISPLAY: MOV R4, #200 DIS_LOOP: MOV A, DIS_DP MOV P2, #0FFH MOV P0, A CLR P2.7 LCALL DELAY2MS MOV A, DIS_GE MOV P2, #0FFH MOV P0, A SETB P0.7 CLR P2.6 LCALL DELAY2MS MOV A, DIS_SHI MOV P2, #0FFH MOV P0, A CLR P2.5 LCALL DELAY2MS MOV A, DIS_BAI MOV P2, #0FFH MOV P0, A MOV A, TEMP_BAI CJNE A, #0,SKIP AJMP NEXTT SKIP: CLR P2.4 LCALL DELAY2MS NEXTT: NOP DJNZ R4, DIS_LOOP RET 读命令 READ: SETB DATA_BUS MOV R0, #TEMP_L MOV R6, #8 MOV R5, #2 CLR C READING: CLR DATA_BUS NOP NOP SETB DATA_BUS NOP NOP NOP NOP MOV C, DATA_BUS RRC A MOV R7, #30H DJNZ R7, $ SETB DATA_BUS DJNZ R6, READING MOV @R0, A INC R0 MOV R6, #8 SETB DATA_BUS DJNZ R5, READING RET 数据处理 PROCESS: MOV R7, TEMP_L MOV A, #0FH ANL A, R7 MOV TEMP_DP,A MOV R7, TEMP_L MOV A, #0F0H ANL A, R7 SWAP A MOV TEMP_L, A MOV R7, TEMP_H MOV A, #0FH ANL A, R7 SWAP A ORL A, TEMP_L MOV B, #64H DIV AB MOV TEMP_BAI,A MOV A, #0AH XCH A, B DIV AB MOV TEMP_SHI,A MOV TEMP_GE,B MOV A, TEMP_DP MOV DPTR, #TABLE_DP MOVC A, @A+DPTR MOV DPTR, #TABLE_INTER MOVC A, @A+DPTR MOV DIS_DP, A MOV A, TEMP_GE MOV DPTR, #TABLE_INTER MOVC A, @A+DPTR MOV DIS_GE, A MOV A, TEMP_SHI MOV DPTR, #TABLE_INTER MOVC A, @A+DPTR MOV DIS_SHI, A MOV A, TEMP_BAI MOV DPTR, #TABLE_INTER MOVC A, @A+DPTR MOV DIS_BAI ,A RET DELAY2MS: MOV R6, #3 LOOP3: MOV R5, #250 DJNZ R5, $ DJNZ R6, LOOP3 RET TABLE_DP: DB 00H,01H,01H,02H,03H,03H,04H,04H,05H,06H DB 06H,07H,08H,08H,09H,09H TABLE_INTER: DB 03FH,006H,05BH,04FH,066H DB 06DH,07DH,07H,07FH,06FH END

Tags: 温度计   单片机   课程设计  

搜索
网站分类
标签列表