ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:365.74KB ,
资源ID:21112497      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21112497.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(学位论文基于at89s51单片机的数字温度计的设计文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

学位论文基于at89s51单片机的数字温度计的设计文档格式.docx

1、AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。3.2.1 AT89S51主要功能1、为一般控制应用的 8 位单芯片2、晶片内部具时钟振荡器(传统最高工作频率可至 12MHz)3、内部程式存储器(ROM)为 4KB4、内部数据存储器(RAM)为 128B5、外部程序存储器可扩充至 64KB6、外部数据存储器可扩充至 64KB7、32 条双向输入输出线,且

2、每条均可以单独做 I/O 的控制8、5 个中断向量源9、2 组独立的 16 位定时器10、1 个全多工串行通信端口11、8751 及 8752 单芯片具有数据保密的功能12、单芯片提供位逻辑运算指令3.2.2 AT89S51各引脚功能介绍VCC:AT89S51 电源正端输入,接+5V。VSS:电源地端。XTAL1:单芯片系统时钟的反相放大器输入端。XTAL2:系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加20PF 图3-2 单片机电路引脚图的小电容,可以使系统更稳定,避免噪声干扰而死机。RESET:

3、AT89S51的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。EA/Vpp:EA为英文External Access的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用 8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至

4、8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。ALE/PROG:ALE是英文Address Latch Enable的缩写,表示地址锁存器启用信号。AT89S51可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0A7)锁进锁存器中,因为AT89S51是以多工的方式送出地址及数据。平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。PSEN:此为Program Store Enable的缩写,其意为程序储存启用,当8

5、051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。AT89S51可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。PORT0(P0.0P0.7):端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据

