《数字温度计设计(单片机).doc》由会员分享,可在线阅读,更多相关《数字温度计设计(单片机).doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、目 录1 设计目的12.设计要求13.总体设计方案13.1数字温度计设计方案论证13.2方案一的总体设计框图13.3 DS18B20温度传感器与单片机的接口电路53.4 系统整体硬件电路63.5系统软件算法分析103.6读出温度子程序103.7温度转换命令子程序123.8 计算温度子程序133.9 显示数据刷新子程序144.总结与体会15参考文献16附录173.1、元器件选择83.11、单片机选择83.12、温度传感器选择83.2、温度检测电路103.3、温度报警电路11单片机课程设计目的: 单片机原理及接口技术是一门专业技术基础课,是一门实践性很强的课程,单片机课程设计要求将所学的理论知识通
2、过实践加强理解和认识,提高学生们的单片机接口电路的设计能力和实践动手能力。单片机课程设计报告要求:1根据设计题目要求进行系统总体设计2设计系统总体电路图,阐述系统中各个单元电路的工作原理3系统的硬件设计、电路中元器件的选择,参数确定4系统的软件设计、主程序流程图和主要子程序流程图5给出系统设计硬件元器件清单6列出参考资料题目二 数字温度计设计一、设计内容: 采用MCS-51系列单片机进行数字温度计设计并通过实验仪验证通过。二、设计要求:1设计单片机最小系统(电路包括复位、晶振电路、外扩3个2764共24KROM、3个6264共24KRAM等)2设计键盘/显示器接口电路。3设计温度测量接口电路4
3、通过软件编程实现环境温度的测量和显示(温度显示:25.8)5通过键盘可预置温度报警值,实现温度越限报警功能。三、总体设计方案3.1数字温度计设计方案论证3.1.1方案一由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。3.1.2 方案二 进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。 所以采用
4、方案二整机电路分析单 片 机单片机时钟电路复位电路报警电路驱动电路测温电路显示电路图3.4 设计方框单 片 机单片机时钟电路复位电路报警电路驱动电路测温电路显示电路 本系统采用单片机作为微控制器,分为四个模块(如上图2.3):测温电路, 数码管显示,报警电路,复位电路。单片机I/O口资源的利用:P1口作为数码管控制端输入,P2口作为测温电路测量温度值的输入,P0口(已外接了上拉电阻)作为数码管显示输出,P2.7接蜂鸣器,P2.4接温度传感器DS18B20。采用12MHZ晶振。电源采用5V为单片机,LED,蜂鸣器供电。主要技术指标:准确度达微秒级,以市电220V50HZ为输入电源,工作温度-10
5、60。该电路经过设计分析,绘图,制板、焊接、仿真调试等工作后温度计成形。第三章 硬件设计电路3.1 元器件选择 3.11 单片机选择 对于单片机的选择,可以考虑使用8031与8052系列,由于8031没有内部RAM,系统又需要大量内存存储数据,因而不适用。AT89S52 是美国 ATMEL 公司生产的低功耗,高性能 CMOS8 位单片机,片内含 4kbytes 的可编程的 Flash 只读程序存储器,兼容标准 8051 指令系统及引脚。它集 Flash 程序存储器既可在线编程(ISP),也可用传统方法进行编程,所以低价位 AT89S52单片机可为提供许多高性价比的应用场合,可灵活应用于各种控制
6、领域,对于简单的测温系统已经足够。单片机AT89S52 具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。3.1.2 温度传感器选择DALLAS 最新单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。DALLAS 半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。温度测量范围为-55+125 摄氏度,可编程为9位12 位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPRO
7、M 中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个DS18B20可以并联到3 根或2 根线上,CPU只需一根端口线就能与诸多DS18B20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列、各种封装形式,DQ 为数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也
8、可以向器件提供电源;GND为地信号;VDD为可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。、 3.2 温度检测电路DS18B20 最大的特点是单总线数据传输方式,DS18B20 的数据I/O 均由同一条线来完成。DS18B20 的电源供电方式有2 种: 外部供电方式和寄生电源方式。工作于寄生电源方式时, VDD 和GND 均接地, 他在需要远程温度探测和空间受限的场合特别有用, 原理是当1 W ire 总线的信号线DQ 为高电平时, 窃取信号能量给DS18B20 供电, 同时一部分能量给内部电容充电, 当DQ为低电平时释放能量为DS18B20 供电。但寄生电源方式需要强上拉电路, 软
9、件控制变得复杂(特别是在完成温度转换和拷贝数据到E2PROM 时) , 同时芯片的性能也有所降低。因此, 在条件允许的场合, 尽量采用外供电方式。无论是内部寄生电源还是外部供电,I/O口线要接5K左右的上拉电。在这里采用前者方式供电。DS18B20与芯片连接电路如图 3.2所示: 图 3.2 DS18B20与单片机的连接外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。在开发中使用外部电源供电方式,毕竟比寄生电源方式只多接一根VCC引线。在外接电源方式下,可以充分发挥DS18B20宽电源电压范围的优点,即使电源
10、电压VCC 降到3V 时,依然能够保证温度量精度。由于DS18B20 只有一根数据线,因此它和主机(单片机)通信是需要串行通信,而AT89S51 有两个串行端口,所以可以不用软件来模拟实现。经过单线接口访问DC18B20 必须遵循如下协议:初始化、ROM 操作命令、存储器操作命令和控制操作。要使传感器工作,一切处理均严格按照时序。3.3 温度报警电路本设计的发挥部分,是加入了报警,如果我们所设计的系统是监控某一设备,一当设备的温度超过我们所设定的温度值时,系统会产生报警。 报警时由单片机产生一定频率的脉冲,由P2.7引脚输出,P2.7外接一只PNP的三极管来驱动杨声器发出声音,以便操作员来维护
11、,从而达到报警的目的。如下图(g): 图3.3 温度报警电路 (3)数据显示模块: 采用4位一体共阴LED显示器。本课程设计中,显示器型号选取SM。在采用动态扫描方式时,要使得LED显示的比较均匀,又有足够的亮度,需要设置适当的扫描频率,根据课设任务所要求的功能确定。显示电路如下: 其中:AG管脚与P0口的P1.0P1.6相连,确定显示器被选中数据位的段码; 2,3,4管脚分别于P3口的P3.4,P3.5,P3.7相连,确定显示器的位码,分别对应于数据的百位,十位和个位。 (4)硬件电路的安装与调试 电路的安装与调试是我们这次课程设计的主要任务之一,也是整个过程的最难阶段。在整个过程中,开始的
12、时候我和我们组的组员们都信心百倍,一切进展顺利,直到硬件连接完毕接上5V电源时,第一个问题摆在我们面前,显示器示数存在却不发生变化,甚至在外界温度变化比较大时也一样,开始我们怀疑是硬件连线有问题,可是经过反复检查,并不断对照资料上各个元器件管脚图及其相应功能,并没发现连线方面的错误。之后,有的组员怀疑是程序有问题,可是也有的组员提出系 统仿真并没有出现类似问题,所以不应该是这样。最后经过讨论,我们一致决定检查程序。因为软件为硬件服务,硬件出现了问题,也不能完全说程序一定正确。可是经过重新确认,检查程序漏洞,并没有发现任何错误,大家开始感觉有点烦了,不过好在大家的信心并没有丧失,我们开始查找资料
13、而且向身边的同学虚心求教,最终我们把目标锁定在温度传感器DS18B20器件和显示器SM上,确认是两者可能存在问题。后又分开检测两者之一,经过软件程序的单独处理,我们得出最终结论,我们所领取的元器件DS18B20是劣质品。我们重新申请领取了一个DS18B20,用其替换了原来的那个,发现一切运行正常,经过测试各方面的性能,而且反复检查了几遍,一致认定硬件电路的性能完全符合我们的任务要求指标。直到这时,大家才松了一口气,每个人都很兴奋,完全没有了之前的烦闷。至此,装调工作结束。3.5系统软件算法分析系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。3.
14、5.1主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图7所示。初始化调用显示子程序1S到?初次上电读出温度值温度计算处理显示数据刷新发温度转换开始命令NYNYY发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNY图7 主程序流程图 3.6读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图8示图8读温度流程图读出温度转换的子程
15、序:EMPER: SETB P2.0 ; 定时入口 LCALL INIT_1820 JB 20H.1,TSS2 RET ; 若DS18B20不存在则返回TSS2: MOV A,#0CCH ; 跳过ROM匹配 LCALL WRITE_1820 MOV A,#44H ; 发出温度转换命令 LCALL WRITE_1820 LCALL INIT_1820 MOV A,#0CCH ; 跳过ROM匹配 LCALL WRITE_1820 MOV A,#0BEH ; 发出读温度命令 LCALL WRITE_1820 LCALL READ_18200 MOV 37H,A ; 将读出的温度数据保存 RET3.7
16、温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图9所示发DS18B20复位命令发跳过ROM命令发温度转换开始命令 结束 图9 温度转换流程图温度命令子程序:TEMPER_COV: MOV A,#0F0H ANL A,36H ; 舍去温度低位中小数点 SWAP A MOV 37H,A MOV A,36H JNB ACC.3,TEMPER_COV1 ; 四舍五入去温度值 INC 37HTEMPER_COV1:MOV A,35H ANL A,#07H SWA
17、P A ADD A,37H MOV 37H,A ; 保存变换后的温度数据 LCALL BIN_BCD RET 开始温度零下?温度值取补码置“”标志计算小数位温度BCD值 计算整数位温度BCD值 结束置“+”标志NY3.8 计算温度子程序其程序流程图如图10所示。 图10 计算温度流程图计算机温度子程序: BIN_BCD:MOV 39H,37H MOV A,37H MOV B,#100 DIV AB MOV 38H,A MOV 37H,B XCH A,B MOV B,#10 DIV AB MOV 37H,A MOV 36H,B RET 3.9 显示数据刷新子程序温度数据移入显示寄存器十位数0?百
18、位数0?十位数显示符号百位数不显示百位数显示数据(不显示符号) 结束NNYY显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序流程图如图11。 图11显示数据刷新流程图显示数据子程序:READ_18200: MOV R4,#2 ; 将温度高位和低位DS18B20中读 RE00:MOV R2,#8RE01:CLR C SETB P2.0 NOP NOP CLR P2.0 NOP NOP NOP SETB P2.0 NOP NOP MOV C,P2.0 MOV R3,#35RE20: DJNZ R3,RE20 RRC A DJNZ R2,R
19、E01 MOV R1,A DEC R1 DJNZ R4,RE00 RET4.总结与体会 经过将近三周的单片机课程设计,终于完成了我的数字温度计的设计,虽然没有完全达到设计要求,但从心底里说,还是高兴的,毕竟这次设计把实物都做了出来,高兴之余不得不深思呀!在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,举个例子,以前写的那几次,数据加减时,我用的都是BCD码,这一次,我全部用的都是16进制的数直接加减,显示处理时在用除法去删分,感觉效果比较好,有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握。从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。参考文献1李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,2005.2李广弟.单片机基础.北京:北京航空航天大学出版社,2005.3阎石.数字电子技术基础(第三版). 北京:高等教育出版社,2004.4廖常初.现场总线概述J.电工技术,2007.
限制150内