- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于stc89c51的多点温度采集系统 设计流电压源 ——作者:冯银彬,周士杰 系统简介 系统采用数字化温度探测器件,由微电脑芯片智能控制,具有电路结构简单,成本低廉,可容纳测温点多的特点,。经定制可广泛应用于需要多点温度探测或温度报警的场合,如火灾前期温度报警、空调环境监测、工业温度探测、科学实验、水文气象、机房动力环境监测、粮仓、土壤、温室、养殖场、农场、冰窟热窟、矿业、智能家居配套等多点温度监测系统和多点温度测量系统,是最终用户和二次开发解决方案的理想选择。 1 2 3 4 单片机最小系统 数码管动态显示部分 ds18d20测温部分 报警器部分 图片 内容 报警器 数码管电路 温度测量 单片机最小系统 单片机的最小系统是由组成单片机系统必需的一些元件构成的, 除了单片机之外,还需要包括晶振电路、复位电路. ds18d20测温部分 由于每只DS18B20都有一个唯一存储在ROM中的64位编码,所以可以再在一根总线上接多个DS18B20。一线总线在空置状态时,都是一直处于高电平。 #include reg51.H #includeintrins.h sbit DQ=P3^2;//定义单片机接ds18b20的数据端 void Delay1us(unsigned char us) { while(us) { ?? _nop_(); ?? --us; } } 单片机访问 DS18B20 DS18B20 一般都是充当从机的角色,而单片机就是主机。单片机通过一线总线访问 DS18B20 的话,需要经过以下几个步骤: 1.DS18B20 复位。 2.执行ROM 指令。 3.执行DS18B20 功能指令(RAM 指令)。 void DS1302_Reset() { DDRA|=BIT(DQ); //DQ 为输出状态 PORTA=~BIT(DQ); //输出低电平 Delay_1us(500); //延迟500 微妙 PORTA|=BIT(DQ); //示范总线 Delay_1us(60); //延迟60 微妙 DDRA=~BIT(DQ); //DQ 位输出状态 while(PINABIT(DQ)); //等待从机DS18B20 应答(低电平有效) while(!(PINABIT(DQ))); //等待从机DS18B20 释放总线 } 复位程序 void DS1302_Write(unsigned char Data) { unsigned char i; DDRA|=BIT(DQ); //DQ 为输出 for(i=0;i8;i++) { PORTA=~BIT(DQ); //拉低总线 Delay_1us(10); //延迟10 微妙(最大15 微妙) if(Data0x01) PORTA|=BIT(DQ); else PORTA=~BIT(DQ); Delay_1us(40); //延迟40 微妙(最大45 微妙) PORTA|=BIT(DQ); //释放总线 Delay_1us(1); //稍微延迟 Data=1; } } 实现一个字节的写程序 unsigned char DS1302_Read() { unsigned char i,Temp; for(i=0;i8;i++) { Temp=1; //数据右移 DDRA|=BIT(DQ); //DQ 为输出状态 PORTA=~BIT(DQ); //拉低总线,启动输入 PORTA|=BIT(DQ); //释放总线 DDRA=~BIT(DQ); //DQ 为输入状态 if(PINABIT(DQ)) Temp|=0x80; Delay_1us(45); //延迟45 微妙(最大45 微妙) } return Temp; } 写一个字节 unsigned int Read_Temperature() { unsigned int Temp1,Temp2; DS1302_Reset(); //DS1302 复位 DS1302_Write(0x44); //温度转换 DS1302_Reset(); //DS1302 复位 DS1302_Write(0xbe); //读取RAM Temp1=DS1302_Read(); /*读低八位,LS Byte, RAM0*/ Temp2=DS1302_Read(); /*读高八位,MS Byte, RAM1*/ DS1302_Reset(); //DS1302 复位,表示读取结束 } return (((Temp28)|Temp1)*6.25); 温度读取 数码管动态显示部分 首先建立64位编码的辨识数组(因为缺少芯片我只能用中文表达一下了。)当数据进来时
您可能关注的文档
最近下载
- 2025年舞蹈教师资格证考试模拟试卷:舞蹈教学法与课程设计案例分析.docx VIP
- 学校食品安全事故应急演练实施方案(含演练脚本).docx
- 湖南省师德师风教育读本.pptx VIP
- 2025秋教科版(2024)科学三年级上册第一单元天气《2.docx VIP
- ISO∕IEC 20000-1:2018《信息技术服务管理第一部分:服务管理体系要求》之17-“8.1运行的策划与控制”理解与应用指导材料.docx VIP
- 验收标准内装 .pdf VIP
- 像医生一样思考(完全版).pptx VIP
- 北大附中学生家长写给高二同学的一封信导论.doc VIP
- 2025年白酒酿造工试题题库.pdf VIP
- 关于进一步加强公司在职员工学历提升的通知(专业完整模板).docx VIP
文档评论(0)