收藏 分销(赏)

数字温度计设计报告毕业设计论文.docx

上传人:胜**** 文档编号:3040748 上传时间:2024-06-13 格式:DOCX 页数:37 大小:337.99KB 下载积分:10 金币
下载 相关 举报
数字温度计设计报告毕业设计论文.docx_第1页
第1页 / 共37页
数字温度计设计报告毕业设计论文.docx_第2页
第2页 / 共37页


点击查看更多>>
资源描述
数字温度计设计报告 学校: 常州大学 院系: 信息与电子工程系 班级: 自动化141 姓名 : 肖磊 蒋金林 指导老师: 郑剑锋 时间: 2016年12月1日 摘要 随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研 、各 个领域,已经成为一种比较成熟的技术 , 本文主要介绍了一个基于 89S51 单片机 的测温系统,详细描述了利用数字温度传感器 DS18B20和时钟芯片DS1302 开发测温系统和时间系统的过程 ,并且通过芯片AT24C02进行数据掉电保存。重点对传感器在单片机下的硬件连接 ,软件编程以及各模块系统流程进行了详尽分 析,特别是数字温度传感器 DS18B20和时钟芯片DS1302 的数据采集过程 。对各部分的电路也一一进 行了介绍,该系统可以方便的实现实现温度采集和时间显示,并可根据需要任意设定 上下限报警温度 ,更改当前时间。它们使用起来相当方便 ,具有精度高、量程宽、灵敏度高、体积 小、功耗低等优点 ,适合于我们日常生活和工 、农业生产中的温度测量 ,也可以 当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。 DS18B20 、DS1302与 AT89C51 结合实现最简温度,时间检测系统 ,该系统结构简单 ,抗干扰能力强 ,适合于 恶劣环境下进行现场温度时间测量,有广泛的应用前景。 关键词: 单片机 DS18B20 温度传感器  时钟芯片DS1302 AT24C02 AT89S52 目录  1 概述...................................................................................................................4  1.1 课程设计的意义 ..................................................................................4  1.2 设计的任务和要求 ..............................................................................4  2 系统总体方案及硬件设计 ..............................................................................5  2.1 数字温度计设计方案论证 ...................................................................5  2.1.1 方案一.........................................................................................5  2.1.2 方案二........................................................................................5  2.2 系统总体设计 ........................................................................................6  2.3 系统模块................................................................................................7  2.3.1 主控制器...................................................................................7  2.3.2 显示电路...................................................................................8  2.3.3 温度传感器................................................................................8  2.3.4时钟芯片 .................................................................................. 2.3.5掉电数据保存电路…………………………………………………………….. 2.3.6报警温度调整按键 ....................................................................9  3 系统软件算法分析 .........................................................................................10  3.1 主程序流程图 .....................................................................................10  3.2 读出温度子程序 .................................................................................10  3.3 温度转换命令子程序 .........................................................................11 3.4 计算温度子程序 ................................................................................11  3.5 显示数据刷新子程序 ........................................................................11  3.6 按键扫描处理子程序 .........................................................................12  4 实验仿真.......................................................................................................13  5 总结与体会....................................................................................................14  参考文献 ..........................................................................................................15 附 1 源程序代码 ...............................................................................................16  1 概述 1.1数字温度计基本功能 1、 能数字显示被测温度,测量温度范围0℃~100℃; 2、 分辨率不低于0.5℃ 3、 带有计时和时间显示功能; 4、 至少有高、低两路限温控制输出接口控制外部电路,实际制作时可以发光二极管模拟显示其控制状态输出; 5、 高、低两路限温控制点可在0℃~100℃范围内任意独立设置; 6、 当温度达到高、低限温控制点发出声光报警。 扩展部分 1、提高温度测量精度,使分辨率不低于0.1℃; 2、自动顺时测量(测量间隔时间可调)并保存温度值和测量时间; 3、可以查询、回显存储器中自动测量的温度值和测量时刻; 4、多路温度巡检(至少两路)和多路温度、时间保存。 数字温度计框图     2 理论分析与计算    2.1 数字温度计设计方案论证   2.1 单片机的选择: 方案1:采用传统的STC89C52RC作为电机的控制核心。单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制,并且由于其功耗低、体积小、技术成熟和成本低等优点,使其在各个领域应用广泛。 方案2:采用STM32F103ZET6微控制器(ARM cortexM3内核),还带有非易失性512k Flash程序存储器。它是一种高性能、低功耗的32位CMOS微处理芯片,市场应用最多。其主要特点如下:512KB Flash ROM,72M的主频,片内集成AD、DA, 以及具有DMA、SPI总线。 方案3:采用MSP430单片机,MSP430系列单片机是一个16位的单片机,采用了精简指令集(RISC)结构,具有丰富的寻址方式(7 种源操作数寻址、4 种目的操作数寻址)、简洁的 27 条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令。这些特点保证了可编制出高效率的源程序。 由于本系统对CPU运算速度要求不高,不需要执行很复杂的运算,加上成本上和队员各自的技术特点考虑,综合起来选STC89C52RC较适合本系统的要求。 2.2.温度传感器的选择 2.21. 方案一  由于本设计是测温电路 ,可以使用热敏电阻之类的器件利用其感温效应 ,在将随被测温 度变化的电压或电流采集过来 ,进行 A/D 转换后,就可以用单片机进行数据的处理 ,在显示 电路上,就可以将被测温度显示出来 ,这种设计需要用到 A/D 转换电路,其中还涉及到电阻 与温度的对应值的计算,感温电路比较麻烦 。而且在对采集的信号进行放大时容易受温度的 影响出现较大的偏差。    2.2 2 .方案二  进而考虑到用温度传感器 ,在单片机电路设计中 ,大多都是使用传感器 ,所以这是非常 容易想到的,所以可以采用一只温度传感器 DS18B20,此传感器,可以很容易直接读取被测 温度值,进行转换,电路简单,精度高,软硬件都以实现,而且使用单片机的接口便于系统 的再扩展,满足设计要求。 2.2方案选择  从以上两种方案,很容易看出,采用方案二,电路比较简单,费用较低,可靠性高,软件设 计也比较简单,故采用了方案二。 2.3 温度时间显示模块: 2.31. 方案1:使用液晶显示屏显示时间温度数字。 液晶显示屏(LCD)具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影象稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强等特点,但是液晶显示屏使用的温度范围很窄,正常工作温度范围为0℃~+55℃,存储温度范围-20℃~60℃。 2.32. 方案2:使用传统的LED数码管显示。 数码管具有:低能耗、低损耗、低压、寿命长、耐老化、防晒、防潮、防火、防高(低)温,对外界环境要求低,易于维护,同时其精度比较高,称重轻,精确可靠,操作简单。但显示效果很差。 方案3:使用彩屏(TFT)显示时间温度数字,彩屏显示屏幕较大,所需代码冗长,处理不方便。 由于试题上说明显示只能采用数码管显示,故采用传统的LED数码管显示。 三 键盘模块: 方案1:使用独立式键盘。独立式键盘是指直接用I/O口线构成的单个按键电路。独立式按键电路配置灵活,软件结构简单。 方案2:使用矩阵式键盘。矩阵式键盘是由行线和列线组成,按键位于行、列的交叉点上,行线、列线分别连接到按键开关的两端。其特点是简单且不增加成本,这种键盘适合按键数量较多的场合。 由于考虑到本系统所需的按键的不多,并且为了简化程序,选择独立式按键。 电路与程序设计 主控制器STC89C52RC STC89C52RC单片机是宏晶科技推出的新一代高速、低功耗、超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟、机器周期和6时钟、机器周期可以任意选择。 主要特性如下: ● 增强型8051单片机,6时钟、机器周期和12时钟、机器周期可以任意选择,指令代码完全兼容传统8051单片机。 ● 工作电压:5.5V~3.3V ● 工作频率范围:0~44MHz。 ● 用户应用程序空间为8K字节 ● 片上集成512字节RAM ● 通用I/O口32个,复位后为:P1/P2/P3/P4是准双向口/弱上位,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。 ● ISP(在系统可编程)/IAP(再应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RXD/P3.0,TXD/P3.1 )直接下载用户程序,数秒即可完成一片。 ● 具有EEPROM功能 ● 具有看门狗功能 ● 共3个16位定时器/计数器。及定时器T0、T1、T2 ● 外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒 ● 通用异步串行口(UART),还可用定时器实现多个UART ● 工作温度范围:-40℃~+85℃(工业级)/0℃~75℃(商业级) ● PDIP封装 主控制器STC89C52RC电路图 温度探测单元: 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℃,精度为±0.5℃  ●零待机功耗  ●测量结果直接输出数字信号,以“一线总线”穿行传送给CPU,同时可传送CRC校验位,具有极强的抗干扰纠错能力  ●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作 以上特点使DS18B20非常适用与多点、远距离温度检测系统。 以上特点使DS18B20非常适用与多点、远距离温度检测系统。  DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列、各种封装形式如图 4.2 所示,DQ 为数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源;GND为地信号;VDD为可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。 2 DS18B20温度传感器接线图 外部时钟电路: 系统采用DS1302时钟芯片,DS1302是美国DALLAS公司推出的具有涓细电流充电功能的低功耗实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小;数字显示是采用的液晶显示屏来显示,可以同时显示年、月、日、星期、时、分、秒和温度等信息。此外,该电子时钟还具有时间校准等功能。 DS1302的性能特性: ● 实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行比较; ● 用于高速数据暂存的31*8位RAM; ● 最少引脚的串行I/O; ● 2.5~5.5V电压工作范围; ● 2.5V时耗小于300nA; ● 用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式; ● 简单的三线接口。  时钟芯片DS1302与外围电路的连接:与MCS-51单片机的接口是由3条线来完成的,MCS-51单片机的P1.0与时钟芯片的数据传输端I/O相连,P1.1用来作为DS1302输入时钟SCLK控制端,P1.2控制DS1302的复位输入端RST。DS1302的X1和X2管脚外接标DS1302的复位引脚通过把RST输入驱动置高电平来启动所有的数据传送。 RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供了终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中置RST为低电平,则会终止此次数据传送,并且I/O引脚变为高阻态。上电运行时,在Vcc≥2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。 外部DS1302时钟电路接线图 外部存储电路: 系统兼有时间温度显示功能,对工作数据要进行掉电保护,并需要再硬件上增加掉电检测电路,但存在电池不可靠及拓展存储芯片占用单片机过多口线的缺点。采用具有I2C总线接口的串行EEPROM器件可很好的解决掉电数据保护问题。系统采用AT24C01数据存储芯片。 AT24C01性能特征: 1、与400KHz I2C 总线兼容;    2、1.8 到6.0 伏工作电压范围;    3、低功耗CMOS 技术;    4、写保护功能当WP 为高电平时进入写保护状态;    5、页写缓冲器;    6、自定时擦写周期;    7、1,000,000 编程/擦除周期;    8、可保存数据100 年;    外部AT24C01存储电路接线图 显示电路 设计主要使用数码管功能实现,显示部分硬件用8只数码管为显示管。前四个显示温度,后四个显示温度。这些数码管的共阴相连在一起通过在数码管的阳极加+5V电压或0V电压数码管形成不同的数字。 数码管性能特征: 1、 低功耗CMOS 技术; 2、 a~p数码管段选; 3、 A~D数码管位选; 4、 低功耗CMOS 技术; 数码管连线图 声光报警电路接线图: 按键功能: A:温度,高温报警,低温报警切换。 B:报警值加一; C:报警值减一; D:返回到当前温度; E:时分之间切换; F:时分加一; G:时分减一; 系统软件设计 数字温度计的测量温度程序主要包括5个方面的内容:一是单片机从DS1302中读取数据进行计数,二是利用按键进行时间温度上下限的调整,三是单片机中读取DS1302,EEPROM中的和DS18B20采集的数据在数码管上显示时间温度。 主程序流程图  主程序的主要功能是负责温度,时间的实时显示 、读出并处理 DS18B20 的测量的当前温度值,DS1302的时间。  初始化 读取温度,时间 读出温度值温度,时钟 时间,计算处理显示数 据刷新 发温度,时间转换开始 命令 调试显示子程序 结束 主程序流程图 3.2读出温度子程序 读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其流程图如图所示 发DS18B20的复位命令 发跳过ROM命令 发读取温度命令 读取操作,CRC校验 Y 9字节完 N Y CRC N 校验正 移入温度暂存器 结束 读温度流程图 温度超出报警 读出温度超过上限值时,发出警报,读出温度低于下限值时,发出警报,通过按键更改温度上下限。 开始 控制键有效,进入温度上下限设置 报警 温度上限设置 温度超出 温度正常 温度下限设置 温度正常 温度超出 报警 读出DS1302时钟芯片的时间,在数码管上显示出来 4.测试方案与测试结果 4.1 测试仪器 数字万用表、秒表、电吹风。 数字万用表主要用来测试分立元件的电阻、压降、漏电流、截止、导通状态等参数。 秒表用来测试时间的准确度。 电吹风用来测试温度的变化。 4.2 测试方法: 先是硬件调试,温度传感器DS18B20能否正常工作,读出温度;时钟芯片能否正常计时,接着软件调试,最后是软硬件调试。调试时可以采用逐个调试,先调试温度传感器,接着是时钟芯片,最后在整体调试。 4.3 测试数据及结果分析 测试温度(ºC) 实际温度(ºC) 25 24.3 30 30.8 40 41.2 60 61.3 测试时间(t) 实际时间(t) 60 60 120 120 180 180 240 240 结果分析: 测试温度与实际温度存在着一定误差,误差不是很大。猜测是周围环境对测得温度产生了影响,但是影响不是很大,可以忽略不计。 测试时间与实际时间之间不存在误差,达到了我们的要求。 5问题分析与解决方法 1 问题: 进行硬件调试时,数码管显示的数字基本错误。 解决方法: 用万用表检查接线,发现数码管的8个段选,接错4位,重新焊接后显示无误。 2 问题: 测温度时,数码管上显示乱码。 解决方法: 先用万用表检查接线,检查无误;接着检查程序,发现DS18B20管脚定义错误,经过改正后,能够正常显示温度。 3 问题: 整体调试时,两个数码管虽能准确显示温度和时间,但是数码管不停的闪烁,在逐个调试时没有这个问题。 解决方法: 先是检查软件有没有弄错,检查无误,查阅资料才弄清原因。因为数码管显示是通过人眼视觉暂留效果,得不停的刷新人眼才无法辨别出来,闪烁是因为刷新的速度比较慢,说明程序在一个周期里面执行的代码时间过长。经过一些调整,只能进行优化,而不能彻底解决这个问题。 5 心得体会      通过本次设计,使我们对单片机的了解有了更加深一步,我发现只有动手做才会孰能技巧,还有对材料的整理和理解。这次设计运用到的知识很多方面,尤其是单片机,像AT89C52,引脚多,硬件内部线路接通,所以用起来很方便,还有ds1302芯片与单片机之间的连接,以及如入使用ds1302,ds12b20芯片。当然也要对这些元器件作相应调查。主要就是电路原理图,还有对引脚的作用熟悉。对于软件方面则是灵活运用单片机有关的程序语言,还有很多扩展功能,由于知识匮乏,但是理论知识还是比较详细的。我们最大的成功之处是在这整个过程,动脑寻求解决一个一个问题的办法,对程序是不断思索,务必写出很简单的程序来,使得数字温度计能做成功! 附录 代码 #include<reg52.h> #include<stdio.h> #define uchar unsigned char #define uint unsigned int sbit ds=P2^2; sbit wela=P1^2; sbit dula=P1^0; sbit shidula=P1^1; //段选 sbit led=P2^0; sbit beep=P2^3; sbit k1=P2^5; sbit k2=P2^6; sbit k3=P2^7; sbit k4=P2^4; sbit T_RST=P3^7;//ds1302-5 sbit T_IO=P3^6;//ds1302-6 sbit T_CLK=P3^5;//ds1302-7 sbit ACC0=ACC^0; sbit ACC7=ACC^7;//累加器A 51单片机原理中有介绍 sbit up=P3^2; sbit down=P3^3; sbit set=P3^4; sbit shangxian=P1^7;//温度上限指示灯 sbit xiaxian=P1^6;//温度下限指示灯 sbit zhengwen=P1^5; sbit fuwen=P1^4; sbit baojing=P1^3; uint temp1; float f_temp; int alarmH=310; int alarmL=100; uchar a,b,clock_ss,clock_sg,clock_fs,clock_fg,clock_ms,clock_mg; int hour,mie,sei; uchar clk_time[3]; //秒,分,时寄存器初始值 code uchar ledmap[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x40}; //数码管段码 unsigned char code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0xbf,0x86,0xdb,0xcf,0xe6, 0xed,0xfd,0x87,0xff,0xef}; void key_to1(); void key_to2(); void key(); /******************DS1302:写入操作(上升沿)*********************/ void write_byte(uchar da) { uchar i; ACC=da; for(i=8;i>0;i--) { T_IO=ACC0; T_CLK=0; T_CLK=1; ACC=ACC>>1; } } /******************DS1302:读取操作(下降沿)*****************/ uchar read_byte(void) { uchar i; for(i=0;i<8;i++) { ACC=ACC>>1; T_CLK = 1; T_CLK = 0; ACC7 = T_IO; } return(ACC); } /******************DS1302:写入数据(先送地址,再写数据)***************************/ void write_1302(uchar addr,uchar da) { T_RST=0; //停止工作 T_CLK=0; T_RST=1; //重新工作 write_byte(addr); //写入地址 write_byte(da); T_RST=0; T_CLK=1; } /******************DS1302:读取数据(先送地址,再读数据)**************************/ uchar read_1302(uchar addr) { uchar temp; T_RST=0; //停止工作 T_CLK=0; T_RST=1; //重新工作 write_byte(addr); //写入地址 temp=read_byte(); T_RST=0; T_CLK=1; //停止工作 return(temp); } /***********************延时程序=a*1ms**************************************/ void delay(uchar a) { uchar i; while(a-- !=0) { // led_disp(); for(i=0;i<125;i++); } } /***********************显示程序**********************************************/ /* DS1302秒,分,时寄存器是BCD码形式: 用16求商和余进行"高4位"和"低4位"分离 */ /****************************************************************************/ void led_disp() { uchar cant1,cant2; if(b==0) { cant1=0;cant2=0; clock_ms=clk_time[0]/ 16; clock_mg=clk_time[0]%16; sei=clock_ms*10+clock_mg; clock_fs=clk_time[1]/ 16; clock_fg=clk_time[1]%16; mie=clock_fs*10+ clock_fg; clock_ss=clk_time[2]/ 16; clock_sg=clk_time[2]%16;//BCD*to*10 hour=clock_ss*10+ clock_sg; //用16求商和余进行"高4位"和"低4位"分离 } if(b==1) { cant1++; cant2=0; clock_ss=hour/ 10; clock_sg=hour%10; clock_fs=mie/ 10; clock_fg=mie%10; clock_ms=sei/10; clock_mg=sei%10; } if(b==2) { cant1=0; cant2++; clock_ss=hour/ 10; clock_sg=hour%10; clock_fs=mie/ 10; clock_fg=mie%10; clock_ms=sei/10; clock_mg=sei%10; } if(cant1<=3) { /* P2=0; P0=ledmap[clock_ss]; delay(1); P0=0X00; P2=1; P0=ledmap[clock_sg];//时个位 delay(1); P0=0X00;*/ wela=1; P0=0xef; wela=0; shidula=1; P0=ledmap[clock_ss]; shidula=0; delay(1); P0=0xff; wela=1;
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服