温度计-通信1班-唐健-20102553 课题报告.docVIP

温度计-通信1班-唐健-20102553 课题报告.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
温度计-通信1班-唐健-20102553 课题报告

数字温度计实验报告 实验目的 设计一个可以测定温度并显示温度的数字温度计,并具有要求的功能; 用仿真软件设计出数字温度计的电路图,用相应的软件编写出代码,并用仿真软件仿真,在单片机板上用电路元件连接出设计的电路图,并将代码写入硬件并使之成功运行。 实验要求 1、能够实时显示环境温度。 2、能够保存使用时间内的最大值和最小值,能够查阅。 3、有温度报警功能,能够设置报警温度。用绿灯表示正常温度,红灯表示报警同时发 声。 4、自由发挥其他功能. 5、要求有单片机硬件系统框图,电路原理图,软件流程图。 三、实验原理 利用DS18B20的实时测定温度的功能对环境温度进行测定。因为DS18B20利用的是单行 通信,所有只有一根数据线,这里命名为DQ。通过DQ,将实时测得的温度在数码管上 显示出来。数码管显示数字是利用通过对每位数码管的依次扫描,使对应数码管亮,同 时向该数码管送对应的字码,使其显示数字。由于数码管扫描周期很短以及人眼的视 觉暂留效应,使数码管看起来总是亮的,从而实现了数字的动态显示。关于最大值与最 小值的记录,设置两个变量,将第一次读取的温度值存入,然后每一次读取的温度值都 会与其进行比较,较大或较小的值会覆盖原来的值,最值的显示也是通过段选和位选的 数据线来控制显示。当程序没有检查到DS18B20或读取温度在设置范围以外时,程序会 报警并不可操作。这是通过从键盘输入设置温度,然后通过DQ写入DS18B20,在代码 中要求程序在温度不在合理范围内时报警来实现的。 四、元器件清单 名称 数量 AT89C52单片机 1 排阻 1 LED灯 2(红色绿色各一) 4*3小键盘 1 8位数码管 1 蜂鸣器 1 DS18B20 1 硬件系统框图 六、电路原理图 软件流程图 代码分析 1、延迟函数:起到时间延迟的作用。 void delay(unsigned int time) { while(time--); } 2、DS18B20初始化函数:检测DS18B20是否正常连接,若是,则初始化;反之则报错,程序进入死循环,等待查明原因并改正。 bit Init_DS18B20(void) { bit flag;     //记录DS18B20数据传输是否正常 DQ = 1; delay(8); DQ = 0; delay(90); DQ = 1; delay(8); flag=DQ; //让单片机检测是否输出了存在脉冲(DQ=0表示存在) delay(100); DQ=1; return (flag); //返回flag } 3、向DS18B20写入数据的函数:每次调用即向DS18B20中写入一 个字节的数据。 unsigned char ReadOneChar(void) { unsigned char i=0; //循环变量 unsigned char dat; //储存要写入的数据 for (i=0;i8;i++) { DQ =0; dat=1; //右移一位 DQ = 1; nop_(); //代表一个机器周期 nop_(); if(DQ==1) dat|=0x80; //若是1,即存入1;若是0,即存入0 else dat|=0x00; delay(30); DQ = 1; } return(dat); } 4、向DS18B20写入数据的函数:每次调用向DS18B20中写入一个字节的数据。 void WriteOneChar(unsigned char dat) { unsigned char i=0; for (i=0; i8; i++) { DQ=0; DQ=dat0x01; //利用与运算取出要写的某位二进制数据, //并将其送到数据线上等待DS18B20采样 delay(5); DQ=1; dat=1; //将dat中的各二进制位数据右移1位 } } 5、读温度准备函数:在读取温度之前做好初始化等工作。 void ReadyReadTemp(void) { I

文档评论(0)

cgtk187 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档