ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:69.91KB ,
资源ID:11465327      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11465327.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的数字温度计设计兰州交通大学.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的数字温度计设计兰州交通大学.docx

1、基于单片机的数字温度计设计兰州交通大学单片机原理及系统课程设计评语:考勤(10)守纪(10)过程(30)设计报告(30)答辩(20)总成绩(100)专 业:电气工程及其自动化班 级: 电气1103 姓 名: 杨 子 学 号: 201109306 指导教师: 侯 涛 兰州交通大学自动化与电气工程学院 2014 年 1 月 15 日1 设计题目基于单片机的数字温度计设计2 设计背景温度是工业生产和科学研究的重要参量之一,温度的测量是个永恒的话题,覆盖范围广泛。数字温度计可以利用在很多领域,在一些人不能直接进入的场所,利用单片机控制的数字温度计,可以准确地观测到其中的温度。数字温度计就是一个典型的例

2、子,但人们对它的要求越来越高,一切向着数字化控制,智能化控制方向发展。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用。3 设计原理3.1 设计方法(1)分析设计目的,根据要求查阅相关硬件的资料,预设计多种方案,设计产品功能;(2)根据设计要求,分析各方案的难易程度,比较他们的可操作性,进而基本确定设计方案(倾向选择硬件结构简单,可靠性强并且各部件市场使用率高的方案),选定相应的硬件设备,并进行硬件设计; (3)根据搜索的相关材料,深入分析各部件的特性,绘制总程序流程,进行软件的初步设计,对软

3、件功能模块化分割; (4)根据模块的功能要求,绘制相应的流程图,再编写相应程序的设计和完成相关调试,以完成软件的基本设计; (5)对产品进行调试、仿真。运用Proteus进行硬件连接,再在Keilc平台下生成可执行文件,再装入单片机中。进一步分析结果,修改硬件连接和软件程序,确定相关参数。最终,通过多次的调试和修改以完成产品的设计要求。3.2 系统框图设计温度计电路设计总体设计方框图如图1所示,主控制器采用单片机AT89C52,温度传感器采用DS18B20,用LCD1602数字显示器实现温度显示。系统框图如图3-1所示。 图3-1 系统框图3.3 系统电路原理图本数字温度计是以单片机AT89C

4、52为数据处理核心,运用DS18B20单总线数字式温度传感器进行温度采集,使用LCD1602对采集结果进行输出显示。根据电路原理框图设计出电路原理图如图3-2所示,由温度传感器DS18B20给单片机提供温度转换过的温度电信号。 AT89C52是一种低电压,高性能CMOS8位单片机。其片内含8k bytes 的可反复擦写的只读程序存储器(PEROM)和256bytes的随机存取数据存储器(RAM),和片内置通用8位中央处理器(CPU)和Flash储存单元,功能强大AT89C52单片机适合于许多较为复杂控制应用场合。DS18B20的数字温度计提供9至12位可编程设备温度读数。信息被发送到从DS18

5、B20 通过1线接口,所以中央处理器与DS18B20只有一个一条口线连接。为读写以及温度转换可以从数据线本身获得能量,不需要外接电源。 因为每一个DS18B20的包含一个独特的序号,多个DS18B20可以同时存在于一条总线。这使得温度传感器放置在许多不同的地方。它的用途很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测和控制。1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。图3-2 系统设计原理图在图3-2中,复位电路、控制电路加上单片机组成单片机最小应用系统,能够实现很多复杂

6、的功能。系统能实现温度的测量,显示温度等功能。系统中按钮“”和“”能对所测温度进行调整,启动DS18B20的测温程序,再将采集到的数据传输至AT89C52内,锁存器74LS373稳定数据,最终由液晶显示LCD1602输出结果。4 仿真图 在课题中,在PROTEUS软件中对设计的硬件电路进行仿真。PROTEUS软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及单片机的外围器件。仿真图如图4-1所示。 图4-1 数字温度计仿真图5 体会与总结首先,关于硬件设计的认识。硬件设计主要考虑两方面的问题,设计要求的实现:根

7、据电子元件的发展要求,我们要在可实现的前提下,选择硬件简单、集成度高、可靠性强的设计方案;设计的可操作性:软件与硬件呈现互补关系,当硬件较为简单时,我们需要软件控制实现其功能,因此我们要选择集成度高,控制方法清晰、实际运用广泛的硬件。其次,关于知识内容的学习。通过本次课程设计,复习和巩固了单片机知识的有关内容;通过对具体问题的解决,加强了我们理论运用于实际的能力;修改和调试程序的过程中,进一步锻炼和提高了我们的逻辑思维能力。 然后,关于软件设计的认识。由于产品软件功能的实现是个较为复杂的问题,通过课程设计我学习到了“化复杂为简单”的方法。如果每次进行软件设计时,能够把一个复杂的功能划分成多个具

