




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本程序为ds18b20的多路温度采集程序,是我自己参考其他程序后改写而成,可显示4路正负温度值,弁有上下限温度报警(声音、灯光报警).亲测,更改端口即可使用.(主要器件:51单片机,ds18b20,led显二皿zKw)附有proteus仿真图,及序列号采集程序 U2_b , p*噂叩,.,«TE7T =;, us - 乂T昌1_司fO I4blXT*LZFO3*lKLFQ睁FCi.CMMI'U.OMitCH5TFOJjWpTP2 Ij此FWFhl叩印11i!EApa.iMHi” 7质情Fl IJT泪;w.igatpi用m flP4CE P1.7JCEK4M.aimiF3则他P
2、3 3£ti ,研丽TF3.7IH&一TEHPERRRTURE:U2 '020.2善妥善兽翼1费才,P露坪脚.-n Q- LUh p- (ll iH "m Q1 Q 口、> > P n: ® iu aaaaaaa/*上限62度下限一20度*/#include<reg51.h#defineueharunsignedchar#defineuintunsignedintsbitds=P1A1;sbitrs=P1A4;sbite=P1A6;sbitsp=P1A0;sbitd1=P1A2;sbitd2=P1A3;ucharIcdrom48=
3、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;unsignedcharcodetable0=”TEMPERARTURE:U”;unsignedcharcodetablel口="0123456789ABCDEF;intf4;inttvalue;floatftvalue;uintwarnl=320;uintwarnh=
4、992;/lcd程序/uinti,j;for(i=ms;i>0;i-)for(j=110;j0;j-);voidwrcom(ucharcom)/写指令delayms(1);rs=0;P3=com;delayms(1);e=1;delayms(1);e=0;voidwrdat(uchardat)/写数据rs=1;e=0;P3=dat;delayms(5);delayms(5);e=0;voidlcdinit()/初始化lcddelayms(15);wrcom(0x38);delayms(5);wrcom(0x0c);delayms(5);wrcom(0x06);delayms(5);wrc
5、om(0x01);delayms(5);voiddisplay(uchar*p)/显示while(p!='0')wrdat(p);p+;delayms(1);displayinit()/初始化显示lcdinit();wrcom(0x80);display(table0);/*ds18b20程序*/voiddsrst()/ds18b20复位uinti;ds=0;i=103;while(i0)i-;ds=1;i=4;while(i0)i;bitdsrd0()/读一位数据uinti;bitdat;ds=0;i+;ds=1;i+;i+;dat=ds;i=8;while(i>0)i
6、;return(dat);uchardsrd()/读1个字节数据uchari,j,dat;dat=0;for(i=8;i0;i-)j=dsrd0();dat=(j<<7)|(dat1);return(dat);voiddswr(uchardat)/写数据uinti;ucharj;bittestb;for(j=8;j0;j-)testb=dat&0x01;dat=dat>>1;if(testb)ds=0;i+;i+;ds=1;i=8;while(i>0)i)elseds=0;i=8;while(i>0)ids=1;i+;i+;)voidtmstart(
7、)初始化ds18b20sp=1;d1=1;d2=1;dsrst();delayms(1);dswr(0xcc);dswr(0x44);voidread_dealtemp()/读取并处理温度uchari,j,t;uchara,b;for(j=0;j4;j+)dsrst();delayms(1);dswr(0x55);for(i=0;i8;i+)dswr(lcdromji);/发送64位序列号dswr(0xbe);a=dsrd();b=dsrd();tvalue=b;tvalue<=8;tvalue=tvalue|a;if(tvalue<0)d1=1;tvalue=tvalue+1;w
8、rcom(0xc0);wrdat(0x2d);if(tvalue>warnl)d2=0;sp=0;elsed2=1;elsed2=1;wrcom(0xc0);wrdat(;)if(tvaluewarnh)d1=0;sp=0;elsed1=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(0x8e);wrdat();5'ftvalue=tvalue*0.0625;tvalue=ftvalue*10+0。5;
9、ftvalue=ftvalue+0.05;fj=tvalue;/温度扩大十倍,精确到一位小数tvalue=fj;t=tvalue/1000;wrcom(0x80+0x41);wrdat(table1t);/显示百位t=tvalue1000/100;wrdat(table1t);/显示十位t=tvalue%100/10;wrdat(table1t);/显示个位wrdat(0x2e);/显示小数点儿t=tvalue%10/1;wrdat(table1t);/显示小数位delayms(5000);/*主函数*/voidmain()d1=1;d2=1;sp=1;displayinit();/初始化显示
10、while(1)tmstart();/初始化read_dealtemp();/读取温度/*序列号读取程序*/include<reg52。h>defineucharunsignedchar/温度传感defineuintunsignedintsbitDQ=P1八1;器信号线sbitrs=P1八4;命令选择端(H/L)位声明sbitIcden=P1八6;位声明voiddelay(uintz);函数voidDS18B20_Reset(void/DQ18B20复位,初始化函数bitDS18B20_Readbit(void);函数ucharDS18B20_ReadByte(void);节数据函
11、数voidDS18B20_WriteByte(uchardat);一个字节数据函数voidLCD_WriteCom(ucharcom);晶命令写入函数voidLCD_WriteData(uchardat);晶数据写入函数voidLCD_Init(/LCD 数据 /LCD 使能信号端/延时);/读 1 位数据/ 读 1 个字/向 DQ18B20 写/1602 液/1602 液);/LCD初始化函数voidDisplay18B20Rom(charRom);/显示18B20序列号函数/*/*主函数*/*voidmain()uchara,b,c,d,e,f,g,h;LCD_Init();DS18B20
12、_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_ReadByte();g=DS18B20_ReadByte();h=DS18B20_ReadByte();LCD_WriteCom(0x80+0x40);Display18B20Rom(h);Display18B20Rom(g);Display18B20Rom(f);
13、Display18B20Rom(e);Display18B20Rom(d);Display18B20Rom(c);Display18B20Rom(b);Display18B20Rom(a);while(1);/*/*延 时 函 数 : void delay ( )功能延时函数/*/voiddelay(uintz)/延时函数uintx,y;forx=z;x0;x-)for(y=110;y0;y-);/*/*DS18B20函数voidDS18B20_Reset()台匕能复位18B20/*voidDS18B20Resetvoid)/DQ18B20复位,初始化函数uinti;DQ=0;i=103;wh
14、ile(iDQ=1;i=4;while(i>0)/*/DS18B20函数:voidDS18B20_Readbit()*/功能:读1个字节数据函数*/* * * * * * *bitDS18B20_Readbit(void)/读1位数据函数uinti;bitdat;DQ=0;i+;i+起延时作用DQ=1;i+;i+;dat=DQ;i=8;while(i0)i-;return(dat);*/*DS18B20函数:voidDS18B20_ReadByte()/功能:读1个字节数据函数*/*/ucharDS18B20_ReadByte(void)/读1个字节数据函数uchari,j,dat;da
15、t=0;for(i=1;i<=8;i+)j=DS18B20_Readbit();dat=(j7)|(dat>>1);return(dat);* * * * * * * * * * */DS18B20函数:voidDS18B20_WriteByte()*/功能:向DQ18B20写一个字节数据函数*/*/voidDS18B20_WriteByte(uchardat)/向DQ18B20写一个字节数据函数uinti;ucharj;bittestb;for(j=1;j<=8;j+)testb=dat&0x01;dat=dat1;if(testb)/写1DQ=0;i+;i+
16、;DQ=1;i=8;while(i0)i-;elseDQ = 0;i = 8 ; while ( iDQ = 1;i+ ; i+;/* */LCD*/*功 能*/ * *void LCD_WriteCom*/函 数 : void:向LCD*/uchar com)/ 写 00) i- ;*LCD_WriteCom( )写入命令*rs=0;P3=com;delay(5);lcden=0;delay(5);lcden=1;delay(5);lcden=0;/* * * * * * */*/LCD 函 数台匕能voidLCD_WriteData(ucharLCD* * * * * * * * * *
17、*dat)/将待写入数*/voidLCD_WriteData(uchardat)rs=1;选择LCD为写入数据状态lcden=0;P3=dat;据放到总线上delay(5);lcden=1;/给LCD使能端一个脉冲delay(5);/信号将之前放到总线上lcden=0;/的数据写入LCDdelay(5);/*/LCD函数:voidLCD_Init()*/功能:初始化LCD,设定LCD的初始状态/*/voidLCD_Init()LCD_WriteCom(0x38);/LCD显示模式设定delay(15);LCD_WriteCom(0x08);/关闭LCD显示delay(3);LCD_WriteCom(0x01);清屏delay(3);LCD_WriteCom(0x06);地址指针为自动加1delay(3);LCD_WriteCom(0x0c);显示,但不显示光标/LCD显示/设定光标/打开LCD/*/*/显示18B20序列号*v
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 跨境电商货运险
- 企业合规经营实践指南
- 江西雨水收集系统
- 新能源汽车充电保护
- 医疗行业医疗器械采购指南
- 智能家居控制系统展览会
- 三农政策背景下农业产业结构调整方案
- 母婴护理中级练习测试卷
- 家庭农场经营管理手册
- 产品营销策略对比表格
- 全过程造价咨询服务实施方案
- 实用参考从合规到绩效:宋志平谈央企学习型董事会建设
- GB/T 912-2008碳素结构钢和低合金结构钢热轧薄钢板和钢带
- GB/T 26480-2011阀门的检验和试验
- 中共一大会址
- 云南省烟草买卖合同(标准版)
- 2023个人独资企业清算报告(精选4篇)
- 卫生统计学(全套课件)
- 2021年6月浙江省高考读后续写课件-高考英语复习备考
- 小学古诗词80首(硬笔书法田字格)
- 城市轨道交通供电技术442页完整版教学课件汇总全书电子教案
评论
0/150
提交评论