基于AT89S52单片机的数字温度计设计_第1页
基于AT89S52单片机的数字温度计设计_第2页
基于AT89S52单片机的数字温度计设计_第3页
基于AT89S52单片机的数字温度计设计_第4页
基于AT89S52单片机的数字温度计设计_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

基于AT89S52单片机的数字温度计设计一 引言在生活和生产中,经常要用到一些测温设备,但是传统的测温设备具有制作成本高、硬件电、和软件设计复杂等缺点。基于AT89S52单片机的数字温度计具有制作简单、成本低、读数方便、测温范围广和测温准确等优点,应用前景广阔。二 项目要求基于AT89S52单片机的数字温度计设计具体要求如下:(1)温度值用LED显示。(2)围为-30100,且测量误差不得大于0.5。(3)成本的体积、质量要尽可能小。三 系统设计1 框图设计根据设计要求分析,基于AT89S52单片机的数字温度计设计由AT89S52单片机控制器、电源、显示电路、温度传感器、复位电路和时钟电路组成,系统框图如图1所示。电源给整个电路供电,显示电路显示温度值,时钟电路为AT89S52提供时钟频率。传感器采用美国DALLAS半导体公司生产的一种智能温度传感器DS18B20,其测温范围为-55125,最高分辨率可达0.0625,完全符合设计要求。电源复位电路时钟电路AT89S52控制器显示电路DS18B20图一 基于AT89S52单片机的数字温度计系统框图2 知识点本项目需要通过学习和查阅资料,掌握和了解如下知识:l +5V电源原理及设计。l 单片机复位电路工作原理及设计。l 单片机晶振电路工作原理及设计。l 按键电路的设计。l 数码管的特性及使用。l DS18B20的特性及使用。l 74LS07的特性及使用。l AT89S52单片机引脚。l 单片机C语言程序设计。四 硬件设计1 电路原理图控制器使用单片机AT89S52,测温传感器使用DS18B20,用4位共阳极LED数码管以动态扫描法实现温度显示,电路图可见仿真图所示。2 元件清单基于AT89S52单片机的数字温度计元件清单如表1所示。表1 基于AT89S52单片机的数字温度计元件清单元件名称型号数量个用途单片机AT89S521控制核心晶振12MHZ1晶振电路电容30Pf2晶振电路电解电容10F10V1复位电路电阻1K5复位电路上拉电阻集成块74LS071显示驱动集成块DS18B201显示驱动集成块DS18B201测温电路电阻4.7 K1复位电路按键+5V0.5A1复位电路电源4位1提供+5V七段4位1显示电路数码管电阻4.7 K1测温电路五 软件设计1 程序流程图主程序的主要功能是负责温度的实时显示、读出并处理DS18B20测量的当前温度值,温度测试每1S进行一次。这样可以在1S之内测量一次被测温度,其程序流程图如图3所示。读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写,其程序流程图如图4所示。初始化调用显示子程序1S到?读出温度值温度计算处理显示数据刷新发温度转换开始命令初次上电NYYN发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?移入温度暂存器结束图3 主程序流程图图4 读温度流程图温度转换命令子程序主要是发温度转换开始命令,采用12位分辨率转换时间约为750ms。程序设计中采用1s显示程序延时等待转换的完成。计算温度子程序将RAM中读取值进行BCD码地转换运算,并进行温度值正负的判定,显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。2 程序清单基于AT89S52单片机的数字温度计程序清单如下:#include reg51.h#include intrins.h /延时函数用#define Disdata P1 /段码输出口#define discan P3 /扫描口#define uchar unsigned char#define uint unsigned intsbit DQ=P37; /温度输入口sbit DIN=P17; /LED小数点控制uint h;uchar code ditab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;/温度小数部分用查表法uchar code dis_712=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf;/* 共阳LED段码表 0 1 2 3 4 5 6 7 8 9 不亮 - */ uchar code scan_con4=0xfe,0xfd,0xfb,0xf7; / 列扫描控制字uchar data temp_data2=0x00,0x00; / 读出温度暂放uchar data display5=0x00,0x00,0x00,0x00,0x00;/显示单元数据,共4个数据,一个运算暂存用void delay(uint t)/11微秒延时函数for(;t0;t-);scan()/显示扫描函数char k; for(k=0;k0; i-) /DQ=1;_nop_();_nop_(); DQ = 0;_nop_();_nop_();_nop_();_nop_();_nop_();/5usDQ = val&0x01; /最低位移出delay(6); /66usval=val/2; /右移一位DQ = 1;delay(1); uchar read_byte(void)/从总线上读取一个字节uchar i;uchar value = 0;for (i=8;i0;i-)DQ=1;_nop_();_nop_();value=1;DQ = 0; /_nop_();_nop_();_nop_();_nop_(); /4usDQ = 1;_nop_();_nop_();_nop_();_nop_(); /4us if(DQ)value|=0x80;delay(6); /66usDQ=1;return(value);read_temp()/读出温度函数ow_reset(); /总线复位write_byte(0xCC); / 发Skip ROM命令write_byte(0xBE); / 发读命令temp_data0=read_byte(); /温度低8位temp_data1=read_byte(); /温度高8位ow_reset();write_byte(0xCC); / Skip ROMwrite_byte(0x44); / 发转换命令work_temp()/温度数据处理函数uchar n=0; /if(temp_data1127) temp_data1=(256-temp_data1);temp_data0=(256-temp_data0);n=1;/负温度求补码display4=temp_data0&0x0f;display0=ditabdisplay4;display4=(temp_data0&0xf0)4)|(temp_data1&0x0f)4);/display3=display4/100;display1=display4%100;display2=display1/10;display1=display1%10;if(!display3)display3=0x0A;if(!display2)display2=0x0A;/最高位为0时都不显示if(n)display3=0x0B;/负温度时最高位显示-main()/主函数Disdata=0xff; /初始化端口discan=0xff;for(h=0;h4;h+)displayh=8;/开机显示8888ow_reset(); / 开机先转换一次write_byte(0xCC); / Skip ROMwrite_byte(

温馨提示

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

评论

0/150

提交评论