机电之家资源网
单片机首页|单片机基础|单片机应用|单片机开发|单片机文案|软件资料下载|音响制作|电路图下载 |嵌入式开发
培训信息
赞助商
18B20(PIC测温程序)
18B20(PIC测温程序)
 更新时间:2008-7-26 16:11:10  点击数:4
【字体: 字体颜色

[原作者没有提供所使用的编译器,由于是C程序,所以大同小异,建议使用时,确认是否与你的编译器兼容]

# include <pic18f1220.h>

# define uch unsigned char

# define unint unsigned int

# define DQ RB3//定义18B20数据端口

# define DQ_DIR TRISB3//定义18B20D口方向寄存器

# define W1_INPUT 1

# define W1_OUTPUT 0

# define FALSE 0

# define TRUE !FALSE

# define DQ_HIGH() DQ_DIR = W1_INPUT

# define DQ_LOW() DQ = 0; DQ_DIR = W1_OUTPUT

void delay(unint x)

{

unint d;

d=x;

while(--d)

{;}

}

bit reset(void)//初始化18B20

{

static bit presence;//定义一个应答信号

DQ_LOW();

delay(70);//置总线为低电平并保持至少480us

DQ_HIGH();//等电阻拉高总线并保持15-60us

delay(5);

presence=DQ;//接受应答信号

delay(20);//延时60-240us

return(presence);//返回应答信号

}

//*************** 读一位函数******************//

bit read_bit(void)

{

static bit i;

DQ_LOW();

DQ_LOW();

DQ_HIGH();

asm("nop");

asm("nop");

asm("nop");

i=DQ;

delay(3);

return(i);

}

//*********************写一位函数****************//

void write_bit(uch bitval)

{

DQ_LOW();

delay(1);

if (bitval==1)

{

DQ_HIGH();

}

delay(3);

DQ_HIGH();

}

//************** 从18B20中读一个字节**************//

uch read_byte(void)

{

uch i;

uch j;

uch value=0;

for (i=0;i<8;i++)

{

j=read_bit();//调读位函数

if (j)//如果是 1 置1

{

value|=(0x01<<i);//先读低位,再读高位

asm("nop");

asm("nop");

asm("nop");

}

}//否则置 0

return(value);

}

//*********************向18B20中 写一个字节**************//

void write_byte(uch val)

{

uch i;

uch temp;

for (i=0;i<8;i++)

{

temp=val>>i;

temp&=0x01;

write_bit(temp);//调写位函数

}

asm("nop");

asm("nop");

asm("nop");

}

main()

{

uch teml,temh;

GIE=0;

OSCCON=0X6E;//这是18F1320的频率选择寄存器

ADCON1=0X7F;

do{

;

}while (reset()) ;//复位等待从机应答

write_byte(0XCC);//忽略ROM匹配

write_byte(0X44);//发送温度转化命令

delay(25000);//延时100-300us

do

{

;

}while( reset());//再次复位,等待从机应答

write_byte(0XCC);//忽略ROM匹配

write_byte(0XBE);//发送读温度命令

teml =read_byte();//读出温度低8

temh=read_byte();//读出温度高8位

DQ_HIGH();//释放总线

}

  • 上一篇: PIC在电话远程控制器中的低功耗设计一
  • 下一篇: PIC单片机循环应用程序的实例
  • 发表评论   告诉好友   打印此文  收藏此页  关闭窗口  返回顶部
    热点文章
     
    推荐文章
     
    相关文章
    网友评论:(只显示最新5条。)
    关于我们 | 联系我们 | 广告合作 | 付款方式 | 使用帮助 | 机电之家 | 会员助手 | 免费链接

    点击这里给我发消息66821730(技术支持)点击这里给我发消息66821730(广告投放) 点击这里给我发消息41031197(编辑) 点击这里给我发消息58733127(审核)
    本站提供的机电设备,机电供求等信息由机电企业自行提供,该企业负责信息内容的真实性、准确性和合法性。
    机电之家对此不承担任何保证责任,有侵犯您利益的地方请联系机电之家,机电之家将及时作出处理。
    Copyright 2007 机电之家 Inc All Rights Reserved.机电之家-由机电一体化网更名-声明
    电话:0571-87774297 传真:0571-87774298
    杭州滨兴科技有限公司提供技术支持

    主办:杭州市高新区(滨江)机电一体化学会
    中国行业电子商务100强网站

    网站经营许可证:浙B2-20080178-1