基于51单片机数字温度计.doc

上传人:飞****2 文档编号:63853669 上传时间:2022-11-27 格式:DOC 页数:27 大小:414KB
返回 下载 相关 举报
基于51单片机数字温度计.doc_第1页
第1页 / 共27页
基于51单片机数字温度计.doc_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《基于51单片机数字温度计.doc》由会员分享,可在线阅读,更多相关《基于51单片机数字温度计.doc(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 单片机原理及应用课程设计 题 目 基于单片机的数字温度计 学院名称 指导老师 班 级 学 号 学生姓名 2013年12 月28日单片机原理及应用课程设计任务书1课程设计的内容和要求(包括原始数据、技术要求、工作要求等):课程设计目的: 1.理解掌握MCS-51系列单片机的功能和实际应用。 2.掌握仿真开发软件的使用。 3.掌握数字式温度计电路的设计、组装与调试方法。设计的目标及要求: 1.设计基于MCS-51系列单片机数字温度计 2.设计A/D转换电路 3.设计数码管显示电路 4.进一步熟悉proteus,protel,word软件功能和使用方法。 2对课程设计成果的要求包括图表(或实物)等

2、硬件要求: 设计电路,安装调试或仿真,分析实验结果; 并写出设计说明书,语言流畅简洁,文字不得少于3500字; 使用Protel软件绘出原理图(SCH)和印制电路板(PCB),器件的选择要有计算依据。3主要参考文献:1单片机基础实用教程.尹念东.中国地质大学出版社. 20052数字电路与数字电子技术. 岳怡. 西北工业大学出版社. 2004 3单片级高级语言C51应用程序设计. 徐爱钧.电子工业出版社. 20014课程设计工作进度计划:序号起 迄 日 期工 作 内 容1 12.15-12.16方案设计2 12.17-12.18电路设计3 12.19-12.21软件设计4 12.22-12.23

3、软件联调5 12.24-12.25系统仿真6 12.26-12.28完成报告主指导教师日期: 2013年 12月 28日 目录1.绪论12.设计目的13.设计正文14.系统各模块介绍24.1 AT89C52芯片介绍24.2温度检测电路设计64.3显示电路85.系统软件设计95.1主程序流程图95.2 温度检测数据读取图106.编程与仿真116.1 Keil软件116.2 仿真软件Proteus116.3仿真界面127.结论13参考文献14附录151.绪论随着时代的发展,控制智能化,仪器小型化,功耗微量化得到广泛关注。单片机控制系统无疑在这些忙面起到了举足轻重的作用。单片机的应用系统设计业已成为

4、新的技术热点,其中数字温度计就是一个典型的例子。随着人们生活水平的提高,人们对各种测量器具的智能化、多功能化提出了更高的要求,而电子技术的飞速发展使得单片机在各种测量产品领域中的应用越来越广泛。把以单片机为核心,开发出来的各种测量及控制系统作为测量产品的主要部分,使各种测量产品更具智能化、拥有更多功能、便于人们操作和使用,更具时代感,这是测量产品的发展方向和趋势所在。这就要求我们的生产具有自动控制系统,自动控制主要是由计算机的离线控制和在线控制来实现的,离线应用包括利用计算机实现对控制系统总体的分析、设计、仿真及建模等工作;在线应用就是以计算机代替常规的模拟或数字控制电路使控制系统“软化”,使

5、计算机位于其中,并成为控制系统、测试系统及信号处理系统的一个组成部分,这类控制由于计算机要身处其中,因此对计算机有体积小、功耗低、价格低廉以及控制功能强有很高的要求,为满足这些要求,应当使用单片机。单片机在电子产品中应用的广泛,在很多的电子产品中也用到了温度检测和温度控制,但那些温度检测与控制电路通常较复杂,成本也高,本设计提供了一种低成本的利用单片机多余IO口实现的温度检测电路,该电路非常简单,且易于实现,并且适用于几乎所有类型的单片机。2.设计目的温度作为一个重要的物理量,是工业生产过程中最普遍、最重要的工艺参数之一,所以温度测量技术和测量仪器的研究是一个重要的课题。随着时代的进步和发展,

6、单片机技术已经伸入到各个领域,基于单片机数字温度计与传统的温度计相比,具有读数方便,测温范围广,其输出温度采用数字显示。本次设计目是利用51单片机及温度传感器设计一个温度采集系统,通过学过的单片机和数字电路及面向对象编程等课程的知识设计。要求的功能是能通过温度传感器采集的数据在液晶屏显示,采集的温度达一定的精度。3.设计正文系统的硬件电路包括微控制器部分(主机),温度检测,显示三个主要部分。温度检测部分采用DS18B20这个芯片大大简化了温度检测模块的设计,它无需A/D转换,可直接将测得的温度值以二进制形式输出。单片机主要控制LCD显示器显示正确的温度值,LCD显示器实现显示功能。系统结构框图

7、和硬件原理图分别如图2.1所示。DS18B20温度采集89C51数据处理提供基准温度LCD1602显示图2.1 基准系统结构框图DS18B20是美国达拉斯半导体公司生产的新型温度检测器件,它是单片结构,无需外加A/D即可输出数字量,通讯采用单线制,同时该通讯线还可兼作电源线,即具有寄生电源模式。它具有体积小、精度易保证、无需标定等特点,特别适合与单片机合用构成智能温度检测及控制系统。4.系统各模块介绍4.1 AT89C52芯片介绍本设计以AT89C52单片机系统为核心。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位 I/O 口线,看门狗定时器,2个数据指针,三个

8、16位定时器/计数器,一个6 向量2 级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。AT89C52的引脚图如图4.1所示。 图4.1 AT89C52芯片引脚图0口:P0口是一个8位漏极开路的双向 I/O 口。作为输出口,每位能驱动8个TTL 逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校时,需要外部上拉电阻。P1口:P1口是一个具有内部

9、上拉电阻的8位双向 I/O 口,p1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P2口:P2口是一个具有内部上拉电阻的8位双向 I/O 口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行 MOVX DPTR)时,P2口送出高八位地址。P3口:P3口是一个具有内部上拉

