《数字温度计》word版.doc_第1页
《数字温度计》word版.doc_第2页
《数字温度计》word版.doc_第3页
《数字温度计》word版.doc_第4页
《数字温度计》word版.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

目 录1. 绪论1 1.1课题背景及目的1 1.2论文构成及研究内容12. 系统设计方案2 2.1数字温度计系统简介2 2.2数字温度计系统框图及总图23. 硬件电路元器件介绍4 3.1 MCS-51系列芯片介绍4 3.2 DS18B20数字温度传感器7 3.3 LED数码管104. 硬件设计与原理12 4.18051单片机最小化系统电路12 4.2 DS18B20传感器采集电路13 4.3 LED显示电路13 4.4系统电源电路14 4.5系统复位电路14 4.6系统时钟电路165. 单片机系统程序设计17 5.1程序的总体设计17 5.2程序的编制176. 系统的调试与实现23 6.1硬件电路的装配与调试23 6.2系统软件的调试23 6.3系统的综合调试23总结24致 谢25参考文献26附录 元件清单27 黄河科技学院毕业设计说明书 第 27 页2.1数字温度计系统简介本设计选用DS18B20做温度传感器,AT89C51芯片完成对数据的处理,然后通过数码管将温度显示出来。Dallas半导体公司的数字温度传感器DS18B20是世界上第一片支持 “一线总线”接口的温度传感器,在其内部使用了在板专利技术,全部传感元件及转换电路集成在形如一只三极管的集成电路内,它体积更小、更经济、更灵活,可以充分发挥“一线总线”的优点,现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如环境控制、设备或过程控制、测温类消费电子产品等。在传统的温度测量系统中,一般的做法是在各个测点分布安装合适的模拟式温度传感器,多个模拟输出信号经传输线集中到一点,再统一送入微机进行数字化,该方案的缺点是模拟信号转换为数字信号的接口电路需要占用数条数据/控制线,限制了单片机功能的扩展,而且在温度监测点大范围分布的系统中,模拟信号需长距离传输,信号容易失真,抗干扰能力差,而数字温度传感器解决了这些问题,其基本设计思路是用数字化温度传感器DS18B20代替模拟式温度传感器,并能够与单片机芯片AT89C51相结,在实际应用中取得了良好的测温效果。2.2 数字温度计系统框图及系统总图 本课题是选用数字温度传感器DS18B20做温度采集的探头,MCS-51系列单片机AT89C51完成对数据的分析和处理,然后通过七段LED数码管将温度值显示出来。系统总体结构框图如图2.1所示。把处理后的数据送到LED数码管中显示出来把DS18B20采集数据到的数据送到AT89C51芯片中进行处理温度传感器DS18B20采集数据开始结束 图2.1系统总体框图 数字温度计系统设计总图如图2.2所示。图2.2数字温度计系统总图 本系统主要由电源电路、信号采集电路、晶振电路、复位电路、LED数码管显示电路等组成。3 元器件介绍3.1 AT89C51芯片介绍 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案1, 9-43。下面图3.1为AT89C51的引脚排列图。 图3.1 AT89C51的引脚图(1) 主要特性: 8051 CPU与MCS-51 兼容 4K字节可编程FLASH存储器(寿命:1000写/擦循环) 全静态工作:0Hz-24KHz 三级程序存储器保密锁定 128*8位内部RAM 32条可编程I/O线 两个16位定时器/计数器 6个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路(2) 管脚说明: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号2, 4-59。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口。P3口管脚的备选功能 。 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(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。(3) 振荡器特性: XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。(4) 芯片擦除: 整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。3.2DS18B20数字温度传感器 Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持 “一线总线”接口的温度传感器,一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20支持“一线总线”接口,测量温度范围为 -55C+125C,在-10+85C范围内,精度为0.5C,现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代不同,新的产品支持3V5.5V的电压范围,使系统设计更灵活、方便,而且新一代产品更便宜,体积更小。DS18B20可以程序设定9-12位的分辨率,精确度达到0.5C,可以选择更小的封装方式,更宽的电压适用范围。分辨率设定及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20是继“一线总线”的早期产品后,新一代产品中最好的,性能价格比也非常出色,它开辟了温度传感器技术的新概念,可以使电压、特性及封装有更多的选择,从而构建适合自己的经济的测温系统1, 196-200。 DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如图2.2所示。图3.2 DS18B20的管脚排列图 DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。 64位光刻ROM:光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,即ID。它的作用是使每一个DS18B20的地址都不同,可以实现在相同的总线上挂多个DS18B20的目的。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)3,145-158。 温度传感器:DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。二进制的数据存储在DS18B20的2个8位的RAM中。 表3.1 这是12位转化后得到的12位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。 温度报警触发器TH和TL:DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。当温度到达低温或高温的时候,温度报警触发器会发出报警9, 16-35。 高速暂存RAM:暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。第六、七、八个字节用于内部计算,第八个字节是冗余检验字节。第九个字节是冗余检验字节4, 285-295。DS18B20的设置位有一个字节,该字节各位的意义如下:TM R1 R0 1 1 1 1 1。低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动,R1和R0用来设置分辨率。 表3.2 分辨率设置表R1R0分辨率 温度最大转换时间009位 93.75ms 0110位 187.5ms 1011位 375ms 1112位 750ms 根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,即将总线下拉500us,然后释放,然后释放,DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功;复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。ROM、RAM指令集如表3.3、表3.4所示。 表3. 3 ROM指令集指 令约定代码 功能读ROM33H读DS18B20中的编码(64位地址)。符合ROM55H发出命令后,接着发出64位ROM编码,访问单线总线上与该编辑相应的DS18B20,使之做出响应,为下一步对DS18B20的读写准备。搜索ROM0F0H用于确定挂接在同一总线上的DS18B20个数和64位ROM地址,为操作各器件作好准备。跳过ROM0CCH忽略64位ROM地址,直接向DS18B20发出温度变换命令,适合单片机。报警搜索命令0ECH执行后,只有温度超出设定的上限或下限的片子才能做处反应。 表3.4 RAM指令集指 令约定代码 功能温度变换44H启动DS18B20进行温度转换,转换时间最长为500ms,结果存入内部字节RAM中。读暂存器0BEH访问RAM中字节的内容。写暂存器4EH向内部RAM的第和字节写上限下限数据命令,紧跟该命令后的是传送字节数据。复制暂存器48H将RAM中的第和字节内容复制到EERAM中。重调EERAM0B8H将EERAM中的内容复制到RAM中的第和字节。读供电方式0B4H读DS18B20的供电模式,寄生供电时DS18B20发送,外接电时发送。3.3 LED数码管 常见的数码管都是七段数码显示的,从正面观察的话,上下分别有5个管脚,上面和下面的中间那个管脚,都是公共端。LED数码管中各段发光二极管的伏安特性和普通二极管类似,只是正向压降较大,正向电阻也较大。在一定范围内,其正向电流与发光亮度成正比。由于常规的数码管起辉电流只有12 mA,最大极限电流也只有1030 mA,所以它的输入端在5 V电源或高于TTL高电平(3.5 V)的电路信号相接时,一定要串加限流电阻,以免损坏器件。 在单片机电路里,芯片的驱动电流很小,一般为微安级别的,要通过三极管来驱动LED发光。常见的数码管由七个条状和一个点状发光二极管管芯制成,叫七段数码管如下图所示,根据其结构的不同,可分为共阳极数码管和共阴极数码管两种。根据管脚资料,您可以判断使用的是何总接口型10, 323-346。 数码管工作原理:共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起,通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符3, 86-89。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起,通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端,当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。 结构及分类:数码管由8个发光二极管构成,通过不同的组合可用来显示数字0 9、字符A F、H、L、P、R、U、Y、符号“-”及小数点“.”。数码管分为共阴极和共阳极两种结构,共阳极LED:把8个发光二极管的阳极连在一起,叫共阳极接法,用低电平驱动。共阴极LED:把8个发光二极管的阴极连在一起,叫共阴极接法,用高电平驱动1, 140-145。数码管常见外型结构如图3.3 所示。 (a)图为一位七段LED数码管的管脚分布 (b)图为七段LED共阳极数码管 (c)图为七段LED共阴极数码管图3.3 数码管结构图4 硬件设计与原理4.1 8051单片机最小化系统 单片机最小化系统电路图如图4.1所示。图4.1单片机最小化系统电路图 本系统主要由信号采集电路、晶振电路、复位电路、LED数码管显示电路等组成。其中信号采集电路部分主要由DS18B20数字温度传感器组成,4K电阻主要用于限流,提供DQ端所需的电压;时钟电路部分主要由12M的晶振和30PF的独石电容组成,产生单片机工作所需要的时钟信号;复位电路为开关复位电路,它是利用微动开关来实现电路复位的;LED数码管显示电路部分主要由两位LED共阴极数码管和820的排阻组成,排阻主要用于限流,防止数码管的供电电压过大,从而烧坏管子。 4.2 DS18B20传感器采集电路 温度信号采集电路图如图4.2所示。图4.2系统温度信号采集电路图 本系统温度信号采集电路部分主要由 DS18B20传感器和4K电阻组成。其中 DS18B20传感器是世界上第一片支持 “一线总线”接口的温度传感器,在其内部使用了在板专利技术,全部传感元件及转换电路集成在形如一只三极管的集成电路内。由于DS18B20体积更小、更经济、更灵活,可以充分发挥“一线总线”的优点,现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量,如环境控制、设备或过程控制、测温类消费电子产品等;4K电阻主要用于限流,提供DQ端所需电压。4.3 LED显示电路 LED显示电路图如图4.3所示。图4.3 LED显示电路图 本系统LED显示电路部分主要由LED数码管和820的排阻组成5, 6-19。数码管采用两位LED共阴极数码管,此类数码管接法简单,便于动态显示数值;电路中的排阻主要用于限流,防止数码管的供电电压过大,以免损坏器件。4.4系统电源电路 电源桥式整流电路如图4.4所示。图4.4系统电源电路图 本系统电源电路部分主要由铁芯变压器、全桥整流电路、电容滤波电路、7805型整流块组成5, 533-546。其中铁芯变压器作用是将220V的市电转换成6V的交流电压,然后将输出的电压再经整流、滤波和稳压,最后得到所需的电压;整流电路部分主要由IN4007*4的硅整流二极管组成,作用是滤除交流谐波成分,输出较为稳定的全波8, 43-45;电容滤波电路部分主要由220uf的电解电容和103pf的独石电容组成,作用是利用其充放电原理,降低脉动成分,提高其直流成分,另外可防止自激振荡,减少高频噪声,改善负载的瞬态响应,其中输入电容主要用来改善输入电压波纹,一般由输出功率而定,输出电容用来消除电路中可能存在的高频噪声,改善负载的瞬态响应;W7805型三端集成稳压块作用是将直流电压稳定在+5V8, 53-54。4.5系统复位电路单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使程序处于死锁状态时,为摆脱困境,也需按复位键以重新启动,并从这个状态开始工作。无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位,所以我们必须弄清楚MCS-51型单片机复位的条件、复位电路和复位后状态。单片机复位的条件是:必须使RST引脚加上持续两个机器周期的高电平,复位电路在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。复位后PC值为0000H,表明复位后程序从0000H开始执行,从第个单元取指令。例如,若时钟频率为12MHz,每机器周期为1us,则只需2us以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。单片机复位期间不产生ALE信号,即ALE1。表明单片机复位期间不会有任何取指操作1, 17-18。 单片机复位的分类是:上电复位电路和开关复位电路。其中图(a)为上电复位电路,它是通过外部复位电路的电容充电来实现的,只要电源VCC的上升时间不超过1ms,就可实现自动上电复位,即接通电源就完成了系统的复位初始化。图(b)为开关复位电路,它是利用微动开关来实现的。开关手动复位有电平方式和脉冲方式两种。其中开关电平复位是通过使复位端经电阻与电源接通而实现的,而开关脉冲复位则是利用RC微分电路产生的正脉冲来实现的。复位电路的分类如图4.5所示。图4.5复位电路分类图本设计中,我采用的是按键电平复位的方式,其电路如图4.6所示,这种方式电路比较简单,且又避免了上电自动复位需要切断电源的缺点。图4.6系统复位电路图4.6 系统时钟电路 时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格的按时序进行工作1, 12-13。晶振电路的原理: 晶振是晶体振荡器的简称,在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率是串联谐振,较高的频率是并联谐振。由于晶体自身的特性致使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振等效为一个电感,所以只要晶振的两端并联上合适的电容它就会组成并联谐振电路。这个并联谐振电路加到一个负反馈电路中就可以构成正弦波振荡电路,由于晶振等效为电感的频率范围很窄,所以即使其他元件的参数变化很大,这个振荡器的频率也不会有很大的变化6, 376-377。晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。一般的晶振振荡电路都是在一个反相放大器(注意是放大器不是反相器)的两端接入晶振,再有两个电容分别接到晶振的两端,每个电容的另一端再接到地,这两个电容串联的容量值就应该等于负载电容。 在单片机内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2,在芯片的外部通过这两个引脚跨接晶体震荡器和微调电容,形成反馈电路,就构成一个稳定的自激震荡器,一般的晶振的负载电容为20p-45p之间 ,如果再考虑元件引脚的等效输入电容,则两个30p的电容构成晶振的振荡电路就是比较好的选择。本设计中所使用的是12MHz的晶振,机器周期为1s,具体的时钟电路如图4.7示。图4.7时钟电路图5单片机系统程序设计单片机应用系统的软件设计是重要的一项工作,主要使用汇编语言来编程。软件设计包括拟定程序的总体方案,画出程序流程图,编制具体程序等1, 190-192。5.1 程序的总体设计程序的总体设计是指从系统高度考虑程序结构、数据格式和程序功能的实现方法和手段,总体设计包括拟定总体设计方案时,要根据系统的具体情况,确定切合实际的设计方法,画出程序的总体框图,描述程序的总体结构,画出模块的流程。程序流程确定后,就可在所确定的程序总体框架下,构思各个模块的设计。5.2程序的编制开始 程序流程图如图5.1所示。初始化DS18B20,在DQ引脚上送大于500us的低电平等待DS18B20回应,判断DQ是否为0?NY置38H=0置38H=1延 时向DS18B20送0CCH,命令跳过ROM区向DS18B20送温度转换命令44H,等待复位 向DS18B20送0CCH,命令跳过ROM匹配,读温度命令0BEH读温度值送28H,29H 送显示缓冲区显示数据 结束 图5.1程序流程图本设计任务明确,主要采用汇编语言进行编程,且将程序分为两大模块即主程序模块和子程序的初始化程序、读温度程序、写温度程序、显示程序模块。本系统汇编程序如下。ORG 0000H ;单片机内存分配申明TEMPER_L EQU 29H ;用于保存读出温度的低8位TEMPER_H EQU 28H ;用于保存读出温度的高8位FLAG1 EQU 38H ;是否检测到DS18B20标志位A_BIT EQU 20H ;数码管个位数存放内存位置B_BIT EQU 21H ;数码管十位数存放内存位置MAIN: ;主循环,用来反复读温度和显示温度 LCALL GET_TEMPER ;调用读温度子程序 ,进行温度显示,这里用两位数码管来显示温度,显示范围00到99度,显示精度为1度,因为12位转化时每一位的精度为0.0625度,我们不要求显示小数所以可以抛弃29H的低4位,将28H中的低4位移入29H中的高4位,这样获得一个新字节,这个字节就是实际测量获得的温度 MOV A,29H MOV C,40H ;将28H中的最低位移入C RRC A MOV C,41H RRC A MOV C,42H RRC A MOV C,43H RRC A MOV 29H,A LCALL DISPLAY ;调用数码管显示子程序 AJMP MAIN INIT_1820: ;这是DS18B20复位初始化子程序 SETB P2.2 ;拉高P2.2管脚的电平 NOP CLR P2.2 ;拉低 P2.2管脚的电平,主机发出大于500微秒的复位低脉冲 MOV R1,#3TSR1: MOV R0,#107 DJNZ R0,$ ;当R0不等于0时,原地等待 DJNZ R1,TSR1 ;当R1不等于0时,返回TSR1,用于延时 SETB P2.2 ;然后拉高数据线,将DS18B20中的数据清0 NOP NOP NOP MOV R0,#25TSR2: JNB P2.2,TSR3 ;等待DS18B20回应,有回应则跳到TSR3 DJNZ R0,TSR2 ;如果没有到,则继续等待 LJMP TSR4 ;跳转到TSR4,延时TSR3: SETB FLAG1 ;置标志位,表示DS18B20存在 LJMP TSR5 ;跳转到TSR5TSR4: CLR FLAG1 ;清标志位,表示DS18B20不存在 CLR P1.1 LJMP TSR7 ;跳转到TSR7TSR5: MOV R0,#117TSR6: DJNZ R0,TSR6 ;时序要求延时一段时间TSR7: SETB P2.2 ;拉高数据线 RETGET_TEMPER: ;读出转换后的温度值 SETB P2.2 ;拉高数据线 LCALL INIT_1820 ;先复位DS18B20 JB FLAG1,TSS2 ;如果检测到DS18B20,则跳转TSR2 RET ;判断DS18B20是否存在?若DS18B20不存在则返回TSS2: MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE_1820 ;调用DS18B20指令,将累加器中的命令写进DS18B20 MOV A,#44H ;发出温度转换命令 LCALL WRITE_1820 ;调用DS18B20指令,将累加器中的命令写进DS18B20;这里通过调用显示程序实现延时一段时间,等待AD转换结束,12位的话750微秒 LCALL DISPLAY LCALL INIT_1820 ;准备读温度前先复位 MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE_1820 MOV A,#0BEH ;发出读温度命令 LCALL WRITE_1820 LCALL READ_18200 ;将读出的温度数据保存到28H/29H RETWRITE_1820: ;写DS18B20的子程序 MOV R2,#8 ;一共8位数据 CLR CWR1: CLR P2.2 ;一共8位数据 MOV R3,#30 ;拉低数据线60微秒以上,将数据移位写入DS18B20 DJNZ R3,$ ;等待60微秒以上,完成写初始化,然后写入数据 RRC A ;将累加器中的数据带进位右移 MOV P2.2,C ;将进位位写进DS18B20后,等待15微秒以上 MOV R3,#10 DJNZ R3,$ ;等待15微秒以上,完成1bit的写操作 SETB P2.2 ;拉高数据线,初始化 NOP DJNZ R2,WR1 ;如果一个字节没写完,继续写 SETB P2.2 ;拉高数据线 RETREAD_1820: ;读DS18B20的程序,从DS18B20中读出两字节的温度数据 MOV R1,#29H ;低位存入29H(TEMPER_L),高位存入28H(TEMPERH)RE00: MOV R2,#8 ;数据一共有8位RE01: CLR C ;清除进位标志位 SETB P2.2 ;拉高数据线,等待1微秒初始化 NOP NOP CLR P2.2 ;拉低数据线,等待1微秒以上使读初始化有效 NOP NOP NOP SETB P2.2 ;拉高数据线,开始读操作 MOV R3,#10RE10: DJNZ R3,RE10 ;等待15微秒后,写入数据正确 MOV C,P2.2 ;将数据读入累加器 MOV R3,#35RE20: DJNZ R3,RE20 ;等待60微秒以上,进行下一次读操作 RRC A ;将累加器中的数据带进位右移 DJNZ R2,RE01 ;如果没读完一字节,继续读取数据 MOV R1,A ;将累加器中的数据存储进地址29H DEC R1 DJNZ R4,RE00 ;继续读取高位 RETDISPLAY: ;显示子程序 MOV A,29H ;将29H中的十六进制数转换成10进制 MOV B,#10 ;10进制/10=10进制 DIV AB MOV B_BIT,A ;十位在A MOV A_BIT,B ;个位在B MOV DPTR,#NUMTAB ;指定查表启始地址 MOV R0,#4 DPL1: MOV R1,#250 ;显示1000次DPLOP: MOV A,A_BIT ;取个位数 MOVC A,A+DPTR ;查个位数的7段代码 MOV P0,A ;送出个位的7段代码 CLR P2.7 ;开个位显示 ACALL D1ms ;显示1ms SETB P2.7 ;关闭个位显示 MOV A,B_BIT ;取十位数 MOVC A,A+DPTR ;查十位数的7段代码 MOV p0,a ;送出十位的7段代码 CLR P2.6 ;开十位显示 ACALL D1ms ;显示1ms SETB P2.6 ;关闭十位显示 DJNZ R1,DPLOP ;250次没完循环,则继续 DJNZ R0,DPL1 ;4个250次没完循环 RETD1MS: MOV R7,#500 ;1ms延时 DJNZ R7,$ RET ;实验板上的7段数码管09数字的共阴显示代码 NUMTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END6系统的调试与实现 系统调试是检查单片机应用系统的软硬件正确性的一个重要标志,具体可分为硬件调试、软件调试和系统联调三个阶段。6.1硬件电路的装配与调试(1)硬件电路的焊接在硬件电路图确定好以后,要对电路进行焊接,过程中要注意以下几点:首先,在焊接芯片的时候应查准确各管脚功用,不能将管脚焊错。其次,在焊电路时要小心谨慎,不能误焊,也不可以太过于小心而造成虚焊。最后,一定要有耐心,千万不能一时急躁而将器件烧坏。在驱动数码管的电路部分,器件较多,导线非常密集,一定要细心加耐心,正确焊好每一根导线。(2)硬件电路的调试 先由万用表测试温度传感器是否正常工作即看它的输出电压值是否随温度的变化而变化,以确定电路工作是否正常,在调试过程中,开始没有输出信号,经检查发现由于接地端虚焊,器件无法工作,重新焊接后,再进行调试,直到有信号输出为止7, 12-45。6.2系统软件的调试在软件调试的时候,逻辑要严密,应考虑全局,要认真分析程序的执行过程,同时要了解单片机的硬件构造。另外,还要尽力提高程序的执行效率。本设计的程序主要有两大模块程序即主程序模块和子程序的初始化程序、读温度程序、写温度程序、显示程序模块。对于这两部分的调试是在keil C51软件上进行的,当经过编译、调试、运行无误后,用编程器将其烧进AT89C51即可3, 1-16。 6.3系统的综合调试对于整个系统的调试是将温度传感器置于被监测温度处,接通系统电源,系统开始运行,随着温度的不断上升,显示温度不断变化,离开被监测温度处,显示温度不断下降。再将显示温度同实际温度进行多次计算比较,结果显示温度同实际温度间的误差1,满足系统设计要求。以上过程通过多次反复检测系统均运行正常、稳定,系统基本上完全实现了预定的功能。 总 结毕业设计从开始到结束共四个月的时间,从查资料到最初的设计再到最后的电路调试完毕,我度过了紧张忙碌有张有弛的四个月。毕业设计是对大学四年的总结,是对所学知识的实际运用,是提高我们能力最关键的一步。通过本次设计我有以下几点总结:1、对于开发设计某一硬件产品的过程有了全面详细的了解。针对设计的要求来实现特定的功能,从最基本的元器件到集成电路的应用,都形成了具体的思路,自己积累了不少经验,已具备一定的进行硬件设计的能力了。2、在查资料的过程中接触了很多新的知识。虽然有四年的学习基础,但是一旦应用起来还是感到自己的知识储备很贫乏,不得不重新学习。其中学习最多的是单片机、Protel及电子线路的应用等,当然这些还必须有模拟电子和数字电子的基础做依托。应用单片机进行控制和检测必然少不了使用汇编语言,所以对汇编语言的学习也更进了一步。通过查阅各种参考文献,极大的拓宽了我的知识层面,对今后的实践应用是非常有利的。3、分析问题解决问

温馨提示

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

评论

0/150

提交评论