数字温度计设计_第1页
数字温度计设计_第2页
数字温度计设计_第3页
数字温度计设计_第4页
数字温度计设计_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机原理与应用技术课程设计报告(论文)基于单片机控制的数度温度计专业班级: 姓名:学 号:指导教师:2014年 12 月 08 日基于单片机控制的数字温度计一设计要求(一)基本功能1. 测温范围-501102. 精度误差不大于0.13. LED数码直读显示 (二)扩展功能1实现语音报数2可以任意设定温度的上下限报警功能二计划完成时间 三周1第一周完成软件和硬件的整体设计,同时按要求上交设计报告一份。2第二周完成软件的具体设计和硬件的制作。3第三周完成软件和硬件的联合调试。基于单片机控制的数度温度计电气125 贺娇娇摘要:本设计选择82c52为核心控制元件,设计一个数字温度计。随着时代的进步和

2、发展,单片机技术已经普及到我们生活、工作、科研 、各个领域,已经成为一种比较成熟的技术。本文主要介绍了一个基于 89S51 单片机的测温系统,详细描述了利用数字温度传感器 DS18B20 开发测温系统的过程 ,重点对传感器在单片机下的硬件连接 ,软件编程以及各模块系统流程进行了详尽分析,特别是数字温度传感器 DS18B20 的数据采集过程。对各部分的电路也一一进行了介绍,该系统可以方便的实现实现温度采集和显示,并可根据需要任意设定上下限报警温度 ,它使用起来相当方便 ,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点 ,适合于我们日常生活和工 、农业生产中的温度测量 ,也可以当作温度处理模块

3、嵌入其它系统中,作为其他主系统的辅助扩展。AT89c52和DS18b20结合实现最简温度检测系统,该系统结构简单 ,抗干扰能力强 ,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。关键词: 单片机DS18B20温度传感器 数字温度计 AT89S521 引言 随着人们生活水平的提高,单片机的应用也越来越广泛,在日常生活中,与温度有关的也常见,例如:烧开水的锅炉需要测温度、家庭用的电磁炉需要测温度等等;所以数字温度计也普遍存在于人们的生活当中,而本电路就是结合这种思路和参考一些资料所设计的电路,这种电路可以很方便的应用到我们的现实生活中,为人们带来便利。本文主要从单片机的应用上来实现温度的测量

4、及显示。2 总体设计方案利用单片机STC89C52单片机作为本系统的中控模板。单片机可由DS18B20读出来的数据利用软件来进行处理,从而把数据传输到LED数码管显示模块中,实现温度的显示。2.1 设计思路方案一由于本设计是测温电路 ,可以使用热敏电阻之类的器件利用其感温效应 ,在将随被测温度变化的电压或电流采集过来 ,进行 A/D 转换后,就可以用单片机进行数据的处理 ,在显示电路上,就可以将被测温度显示出来 ,这种设计需要用到 A/D 转换电路,其中还涉及到电阻与温度的对应值的计算,感温电路比较麻烦 。而且在对采集的信号进行放大时容易受温度的影响出现较大的偏差。2.1 2方案二进而考虑到用

5、温度传感器 ,在单片机电路设计中 ,大多都是使用传感器 ,所以这是非常容易想到的,所以可以采用一只温度传感器 DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,电路简单,精度高,软硬件都以实现,而且使用单片机的接口便于系统的再扩展,满足设计要求。从以上两种方案,很容易看出,采用方案二,电路比较简单,费用较低,可靠性高,软件设计也比较简单,故采用了方案二。2.2 设计方框图温度计电路设计总体设计方框图如图1 所示,控制器采用单片机 AT89S51,温度传感器采用 DS18B20,用 3 位 LED 数码管以串口传送数据实现温度显示。单片机复位AC89C52LED显示报警温度调控健

6、蜂鸣器,指示灯 DS18B20 温度传感器时钟震荡温度传感器DS18B20 温度传感器是美国 DALLAS 半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比 ,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。 DS18B20 的性能特点如下:1、独特的单线接口仅需要一个端口引脚进行通信;2、多个 DS18B20 可以并联在惟一的三线上,实现多点组网功能3、无须外部器件;4、可通过数据线供电,电压范围为 3.05.5;5、零待机功耗;6、温度以或位数字;7、用户可定义报警设置;8、报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器

7、件;9、负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;AT89C52管脚说明VCC:电源 GND:接地 P0口:P0口是一个8位漏级开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0口端口写“1”时,引脚作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。 在flash编程时,P0口也用来接受指令字节:在程序效验时,输出指令字节。程序效验时,需要外部上拉电阻。 P1口:P1口是一个具有内部上拉电阻的8位是双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑电平。对P1口写“1