10、电阻的8位双向 I/O 口,p2输出缓冲器能驱动4个TT逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89C52特殊功能(第二功能)使用AT89C52的P3口的第二功能表如表4.2所示。脚号第二功能P3.0RXD(串行输入)P3.1TXD(串行输出)P3.2INT0(外部中断 0)P3.3INT0(外部中断 0)P3.4T0(定时器 0 外部输入)P3.5T1(定时器 1 外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器写选通) 表4.2 AT8

11、9C52的P3口的第二功能表RST: 复位输入。晶振工作时,RST 脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址 8EH)上的 DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。PSEN:外部程序存储器

12、选通信号(PSEN)是外部程序存储器选通信号。当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA 必须接GND。为了执行内部程序指令,EA 应该接VCC。在flash编程期间,EA 也接收12V编程电源( VPP)。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。(2)晶振电路晶振电路是单片机的最小系统的组成部分。典型的晶振取11.0592MHz(因为可以准确地得到96

13、00波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作)。特别注意:对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;当接低电平时,复位后直接从外部ROM的0000H开始执行。(3)复位电路复位电路也是单片机的最小系统的组成部分。当单片机系统在运行中,受到环境干扰出现程序执行错乱的时候,按下复位按钮内部的程序自动从头开始执行。复位电路的原理是单片机RST引脚接收到2us以上的电平信号,只要保证电容的充放电时间大于2US,即可实现复位,所以电路中的电容值是可以改变的。按键按下系统复位,是电容处于一个短路电路中,

14、释放了所有的电能,电阻两端的电压增加引起的。单片机最小系统如图4.3所示。 图4.3 单片机最小系统图4.2温度检测电路设计 DS18B20是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。DS18B20的性能特点如下:(1)独特的单线接口仅需一个端口引脚进行通讯(2)简单的多点分布应用(3)无需外部器件(4)可通过数据线供电(5)零待机功耗(6)测温范围-55+125,以0.5递增。华氏器件-67+2570F,以0.90F 递增(7)温度以9 位数字量读出(8)温度数字

