




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机系统开发与应用工程实习报告选题名称: 基于at89s52单片机的数字温度计设计 系(院): 计算机工程学院 专 业: 计算机科学与技术(嵌入式软件设计方向)班 级: 姓 名: 学 号: 指导教师: 学年学期: 2009 2010 学年 第 2 学期2010年 5 月 30 日摘要:随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术, 温度作为一种最基本的环境条件参数, 温度的测量在实际的生产、生活中具有十分重要的意义。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机at89s52,测温传感器使用ds18b20,用4位共阴极led数码管以串口传送数据,实现温度显示,能准确达到要求。ds18b20是一线制智能数字温度传感器,它可将温度信号直接转换成串行数字信号送给微处理器,电路简单,成本低,使用方便。其测温范围为-55125,最高分辨率可达0.0625完全符合要求。关键词:单片机 ; 温度计 ; at89s52 ; ds18b20 ; led数码管目录1项目设计综述21.1项目设计概述21.2项目设计要求21.3项目设计方案22 系统设计32.1 框图设计32.2 ds18b20简介32.3 单片机at89s52简介53 硬件设计63.1电路原理图63.2ds18b20与单片机接口的设计63.3 显示电路接口73.4 其他外围电路84 软件设计104.1 程序设计流程图104.2 程序清单115 系统仿真及调试155.1硬件调试155.2 软件调试15总 结16参考文献1718单片机系统开发与应用工程实习计报告1项目设计综述1.1项目设计概述 在生活和生产中,经常要用到一些测温设备,但是传统的测温设备具有制作成本高、硬件电路和软件设计复杂等缺点。基于at89s52单片机的数字温度计具有制作简单、成本低、读数方便、测温范围广和测温准确等优点,应用前景广阔。1.2项目设计要求基于at89s52单片机的数字温度计设计要求如下:(1) 温度值用4位led数码管显示(2) 测温范围为-30100,且测量误差不得大于0.5(3) 成品的体积、质量要尽可能小。1.3项目设计方案大多单片机接口输入的信号是数字信号,或有带a/d转换的高端单片机也可以输入模拟信号。由单片机获取非电信号的温度信息,必须通过温度传感器。传统的温度测量多以热敏电阻作为温度传感器。但是,热敏电阻的可靠性较差、测量温度精度低,而且还需经a/d转换成数字信号后才能由单片机进行处理。因此,使用数字温度传感器ds18b20可简化硬件设计、方便单片机读取数据、节约成本。 2 系统设计 2.1 框图设计 根据设计要求分析,基于at89s52单片机的数字温度计由at89s52单片机控制器、电源、显示电路、温度传感器、复位电路和时钟电路组成,系统框图如图2-1所示。电源给整个电路供电,显示电路显示温度值,时钟电路为at89s52提供时钟频率。传感器采用美国dallas半导体公司生产的一种智能温度传感器ds18b20,其测温范围为-55125,最高分辨率可达0.0625,完全符合设计要求。图2-1基于at89s52单片机的数字温度计设计框图2.2 ds18b20简介 ds18b20采用dallas公司的单总线数据通信方式专有技术,单根信号线既传输时,又可双向传输数据,占用i/o口资源少,结构简单,成本低廉,便于总线扩展和维护。ds18b20采用3引脚to-92,小体积封装形式,内部使用在板(on2board)专利技术,全部传感元件及转换电路集成在形如一只三极管的集成电路内。3个管脚中,gnd是地信号;dq是数据输入/输出引脚,开漏单总线接口引脚,当被用在寄生电源下,也可以向器件提供电源;vdd是可选择的vdd引脚,当工作于寄生电源时,此引脚必须接地。ds18b20的测量温度范围为-55+125,在-10+85范围内,精度为0.5,可将程序设定912位的分辨率。ds18b20的内部存储器包括1个高速暂存ram和1个非易失性的、可电擦除的e2ram,后者存放高温度和低温度触发器th、tl以及结构寄存器。根据ds18b20的通讯协议, mcu控制ds18b20完成温度转换要经过3个步骤:每一次读写之前都要对ds18b20进行复位,复位成功后发送一条rom指令,最后发送ram指令,对ds18b20进行预定的操作。复位要求mcu将数据线下拉500s,然后放,ds18b20收到信号后等待1660s,发出60240s的存在低脉冲,主cpu收到此信号表示复位成功。由于ds18b20与微处理器间采用串行数据传送,因此,在对ds18b20进行读写编程时,必须严格地保证读写时序,否则将无法读取测温结果。ds18b20的通讯协议定义了初始化时序、读时序、写时序的时序。所有时序都是将mcu作为主设备,ds18b20作为从设备。而每一次命令和数据的传输都是从mcu主动启动写时序开始,如果要求ds18b20回送数据,在进行写命令后,mcu需启动读时序完成数据接收。数据和命令的传输都是低位在先。对ds18b20的读时序分为读0时序和读1时序2个过程。对于ds18b20的读时序是从主机把单总线拉低之后,在15 s之内释放单总线,以ds18b20把数据传输到单总线上。ds18b20完成1个读时序过程至少需要60s。ds18b20的写时序分为写0时序和写1时序。ds18b20对于写0时序和写1时序的要求不同,当写0时序时,单总线要被拉低至少60s,保证ds18b20能够在1545s之间正确地采样i/o总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15s之内释放单总线。 图 2-2 ds18b20 3脚pr-35封装和8脚soic封装外部形状及管脚图 2.3 单片机at89s52简介 at89s52具有如下特点:40个引脚,8k bytes flash片内程序存储器,256 bytes的随机存取数据存储器(ram),32个外部双向输入/输出(i/o)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个 全双工串行通信口,看门狗(wdt)电路,片内时钟振荡器。此外,at89s52设计和配置了振荡频率可为0hz并可通过软件设置省电模式。空闲模式下,cpu暂停工作,而ram定时计数器,串行口,外中断 系统可继续工作,掉电模式冻结振荡器而保存ram的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有pdip、tqfp和plcc等三 种封装形式,以适应不同产品的需求。 主要功能特性: 兼容mcs-51指令系统 8k可反复擦写(1000次)isp flash rom 32个双向i/o口 4.5-5.5v工作电压 3个16位可编程定时/计数器 时钟频率0-33mhz 全双工uart串行中断口线 256x8bit内部ram 2个外部中断源 低功耗空闲和省电模式 中断唤醒省电模式 3级加密位 看门狗(wdt)电路 软件设置空闲和省电功能 灵活的isp字节和分页编程 双数据寄存器指针图2-3 at89s52引脚图3 硬件设计3.1电路原理图 控制器使用单片机at89s52,测温传感器使用ds18b20,用4位共阴极led数码管以动态扫描法实现温度显示,电路图如3-1所示.图3-1基于at89s52单片机的数字温度计电路图3.2ds18b20与单片机接口的设计ds18b20 最大的特点是单总线数据传输方式,ds18b20 的数据i/o 均由同一条线来完成。ds18b20 的电源供电方式有2 种: 外部供电方式和寄生电源方式。工作于寄生电源方式时, vdd 和gnd 均接地, 他在需要远程温度探测和空间受限的场合特别有用, 原理是当1 w ire 总线的信号线dq 为高电平时, 窃取信号能量给ds18b20 供电, 同时一部分能量给内部电容充电, 当dq为低电平时释放能量为ds18b20 供电。但寄生电源方式需要强上拉电路, 软件控制变得复杂(特别是在完成温度转换和拷贝数据到e2prom 时) , 同时芯片的性能也有所降低。外部电源供电方式是ds18b20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。因此本设计采用外部供电方式。如下图所示:at89s51单片机 p3.7ds18b204.7k+5v+5v图3-2 ds18b20接口图3.3 显示电路接口本设计显示电路采用4位共阴极led数码管来显示测量得到的温度值。led数码管能在低电压下工作,而且体积小、重量轻、使用寿命长,因次本设计选用此数码管作为显示器件。一个led数码管只能显示一位的字符,如果字符位数不止一位,可以用几个数码管组成,但要控制多位的显示电路需要有字段控制和字位控制,字段控制是指控制所要显示的字符是什么,控制电路应将字符的七段码通过输出口连接到led的ag引脚,是某些段点亮,某些段处于熄灭状态。字位控制是指控制在多位显示器中,哪几位发光或那几位不发光,字位控制则需要通过字位码作用于led数码管的公共引脚,是某一位或某几位的数码管可以发光。数码管显示电路分为动态显示和静态显示。 静态显示方式是指每一个数码管的字段控制是独立的,每一个数码管都需要配置一个8位输出口来输出该字位的七段码。因此需要显示多位时需要多个输出口,通常片内并口不够用,需要在片外扩展。动态显示又称为扫描显示方式,也就是在某一时刻只能让一个字位处于选通状态,其他字位一律断开,同时在字段线上发出该位要显示的字段码,这样在某一时刻某一位数码管就会被点亮,并显示出相应的字符。下一时刻改变所显示的字位和字段码,点亮另一个数码管,显示另一个字符。绕后一次扫描轮流点亮其他数码管,只要扫描速度快,利用人眼的视觉残留效应,会使人感觉到几位数码管都在稳定的显示。本次实验用74ls04非门作驱动。如图所示图 3-3 显示电路接口图 3.4 其他外围电路 复位电路:在单片机的rst引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作。实际应用中,复位操作有两种形式:一种是上电复位,另一种是上电与按键均有效的复位。上电复位要求接通电源后,单片机自动实现复位操作。上电瞬间rst引脚获得高电平,随着电容的充电,rst引脚的高电平逐渐下降。只要rst引脚保持两个机器周期的高电平单片机就可以进行复位操作。本设计用的上电与按键均有效的复位。电路图如下图 3-4 复位电路时钟电路:单片机的时钟信号通常有两种方式产生:一是内部时钟方式,二是外部时钟方式。本设计采用内部时钟方式,在单片机内部有一震荡电路,只要在单片机的xtal1和xtal2脚外接石英晶体(简称晶振),就构成了自己震荡器并在单片机内部产生时钟脉冲信号。 c1 c22图3-5 时钟电路图中电容器的作用是稳定频率和快速起振,电容值在530pf,典型值为30pf。晶振cys的震荡频率范围在1.212mhz间选择,典型值为12mhz和6mhz。本设计采用12mhz晶振,电容值为30 pf。在电路总体设计中,eavpp脚用于是从外部程序存储器取指还是从内部程序存储器取指的选择信号。当eavpp接高电平时,先从片内程序存储器读取指令,读完4kb后,自动改为片外取指。若eavpp接低电平,则所有指令均从片外程序存储器读取。ale脚用于输出允许地址所存信号。psen脚用于外部程序存储器选通信号,在对外部程序存储器取指操作时此引脚置低电平有效。在执行片内程序存储器取指时pesn脚无效。本设计无片外程序存储器扩展,所以将eav pp脚接高电平,ale及psen脚悬空。 4 软件设计4.1 程序设计流程图主程序的主要功能是负责温度的实时显示。读出并处理ds18b20测量的当前温度值,温度测量值每1s进行一次。这样可以在1s之内测量一次被测温度,其程序流程图如图4-1所示图 4-2 读温度流程图图4-1 主程序流程图读出温度子程序的主要功能是读出ram中的9字节,在读出时需进行crc校验,校验有错时不进行温度数据的改写,其流程图如图4-2所示。温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。计算温度子程序将ram中读取值进行bcd码的转换运算,并进行温度值正负的判定,显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。4.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=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40;/* 共阴led段码表 0 1 2 3 4 5 6 7 8 9 不亮 - */ uchar code scan_con4=0x81,0x82,0x88,0xa0; / 列扫描控制字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(0x44); / 发转换命令for(h=0;h500;h+) scan(); /开机显示88882秒while(1) read_temp(); /读出18b20温度数据 work_temp(); /处理温度数据 for(h=0;h500;h+) scan(); /显示温度值2秒 5 系统仿真及调试 5.1硬件调试先排除硬件电路故障,包括设计性错误和工艺性故障,一般原则先静态后动态。利用万用表或测试仪器,检查电路中的各器件及引脚是否连接正确,是否有短路故障。 先要将单片机at89s52芯片取下,对电路板进行通电检查,通过观察看是否有异常,然后用万用表测试个电源电压,若这些都没问题,则接上仿真机进行联机调试观察各接线口线路是否正常。5.2 软件调试软件调试是利用仿真工具进行再线仿真调试,我们用kell软件调试,除发现和解决程序错误外,还可以发现硬件上的问题。 总 结经过将近两周的单片机课程设计,终于完成了我的数字温度计的设计,虽然没有完全达到设计要求,但从心底里说,还是高兴的,毕竟这次设计把实物都做了出来,高兴之余不得不深思呀!在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,举个例子,在列控制位选择调试时,我刚开始只注意到我用的是74ls04非门驱动,所以就给列控制位都送低电平过去,后来调试时发现并不是这样的 数码管并没有显示出我想要的数字来,后来在分析硬件是发现我用的是共阴数码管要送高低平过去才行,还有我的温度数据处理函数没有用直接的加减而是用与上一为bcd码来解决,感觉效果比较好,有好多的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年甘肃张掖肃南县县直事业单位引进高层次人才急需紧缺专业目录考前自测高频考点模拟试题及答案详解(新)
- 2025广西壮族自治区南宁生态环境监测中心招聘1人考前自测高频考点模拟试题及完整答案详解一套
- 2025湖南长沙海关招聘12360服务热线话务员模拟试卷(含答案详解)
- 2025安徽淮南市招聘村级后备干部81人模拟试卷及1套完整答案详解
- 2025广西百色市平果市投资促进局城镇公益性岗位人员招聘1人考前自测高频考点模拟试题及答案详解(典优)
- 2025年安徽师范大学校医院专业技术人员招聘2人考前自测高频考点模拟试题附答案详解(典型题)
- 2025年陕西师范大学化学化工学院招聘模拟试卷有答案详解
- 2025年城市社区卫生服务中心合同工招聘合同模板
- 2025内蒙古职业技术学院招聘引进专任教师13人模拟试卷含答案详解
- 2025内蒙古某国企招聘考前自测高频考点模拟试题及答案详解(夺冠系列)
- GB/T 20863.2-2025起重机分级第2部分:流动式起重机
- 仓库安全培训课件
- 国开2025年《人文英语4》综合测试答案
- 算力:新质生产力的核心引擎
- 学生历史思维品质提升策略浅识
- DB32∕T 3812-2020 建筑同层排水工程技术规程
- 《创伤失血性休克中国急诊专家共识(2023)》解读 2
- 项目部领导带班记录
- 2025年中国心力衰竭诊断和治疗指南
- 2025年新修订《治安管理处罚法》
- 生产企业退货管理办法
评论
0/150
提交评论