ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:62.02KB ,
资源ID:1729546      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1729546.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ds18b20多路温度采集程序.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ds18b20多路温度采集程序.docx

1、ds18b20多路温度采集程序本程序为ds18b20的多路温度采集程序,是我自己参考其他程序后改写而成,可显示4路正负温度值,并有上下限温度报警(声音、灯光报警)。亲测,更改端口即可使用。(主要器件:51单片机,ds18b20,lcd显示器)附有proteus仿真图,及序列号采集程序/*上限62度 下限-20度*/#include#define uchar unsigned char#define uint unsigned intsbit ds=P11;sbit rs=P14;sbit e=P16;sbit sp=P10;sbit d1=P12;sbit d2=P13;uchar lcdro

2、m48=0x28,0x30,0xc5,0xb8,0x00,0x00,0x00,0x8e, 0x28,0x31,0xc5,0xb8,0x00,0x00,0x00,0xb9, 0x28,0x32,0xc5,0xb8,0x00,0x00,0x00,0xe0, 0x28,0x33,0xc5,0xb8,0x00,0x00,0x00,0xd7;unsigned char code table0=TEMPERARTURE:U ;unsigned char code table1=0123456789ABCDEF;int f4;int tvalue;float ftvalue;uint warnl=320;u

3、int warnh=992;/*lcd程序*/void delayms(uint ms)/延时 uint i,j; for(i=ms;i0;i-) for(j=110;j0;j-);void wrcom(uchar com)/写指令 delayms(1); rs=0; P3=com; delayms(1); e=1; delayms(1); e=0;void wrdat(uchar dat)/写数据 rs=1; e=0; P3=dat; delayms(5); e=1; delayms(5); e=0;void lcdinit()/初始化lcd delayms(15); wrcom(0x38)

4、;delayms(5); wrcom(0x0c);delayms(5); wrcom(0x06);delayms(5); wrcom(0x01);delayms(5);void display(uchar *p)/显示 while(*p!=0) wrdat(*p); p+; delayms(1); displayinit()/初始化显示 lcdinit(); wrcom(0x80); display(table0);/*ds18b20程序*/void dsrst()/ds18b20复位 uint i; ds=0; i=103; while(i0)i-; ds=1; i=4; while(i0)

5、i-;bit dsrd0()/读一位数据 uint i; bit dat; ds=0;i+; ds=1;i+;i+; dat=ds; i=8;while(i0)i-; return(dat);uchar dsrd()/读1个字节数据 uchar i,j,dat; dat=0; for(i=8;i0;i-) j=dsrd0(); dat=(j1); return(dat);void dswr(uchar dat)/写数据 uint i; uchar j; bit testb; for(j=8;j0;j-) testb=dat&0x01; dat=dat1; if(testb) ds=0; i+;

6、i+; ds=1; i=8;while(i0)i-; else ds=0; i=8;while(i0)i-; ds=1; i+;i+; void tmstart()/初始化ds18b20 sp=1; d1=1; d2=1; dsrst(); delayms(1); dswr(0xcc); dswr(0x44);void read_dealtemp()/读取并处理温度 uchar i,j,t; uchar a,b; for(j=0;j4;j+) dsrst(); delayms(1); dswr(0x55); for(i=0;i8;i+) dswr(lcdromji);/发送64位序列号 dsw

7、r(0xbe); a=dsrd(); b=dsrd(); tvalue=b; tvalue=8; tvalue=tvalue|a; if(tvaluewarnl) d2=0; sp=0; else d2=1; sp=1; else d2=1; wrcom(0xc0); wrdat( ); if(tvaluewarnh) d1=0; sp=0; else d1=1; sp=1; if(j=0) wrcom(0x8e); wrdat(2); if(j=1) wrcom(0x8e); wrdat(3); if(j=2) wrcom(0x8e); wrdat(4); if(j=3) wrcom(0x8

8、e); wrdat(5); ftvalue=tvalue*0.0625; tvalue=ftvalue*10+0.5; ftvalue=ftvalue+0.05; fj=tvalue;/温度扩大十倍,精确到一位小数 tvalue=fj; t=tvalue/1000; wrcom(0x80+0x41); wrdat(table1t);/显示百位 t=tvalue%1000/100; wrdat(table1t);/显示十位 t=tvalue%100/10; wrdat(table1t);/显示个位 wrdat(0x2e); /显示小数点儿 t=tvalue%10/1; wrdat(table1t

9、);/显示小数位 delayms(5000); /*主函数*/void main() d1=1; d2=1; sp=1; displayinit();/初始化显示 while(1) tmstart();/初始化 read_dealtemp();/读取温度 /*序列号读取程序*/#include #define uchar unsigned char#define uint unsigned intsbit DQ = P11; /温度传感器信号线sbit rs = P14; /LCD数据/命令选择端(H/L)位声明sbit lcden = P16; /LCD使能信号端位声明void delay(

10、uint z); /延时函数void DS18B20_Reset(void); /DQ18B20复位,初始化函数bit DS18B20_Readbit(void); /读1位数据函数uchar DS18B20_ReadByte(void); /读1个字节数据函数void DS18B20_WriteByte(uchar dat); /向DQ18B20写一个字节数据函数void LCD_WriteCom(uchar com); /1602液晶命令写入函数void LCD_WriteData(uchar dat); /1602液晶数据写入函数void LCD_Init(); /LCD初始化函数voi

11、d Display18B20Rom(char Rom); /显示18B20序列号函数/*/* 主函数 */*/void main() uchar a,b,c,d,e,f,g,h; LCD_Init(); DS18B20_Reset(); delay(1); DS18B20_WriteByte(0x33); delay(1); a = DS18B20_ReadByte(); b = DS18B20_ReadByte(); c = DS18B20_ReadByte(); d = DS18B20_ReadByte(); e = DS18B20_ReadByte(); f = DS18B20_Read

12、Byte(); g = DS18B20_ReadByte(); h = DS18B20_ReadByte(); LCD_WriteCom(0x80+0x40); Display18B20Rom(h); Display18B20Rom(g); Display18B20Rom(f); Display18B20Rom(e); Display18B20Rom(d); Display18B20Rom(c); Display18B20Rom(b); Display18B20Rom(a); while(1);/*/* 延时函数:void delay() */* 功能:延时函数 */*/void delay(uint z)/延时函数 uint x,y; for( x = z; x 0

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1