|
发表于 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[MAX_DEVICES][9];
uchar alarm_rom_codes[MAX_DEVICES][9];
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[0],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[0]));
}
/*显示发生报警的器件号码*/
putchar(w1_search(0xec,alarm_rom_codes));
};
}
用串口调试助手观测。8位数据,无校验,1位停止,波特率19200。 |
|