基于51单片机的数字温度计.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于AT89S51的温度计 院 系:电气与信息工程学院 专 业:**** 班 级:**** 学生姓名:**** 学 号:**** 日 期:2012年11月11号 第一部分 设计要求: 采用AT89C51单片机和LCD液晶显示器设计一个数字温度计,当外界温度变化时,显示屏上的温度值也随着变化。数字温度计的测温范围为-55°C到125°C之间。 第二部分 硬件原理框图: AT89C51单片机 AT89C51单片机 L LCD液晶显示电路 晶振振荡电路 晶振振荡电路 复位电路温度传感器采集电路 复位电路 温度传感器采集电路 电 电 源 电 路 硬件部分主要分为晶振振荡电路、复位电路、LCD液晶显示电路、DS18B20温度传感器采集电路、电源电路等部分组成。 第三部分 硬件原理图: 硬件模块原理图: 晶振振荡电路 该电路是由两个电容和一个晶振组成,晶振产生基本的时钟信号它给单片机提供时钟信号。 复位电路 复位的主要作用是把特殊功能寄存器的数据刷新为默认数据,单片机在运算过程中由于干扰等外界原因造成寄存器中数据混乱不能使其正常继续执行程序或产生的结果不正确时均需要复位,以使程序重新开始运行。 LCD液晶显示电路 经过温度传感器,将采集到的温度信息传给单片机,单片机处理后又将信息发给P0口,P0口与LCD的数据口相连接,液晶屏上会显示采集到的温度值。 温度传感器采集电路 单线数字温度传感器DS18B20测量温度范围为 -55°C~+125°C,-10~+85°C范围内,精度为±0.5°C。DS1822的精度较差为± 2°C 。DS18B20的管脚排列如下: DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。 电源电路 设计中利用桥式整流和电容滤波以及7805集成稳压来输出+5V电压,以满足AT89C51、LCD1602、DS18B20等器件的工作需求,原理如下: 第四部分 程序流程图 初始化显示调用子程序 初始化 显示调用子程序 1s到? 初次上电? 读出温度值 温度计算处理 显示数据刷新 发温度转换开始命令 发DS18B20复位命令 发跳过ROM命令 发温度转换开始命令 结束 图 图2 温度转换命令子程序流程图 N 图 图1 主程序流程图 第五部分 总结: 在本次设计的过程中,我查阅了许多文献资料,从中学到了很多有关系统开发和程序调试方面等的知识。在软件开发过程中掌握了一些技术难题的解决方法和技巧,巩固和加深了所学知识的理解,能够把所学的知识与实践相结合,培养了认真严谨的学习态度,为以后开发软件积累了大量的经验,提高了分析问题和解决问题的能力。但是由于认识上的片面和不足,各方面的条件影响也很多,本设计还有待进一步的完善和优化,这些在以后的学习中要注重积累。 第六部分 主要程序 #include reg51.h #include intrins.h #define uint unsigned int #define uchar unsigned char #definedelayNOP() {_nop_();_nop_();_nop_();_nop_();}//_nop_()为一个机器周期 sbit DQ = P3^3; sbit LCD_RS = P2^0; sbit LCD_RW = P2^1; sbit LCD_EN = P2^2; uchar code Temp_Disp_Title1[]=Now Temperature:;//液晶第一行显示的字符 uchar Temp_Display_Title2[]= TEMP: ;//第二行前半部分显示的字符 uchar code Temperature_Char[8] = { 0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00 }; uchar code d

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档