8、体的模块功能,再逐一对模块具体分析和设计,便可以更高效、更清晰的解决问题。最后,关于小组答辩和报告书写。通过小组答辩:一方面,培养自己的逻辑表达能力,为将来的毕业设计和答辩做铺垫;另一方面,通过听取其他同学的设计方案,我们可以在小组其他成员身上学习到很多,还可以取长补短、查缺补漏。报告书写不仅可以让我们熟悉论文格式而且能够培养我们严谨的工作态度。参考文献1 王思明、张金敏、张鑫等.单片机原理及应用系统设计M.北京科学出版社,20122 冯博琴、吴宁.微型计算机原理与接口技术M.北京清华大学出版社,20073 李守中.51单片机开发入门与经典实例M.北京人民邮电出版社,20074 李平.单片机入

9、门与开发M.北京机械工业出版社,20085 胡汉才.单片机原理与接口技术M.北京清华大学出版社,1996附录:;=;单片机内存分配申明!SIGN BIT 00H IN EQU P3.3 DIVDLL DATA 21H DIVDLH DATA 22HDIVDHL DATA 23HDIVDHH DATA 24HDIVL DATA 25H DIVH DATA 26HTEMPL DATA 27H TEMPH DATA 28HTEMPER_H EQU 29H TEMPER_L EQU 2AH FLAG1 EQU 30H LCD_CMD_WR EQU 8000H LCD_DATA_WR EQU 8001H

10、 LCD_BUSY_RD EQU 8002H LCD_DATA_RD EQU 8003H LCD_CLS EQU 1 LCD_HOME EQU 2 LCD_SETMODE EQU 4 LCD_SETVISIBLE EQU 8 LCD_SHIFT EQU 16 LCD_SETFUNCTION EQU 32 LCD_SETCGADDR EQU 64 LCD_SETDDADDR EQU 128 ;= 主程序开始 = ORG 0000H LJMP START ORG 30HSTART: MOV SP,#60H LCALL INIT ;初始化液晶显示器MAIN: LCALL GET_TEMPER ;调用

11、读温度子程序 MOV A,TEMPER_H ;读温度值高8位 JNB ACC.7,M1 ;温度为正值则转移 SETB SIGN ;设置温度值为负数 MOV A,TEMPER_L ;求温度值的补码 CPL A ADD A,#1 MOV TEMPER_L,A MOV A,TEMPER_H CPL A ADDC A,#0 MOV TEMPER_H,A SJMP M2M1: CLR SIGN ;温度值为正数M2: MOV R2,TEMPER_H MOV R3,TEMPER_L ;待转换的温度值送R2R3 MOV R6,#03H MOV R7,#0E8H ;乘数1000送R6R7 LCALL DMUL

12、;温度值*1000,结果在R4R5R6R7中 MOV A,#5 LCALL JIAFA ;为实现四舍五入将乘的结果+5 MOV DIVDHH,R4 MOV DIVDHL,R5 MOV DIVDLH,R6 MOV DIVDLL,R7 ;运算结果送被除数单元 MOV DIVH,#0 ;除数为160 MOV DIVL,#160 LCALL CHUFA ;得到乘10以后的温度值 MOV R6,DIVDLH MOV R7,DIVDLL LCALL H2B ; MOV A,#T LCALL WRDATA ;显示字母“T” MOV A,#= LCALL WRDATA ;显示字母“=” JNB SIGN,M3

13、 ;温度为正值则转移 MOV A,#- LCALL WRDATA ;显示负号M3: MOV A,R3 JZ M31 ;不显示无效零 ORL A,#30H ;将温度值转换为ASCII码 LCALL WRDATAM31: MOV A,R4 SWAP A ANL A,#0FH JZ M32 ;不显示无效零 ORL A,#30H LCALL WRDATA SJMP M33M32: MOV A,R3 JZ M33 MOV A,#0 LCALL WRDATAM33: MOV A,R4 ANL A,#0FH ORL A,#30H LCALL WRDATA MOV A,#. ;显示小数点 LCALL WRDA

14、TA MOV A,R5 SWAP A ANL A,#0FH ORL A,#30H LCALL WRDATA MOV A,R5 ANL A,#0FH ORL A,#30H LCALL WRDATA MOV A,#0DFH ;显示“” LCALL WRDATA MOV A,#C ;显示“C” LCALL WRDATA MOV A,#20H ;显示空格以便于清除上次显示在该位置的字符 LCALL WRDATA MOV A,#2 ;显存地址指针清零,光标回到行首 LCALL WRCMD MOV R5,#4 M4: MOV R6,#250M5: LCALL D1MS DJNZ R6,M5 DJNZ R5

15、,M4 LJMP MAIN;= 主程序结束 =;=; 液晶显示器初始化;=INIT: MOV A,#30H ;8位、1行、5*7字符方式 LCALL WRCMD MOV A,#LCD_SETVISIBLE+4 ;打开显示 LCALL WRCMD MOV A,#LCD_SETDDADDR ;开始显示的位置在最左边 LCALL WRCMD MOV A,#LCD_SETMODE+3 ;增量方式,光标移动 LCALL WRCMD RETCLS: MOV A,#LCD_CLS LCALL WRCMD MOV A,#LCD_SETDDADDR ;开始显示的位置在最左边 LCALL WRCMD RETWRC

