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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于STC89C52DS18B20的电子温度计课设.docx

1、基于STC89C52DS18B20的电子温度计课设正文1.设计内容和要求。随着社会的进步和工业技术的发展,人们越来越重视温度因素,许多产品对温度范围要求严格,而目前市场上普遍存在的温度检测仪器大都是单点测量,同时有温度信息传递不及时、精度不够的缺点,不利于工业控制者根据温度变化及时做出决定。在这样的形式下,开发一种能够同时测量多点,并且实时性高、精度高,能够综合处理多点温度信息的测量系统就很有必要。本课题以STC89C52单片机系统为核心,能对多点的温度进行实时巡检。DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度

2、测量电路变得简单、可靠。本文结合实际使用经验,介绍了DS18B20数字温度传感器在单片机下的硬件连接及软件编程,并通过LCD1602显示当前温度,实现实时温度测量。2、系统总体结构系统的系统设计方框图如图1-1所示,它主要由三部分组成:控制部分主芯片采用单片机STC89C52;显示部分采用LCD1602以动态扫描方式实现温度显示;温度采集部分的温度传感器采用DS18B20智能温度温度传感器。DS18B20进行温度采集和转换输出数字型的温度值,然后通过数据引脚传到单片机的P3.7口,单片机通过P2口将数据扫描到LCD1602显示屏上。图2-13、硬件设计3.1 控制模块本设计采用单片机基于数字温

3、度传感器DS18B20的系统。单片机STC89C52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用。温度传感器DS18B20利用单总线的特点可以方便的实现多点温度的测量,组建传感器网络,且系统的抗干扰性好、设计灵活、方便,而且能在恶劣的环境下进行现场温度检测。3.2温度采集模块这一部分主要完成对温度信号的采集和转换工作,由DS18B20数字温度传感器及其与单片机的接口部分组成。DS18B20智能温度温度传感器进行温度采集和转换输出数字型的温度值,然后通过数据引脚传到单片机的P3.7口,单片机接受温度并存储。DS18B20是美国DAL

4、LAS半导体公司最新推出的一种单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,它可将温度信号直接转换为数字信号,实现了与单片机的直接接口,从而省去了信号调理和A/D转换等复杂模/数转换电路。DS18B20构成的温度采集模块电路简单、功能可靠、测量效率高,很好地弥补了传统温度测量方法的不足可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。它具有集成度高、模拟输入数字输出、抗干扰能力强、体积小、接口方便、传输距离远测温误差小等特点。如图3-1.图3-13.3温度显示模块 本课程设计的显示模块采用LCD1602液晶显示器显示温度数据,整数进行显示,从P0口送数,

5、P2口扫描。显示当前测量的温度。3.4电源220V的交流变压器经过变压器转换成10V的交流电,经过整流电路得到5V的直流电,供给电路使用。4软件设计按照硬件设计中的模块划分,软件设计业可分为三部分:DS18B20模块程序设计,LCD1602驱动程序设计,单片机主程序设计。其中前两部分是本例软件设计的关键,而相比较,主程序设计则比较简单。下面分别为主程序流程图,DS18B20流程图和LCD1602液晶模块程序流程图。如图4-1.4.1单片机主程序 图4-14.2 DS18B20模块程序设计在主程序流程图中,先初始化液晶模块,然后延时几百微秒,进入While循环,先初始化DS18B20,然后启动温

6、度转换,读取转换后的温度值,并进行处理,最终将温度显示在LCD屏幕上。DS18B20是1-wire单线器材,即在一根数据线上实现数据的双向传输,这就需要严格的通信协议来保证各位数据传输的正确性和完整性。单片机操作单线器材DS18B20的流程图如图4-2所示。 N Y 图4-2首先DS18B20初始化。复位DS18B20,然后单片机等待DS18B20的应答脉冲,一旦单片机监测到应答脉冲,变发起跳过ROM匹配操作命令。成功执行了ROM操作命令后,就可以使用内存操作命令,启动温度转换,延时一段时间后,等待温度转换完成。再发起跳过ROM匹配操作命令,然后读暂存器,将转换结果读出,并转换为显示码,送液晶

7、显示。需要注意的是:复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。4.3 LCD1602驱动程序设计用LCD1602液晶显示模块显示字符或字符串之前必须对其进行初始化,LCD1602液晶显示模块的初始化程序流程图如图4-3所示。 N Y N N Y N Y N Y N Y N Y图4-3上电复位以后,延时15ms,写3次38H指令,写指令前不监测忙标志位。当3次写38H指令完成后,开始进行显示模式设置操作,此时必须先监测忙标志位,只有当其为空闲时,才能进行显示模式设置。伺候依次为

