您当前的位置:五五电子网电子知识单片机-工控设备AVR单片机M16温度传感器DS18B20控制示例程序 正文
M16温度传感器DS18B20控制示例程序

M16温度传感器DS18B20控制示例程序

点击数:7971 次   录入时间:03-04 11:46:23   整理:http://www.55dianzi.com   AVR单片机
//DS18b20的C语言驱动程序,三位数码管显示,读取当前环境温度,精度达0.1度,温度范围0-99度
//DS18B20 详细引脚功能描述1、GND 地信号;2、DQ数据输入出引脚。开漏单总线接口引脚。当被用在寄生电源下
//也可以向器件提供电源;3、VDD可选择的VDD 引脚。当工作于寄生电源时,此引脚必须接地。
//DS18B20 的使用方法。DS18B20 采用的是1-Wire 总线协议方式
//即在一根数据线实现数据的双向传输
//编译环境 AVR Studio 4.13/AVR GCC
//系统时钟7.3728MHz,设置熔丝位为外部高频石英晶体振荡,启动时间4.1ms 
//***********************************************************************
//   包含文件
//***********************************************************************

#include <string.h>
#include <stdio.h>
#define  F_CPU 7372800  //  单片机 主频为7.3728MHz,用于延时子程序
#include <util/delay.h>
#include <avr/io.h>
#include <avr/iom16.h>
#include <avr/signal.h>     //中断信号头文件

//***********************************************************************
//   定义变量区
//   CH451各个功能命令值,根据需要写入
//***********************************************************************
#define CH451_RESET     0x0201                  //复位
#define CH451_LEFT MOV    0x0300          //设置移动方式-作移
#define CH451_LEFTCYC   0x0301          //设置移动方式-左循
#define CH451_RIGHT MOV   0x0302          //设置移动方式-右移
#define CH451_RIGHTCYC  0x0303          //设置移动方式-右循 
#define CH451_SYSOFF    0x0400                  //关显示、键盘、看门狗
#define CH451_SYSON1    0x0401                  //开显示
#define CH451_SYSON2    0x0403                  //开显示、键盘
#define CH451_SYSON3    0x0407                  //开显示、键盘、看门狗功能
#define CH451_DSP       0x0500                  //设置默认显示方式
#define CH451_BCD       0x0580                  //设置BCD译码方式
#define CH451_TWINKLE   0x0600          //设置闪烁控制
#define CH451_DIG0      0x0800                  //数码管位0显示
#define CH451_DIG1      0x0900          //数码管位1显示 
#define CH451_DIG2      0x0a00           //数码管位2显示
#define CH451_DIG3      0x0b00           //数码管位3显示
#define CH451_DIG4      0x0c00           //数码管位4显示
#define CH451_DIG5      0x0d00                 //数码管位5显示 
#define CH451_DIG6      0x0e00                 //数码管位6显示 
#define CH451_DIG7      0x0f00              //数码管位7显示

#define LED0  0x0000  //数码管位0显示的数据
#define led1  0x0000         //数码管位0显示的数据;0x0010为不亮
#define led2  0x0000  //数码管位0显示的数据
#define led3  0x0010  //数码管位0显示的数据
#define led4  0x0010  //数码管位0显示的数据
#define led5  0x0010  //数码管位0显示的数据
#define led6  0x0010  //数码管位0显示的数据
#define led7  0x0010  //数码管位0显示的数据

#define dclk0          PORTD &= ~(1 << PD6)     //串行数据时钟,上升延激活
#define dclk1          PORTD |= (1 << PD6)
#define din0           PORTD &= ~(1 << PD5)      //串行数据输出,接CH451的数据输入
#define din1           PORTD |= (1 << PD5)
#define load0          PORTD &= ~(1 << PD4)     //串行命令加载,上升延激活
#define load1          PORTD |= (1 << PD4)

#define DQ_IN         DDRC &= ~(1 << PC6)  //设置输入
#define DQ_OUT         DDRC |= (1 << PC6)  //设置输出
#define DQ_CLR         PORTC &= ~(1 << PC6)         //置低电平
#define DQ_SET         PORTC |= (1 << PC6)  //置高电平
#define DQ_R         PINC & (1 << PC6)  //读电平


#define delay_us(x)     _delay_us(x)    //AVR GCC延时函数 x(us)
#define delay_ms(x)     _delay_ms(x)    //AVR GCC延时函数 x(ms)

#define uchar           unsigned char
#define uint            unsigned int
uint value;
uint temp,A1,A2,A3;                     //定义的变量,显示数据处理
uchar flag1;            

[1] [2] [3]  下一页


本文关键字:温度传感器  程序  AVR单片机单片机-工控设备 - AVR单片机

《M16温度传感器DS18B20控制示例程序》相关文章>>>