16、MD: MOV DPTR,#LCD_CMD_WR MOVX DPTR,A SJMP WTBUSYWRDATA: MOV DPTR,#LCD_DATA_WR MOVX DPTR,AWTBUSY: MOV DPTR,#LCD_BUSY_RD MOVX A,DPTR JB ACC.7,WTBUSY RETGET_TEMPER: SETB IN LCALL INIT_1820 ;先复位DS18B20 JB FLAG1,TSS2 RET ;判断DS1820是否存在?若不存在则返回TSS2: MOV A,#0CCH ; 跳过ROM匹配 LCALL WRITE_1820 MOV A,#44H ; 发出温度转

17、换命令 LCALL WRITE_1820 LCALL D1MS ;DISPLAY LCALL INIT_1820 ;准备读温度前先复位 MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE_1820 MOV A,#0BEH ;发出读温度命令 LCALL WRITE_1820 LCALL READ_18200 ; RETINIT_1820: SETB IN NOP CLR IN ;主机发出延时537微秒的复位低脉冲 MOV R1,#3TSR1: MOV R0,#107 DJNZ R0,$ DJNZ R1,TSR1 SETB IN ;然后拉高数据线 NOP NOP NOP MOV R0

18、,#25HTSR2: JNB IN,TSR3 ;等待DS18B20回应 DJNZ R0,TSR2 LJMP TSR4 ; 延时TSR3: SETB FLAG1 ; 置标志位,表示DS1820存在 LJMP TSR5TSR4: CLR FLAG1 ; 清标志位,表示DS1820不存在 LJMP TSR7TSR5: MOV R0,#117TSR6: DJNZ R0,TSR6 ; 时序要求延时一段时间TSR7: SETB IN RETWRITE_1820: MOV R2,#8 ;一共8位数据 CLR CWR1: CLR IN MOV R3,#6 DJNZ R3,$ RRC A MOV IN,C MO

19、V R3,#23 DJNZ R3,$ SETB IN NOP DJNZ R2,WR1 SETB IN RETREAD_18200: MOV R4,#2 ; 将温度高位和低位从DS18B20中读出 MOV R1,#TEMPER_L ; RE00: MOV R2,#8 ;数据一共有8位RE01: CLR C SETB IN NOP NOP CLR IN NOP NOP NOP SETB IN MOV R3,#9RE10: DJNZ R3,RE10 MOV C,IN MOV R3,#23RE20: DJNZ R3,RE20 RRC A DJNZ R2,RE01 MOV R1,A DEC R1 DJN

20、Z R4,RE00 RETD1MS: MOV R7,#80 DJNZ R7,$ RETDMUL: MOV A,R3 MOV B,R7 MUL AB XCH A,R7 MOV R5,B MOV B,R2 MUL AB ADD A,R5 MOV R4,A CLR A ADDC A,B MOV R5,A MOV A,R6 MOV B,R3 MUL AB ADD A,R4 XCH A,R6 XCH A,B ADDC A,R5 MOV R5,A MOV F0,C MOV A,R2 MUL AB ADD A,R5 MOV R5,A CLR A MOV ACC.0,C MOV C,F0 ADDC A,B M

21、OV R4,A RETJIAFA: ADD A,R7 MOV R7,A CLR A ADDC A,R6 MOV R6,A CLR A ADDC A,R5 MOV R5,A CLR A ADDC A,R4 MOV R4,A RETCHUFA: MOV A,DIVH ;除数为零? ORL A,DIVL JNZ DIVD0 SETB OV ;为零,置溢出标志 RETDIVD0: MOV TEMPL,#0 MOV TEMPH,#0 MOV B,#32DIVD1: CLR C MOV A,DIVDLL RLC A MOV DIVDLL,A MOV A,DIVDLH RLC A MOV DIVDLH,A

22、MOV A,DIVDHL RLC A MOV DIVDHL,A MOV A,DIVDHH RLC A MOV DIVDHH,A MOV A,TEMPL RLC A MOV TEMPL,A XCH A,TEMPH RLC A XCH A,TEMPH MOV F0,C SUBB A,DIVL MOV R7,A MOV A,TEMPH SUBB A,DIVH ANL C,/F0 JC DIVD2 MOV TEMPL,R7 MOV TEMPH,A INC DIVDLLDIVD2: DJNZ B,DIVD1 CLR OV RETH2B: CLR A ;BCD码初始化 MOV R3,A MOV R4,A MOV R5,A MOV R2,#10H ;转换双字节十六进制整数 HB3: MOV A,R7 ;从高端移出待转换数的一位到CY中 RLC A MOV R7,A MOV A,R6 RLC A MOV R6,A MOV A,R5 ;BCD码带进位自身相加,相当于乘2 ADDC A,R5 DA A ;十进制调整 MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A MOV A,R3 ADDC A,R3 MOV R3,A DJNZ R2,HB3 ;处理完16bit RET END

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1