DS18B20单总线多点式测温系统(共16页).docx
《DS18B20单总线多点式测温系统(共16页).docx》由会员分享,可在线阅读,更多相关《DS18B20单总线多点式测温系统(共16页).docx(16页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上DS18B20单总线多点式测温系统1(2011-01-15 19:53:40) 标签: 分类: 主文件:#include#includeunsigned int shu=0x30,0x31,0x32,0x33,0x34,0X35,0x36,0x37,0x38,0x39;unsigned long t; void flcd_1602() /当为负温度时,液晶显示可以高位为0屏蔽. init(0x80);write_data(0x4e);/NO init(0x81);write_data(0x4f); init(0x82);write_data(0x80); init(0
2、x85);write_data(0x74);/temperature init(0x86);write_data(0x65); init(0x87);write_data(0x6d); init(0x88);write_data(0x70); init(0x89);write_data(0x65); init(0x8a);write_data(0x72); init(0x8b);write_data(0x61); init(0x8c);write_data(0x74); init(0x8d);write_data(0x75); init(0x8e);write_data(0x72); init
3、(0x8f);write_data(0x65); init(0xc0);write_data(0x80); init(0xc1);write_data(0x80); init(0xc2);write_data(0x69); /is: init(0xc3);write_data(0x73); init(0xc4);write_data(0x3a);if(t/1000)!=0)init(0xc5);write_data(0x2d); init(0xc6);write_data(shut/1000); init(0xc7);write_data(shut/100);elseinit(0xc5);wr
4、ite_data(0xfe); init(0xc6);write_data(0x2d); init(0xc7);write_data(shut/100);init(0xc8);write_data(0x2e); init(0xc9);write_data(shu(t0)/10);init(0xca);write_data(shut);init(0xcb);write_data(0x27);init(0xcc);write_data(0x43);init(0xcd);write_data(0x80);init(0xce);write_data(0x80);init(0xcf);write_dat
5、a(0x80);void lcd_1602() /当为正温度时,液晶显示可以高位为0屏蔽. init(0x80);write_data(0x4e);/NO init(0x81);write_data(0x4f); init(0x82);write_data(0x80); init(0x84);write_data(0x80); init(0x85);write_data(0x74); /temperature init(0x86);write_data(0x65); init(0x87);write_data(0x6d); init(0x88);write_data(0x70); init(0
6、x89);write_data(0x65); init(0x8a);write_data(0x72); init(0x8b);write_data(0x61); init(0x8c);write_data(0x74); init(0x8d);write_data(0x75); init(0x8e);write_data(0x72); init(0x8f);write_data(0x65); init(0xc0);write_data(0x80); init(0xc1);write_data(0x80); init(0xc2);write_data(0x69); /is: init(0xc3);
7、write_data(0x73); init(0xc4);write_data(0x3a); if(t/10000!=0)init(0xc5);write_data(shut/10000); init(0xc6);write_data(shut/1000); init(0xc7);write_data(shut/100); else if(t/1000)!=0) init(0xc5);write_data(0xfe); init(0xc6);write_data(shut/1000); init(0xc7);write_data(shut/100); else init(0xc5);write
8、_data(0xfe); init(0xc6);write_data(0xfe); init(0xc7);write_data(shut/100); init(0xc8);write_data(0x2e);init(0xc9);write_data(shu(t0)/10);init(0xca);write_data(shut);init(0xcb);write_data(0x27);init(0xcc);write_data(0x43);init(0xcd);write_data(0x80);init(0xce);write_data(0x80);init(0xcf);write_data(0
9、x80);void jiance() /初始化,即检测是否存在DS18B20.unsigned char k=0; loop:DS=1; DS=0; /主机将总线从高电平拉到低电平 del(100); /持续400us960us DS=1; /然后释放总线 del(10); /DS18B20检测到总线上升沿后,等待15us60u后发低电平。 k=DS; del(20); /低电平至少要持续60240us if(k=1) / 60240us内若为高电平则要重新检测。 goto loop;read() /从DS18B20中读出数据 unsigned char i; unsigned long da
10、te=0; for(i=0;i=1;DS=1; del(3); /保持15us将总线拉到高电平,产生读时间隙 if(DS) date|=0x8000; del(8); /读数据需要持续35us60us. return(date);void main() unsigned long flag=0; EA=0; SP=0X60; init(0x01); /对液晶屏初始化 init(0x38); init(0x0c); init(0x06); while(1) jiance(); /对DS18B20初始化 matchrom(); write(0x44); /启动温度变换del(100); jianc
11、e(); matchrom(); if(f=1) f=0; else write(0xbe); / 读暂存存储器 t=read(); flag=t&0x8000; /对读取的数据进行处理 if(flag=0x8000) t=t; t=t+1; t=t*25; t=2; flcd_1602(); else t=t*25; t=2; lcd_1602(); 头文件:#include#ifndef _XUANZE_H_#define _XUANZE_H_unsigned char k,f=0;sbit RS=P20;sbit RW=P21;sbit E=P22;sbit DS=P11;void de
12、l( int count ) /延时程序while(count-) ;void delay(unsigned int count)/延时程序int p;while(count-)for(p=0;p125;p+);void write(unsigned char date)/向DS18B20中写入数据 int i; for(i=0;i=1; void init(unsigned int n)/ RW=0,RS=0;向指令寄存器中写入命令,即对1602初始化。 delay(10); E=0; RS=0; RW=0; E=1; P0=n; E=0;void write_data(unsigned c
13、har n)/RS=1,RW=0;向数据寄存器中写入数据,即显示的数符。delay(10); E=0;RS=1;RW=0;E=1;P0=n; E=0; void matchrom()/匹配ROM k=P3; switch(k) case 0: f=1; init(0x80);write_data(0x57);/which init(0x81);write_data(0x68); init(0x82);write_data(0x69); init(0x83);write_data(0x63); init(0x84);write_data(0x68); init(0x85);write_data(
14、0x80); init(0x86);write_data(0x4e);/NO init(0x87);write_data(0x4f); init(0x88);write_data(0x79);/you init(0x89);write_data(0x6f); init(0x8a);write_data(0x75); init(0x8b);write_data(0x80); init(0x8c);write_data(0x57);/want init(0x8d);write_data(0x61); init(0x8e);write_data(0x6e); init(0x8f);write_dat
15、a(0x74); init(0xc0);write_data(0x70); /press init(0xc1);write_data(0x72); init(0xc2);write_data(0x65); init(0xc3);write_data(0x73); init(0xc4);write_data(0x73); init(0xc5);write_data(0x80); init(0xc6);write_data(0x57);/which init(0xc7);write_data(0x68); init(0xc8);write_data(0x69); init(0xc9);write_
16、data(0x63); init(0xca);write_data(0x68); init(0xcb);write_data(0x80); init(0xcc);write_data(0x6b);/key init(0xcd);write_data(0x65); init(0xce);write_data(0x79); init(0xcf);write_data(0x80); break; case 1: init(0x83);write_data(0x31);/NO 1 write(0x55); write(0x28); write(0x30); write(0xc5); write(0xb
17、8); write(0x00); write(0x00); write(0x00); write(0x8e); break; case 2: init(0x83);write_data(0x32);/NO 2 write(0x55); write(0x28); write(0x31); write(0xc5); write(0xb8); write(0x00); write(0x00); write(0x00); write(0xb9); break; case 4: init(0x83);write_data(0x33); /NO 3 write(0x55); write(0x28); wr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DS18B20 总线 多点 测温 系统 16
限制150内