温度检测器的的设计.docVIP

  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文档。上传文档
查看更多
温度检测器的的设计

电子线路设计作业 基于单片机的 温度检测器的设计 学生姓名:X X 学生学号:XXXXXXXXXXXX 一、设计目的 通过基于MCS-51系列单片机AT89C51和DS18B20温度传感器检测温度,熟悉芯片的使用,温度传感器的功能,数码显示管的使用,C语言的设计;并且把我们这一年所学的数字和模拟电子技术、检测技术、单片机应用等知识,通过理论联系实际,从题目分析、电路设计调试、程序编制调试到传感器的选定等这一完整的实验过程,培养了学生正确的设计思想,使学生充分发挥主观能动性,去独立解决实际问题,以达到提升学生的综合能力、动手能力、文献资料查阅能力的作用,为毕业设计和以后工作打下一个良好的基础。 二、设计要求 以MCS-51系列单片机为核心器件,组成一个数字温度计,采用数字温度传感器DS18B20为检测器件,进行单点温度检测,检测精度为0.5摄氏度。 三、设计工具 计算机一台,Keil、Protues软件 四、设计原理 1.复位时序(如图1所示): ①单片机拉低总线480us~950us,然后释放总线(拉高电平) ②这时DS18B20会拉低信号,大约60~240us表示应答 ③DS18B20拉低电平的60~240us之间,单片机读取总线的电平,如果是低电平,表示复位成功,否则不成功(此时一般要重负操作,直到成功为止,编程是要进行判断); ④DS18B20拉低电平60~240us之后,会释放总线。 图1 复位时序 2.写数据操作: ①单片机拉低电平大约10~15us。 ②加入要写入的时高电平,要将电平拉高,否则拉低电平。此时要维持20~45us 的时间。 ③释放总线。 写‘1’操作时序如图2所示 图2 写1操作时序 写‘0’操作时序如图3所示: 图3 写0操作时序 3.读操作时序: ①单片机拉低电平大约1us; ②单片机释放总线,然后读取总线电平; ③这时候DS18B20如果相应位是1会拉高电平,反之会拉低电平; ④读取电平过后延迟大约40~45us。 读‘1’操作时序如图4所示: 图4 读1操作时序 读‘0’操作时序如图5所示: 图5 读0操作时序 4.温度读取函数步骤: DS18B20开始转换: ①DS18B20复位 图6 电路结构框图 六、程序流程: 程序的具体流程图如图7所示: 图7 程序流程图 七、设计结果 通过Protues软件仿真可以得到如图8、9的结果: 图8 仿真结果 图9 仿真结果 八、C语言程序 #includereg51.h #includeintrins.h #define uchar unsigned char uchar a[]={0123456789-}; sbit rs=P1^0; sbit rw=P1^1; sbit e=P1^2; sbit bf=P2^7; sbit DQ=P1^4; uchar flag,t; void delay(uchar i) { uchar j; while(i--) { for(j=0;j125;j++) ; } } bit busytest() { bit a; rs=0;rw=1;e=1; _nop_();_nop_();_nop_();_nop_(); a=bf;e=0; return a; } void write(uchar x) { while(busytest()); rs=0;rw=0;e=0; _nop_();_nop_(); P2=x; _nop_();_nop_();_nop_();_nop_(); e=1; _nop_();_nop_();_nop_();_nop_(); e=0; } void add(uchar x) { write(x|0x80); } void read(uchar x) { while(busytest()); rs=1;rw=0;e=0; _nop_();_nop_(); P2=x; _nop_();_nop_();_nop_();_nop_(); e=1; _nop_();_nop_();_nop_();_nop_(); e=0; } void lcdint() { delay(15); write(0x38);delay(5); write(0x38);delay(5); write(0x38);delay(5); write(0x0c);delay(5); write(0x06);delay(5); write(0x

文档评论(0)

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

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

1亿VIP精品文档

相关文档