8、”时,内部上拉电阻的原因,将输出电流ILL。此外,与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输出(P1.1/T2EX),具体如下所示:P1.0 T2(定时/计数器2外部计数脉冲输入),时钟输出 P1.1 T2EX定时/计数2捕获/重装载触发和方向控制 在Flash编程和校验时,P1口接收低8位地址字节。 P2 口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲级可 驱动吸收或输出电流4个TTL逻辑电平。对P2口写“1”时,通过内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻

9、的原因,将输出电流ILL。在访问外部好曾许存储器或用16位地址读取外部数据存储器时,P2口送出高8位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址访问外部数据存储器时,P2口输出P2锁存器的内容。在Flash编程和校验时,P2口接收低8位地址字节和一些控制信号。 P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑电平。对P3口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入端口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流ILL。P3口除了作为一般、的I/O口线外,更重要的是它的第二功能,如

10、下所示:P3.0 RXD(串行输入)P3.1 TXD(串行输出) P3.2 INT0(外部中断0)P3.3 INT1(外部中断1) P3.4 T0(定时器0外部输入)P3.5 T1(定时器1外部输入)P3.6 WR(外部数据存储器写选通) P3.7 RD(外部数据存储器读选通在Flash编程和校验时,P3口也接收一些控制信号。RST:复位输入。晶振工作时,RST脚持续2个机器周期以高电平将使用单片机复位。ALE/PROG:地址锁存器控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在Flash编程时,此引脚(PROG)也使用作编程输入脉冲。 在一般情况下,ALE以晶振六分之一

11、的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作无效。这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位的设置对微控制器处于外部执行模式下无效。 PSEN:外部程序储存器选通信号(PSEN)是外部程序存储器选通信号。当AT89C52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据储存器时,PSEN将不被激活。 /EAVPP:访问外部程序存储器控制信号。为使能从0000HFFF

12、FH的外部程序存储器读取指令,EA端必须保持低电平(接地)。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接受12伏VPP电压。XTA L1:振荡器反相放大器及内部时钟发生器的输入端。TA L2:振荡器反相放大器的输出端3.1主控制器单片机 AT89S51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。晶振采用 12MHZ。复位电路采用上电加按钮复位。图1:晶振电路图2:复位电路3.2 显示电路显示电路采用 4 位共阴极 LED 数码管,P0 口由上拉电阻提高驱动能力 ,作为段码输出并作为数

13、码管的驱动。P2 口的低四位作为数码管的位选端。采用动态扫描的方式显示:数码管显示电路图3:数码管显示电路3.3 温度传感器DS18B20 可以采用两种方式供电 ,一种是采用电源供电方式 ,此DS18B20 的 1 脚接地,2 脚作为信号线,3 脚接电源。另一种是寄生电源供电方式 ,如图 4 所示单片机端口接单线总线,为保证在有效的 DS18B20 时钟周期内提供足够的电流,可用一个 MOSFET 管来完成对总线的上拉。当 DS18B20 处于写存储器操作和温度 A/D 转换操作时,总线上必须有强的上拉 ,上拉开启时间最大为 10us。采用寄生电源供电方式时 VDD 端接地。由于单线制只有一根

14、线,因此发送接口必须是三态的。图4:温度传感器与单片机的连接3.4 报警温度调整按键本系统设计三个按键,采用查询方式,一个用于选择切换设置报警温度和当前温度 ,另外两个分别用于设置报警温度的加和减。均采用软件消抖。图5:按键电路3.5 报警电路通过设置一个上限和下限温度,超出这个温度电路会发出蜂鸣图6 报警电路2.8温度上下限通过这个装置来设置数字温度计的上下限温度图7温度上下限4 结束语通过这次对数字温度计的设计与制作 ,让我了解了设计电路的程序 ,也让我了解了关于数字温度计的原理与设计理念,要设计一个电路总要先用仿真仿真成功之后才实际接线的 。但是最后的成品却不一定与仿真时完全一样 ,因为

15、,再实际接线中有着各种各样的条件制约着。而且,在仿真中无法成功的电路接法 ,在实际中因为芯片本身的特性而能够成功 。所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。参考文献【1】马忠梅,张凯,等 . 单片机的 C 语言应用程序设计(第四版)北京航空航天大学出版社【2】薛庆军,张秀娟,等 .单片机原理实验教程【3】廖常初.现场总线概述J.电工技术,1999.北京航天航空大学出版社【4】张毅刚,彭喜元,彭宇 单片机原理及其应用附录1总电路图PCB图附录2#include<reg52.h>#include <intrins.h>#define uchar unsig

16、ned char #define uint unsigned intsbit DATA = P11; /DS18B20接入口uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/共阴极字型码int temp; /温度值int ss;/中间的一个变量int dd;int j;uchar data b;/定时器中断次数uchar data buf4;/字型显示中间变量int alarmH=320; /默认报警值int alarmL=100;/定义开关的接入口

17、sbit k1=P25;/+sbit k2=P26;/-sbit k3=P27;/确认sbit k4=P24; /切换sbit bell=P10; /蜂鸣器sbit HLight=P12; /正温指示灯sbit LLight=P13; /负温度指示灯sbit warn=P14; /报警指示灯sbit Red=P16; /温度上限设置指示灯sbit Green=P17; /温度下限设置指示灯bit set=0;/初始化bit Flag=0;/设置标志int n;/函数的声明区void key_to1();void key_to2();void delay(uint); void key();vo

18、id Show();/函数的定义区/*延时子函数*/void delay(uint num)while(num-) ;/DS18b20温度传感器所需函数,分为初始化,读写字节,读取温度4个函数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);ReadOneC

