单片机课程设计温度测试系统设计

上传人:沈*** 文档编号:42559894 上传时间:2021-11-26 格式:DOC 页数:21 大小:178.51KB
收藏 版权申诉 举报 下载
单片机课程设计温度测试系统设计_第1页
第1页 / 共21页
单片机课程设计温度测试系统设计_第2页
第2页 / 共21页
单片机课程设计温度测试系统设计_第3页
第3页 / 共21页
资源描述:

《单片机课程设计温度测试系统设计》由会员分享,可在线阅读,更多相关《单片机课程设计温度测试系统设计(21页珍藏版)》请在装配图网上搜索。

1、课程设计说明书一 概述信息科学和微电子技术的飞速发展给控制领域带来了巨大的飞跃,控制技术更加趋向自动化和智能化,为无数的使用者带来了方便。在控制领域里,温度是一个常见的名词,然而它所带来的技术问题和所起的作用却是非同一般的。在控制领域中,对温度的控制有着举足轻重的作用。例如陶瓷的烧烤,只有控制住温度的适度,才能制作出一件完美的艺术品,否则只是一件废品;还有如酿酒的过程,也需要对温度进行控制。可见,在生活的许多方方面面都有着对温度进行感知和控制的需要。温度是一个十分重要的物理量,对它的测量与控制有十分重要的意义。随着现代工农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度。在

2、人类的生活环境中,温度扮演着极其重要的角色。无论你生活在哪里,从事什么工作,无时无刻不在与温度打着交道。在冶金、钢铁、石化、水泥、玻璃、医药等等行业,可以说几乎80%的工业部门都不得不考虑着温度的因素。温度对于工业如此重要,由此推进了温度传感器的发展。 测量温度的基本方法是使用温度计直接读取温度。最常见到的测量温度的工具是各种各样的温度计,例如,水银玻璃温度计,酒精温度计,热电偶或热电阻温度计等。它们常常以刻度的形式表示温度的高低,人们必须通过读取刻度值的多少来测量温度。而在传统的模拟信号温度测量系统中,测温电路的电磁环境非常恶劣,各种干扰信号较强,模拟温度信号容易受到干扰而产生测量误差,影响

3、测量精度,不能满足数字化时代的需求。利用单片机和温度传感器构成的电子式智能温度计精度高、抗干扰能力强,可扩展性强、集成方便得到了广泛的应用。而且可以直接测量温度,得到温度的数字值,既简单方便,又直观准确,新型数字温度传感器是温度计设计的最有效方案。在生活和生产中,经常要用到一些测温设备。但是传统的测温设备具有制作成本高、硬件电路和软件设计复杂等缺点。基于AT89C51单片机的数字温度计具有制作简单、成本低、读数方便、测温范围广和测温准确等优点,应用前景广阔。大多单片机接口输入的信号是数字信号,或有带AD转换的高端单片机也可以输入模拟信号。由单片机获取非电信号的温度信息,必须通过温度传感器。传统

4、的温度测量虽多以热敏电阻作为温度传感器。但是,热敏电阻的可靠性较差、测量温度精度较低,而且还需经AD转换成数字信号后才能由单片机进行处理。因此,使用数字温度传感器DS18B20了简化硬件设计、方便单片机读取数据、节约成本。 本文主要包括两个方面的设计:一方面是硬件电路的设计,另一方面是系统程序的设计。其中,硬件电路各部分组成如下:中央控制器采用单片机AT89C51,温度检测部分采用DS18B20温度传感器,用四位七段数码管作为显示器。其次,系统软件程序包括主程序,温度值读取、转换程序,显示数据程序等。该温度计整体功能的实现是通过温度传感器DS18B20采集温度信号送该给单片机处理,单片机再把温

5、度数据送液晶显示器1602显示。二 系统设计2.1功能简介数码管直接显示DS18B20所测量的温度,超出-50110范围时喇叭报警并且数码管开始闪烁,在温度范围内时喇叭停止报警并且数码管停止闪烁,运行期间可以随时进行复位操作。2.2设计思路AT89C51作为温度测试系统设计的核心器件,具有低电压供电和体积小等特点。该器件是INTEL公司生产的MCS-5l系列单片机中的基础产品,采用了可靠的CMOS工艺制造技术,具有高性能的8位单片机,属于标准的MCS-51的CMOS产品。芯片中集成了CPU、RAM、ROM、定时/计数器和多功能I/O接口等计算机所需的基本功能部件。程序存储在单片机的程序存储器中