6、存储器),P0就以多工方式提供地址总线(A0A7)及数据总线(D0D7)。设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0A7,再配合端口2所送出的A8A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。PORT2(P2.0P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在AT89S51扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8A15,这个时候P2便不能当做I/O来使用了。PORT1(P1.0P1.7):端口1也是

7、具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。PORT3(P3.0P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。其引脚分配如下:P3.0:RXD,串行通信输入。P3.1:TXD,串行通信输出。P3.2:INT0,外

8、部中断0输入。P3.3:INT1,外部中断1输入。P3.4:T0,计时计数器0输入。P3.5:T1,计时计数器1输入。P3.6:WR:外部数据存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。3.3 显示电路 图3-3 温度显示电路 DB18B20液晶屏为5V电压驱动,带背光,可显示两行,每行16个字符,不能显示汉字。液晶1、2端为电源,15、16端为背光电源,为防止直接加5V而烧坏背光灯,在15脚串联一个1K电阻,液晶3端为液晶对比度调节端,通过一个10K的电位器来调节液晶显示对比度,用于限流。液晶4端为向液晶控制器写数据/写命令选择端,接单片机P1.0端口。液晶5端为读/写选择端

9、,因为我们不需要从液晶中读取数据,只向其写入命令和数据,因此此端始终选择为写状态,即低电平接地。液晶6端为使能信号,是操作必须的信号,接单片机的P1.1口。3.4 温度检测电路设计温度检测电路如下图3-4所示:图3-4 温度检测电路 DS18B20是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。DS18B20的性能特点如下: 独特的单线接口仅需一个端口引脚进行通讯 简单的多点分布应用 无需外部器件 可通过数据线供电 零待机功耗 测温范围-55+125,以0.5递增。华氏

10、器件-67+2570F,以0.90F 递增 温度以9 位数字量读出 温度数字量转换时间200ms(典型值) 用户可定义的非易失性温度报警设置 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件。 DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列、各种封装形式如图 3-5所示,DQ 为数据输入/输出引脚。VDD为开漏单总线接口引脚,当被用着在寄生电源下,也可以向器件提供电源;GND为地信号,当工作于寄生电源时,此引脚必须接地。其电路图如图3-5所示.。图3-5 外部封装形式 DS18B20的测温

11、原理如图3-6所示,图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 所对应的一个基数值。 减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器

12、 1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温图3-7中的斜率累加器用于补偿和修正测温过程中的非线性其输出用,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。 另外,由于DS18B20单线通信功能是分时完成的,有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。 在正常测温

13、情况下,DS1820的测温分辨力为0.5。图3-6 DS18B20的测温原理3.5 晶振控制电路 单片机XIAL1和XIAL2分别接30PF的电容,中间在并个6MHZ的晶振,形成单片机的晶振电路。图3-7 晶振控制电路3.6 复位电路图3-8 复位电路4 系统软件设计 系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。4.1 实验主程序流程图 主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图4-1所示。 图4-1 主程序流程图 4.2 读出

14、温度子程序 读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图4-2所示。图4-2 读温度流程图4.3 温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如图4-3所示。 图4-3 温度转换流程图4.4 计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图4-4所示。图4-4 计算温度流程图4.5 显示数据刷新子程序显示数据刷新子程序主要

15、是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序流程图如图5-5所示。图4-5 显示数据刷新流程图5 调试 系统的调试以程序为主。硬件调试比较简单,首先检查电路的焊接是否正确,然后可用万用表测试或通电检测。软件调试先编写显示程序并进行硬件的正确性检验,然后分别进行主程序、读出温度子程序、温度子程序、显示数据刷新子程序的编程及调试,由于DB18B20与单片机采用串行数据传送,因此,我对DB18B20进行读写程序时严格地保证读写时序,以防无法读取测量结果。本程序采用单片机汇编编写,用KELL编程调试。软件调试到能显示温度值,而且在有温度变化时(例如用手去接触)

16、现实温度能改变就基本完成。 性能测试时,我用制作的温度计和已有的成品温度计来同时测量比较,由于DB18B20的精度很高,所以误差指标可以限制在0.1以内,另外-55 +125的测温范围使得该温度计完全适合一般的应用场合,其低压温度供电特性可做成用电池供电的手持温度计。 在DB18B20测温程序设计中,向DB18B20发出温度转换命令后,程序总要等待DB18B20的返回信号,一旦某个DB18B20接触不好或断线,当程序读该DB18B20时,将没有返回信号,程序进入死循环,所以我在进行DB18B20硬件连接和软件设计时给予了一定的重视。图6-1 调试结果图6 结束语 该温度测试系统不仅具有结构简单

17、、体积小、价格低廉、精确度较高、反应速度较快、数字化显示和不易损坏等特点,而且性能稳定,适用范围广,因此特别适用于对测温要求比较准确的场所。参考文献:1 李广第,王秀山. 单片机基础M. 北京航空航天大学出版,2001.2 余发山. 单片机原理及应用技术M. 北京矿业大学出版社,2003.3 廖月琴. 基于AT89S51单片计数温度计的设计J.2010.4 李朝青. 单片机原理及接口技术M. 北京航空航天大学出版社,2002.5 金伟正. 单线数字温度传感器的原理与应用J. 电子技术应用. 2000.6 龙吉. 基于AT89C2051单片机的数字温度计的设计J. 科学之友. 2010.7 马云

18、峰. 单片机与数字温度传感器DS18B20的接口技术J. 计算机测量与控制. 2002.8 丁元杰. 单片机原理与应用M. 机械工业出版社,1994.9 付家才. 单片机控制工程实践技术M. 化学工业出版社,2004.附录 程序清单#include /头文件#define uchar unsigned char #define uint unsigned intsbit rs=P20;sbit lcden=P21; /液晶使能端sbit DATA = P37; /DS18B20接入口uchar FLAG_DIS=0;uchar bai_18b20,shi_18b20,ge_18b20,num;

19、 /定义变量bit flag_Negative_number ;/负数标志uchar code table=tempreture: ; /提示语/*一毫秒定时*/void delay_ms(uint z) uint x,y; for(x=z;x0;x-) for(y=110;yy-);/*延时子函数*/void delay(uint num) while(num-) ;/*液晶写命令*/void write_lcd_com(uchar com) rs=0; lcden=0; P0=com; delay_ms(1); lcden=1;/*液晶写数据*/void write_lcd_date(uc

20、har date) rs=1; P0=date;/*液晶初始化程序*/void lcd_init() write_lcd_com(0x38); write_lcd_com(0x0c); write_lcd_com(0x06); write_lcd_com(0x01);/*DS18b20温度传感器函数*/void Init_DS18B20(void) /传感器初始化 uchar x=0; DATA = 1; /DQ复位 delay(10); /稍做延时 DATA = 0; /单片机将DQ拉低 delay(80); /精确延时 大于 480us /450 /拉高总线 delay(20); x=DA

21、TA; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(30);/*温度传感器读一个字节*/ReadOneChar(void) uchar i=0; uchar dat = 0; for (i=8;ii-) DATA = 0; / 给脉冲信号 dat=1; DATA = 1; if(DATA) dat|=0x80; delay(8); return(dat);/*温度传感器写一个字节*/void WriteOneChar(uchar dat) uchar i=0; for (i=8; i i-) DATA = dat&0x01; dat delay(8);/*读取温度传感

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

23、se flag_Negative_number = 0; tt=t*0.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_18b20); write_lcd_date(0x30+ge_18b20); write_lcd_date(0xDF); wri

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1