




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
四川信息职业技术学院毕业设计说明书信息职业技术学院毕业设计说明书(论文)设计(论文)题目: 数字温度计的设计 专 业: 通信技术 班 级: 学 号: 姓 名: 指导教师: 二八年十二月三十日四川信息职业技术学院毕业设计(论文)任务书学 生姓 名学号班级专业通信技术设计(或论文)题目数字温度计的设计指导教师姓名职 称工作单位及所从事专业联系方式备 注讲 师高级工程师设计(论文)内容:(1)设计指标测温范围-55-+125;精度误差小于0.5;用LED数码管来显示当前温度;能锁存温度读数;(2)设计要求画出电路原理图(或仿真电路图);元器件及参数选择;电路仿真与调试;进度安排:第5周:任务下达,理解消化任务要求;初步设计方案确定;第6周第10周:设计方案确定,分模块部分完成;第11周:中期检查,查找问题,分析解决难点;第12周第15周:分模块调试,整体电路调试,论文书写等;第16周:答辩主要参考文献、资料(写清楚参考文献名称、作者、出版单位):1李建忠.单片机原理及应用.西安:西安电子科技大学出版社,20022朱宇光.单片机应用新技术教程.北京:电子工业出版社,20003刘守义.单片机应用技术.西安:西安电子科技大学出版社,20024房小翠.单片机实用系统设计技术.北京:国防工业出版社,19995李华.MCS-51系列单片机实用接口技术.北京:电子工业出版社,2000审批意见教研室负责人:年 月 日备注:任务书由指导教师填写,一式二份。其中学生一份,指导教师一份。目录摘要1第1章绪论2第2章方案设计与论证32.1总体设计方案32.2系统主要模块方案论证与比较32.2.1控制模块的选用32.2.2温度测量模块选用4第3章硬件设计53.1单片机主控模块53.2温度检测模块63.2.1DS18B20的引脚功能63.2.2DS18B20硬件电路设计63.3锁存模块73.4显示模块73.5指示灯模块8第4章系统软件设计94.1系统主程序94.2读取温度子程序104.3延时子程序104.4显示数据子程序104.5系统初始化程序114.6温度转换段码子程序124.7计算温度子程序13第5章系统测试15结论17致谢18参考文献19附录20附录1程序清单20附录2整体原理图29摘要本设计以AT89C51单片机为核心,以温度传感器DS18B20、边沿D触发器7474、移位寄存器74LS164和3位共阴极LED数码管为主体设计了一款简易数字式温度计。它可以通过控制锁存键来锁存当前温度值,具有读数方便的特点。系统采用LED数码管作为显示器,软件程序采用均采用C语言编写,便于移植与升级。报告详细介绍了整个系统的硬件组成结构、工作原理和系统的软件程序设计。关键词温度计;AT89C51;传感器;DS18B20第1章绪论温度计是人们日常生活及工作中不可缺少的产品。温度测量在物理实验、医疗卫生、食品生产等领域,尤其在热学试验(如:物体的比热容、汽化热、热功当量、压强温度系数等教学实验)中,有特别重要的意义。目前温度计的发展很快,从原始的玻璃管温度计发展到了现在的热敏电阻温度计、热电偶温度计、数字温度计、电子温度计等等,温度计中传感器是它的重要组成部分,它的精度、灵敏度基本决定了温度计的精度、测量范围、控制范围和用途等。目前生活中所使用的温度计通常都是精度为1和0.1的水银、煤油或酒精温度计,这些温度计的刻度间隔通常都很密,不容易准确分辨,读数困难,而且他们的热容量还比较大,达到热平衡所需的时间较长,因此很难读准,容易损坏,并且使用非常不方便。本次设计的数字温度计与传统的温度计相比,具有读数方便,价格低廉,测温范围广,测温准确等优点,其输出温度采用数字显示,主要用于对测温比较准确的场所或科研实验室使用,该设计控制器使用单片机AT89C51,测温传感器使用DS18B20,用3位共阴极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。四川信息职业技术学院毕业设计说明书第2章方案设计与论证2.1总体设计方案根据题目设计要求,本设计控制单元采用单片机AT89C51,温度传感器采用DS18B20,用3位LED数码管以串口传送数据实现温度显示。系统结构框图如图1所示。图1总体设计方框图系统以AT89C51单片机作为整个系统的控制中心,负责控制启动温度测量,接收传感器DS18B20测量的数据,并计算温度,锁存所读取的温度值,温度值通过单片机处理后,在LED数码管上显示温度值。锁存键控制是否锁存当前温度值。指示灯指示当前锁存状态和此时单片机的工作状态。2.2系统主要模块方案论证与比较2.2.1控制模块的选用方案一:采用ATMEL公司的AT89C51单片机作为控制器。单片机运算能力强,软件编程灵活,自由度大。AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。方案二:采用FPGA(现场可编辑门列阵)作为系统主控制器。FPGA可以实现各种复杂的逻辑功能,规模大,集成度高,体积小,稳定性好,并且可利用EDA软件进行仿真和调试。FPGA采用并行工作方式,提高了系统的处理速度,常用于大规模实时性要求较高的系统。方案比较,以上两种方案中,方案一的四个端口只需要两个就能满足设计需要,资源比较适中。而方案二将使FPGA的高速处理能力得不到充分发挥,故选择方案一。2.2.2温度测量模块选用方案一:测温电路可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度值显示出来,但这种设计需要用到A/D转换电路,感温电路比较复杂、成本高。方案二:进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。方案比较,从以上两种方案,很容易看出,方案一中感温电路比较麻烦,而方案二中电路比较简单,软件设计也比较简单,故采用方案二。四川信息职业技术学院毕业设计说明书第3章硬件设计3.1单片机主控模块单片机主控模块以AT89C51单片机为核心,由单片机、振荡电路、复位电路等组成,如图2所示,主要负责各个模块的初始化工作;读取并处理时间;处理按键响应;控制数码管的显示等。图2单片机主控模块AT89C51单片机与MCS51系列单片机产品兼容,内部自带有4KB的Flash存储器及256KB RAM单元,不需另外扩展EEPROM及静态RAM,可以在线下载程序,易于日后的升级。图中,P3.0和P3.1口是单片机与显示模块连接的控制和通信的数据端口;P1.0是单片机与传感器DS18B20连接的端口;P1.1和P1.2是单片机与锁存模块的通信接口。时钟电路是由XTAL1和XTAL2之间跨接的晶体振荡器和微调电容构成。89C51单片机各功能部件的运行都以时钟信号为基准,有条不紊的一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机的稳定性。常用的时钟电路设计有两种方式,一种是内部时钟方式,另一种是外部时钟方式。本设计用的就是外部时钟方式,采用12M晶振。复位电路有两种形式:手动按键上电复位和上电复位,在本设计中采用的是上电复位。3.2温度检测模块温度检测电路采用的是DS18B20温度传感器。DS18B20是美国DALLAS公司生产的一种改进型的智能温度传感器,与传统的热敏电阻等测温元件相比,它具有结构简单,能直接读出被测温度,采用一根I/O数据线既可供电又可传输数据、并且可根据实际要求通过简单的编程实现912位的数字值读数方式。3.2.1DS18B20的引脚功能DS18B20采用3脚封装,VDD:主电源;GND:逻辑地;DQ:数据线引脚,如图3所示。图3DS18B20引脚分布图3.2.2DS18B20硬件电路设计DS18B20与单片机通信,电路连接简单。温度检测模块电路如图4所示。图4温度检测模块电路其中,VCC和GND分别接电源和接地,DQ与单片机P1.0口相连接.它以串行通信的方式与单片机进行通信,读出或写入数据仅需一根I/O接口线。3.3锁存模块锁存模块如图5所示,它由一个开关和一个边沿D触发器构成。边沿D触发器采用7474触发器,触发器Q端的状态和D端状态是一样的。其中Q端和单片机的P1.1脚相连,Q非与锁存指示灯相连。当D端为低电平时,Q也为低电平,Q非为高电平。表示此时为锁存状态。图5锁存模块电路3.4显示模块温度显示电路是使用的串口显示,如图6所示。这种显示最大的优点就是使用I/O接口资源比较少,只用P3口的RXD(串行数据输入口)和TXD(串行数据输出口),三只数码管采用74LS164移位寄存器驱动,显示比较清晰。图6显示模块电路3.5指示灯模块指示灯模块由两个发光二极管组成,如图7所示。D1是系统指示灯,D2是锁存指示灯,当系统开始工作时,D1亮。当开关置低电平时D2亮起,表示此时在锁存状态。图7指示灯电路第13页共29页第4章系统软件设计本系统程序主要包括主程序、读取温度子程序、延时子程序、显示数据子程序、系统初始化程序、温度转换段码子程序、计算温度子程序。4.1系统主程序主程序的主要功能是负责整体调度,读出并处理DS18B20测量的当前温度值,处理读取温度值,显示当前温度值,判断是否锁存当前显示值。温度测量每1s进行一次,流程图如图8所示。图8主函数流程图4.2读取温度子程序温度转换命令子程序主要是向DS18B20发复位命令、操作ROM命令、温度转换开始命令等,然后读取DS18B20的暂存器。当采用12位分辨率时,转换时间约为750ms,在本程序设计中采用1s等待转换的完成。流程图如图9所示。图9读取温度子程序流程图4.3延时子程序为了严格符合DS18B20的操作协议,本程序定义了一系列延时程序,第一种主要采用NOP命令(C语言中用 _nop_();函数)延时法,精确到10us。为了等待DS18B20转换温度(大约1秒)本程序使用第二种延时法,循环延时法。4.4显示数据子程序显示数据程序主要是通过P3口的RXD脚和TXD脚,以方式0同步发送数据以刷新LS74164D锁存器来刷新LED显示器。流程图如图10所示。图10显示数据子程序4.5系统初始化程序主要功能是初始化串行口与触发器。流程图如图11所示。图11系统初始化子程序4.6温度转换段码子程序温度转换段码子程序的主要功能是把十进制整数形式的温度值转换为共阴极LED数码管的段码并储存在51的RAM中定义的暂存器中。流程图如图12所示。图12温度转换段码子程序4.7计算温度子程序把DS18B20的温度格式转换为十进制浮点温度值,四舍五入后返回其值。流程图如图13所示。图13计算温度子程序四川信息职业技术学院毕业设计说明书第5章系统测试本设计采用的核心是AT89C51单片机,通过温度传感器DS18B20、暂存器74LS164和3位七段LED数码管等作为外围元件构成了一个数字温度计。系统经调试后,可以稳定运行。本系统采用串行器件具有线路简单、体积小、价格低等优点。本系统的仿真采用PROTEUS软件,在PROTEUS库中选取的元件,如表1所示。表一仿真元器件表仿真结果如图14所示。本系统可以通过控制开关来实现温度的锁存,方便准确的读出当前温度值。图14仿真结果结论本设计以单片机为基准,选取AT89C51单片机为控制核心。通过温度传感器DS18B20、边沿D触发器、8位移位寄存器74LS164等外围元件构成了一个具有锁存功能的数字温度计。系统采用LED数码管作为显示器,软件程序采用C语言编写,便于移植与升级。系统经调试后,可以稳定运行。在设计和调试的过程中,也发现了一些问题,譬如PROTEUS仿真89C51的时候ALE脚没有信号输出,在此用Simulator Primitives中的CLOCK代替,而实际系统中89C51的ALE脚一直有正脉冲输出,此频率为时钟晶体振荡周期的六分之一(在此系统中为12MHZ/6)。虽然当89C51访问外部RAM(即执行MOVX类指令),要丢失一个时钟,严格地来说不宜用作精确的时钟信号源或定时信号,但在此系统中触发器不需要精确的时钟信号,所以在实际电路中D触发器的CLK脚连接C51的ALE脚。温度计的设计还不够人性化,比如加上语音的功能,可能会更有生命力。在这次设计中,我用到了很多以前的知识,而在这个过程中,不仅对以前的知识重新熟悉了一次,而且又获得了许多新知识。由于本人水平有限,不足之处在所难免,恳请各位老师谅解!致谢通过短暂的毕业设计,从而提高了我的理论水平,真正做到学有所用,虽然在其过程中我也遇到一些困难,但是从中我也得到了很多的帮助,没有半途而废,没有灰心丧气,我都一一克服了,这些都是一种收获,最让我感到高兴的是终于按质按量的完成了本次设计。首先要感谢我的指导老师,是您严谨细致、一丝不苟的作风感染了我;是您循循善诱的教导和不拘一格的思路给予我无尽启迪。本次设计的每个细节都离不开您的细心指导。在本次设计即将完成之际,我的心情无法平静,从开始进入课题到设计的顺利完成,离不开可敬的师长、亲爱的朋友们给了我的帮助和鼓励。在此请接受我诚挚的谢意!谢谢您们!参考文献1李建忠.单片机原理及应用.西安:西安电子科技大学出版社,20022朱宇光.单片机应用新技术教程.北京:电子工业出版社,20003刘守义.单片机应用技术.西安:西安电子科技大学出版社,20024房小翠.单片机实用系统设计技术.北京:国防工业出版社,19995李华.MCS-51系列单片机实用接口技术.北京:电子工业出版社,2000四川信息职业技术学院毕业设计说明书附录附录1程序清单/文件:DATA.H 系统常量及变量声明const unsigned char LEDCODE = 0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xF6, 0x02, 0x00, 0xFF ; /共阴极段LED段码(09,-,灭,全亮)unsigned char Temp_data = 0xFF, 0xFF, 0xFF ;/段码组百位(负数时为符号位),十位,个位。初始为全亮unsigned char ScrM9;/暂数组sbit DQ= P10;/51的P1.0口与DS18B20的DQ脚相连sbit DF= P11;/51的P1.1口与边沿D触发器(7474)Q脚相连sbit RS= P12;/51的P1.2口与边沿D触发器(7474)S脚相连sbit EN= P13;/51的P1.3口与二极管相连sbit LEDREST= P14;/51的P1.4口与三个LS164的脚相连/文件:FUCTION.H 函数声明#include #include data.hvoid Delay10us( void )_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();void Delay64us( void )Delay10us();Delay10us();Delay10us();Delay10us();Delay10us();Delay10us();void Delay104us( void )Delay10us();Delay10us();Delay10us();Delay10us();Delay10us();Delay10us();Delay10us();Delay10us();Delay10us();Delay10us();void Delay132us( void )Delay64us();Delay64us();void Delay524us( void ) Delay104us();Delay104us();Delay104us();Delay104us();Delay104us();void Delay1s( void ) unsigned long i = 25000;while( -i );bit reset_1820( void )bitpresence;DQ=0;/拉低总线Delay524us();/延时(复位低电平480us)DQ=1;/释放总线Delay64us();/进入等待应答状态(60us存在检测高电平15us)presence=DQ;/读存在信号Delay524us();/等待时存在检测结束与总线恢复( 480us )return ( presence );/ 0 = 存在(初始化成功), 1 = 不存在(初始化失败) char read_1820( void ) unsigned char i; unsigned char value = 0; for ( i = 8; i 0; i- ) /从DS18B20依次读出一字节的每位(D0位D8位) value=1;/ value右移一位DQ = 0; / 拉低总线,开始“读时间隙”_nop_();/ 保持us,(若读时:us读低电平T60us) return( value ); / 返回读出数据 void write_1820( char val ) char i; for ( i = 8; i 0; i- )/ 一字节的位(D0位D8位)依次写入DS18B20 DQ = 0; / 拉低总线,开始“写时间隙”_nop_();/ 保持us,(若写时:us写低电平15us)_nop_(); DQ = val&0x01; / 取出val的最低位,并写入总线Delay64us(); / 保持总线电平,等待DS18B20采样DQ = 1; / 释放总线结束Delay64us(); / 等待“写时间隙”结束 (60us写时间隙120us)val=val/2; / val右移一位 void Read_Temperature( unsigned char* Scratchpad ) unsigned char i; reset_1820();/ 初始化DS18B20write_1820( 0xCC );/ 发Skip ROM命令write_1820( 0x44 );/ 发温度变换命令Delay1s();/ 延迟秒等待温度变换reset_1820();/ 初始化DS18B20write_1820( 0xCC );/ 发Skip ROM命令write_1820( 0xBE );/ 发读暂存器命令for( i = 0; i 9; i+ )Scratchpadi = read_1820();/ 读出暂存器字节值并放入暂存数组中 int TempConvertor( unsigned char TemLSB, unsigned char TemMSB )/ TemLSB, TemMSBunsigned int MLSB = 0x0000;float p;MLSB |= TemMSB;MLSB = 0; -i )/当i = 0 时,向LED发送转换温度后段码(字节),先发个位,最后发百位while( TI != 1 );/等待发送完毕TI=0;/TI(发送中断标志位)置, 允许发送字节SBUF= Tempi;/发送一字节void NumToLedCod( unsigned char* Temp, int NumTem )if( NumTem = 0 )if( NumTem = 100 )Temp0 =LEDCODE(NumTem/100);/大于正,则百位为本来的数字NumTem%=100; /取小于的部分Temp1 =LEDCODE(NumTem/10);/转换十位的段码else if( NumTem = 10 )/小于正且大于等于,则百位示为灭Temp0=LEDCODE11;Temp1 =LEDCODE(N
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物理基础考试试题及答案
- java路由配置方法面试题及答案
- 赌博知识考试题及答案
- 2025年河南省中考语文真题(含答案)
- 石油测井考试题及答案
- 长春燃气考试题及答案
- 函数极限试题及答案
- 货币知识测试题及答案
- 手卫生院感考试试题及答案
- 校园业务知识培训内容课件
- 滴灌施肥技能培训课件
- 胶原蛋白培训课件
- 2025至2030中国科研服务行业发展趋势分析与未来投资战略咨询研究报告
- 肿瘤患者的临终关怀及护理
- 2025年6月浙江省高考地理试卷真题(含答案解析)
- GB/T 45785-2025压缩空气站能源绩效评价
- 产权车位转让协议书范本
- CCU护士进修出科汇报
- 解表药白芷讲课件
- T/CUWA 60054-2023饮用水纳滤阻垢剂性能试验方法
- 青少年应急救援技能的培养与提升
评论
0/150
提交评论