6、,运行过程由程序控制。时钟信号用来控制单片机内各种微操作的时间基准,通常有两种形式得到,即内部震荡方式和外部震荡方式。内部震荡方式所得的信号比较稳定,故设计数字温度计的时钟信号选用内部震荡方式,晶振选用12MHZ。复位电路使片内单片机的片内寄存器初始化,使单片机从一种确定的状态开始运行。复位电路有两种基本形式,即上电复位和开关复位。为了保证温度计的正常工作,采用上电且开关复位,也就是CR复位。温度传感器选用达拉斯公司的单线数字温度传感芯片DS18B20。它将地址线、数据线和控制线合为一根双向串行传输数据的信号线,允许在这根信号线上挂接多个DS18B20。每个芯片内有一个64位的ROM,其中存有

7、各个器件自身的序列号,作为器件独有的ID号码。其测温范围是-55128,测温分辨率在12位时精度为0.0625。DS18B20简化了温度器件与计算机的接口电路,使得电路简单,使用更加方便。显示部分使用4位LED数码管来作为温度的直接输出,使用1位喇叭作为报警灯,当温度超出-50110时,喇叭报警和数码管闪烁来提示。采用单片机汇编程序语言设计温度计的程序,对DS18B20进行初始化、读、写,读取温度,数据的转换,温度显示和报警处理等等。2.3 芯片器材主机:单片机AT89C51一片;温度传感器:DS18B20一片,显示电路:共阴极七段数码管四片,;报警电路:,反向驱动74LS04一片;时钟电路:

8、电容两个,晶振片一个;复位电路:电容一个,开关按钮一个;导线若干,+5V电源等等。三 主要元器件介绍3.1主控芯片AT89C52图1 AT89C51引脚图AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含4kByteISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89C51具有

9、如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。其主要功能

10、特性: 兼容MCS-51指令系统 4k可反复擦写(1000次)ISP Flash ROM 32个双向I/O口 4.5-5.5V工作电压 2个16位可编程定时/计数器 时钟频率0-33MHz 全双工UART串行中断口线 128x8 bit内部RAM 2个外部中断源 低功耗空闲和省电模式 中断唤醒省电模式 3级加密位 看门狗(WDT)电路 软件设置空闲和省电功能 灵活的ISP字节和分页编程 双数据寄存器指针 可以看出AT89C51提供以下标准功能:4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定时器/计数器,一个5向量两级中断结构,

11、一个全双工串行通信口,片内振荡器及时钟。同时, AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数期,串行通信口及中断系统继续工作。掉电方式何在RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直接到一个硬件复位。下面是本次设计所用到的两组I/O口:P0口(3932):是一组8位漏极开路行双向I/O口,也既地址/数据总线复用口。可作为输出口使用时,每位可吸收电流的方式驱动8个TTL逻辑电路,对端口写“1”可作为高阻抗输入输入端用。在访问外部数据存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内

12、部上拉电阻。在Flash编程时,PO口接收指令字节,而在程序校验时,输出指令字节,校验时,要求接上拉电阻。P3口(1017):是一组带有内部上拉电阻的8位双向I/O口,P1的输入缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输出端口。XTAL1(19)和XTAL2(18):使用内部振荡电路时,用来接石英晶体和电容;使用外部时钟时,用来输入时钟脉冲。3.2温度获取DS18B20测温范围在-55+125;转换精度912位进制数,可编程确定转换的位数;测温分辨率为9位精度为0.5,12位精度为0.0625;转换时间:9位精度为93.75ms、

13、10位精度为187.5 ms、12位精度为750 ms;内部有温度上、下限告警设置。DS18B20内部结构2如图3所示:存储和控制逻辑高速暂存器温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC生成器64位ROM和一线端口供电方式图2 DS18B20内部结构DS18B20功能命令2如表1所示:表1 DS18B20功能命令表命令功能描述代码CONVERT启动温度转换44HREAD SCRATCHPAD读取温度寄存器BEHREAD ROM读DS18B20的序列号33HWRITE SCRATPAD将数据写入暂存器的第2、3字节中4EHMATCH ROM匹配ROM55HSEARCH ROM搜索

14、ROMF0HALARM SEARCH报警搜索ECHSKIP ROM跳过读序列号的操作CCHREAD POWER SUPPLY读电源供给方式,0寄生,1外部电源B4H其连线使用如图3所示(2接P3.7):图4 DS18B20连线图 由于DS18B20单线通信功能是分时完成的,所以有严格的时隙概念,读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。3.3温度显示电路四位共阴极数码管,能够显示带一位小数的正负温度。零下时:1显示负号,2显示十位,3显示个位,4显示小数位。零上时:1显示百位,2显示十位