15、量转换时间200ms(典型值)(9)用户可定义的非易失性温度报警设置(10)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件。DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。D电源下,也可以向器件提供电源;GND为地信号;VDD为可选择的VDD引脚。当工作于寄生电源时,次引脚必须接地。测温电路:如图4.4DS18B20测温电路 图4.4 DS18B20测温电路DS18B20的测温原理如图4.5所示,图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡

16、频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器 1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的

17、累加,此时温度寄存器中的数值即为所测温图5.3.3中的斜率累加器用于补偿和修正测温过程中的非线性其输出用,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。另外,由于DS18B20单线通信功能是分时完成的,有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。在正常测温情况下,DS1820的测温分辨力为0.5。 图4.5测温原理4.3显示电路 1602LCD液晶屏为5V电压驱动,带背光,可显示两行,每行1

18、6个字符,不能显示汉字。液晶1、2端为电源;15、16为背光电源;为防止直接加5V而烧坏背光灯,在15脚串联一个1K电阻晶3端为液晶对比度调节端,通过一个10K的电位器来调节液晶显示对比度。用于限流。液液晶4端为向液晶控制器写数据/写命令选择端,接单片机P1.0端口。液晶5端为读/写选择端,因为我们不需要从液晶中读取数据,只向其写入命令和数据,因此此端始终选择为写状态,即低电平接地。液晶6端为使能信号,是操作必须的信号,接单片机的P1.1口。1602LCD液晶屏显示电路如图4.6所示: 图4.6 显示电路5.系统软件设计5.1主程序流程图 主程序流程图如图5.1 图5.1 主程序流程图5.2

19、温度检测数据读取图 温度检测数据读取图如图5.2 图5.2 温度程序读取图6.编程与仿真6.1 Keil软件 Keil C51是美国Keil software 公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil需要win98、NT、win2000、winXP、win7等操作系统。2009年2月发布的Keil uVision4,Keil uVisio

20、n4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方,新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁、高效的环境来开发应用程序。6.2 仿真软件ProteusProteus软件是Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteu

21、s是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。6.3仿真界面仿真如图所示:图6.1为温度检测部分;图6.2为显示部分。 图6.1 温度检测部

22、分 图6.2 显示部分由图6.1和图6.2可以看出检测温度与显示温度一致。电路仿真成功。 7.结论 本次课设对我来说是一次难得的经历,首先是第一次接触了仿真软件Protel,在使用时经历了很多次失败,因为这款软件与以前使用的各种软件有很多不同,使用时不停出错,接线时由于元件放置不合理而接的杂乱无章;输入源程序时还较为顺利,显示结果比较满意。其次是程序设计,我们在参考别人成功先例的基础上根据自己设计的需要编制程序,我的收获是,编程一定要细心,针对每一个细节,稍有疏忽,程序就不能正常工作。我前期花了一些时间专门学习DS18B20的工作原理的时序图。在这次的实践与学习中,尽管期间困难重重,但我还是从

23、中学习了不少新的知识与技能和解决困难的方法,也终于体验到了经历困难到最终获得成功的那种无以言表的喜悦之情总之,本次课设是我收获最多的一次。参考文献1温度传感器和一线总线协议.林继鹏.传感器技术.20022单总线数字温度传感器的自动识别技术 .罗文广.电子产品世界.20023单片机基础实用教程.尹念东.中国地质大学出版社. 20054数字电路与数字电子技术. 岳怡. 西北工业大学出版社. 2004 5单片级高级语言C51应用程序设计. 徐爱钧.电子工业出版社. 2001附录源程序#include /头文件#define uchar unsigned char #define uint unsig

