![ds18b20多路温度采集程序(共24页)_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-8/20/b199c532-1edc-49b8-b6d9-4d75a56f6fd2/b199c532-1edc-49b8-b6d9-4d75a56f6fd21.gif)
![ds18b20多路温度采集程序(共24页)_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-8/20/b199c532-1edc-49b8-b6d9-4d75a56f6fd2/b199c532-1edc-49b8-b6d9-4d75a56f6fd22.gif)
![ds18b20多路温度采集程序(共24页)_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-8/20/b199c532-1edc-49b8-b6d9-4d75a56f6fd2/b199c532-1edc-49b8-b6d9-4d75a56f6fd23.gif)
![ds18b20多路温度采集程序(共24页)_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-8/20/b199c532-1edc-49b8-b6d9-4d75a56f6fd2/b199c532-1edc-49b8-b6d9-4d75a56f6fd24.gif)
![ds18b20多路温度采集程序(共24页)_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-8/20/b199c532-1edc-49b8-b6d9-4d75a56f6fd2/b199c532-1edc-49b8-b6d9-4d75a56f6fd25.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本程序为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 lcdrom48=0x28,0x30,0
2、xc5,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;uint warnh=992;/
3、*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()/初始化lcddelayms(15);wrcom(0x38);delayms(5);wrcom(0x0c);delayms(5)
4、;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)i-;bit dsrd0()/读一位数据uint i;bit dat;ds=0;i+;ds=1;i+;i
5、+;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+;i+;ds=1;i=8;while(i0)i-;elseds=0;i=8;while(i0)i-;ds=1;i+;i+;void tmstart()
6、/初始化ds18b20sp=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位序列号dswr(0xbe);a=dsrd();b=dsrd();tvalue=b;tvalue=8;tvalue=tvalue|a;if(tvaluewarnl)d2=0;sp=0;elsed2=1;sp=1
7、;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;ftvalue=ftvalue+0.05;fj=tvalue;/温度扩大十倍,精确到一位小数tvalue=fj;t=tvalue/1000;w
8、rcom(0x80+0x41);wrdat(table1t);/显示百位 t=tvalue%1000/100;wrdat(table1t);/显示十位t=tvalue%100/10;wrdat(table1t);/显示个位wrdat(0x2e); /显示小数点儿t=tvalue%10/1;wrdat(table1t);/显示小数位 delayms(5000);/*主函数*/void main() d1=1;d2=1;sp=1;displayinit();/初始化显示 while(1) tmstart();/初始化 read_dealtemp();/读取温度 /*序列号读取程序*/#includ
9、e #define uchar unsigned char#define uint unsigned intsbit DQ = P11; /温度传感器信号线sbit rs = P14; /LCD数据/命令选择端(H/L)位声明sbit lcden = P16; /LCD使能信号端位声明void delay(uint z); /延时函数void DS18B20_Reset(void); /DQ18B20复位,初始化函数bit DS18B20_Readbit(void); /读1位数据函数uchar DS18B20_ReadByte(void); /读1个字节数据函数void DS18B20_Wr
10、iteByte(uchar dat); /向DQ18B20写一个字节数据函数void LCD_WriteCom(uchar com); /1602液晶命令写入函数void LCD_WriteData(uchar dat); /1602液晶数据写入函数void LCD_Init(); /LCD初始化函数void Display18B20Rom(char Rom); /显示18B20序列号函数/*/* 主函数 */*/void main() uchar a,b,c,d,e,f,g,h; LCD_Init(); DS18B20_Reset(); delay(1); DS18B20_WriteByte
11、(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); Displ
12、ay18B20Rom(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; x- ) for( y = 110; y 0; y- );/*/* DS18B20函数:void DS18B20_Reset() */* 功能:复位18B20 */*/void DS18B20_Reset(voi
13、d)/DQ18B20复位,初始化函数 uint i; DQ = 0; i = 103; while( i 0 ) i-; DQ = 1; i = 4; while( i 0 ) i-;/*/* DS18B20函数:void DS18B20_Readbit() */* 功能:读1个字节数据函数 */*/bit DS18B20_Readbit(void) /读1位数据函数 uint i; bit dat; DQ = 0; i+; /i+起延时作用 DQ = 1; i+; i+; dat = DQ; i = 8; while( i 0 )i-; return( dat );/*/* DS18B20函
14、数:void DS18B20_ReadByte() */* 功能:读1个字节数据函数 */*/uchar DS18B20_ReadByte(void) /读1个字节数据函数 uchar i,j,dat; dat = 0; for( i = 1; i = 8; i+ ) j = DS18B20_Readbit(); dat = ( j 1 ); return(dat);/*/* DS18B20函数:void DS18B20_WriteByte() */* 功能:向DQ18B20写一个字节数据函数 */*/void DS18B20_WriteByte(uchar dat) /向DQ18B20写一个
15、字节数据函数 uint i; uchar j; bit testb; for( j=1; j1; if(testb) /写1 DQ = 0; i+;i+; DQ = 1; i = 8;while(i0)i-; else DQ = 0; /写0 i = 8;while(i0)i-; DQ = 1; i+;i+; /*/* LCD函数:void LCD_WriteCom() */* 功能:向LCD写入命令 */*/void LCD_WriteCom(uchar com) rs = 0; P3= com; delay(5); lcden = 0; delay(5); lcden = 1; delay
16、(5); lcden = 0;/*/* LCD函数:void LCD_WriteData(uchar dat) */* 功能:向LCD写入数据 */*/void LCD_WriteData(uchar dat) rs = 1; /选择LCD为写入数据状态 lcden = 0; P3= dat; /将待写入数据放到总线上 delay(5); lcden = 1; /给LCD使能端一个脉冲 delay(5); /信号将之前放到总线上 lcden = 0; /的数据写入LCD delay(5);/*/* LCD函数:void LCD_Init() */* 功能:初始化LCD,设定LCD的初始状态 */*/void LCD_Init() LCD_WriteCom(0x38); /LCD显示模式设定 delay(15); LCD_WriteCom(0x08); /关闭LCD显示 delay(3); LCD_WriteCom(0x01); /LCD显示清屏 delay(3); LCD_WriteCom(0x06); /设定光标地址指针为自动加1 delay(3); LCD_Writ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023二年级数学上册 六 表内除法 3用乘法口诀求商第7课时 用乘法口诀求商的练习一教案 西师大版
- 关于创业投资企业和天使投资个人有关税收试点政策
- 基础化工行业钾肥分析框架:寡头竞争时代大小周期再次共振
- xx工程高压旋喷止水质量控制要点
- 2023年甘肃定西安定区石峡湾乡选聘村文书考试真题
- 咸阳市实验中学招聘笔试真题2023
- 莆田第十四中学招聘笔试真题2023
- 红河州河口县事业单位招聘笔试真题2023
- 结构力学优化算法:蚁群算法(ACO):ACO算法在结构力学中的应用
- 结构力学优化算法:粒子群优化(PSO):PSO算法的参数设置与调试
- 《照明线路安装与检修》一体化课件-第一章 职业感知与安全用电
- 电信智慧家庭工程师认证考试题库适用网大三四五级-上(单选题汇总)
- 心力衰竭单病种质控查检表
- 陈婉芬金玉良言800句(最全)
- 多元文化背景下的文艺创作
- 广东省清远市重点中学2024学年高三(5月)第二次质量检查语文试题含解析
- 中国古代文学史元明清文学PPT完整全套教学课件
- 文科学术规范与学术论文写作课件
- 强阿片类药物的比较
- 《窦娥冤》《雷雨》《哈姆莱特》群文阅读教学设计、2022-2023学年统编版高中语文必修下册
- 北师大版四年级下册数学第一单元 小数的意义和加减法 测试卷及答案【考点梳理】
评论
0/150
提交评论