15、,3显示个位,4显示小数位。当温度超过109.5或低于49.5时,四个数码闪烁。图8 总体电路 四 软件设计4.1程序流程图N跳过读序列号的操作YNY读温度命令将温度高、低位读出处理数据到百、十、个、小数位,并在数码管上显示超出限制?报警器报警和数码管闪烁初始化DS18B20开始初始化DS18B20应答脉冲?跳过读序列号的操作发出温度转换的命令等待温度转换完成图9 程序流程图主程序如下:XIAO_BIT EQU 30H ;存个位数据单元GE_BIT EQU 31H ;存个位数据单元SHI_BIT EQU 32H ;存十位数据单元BAI_BIT EQU 33H ;存百位数据单元DI_8BIT E

16、QU 34H ;低8位GAO_8BIT EQU 35H ;高8位DQ EQU P3.7 ;数据通信线ORG 0000HLJMP STARTORG 0030HSTART: MOV SP,#60HLCALL ZHUANHUAN ;调用读温度子程序LCALL CHULILCALL DISPLAY ;调用数码管显示子程序LJMP START4.2初始化子程序使用DS18B20时,单片机先向DS18B20送出复位信号,单片机将数据拉低并保持480960s;再释放数据线,由上拉电阻拉高1560s;然后再由DS18B20发出低电平60240s,就完成了复位操作。DS18B20复位初始化子程序INIT_182

17、0: SETB DQNOPCLR DQMOV R1,#3DU_1: MOV R0,#107DJNZ R0,$DJNZ R1,DU_1SETB DQ ;拉高数据线NOPNOPNOPMOV R0,#25HDU_2: JNB DQ,DU_3 ;等待DS18B20回应DJNZ R0,DU_2LJMP DU_4 ;延时DU_3: SETB F0 ;置标志位,表示DS1820存在LJMP DU_5DU_4: CLR F0 ;清标志位,表示DS1820不存在LJMP DU_7DU_5: MOV R0,#117DU_6: DJNZ R0,DU_6 ;时序要求延时一段时间DU_7: SETB DQRET4.3读

18、子程序读数据之前,单片机先将数据线拉低,再释放。DS18B20在数据线从高电平跳低后15s内将数据送到数据线上。单片机在15s后读数据线。READ_1820: MOV R4,#2 ;将温度高位和低位从DS18B20中读出MOV R1,#DI_8BIT ;低位存入DI_8BIT,高位存入GAO_8BITRE0: MOV R2,#8 ;数据一共有8位RE1: CLR CSETB DQNOPNOPCLR DQNOPNOPNOPSETB DQMOV R3,#9RE2: DJNZ R3,RE2MOV C,DQMOV R3,#23RE3: DJNZ R3,RE3RRC ADJNZ R2,RE1MOV R1

19、,AINC R1DJNZ R4,RE0RET;读出后转换的温度值ZHUANHUAN: LCALL INIT_1820 ;先复位DS18B20JB F0,ZH1LJMP START ;判断DS1820是否存在?若DS18B20不存在则返回ZH1: MOV A,#0CCH ;跳过ROM匹配LCALL WRITE_1820MOV A,#44H ;发出温度转换命令LCALL WRITE_1820LCALL DISPLAY ;等待AD转换结束LCALL INIT_1820 ;准备读温度前先复位MOV A,#0CCH ;跳过ROM匹配LCALL WRITE_1820MOV A,#0BEH ;发出读温度命令

20、LCALL WRITE_1820LCALL READ_1820RET4.4 写子程序在单片机对DS18B20写数据时,应先将数据线拉低1s以上,再写入数据(写1为高,写0为低)。待单片机写入的数据变化1560s后,DS18B20将对数据线采样。单片机写入数据到DS18B20的保持时间为60120s。写DS18B20的子程序WRITE_1820: MOV R2,#8 ;一共8位数据CLR CWR1: CLR DQMOV R3,#6DJNZ R3,$RRC AMOV DQ,CMOV R3,#23DJNZ R3,$SETB DQNOPDJNZ R2,WR1SETB DQRET4.5数据处理子程序先判

21、断温度高8位的CY,如果CY为1,则将高、低8八位求补;对高、低8位的数据按权整合称一个整数,判断是否在-50110之间,否则停留在-50或110;将该数按百、十、个位分别存入相应的存储单元。流程图如图10所示: YYN符号为正?求补码N高、低8位整合成为一个整数存入A中-50110之间?停止分别存入百、十、个、小数位取温度值图10 数据处理流程图数据处理子程序CHULI: CLR 37HMOV A,GAO_8BITJB ACC.7,FUMOV A,DI_8BITMOV B,#16DIV ABMOV 36H,A ;将DI_8BIT的高四位右移四位,存入36H中MOV A,B ;将TEMPER_

