发布时间 : 星期二 文章基于单片机的无线温度远程采集监测报警器的设计毕业论文设计;更新完毕开始阅读
附录一 原理图
图1 发射端电路图
14
图2 接收端电路图
15
附录二 部分系统程序源代码
#include
sbit dq = P2^6; //18b20 IO口的定义 uint temperature ; //温度变量 sbit led = P2^7;
/***********************1ms延时函数*****************************/穑釓虚绺滟鳗絲懷紓泺。 变量范围0~255臠龍讹驄桠业變墊罗蘄。 //无符号整型 宏定义 变量范围0~65535鰻順褛悦漚縫冁屜鸭骞。 void delay_1ms(uint q) { }
/***********************小延时函数*****************************/隶誆荧鉴獫纲鴣攣駘賽。 uint i,j; for(i=0;i for(j=0;j<120;j++); void delay_uint(uint q) { } /***********************18b20初始化函数*****************************/浹繢腻叢着駕骠構砀湊。 while(q--); void init_18b20() { bit q; dq = 1; //把总线拿高 delay_uint(1); //15us 16 } dq = 0; //给复位脉冲 //750us //把总线拿高 等待 //110us //读取18b20初始化信号 //200us //把总线拿高 释放总线 delay_uint(80); dq = 1; delay_uint(10); q = dq; delay_uint(20); dq = 1; /*************写18b20内的数据***************/ void write_18b20(uchar dat) { } /*************读取18b20内的数据***************/ uchar read_18b20() { uchar i,value; for(i=0;i<8;i++) { dq = 0; //把总线拿低读时间隙开始 uchar i; for(i=0;i<8;i++) { } //写数据是低位开始 //把总线拿低写时间隙开始 dq = 0; dq = dat & 0x01; //向18b20总线写数据了 delay_uint(5); // 60us dq = 1; dat >>= 1; //释放总线 value >>= 1; //读数据是低位开始 dq = 1; if(dq == 1) //释放总线 //开始读写数据 value |= 0x80; 17