lllll 发表于 2009-10-9 12:32:23

这个专栏的应该都用codevision编程序的吧,那么我想要一个用CV里的库函数编的DS18B20

非常感谢。。。

tian554192925 发表于 2009-10-10 15:25:45

我用的是gcc

198879 发表于 2009-10-10 15:34:02

同学。。看下帮助文件

dp1987829 发表于 2009-11-2 10:46:42

/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.5 Professional
Automatic Program Generator
?Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
已成功
Project :
Version :
Date    : 2009-10-7
Author: F4CG                           
Company : F4CG                           
Comments:


Chip type         : ATmega16L
Program type      : Application
Clock frequency   : 8.000000 MHz
Memory model      : Small
External SRAM size: 0
Data Stack size   : 256
*****************************************************/

#include <mega16.h>
#asm
   .equ __w1_port=0x18 ;PORTB   //接PB0
   .equ __w1_bit=0
#endasm
#include <1wire.h>
#include <ds18b20.h>
#include <stdio.h>
#include <delay.h>
#define uchar unsigned char
#define MAX_DEVICES 8
uchar rom_codes;
uchar alarm_rom_codes;
void main(void)
{
uchar i,devices;
UCSRA=0X00;
UCSRB=0X18;
UCSRC=0X86;
UBRRH=0X00;
UBRRL=0X19;//波特率19200
w1_init();
devices=w1_search(0xf0,rom_codes);//检测器件的个数
putchar(devices);
if(devices==0)//若没有器件,停在此处
while(1);
/* 设置所有器件低温报警25 摄氏度,高温报警35 摄氏度*/
for (i=0;i<devices;i++)
{
    if(ds18b20_init(&rom_codes,25,35,DS18B20_12BIT_RES))
      putchar(1);    //设置成功,返回1
    else
      putchar(0);   //不成功,返回0
}
while (1)
    {
      /*测量并显示温度*/
      for(i=0;i<devices;i++)
      {
          putchar(ds18b20_temperature(&rom_codes));
      }
      /*显示发生报警的器件号码*/
      putchar(w1_search(0xec,alarm_rom_codes));
    };
}
用串口调试助手观测。8位数据,无校验,1位停止,波特率19200。

lllll 发表于 2009-11-2 12:38:11

谢谢回复,不需要了,这种库函数程序对理解不好
页: [1]
查看完整版本: 这个专栏的应该都用codevision编程序的吧,那么我想要一个用CV里的库函数编的DS18B20