8、显示关闭。显示清屏,显示光标移动设置和显示开关及光标设置。同写显示模式设置一样,每次写之前,都必须先检测忙标志位。5,系统调试5.1综述单片机应用系统的硬件调试和软件调试是分不开的许多硬件故障只有通过软、硬件联调才能发现,但一般是先排除系统中比较明显的硬件故障后才和软件一起联调。常见的硬件故障.5.2常见问题逻辑错误 样机硬件的逻辑错误是由于设计错误和加工过程中的工艺错误而造成的,包括错线、开路、短路、相位错误、时序错误等,其中最常见的是短路故障。2元器件错误 元器件错误的原因有器件损坏或性能不符合要求,电解电容、二极管的极性接反或集成块装反等。3可靠性差 应用系统可靠性差的原因很多,如金属化

9、孔、接插件接触不良、内部和外部的干扰、电压纹波系数过大、器件负载过重等均会造成系统的可靠性差。另外,走线和布置的不合理也会造成系统可靠性差。4电源故障 电源故障包括:电压值不符合设计要求、电源功率不足、负载能力差、纹波太重等。5.3硬件调试力法(1)脱机调试 脱机调试是在加电前,先用万用表等工具,按图纸仔细核对样机线路是否正确,并对元器件的安装、型号、规格等进行仔细检查,特别注意印制板加工和焊接时有无走线之间相互短路等。(2)联机调试 联机前先切断电源,把仿真插头插到样机的单片机插座上,检查一下开发机与样机之间的电源、接地是否良好。一切正常后,即可打开电源。通电后执行开发机读写 指令,对用者样

10、机的存储器IO口进行读写操作,进行逻辑检查。若有故障,可用示波器观察有关点的波形,寻找和分析故障原因,并进一步排除故障。 在用者系统的样机(主机部分)调试好后,便可按入用者系统的其它外围部件,如键盘、显示器等,再进一步进行调试。5.4软件调试方法: 软件调试与所选用的软件结构有关,如果采用模块程序设计技术,则逐个模块调好后再进行系统程序总调。如果采用实时多任务操作系统,一般是逐个任务进行调试。 对于模块结构程序要一个个子程序分别调试。调试时,一定要符合入口条件和出口条件,调试可用单步运行和断点运行方式,通过检查用者系统的CPU现场情况、 RAM的内容和IO口的状态,检测程序执行结果是否符合设计

11、要求,有无循环错误、有无机器码错误以及转移地址的错误,同时,还可以发现用者系统中存在的 硬件设计错误和软件算法错误。 各程序模块通过后,则可以把相关功能块连在一起进行总调。这个阶段若有故障,可以考虑各子程序运行时是 否破坏了现场,缓冲单元、工作寄存器是否发生冲突,标志位的建立和清除是否有误,堆栈区是否有溢出,输入设备的状态是否正常等等,若用者系统是在开发机的 监控程序下运行时,还要考虑用者缓冲单元是否和监控程序的工作单元发生冲突。 单步和断点调试后,还应进行连续调试,用以确定定时精度、CPU的实时响应等问题。对于实时多任务操作系统的调试方法和模块结构的调试方法类似,只是需逐个任务进行调试,在调

12、试某一个任务时,同时也调试相关的子程序、中断服务程序。逐个任务调试好后,再使各个任务同时运行。当全部调试和修改完成后,将用者程序固化到EPROM中,插入用者样机后,用者系统即能独立工作,至此,单片机应用系统研制完成。6,设计小结本设计使用的温度控制器结构简单、测温准确,具有一定的实际应用价值。该智能温度控制器只是DS18B20在温度控制领域的一个简单实例,还有许多需要完善的地方,例如可以将测得的温度通过单片机与通讯模块相连接,以手机短消息的方式发送给用户,使用户能够随时对温度进行监控。此外,还能广泛地应用于其他一些工业生产领域,如建筑,仓储等行业。本温度控制系统可以应用于多种场合,像花房的多点

13、温度、育婴房的温度、水温的检测与控制。用户可灵活选择本设计的用途,有很强的实用价值。由衷感谢我们的老师,教予了我诸多传感器的理论知识。指导了我顺利的独立地完成了这一次的课程设计。期间,让我学到了许多在实践中需注意的问题。怎样思考问题,然后如何去收集整理资料。再次特别感谢庄老师对我们的帮助,以及平日对我们的谆谆教诲。7:参考文献及资料1肖洪兵. 跟我学用单片机M北京:北京航空航天大学出版社,2002.82 何立民. 单片机高级教程 第1版M北京:北京航空航天大学出版社,2001 3赵晓安. MCS-51单片机原理及应用m 天津:天津大学出版社,2001.3 4李广第 单片机基础 第1版M北京:北

