当前位置:首页 > 单片机 > 单片机
[导读]这是我在16F877,18F1320,18F1220上通过的18B20程序,18B20主要是延时问题,这个解决了,什么都可以通过。[原作者没有提供所使用的编译器,由于是C程序,所以大同小异,建议使用时,确认是否与你的编译器兼容]C程序#i

这是我在16F877,18F1320,18F1220上通过的18B20程序,18B20主要是延时问题,这个解决了,什么都可以通过。

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

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(); //释放总线

}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

无线连接已成为许多产品的必备功能,但往往会增加系统设计的成本和复杂性,因为它通常必须作为更大应用的附加功能。Microchip Technology Inc.(美国微芯科技公司)今日推出首款基于Arm Cortex®-M...

关键字: Microchip ARM PIC

据天眼查APP信息,9月27日,江苏和府餐饮管理有限公司(和府捞面运营主体)新增一条商标注册信息,该商标为“HF PICK ME咖啡便利店”。此前,该公司就曾申请注册过多个“和府一杯咖啡”和“和府一杯拉面”商标。(知消)...

关键字: APP PIC CK

(全球TMT2022年9月28日讯)作为健身内容IP品牌,莱美中国推出新品 -- 莱美搏击BODYCOMBAT VR健身游戏,开启VR运动新时代。 莱美搏击BODYCOMBAT VR健身游戏入驻PICO 4...

关键字: BAT COM PIC VR

上海2022年9月28日 /美通社/ -- 2022年2月起,莱美中国在全新的"1x2x3"战略下,逐步展现莱美在中国的新商业价值,并持续打造优质健身内容IP。今年8月,随着新科技硬件产品莱美智能健身...

关键字: VR BAT COM PIC

为研发创新型药企夯实无菌管控体系和无菌厂房搭建知识结构 上海2022年8月11日 /美通社/ -- 随着国内《药品管理法》及配套法规的持续完善,无菌企业所承受的合规压力越来越大。而且,中国NMPA已经启动加入PIC/S...

关键字: BSP FDA PIC HP

焕新玩乐与购物体验,为当地儿童、家庭和乐高爱好者带来更多创意玩乐机会 山西大同2022年8月6日 /美通社/ -- 今日,山西大同首家乐高&r...

关键字: 乐高 3D模型 CREATION PIC

乐高集团品牌零售业务进入中国大陆第100个城市 海口2022年7月30日 /美通社/ -- 今日,海南省首家乐高®授权专卖店在海口万象城正式开业,同时海口也成为了乐高集团的品牌零售业务在中国大陆进入的第100个...

关键字: 乐高 BSP CREATION PIC

西藏拉萨2022年7月16日 /美通社/ -- 今日,西藏首家乐高®授权专卖店于拉萨正式开业,这也是全球海拔最高的一家乐高品牌零售店。 该店位于拉萨城关万达广场,店内不仅提供全系列乐高产品和玩乐体验,满足不同年...

关键字: 乐高 3D模型 CREATION PIC

北京2022年7月16日 /美通社/ -- CE Innovation Capital ("CEiC") 被投企业、全球金融市场技术供应商Pico近日宣布获得2亿美元投资。本轮投资方为金门资本(&qu...

关键字: PIC CE API INNOVATION

上海2022年6月1日 /美通社/ --  4月中旬以来,碧迪医疗联合上海静疗专委会开通了在线PICC维护网点查询及导航信息,详细展示了距患者最近的就医网点开放详情、并为8个网点提供了近一万套应急PICC维护包...

关键字: 数字化 PIC BSP 静脉

单片机

21600 篇文章

关注

发布文章

编辑精选

技术子站

关闭