19、har(void) /读一个字节uchar i=0;uchar dat = 0;for (i=8;i>0;i-) DATA = 0; / 给脉冲信号 dat>>=1; DATA = 1; / 给脉冲信号 if(DATA) dat|=0x80; delay(8); return(dat);WriteOneChar(unsigned char dat)/写一个字节 uchar i=0; for (i=8; i>0; i-) DATA = 0; DATA = dat&0x01; delay(10); DATA = 1; dat>>=1; delay(8);

20、int ReadTemperature(void) /读取温度uchar a=0;uchar b=0;int t=0;float tt=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;tt

21、=t*0.0625;t= tt*10+0.5; return(t);void display00() /*显示负值子函数 dd=-(temp-1); buf1=dd/100;buf2=dd/100;buf3=dd%100/10;buf0=dd%10;/动态显示for(j=0;j<5;j+) P2=0xff; / 初始灯为灭的 P0=0x00;P2=0xfd; /显示小数点P0=0x80; /显示小数点delay(100); P2=0xff; / 初始灯为灭的 P0=0x00; P2=0xf7; /片选LCD1 P0=0x40;delay(100); P2=0xff; P0=0x00; P

22、2=0xfb; /片选LCD2 P0=tablebuf2;delay(100);P2=0xff; P0=0x00;P2=0Xfd;/片选LCD3P0=tablebuf3;delay(100);P2=0xff; P0=0x00;P2=0Xfe;P0=tablebuf0; /片选LCD4delay(100);P2=0xff; /显示正值子函数void display()buf1=temp/1000;/显示百位buf2=temp/100%10;/显示十位buf3=temp%100/10;/显示个位buf0=temp%10; /小数位for(j=0;j<3;j+) P2=0xff; / 初始灯为

23、灭的 P0=0x00;P2=0xfd; /显示小数点P0=0x80; /显示小数点delay(300); P2=0xff; / 初始灯为灭的 P0=0x00; P2=0xf7; /片选LCD1 P0=tablebuf1;delay(300); P2=0xff; P0=0x00; P2=0xfb; /片选LCD2 P0=tablebuf2;delay(300);P2=0xff; P0=0x00;P2=0Xfd; /片选LCD3P0=tablebuf3;delay(300);P2=0xff; P0=0x00;P2=0Xfe;P0=tablebuf0; /片选LCD4delay(300);P2=0x

24、ff;void key()/按键扫描子程序 if(k1!=1) delay(20); if(k1!=1) while(k1!=1) key_to1(); for(n=0;n<8;n+) Show(); if(k2!=1)delay(20);if(k2!=1) while(k2!=1) key_to2(); for(n=0;n<8;n+) Show(); if(k3!=1)TR0=1; /复位,开定时 temp=ReadTemperature();if(k4!=1) delay(20); if(k4!=1) while(k4!=1); set=!set; if(set=0) Red=0;Green=1; else Green=0;Red=1; void key_to1() TR0=0; /关定时器 temp+=10;if(temp>=1100) temp=-550; if(set=0)alarmH=temp;else alarmL=temp;void key_to2() TR0

温馨提示

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

评论

0/150

提交评论