14、京航空航天大学出版社,1999 5徐惠民、安德宁 单片微型计算机原理接口与应用M 第1版 北京:北京邮电大学出版社,1996 6何立民从Cygnal 80C51F看8位单片机发展之路J 单片机与嵌入式系统应用,2002年,第5期:P58 7常敏 ,51单片机应用程序开发与实践 M 电子工业出版社 2009.3四,附录1) 元器件清单序号名称型号,参数备注价格数量1CPUSTC89C52DIP40封装712管座DIP-400.513晶振12MHz49S型0.514整流桥2W102A 圆桥115稳压ICLM7805TO-220116元片电容30pf0.527电解电容1000uf/16V0.518电

15、解电容470uf/16V0.519电解电容10uf/16V0.5110独石电容0.47uf0.5211自锁开关8*8 自锁开关-6P8mm8mm1112电阻10K/0.25W金属膜1/4W0.5113单排排针直针1*402.54mm2414杜邦线53015温度传感器DS18B205116LCD显示屏LCD160220117变压器温州升龙变压12118焊锡丝5119单排座1120短路子跳线帽2.54mm2若干成本总价57元2) 原理图3) 程序清单#include#define uchar unsigned char#define uint unsigned intsbit DQ=P37;/ds

16、18b20与单片机连接口sbit RS=P30;sbit RW=P31;sbit EN=P32;unsigned char code str1=temperature: ;unsigned char code str2= ; uchar data disdata5;uint tvalue;/温度值uchar tflag;/温度正负标志/*lcd1602程序*/ void delay1ms(unsigned int ms)/延时1毫秒(不够精确的) unsigned int i,j; for(i=0;ims;i+) for(j=0;j0;i-) DQ = 0; /给脉冲信号 dat=1; DQ

17、= 1; /给脉冲信号 if(DQ) dat|=0x80; delay_18B20(10); return(dat); void ds1820wr(uchar wdata)/*写数据*/ unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = wdata&0x01; delay_18B20(10); DQ = 1; wdata=1; read_temp()/*读取温度值并转换*/ uchar a,b; ds1820rst(); ds1820wr(0xcc);/*跳过读序列号*/ ds1820wr(0x44);/*启动温度转换*/ ds1820rst(

18、); ds1820wr(0xcc);/*跳过读序列号*/ ds1820wr(0xbe);/*读取温度*/ a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue=8; tvalue=tvalue|a; if(tvalue0x0fff) #include#define uchar unsigned char#define uint unsigned intsbit DQ=P37;/ds18b20与单片机连接口sbit RS=P30;sbit RW=P31;sbit EN=P32;unsigned char code str1=temperature: ;unsi

19、gned char code str2= ; uchar data disdata5;uint tvalue;/温度值uchar tflag;/温度正负标志/*lcd1602程序*/ void delay1ms(unsigned int 1ms)/延时1毫秒(不够精确的) unsigned int i,j; for(i=0;ims;i+) for(j=0;j0;i-) DQ = 0; /给脉冲信号 dat=1; DQ = 1; /给脉冲信号 if(DQ) dat|=0x80; delay_18B20(10); return(dat); void ds1820wr(uchar wdata)/*写

20、数据*/ unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = wdata&0x01; delay_18B20(10); DQ = 1; wdata=1; read_temp()/*读取温度值并转换*/ uchar a,b; ds1820rst(); ds1820wr(0xcc);/*跳过读序列号*/ ds1820wr(0x44);/*启动温度转换*/ ds1820rst(); ds1820wr(0xcc);/*跳过读序列号*/ ds1820wr(0xbe);/*读取温度*/ a=ds1820rd(); b=ds1820rd(); tvalue=b

21、; tvalue=8; tvalue=tvalue|a; if(tvalue0x0fff) tflag=0; else tvalue=tvalue+1; tflag=1; tvalue=tvalue*(0.625);/温度值扩大10倍,精确到1位小数 return(tvalue); /*/ void ds1820disp()/温度值显示 uchar flagdat; disdata0=tvalue/1000+0x30;/百位数 disdata1=tvalue%1000/100+0x30;/十位数 disdata2=tvalue%100/10+0x30;/个位数 disdata3=tvalue%10+0x30;/小数位 if(tflag=0) flagdat=0x20;/正温度不显示符号 else flagdat=0x2d;/负温度显示负号:- if(disdata0=0x30) disdata0=0x20;/如果百位为0,不显示 if(disdata1=0x30) disdata1=0x20;/如果百位为0,十位为0也不显示 wr_com(0xc0); wr_dat(fl

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

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