24、ned intsbit rs=P20;sbit lcden=P21; /液晶使能端sbit DATA = P37; /DS18B20接入口uchar FLAG_DIS=0;uchar bai_18b20,shi_18b20,ge_18b20,num; /定义变量bit flag_Negative_number ;/负数标志uchar code table=tempreture: ; /提示语/*一毫秒定时*/void delay_ms(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/*延时子函数*/void delay(uint num)whil

25、e(num-) ;/*液晶写命令*/void write_lcd_com(uchar com)rs=0;lcden=0;P0=com;delay_ms(1);lcden=1;delay_ms(1);lcden=0;/*液晶写数据*/void write_lcd_date(uchar date)rs=1;lcden=0;P0=date;delay_ms(1);lcden=1;delay_ms(1);lcden=0;/*液晶初始化程序*/void lcd_init()write_lcd_com(0x38);write_lcd_com(0x0c);write_lcd_com(0x06);write_

26、lcd_com(0x01);/*DS18b20温度传感器函数*/void Init_DS18B20(void) /传感器初始化 uchar x=0; DATA = 1; /DQ复位 delay(10); /稍做延时 DATA = 0; /单片机将DQ拉低 delay(80); /精确延时 大于 480us /450 DATA = 1; /拉高总线 delay(20); x=DATA; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(30);/*温度传感器读一个字节*/ReadOneChar(void)uchar i=0;uchar dat = 0;for (i=8;i0;

27、i-) DATA = 0; / 给脉冲信号 dat=1; DATA = 1; / 给脉冲信号 if(DATA) dat|=0x80; delay(8); return(dat);/*温度传感器写一个字节*/void WriteOneChar(uchar dat) uchar i=0; for (i=8; i0; i-) DATA = 0; DATA = dat&0x01; delay(10); DATA = 1; dat=1; delay(8);/*读取温度传感器温度*/int ReadTemperature(void)uchar a=0;uchar b=0;int t=0;float tt=

28、0;Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0x44); /启动温度转换Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器)前两个就是温度a=ReadOneChar();/低位b=ReadOneChar();/高位t=b;t=8;t=t|a;if(b&0x80) t=t+1;flag_Negative_number = 1; else flag_Negative_number = 0; tt=t*0.

29、0625;t= tt*10+0.5; return(t);/*液晶显示温度*/void dis_D18B20(void)int temp;temp=ReadTemperature();/读温度bai_18b20=temp%1000/100;/显示十位shi_18b20=temp%100/10;/显示个位ge_18b20=temp%10;/显示十分位if(flag_Negative_number) /负数if(bai_18b20=0) /十位为0,则不显示十位write_lcd_com(0x80+0x40);write_lcd_date(0x2D);write_lcd_date(0x30+shi

30、_18b20);write_lcd_date(0x30+ge_18b20);write_lcd_date(0xDF);write_lcd_date(0x43);elsewrite_lcd_com(0x80+0x40);write_lcd_date(0x2D);write_lcd_date(0x30+bai_18b20);write_lcd_date(0x30+shi_18b20);write_lcd_date(0xDF);write_lcd_date(0x43);else /正数if(bai_18b20=0) /十位为0,则不显示十位write_lcd_com(0x80+0x40);write

31、_lcd_date(0x30+shi_18b20);write_lcd_date(0x2E);write_lcd_date(0x30+ge_18b20);write_lcd_date(0xDF);write_lcd_date(0x43);elsewrite_lcd_com(0x80+0x40);write_lcd_date(0x30+bai_18b20);write_lcd_date(0x30+shi_18b20);write_lcd_date(0x2E);write_lcd_date(0x30+ge_18b20);write_lcd_date(0xDF);write_lcd_date(0x4

32、3);void main()lcd_init();TMOD=0x01;TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1;ET0=1; EA=1; /开总中断write_lcd_com(0x80);for(num=0;num11;num+)write_lcd_date(tablenum);/delay_ms(10);/dis_D18B20();while(1)if(FLAG_DIS=1) FLAG_DIS=0;dis_D18B20(); /读温度并显示timer0() interrupt 1 / uchar count; TH0=(65536-50000)/256; TL0=(65536-50000)%256;count+;if(count=60)/每三秒钟读一次温度传感器温度FLAG_DIS=1;count=0; 电路总原理图

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