22、L的低四位X10/16得小数后一位数MOV B,#10MUL ABMOV B,#16DIV ABMOV 30H,A ;将小数后一位数.存入30H中MOV A,GAO_8BIT ;TEMPER_H中存放高8位数,权重16MOV B,#16MUL ABADD A,36H ; A中存入温度值的整数部分CJNE A,#110,$LJMP ZHENGZHENGZC: CLR P3.6CLR 38HFU: SETB 37HMOV A,DI_8BITCPL AADD A,#1MOV F0,CMOV B,#16DIV ABMOV 36H,A ;将DI_8BIT的高四位右移四位,存入36H中MOV A,B ;将

23、TEMPER_L的低四位X10/16得小数后一位数.MOV B,#10MUL ABMOV B,#16DIV ABMOV 30H,A ;将小数后一位数.存入30H中MOV A,GAO_8BIT ;TEMPER_H中存放高8位数,权重16CPL AMOV C,F0ADDC A,#00HMOV B,#16MUL ABADD A,36H ;A中存入温度值的整数部分CJNE A,#50,$LJMP FU4.6显示子程序将百、十、个、小数位的数据查表,送到对应的数码管显示,程序流程图如11所示:YNYYN温度为负?显示百位,延时显示负号,延时显示十位,延时显示个位,延时显示1000遍?取温度返回显示小数位

24、,延时延时N超过范围?图11 显示程序流程图显示子程序DISPLAY: MOV DPTR,#TABLEMOV R0,#4XUN: MOV R1,#250 ;显示1000次HUAN: JNB 37H,ZHENGMOV A,#10 ;显示-MOVC A,A+DPTRMOV P1,ACLR P3.0LCALL DELAY1SETB P3.0SJMP GO_ONZHENG: MOV A,BAI_BIT ;示温度百位MOVC A,A+DPTRMOV P1,ACLR P3.0LCALL DELAY1SETB P3.0GO_ON: MOV A,SHI_BIT ;显示温度十位MOVC A,A+DPTRMOV

25、P1,ACLR P3.1LCALL DELAY1SETB P3.1MOV A,GE_BIT ;显示温度个位和小数点MOVC A,A+DPTRADD A,#80HMOV P1,ACLR P3.2LCALL DELAY1SETB P3.2MOV A, XIAO_BIT ;显示小数MOVC A,A+DPTRMOV P1,ACLR P3.3LCALL DELAY1SETB P3.3DJNZ R1,HUAN ;250次没完循环DJNZ R0,XUN ;4个250次没完循环JB 38H, DELAY2RETDELAY1: MOV R7,#9DJNZ R7,$RETDELAY2: MOV R4,#10LP1

26、: MOV R5,#200LP2: MOV R6,#126DJNZ R6,$DJNZ R5,LP2DJNZ R4,LP1RETTABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHDB 01000000B ;-END五 课程设计体会这一个礼拜的单片机课程设计已接近尾声,回顾这个过程,收获颇多!在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有有巧妙的程序算法,虽然以前写过几次程序,但我觉得写好一个程序并不是一件简单的事,举个例子,在控制位选择调试时,我刚开始只注意

27、到我用的是P0驱动,所以就给列控制位都送低电平过去,后来调试时发现并不是这样的数码管并没有显示出我想要的数字来,后来在分析硬件时发现我用的是共阴数码管要送高低平过去才行,还有我的温度数据处理函数没有用直接的加减而是用于上一位BCD码来解决,感觉效果比较好,有好多的东西,只有我们去试着做了,才能真正的掌握,只有学习理论有些东西是很难理解的,更谈不上掌握。还有在硬件调试过程中发现程序捎进单片机中就没有一点反应,后来我终于找到问题的所在在选材时就出现了问题了,数码管分压电阻选错了,电阻阻值太大了,导致数码管的电压不足直接导致数码管不亮,后来我换了个电阻小,在调试是数码管就亮了,那是我很兴奋,也很受教

28、训,做任何是都要从刚开始时就认真做起,要一丝不苟,要精心细心,不能有一刻含糊,只有这样才能做好事,做大事!从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。最后,还要感谢我的指导老师和我们热心的同学,在他们的帮助下我的课程设计才能顺利完成,谢谢你们!六 参考文献1杨居义. 单片机课程设计指导. 北京:清华大学出版社.2009年9月2李广弟. 单片机基础. 北京:北京航空航天大学出版. 2007年5月3阎石. 单片机技术与应用基础.北京:高等教育出版社.2006年7月4李朝青. 单片机原理及接口技术. 杭州. 北京航空航天大学出版社.2006年3月5王守中.单片机的开发入门与典型实例. 北京:人民邮电出版社. 2002年8月21

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!