• 大小: 2KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: 其他
  • 标签: atmega128  ds18b20  

资源简介

基于mega128的ds18b20+串口程序 实测通过,通过串口1上传至上位机

资源截图

代码片段和文件信息

//温度加串口程序//

 
//初始化定义
#include
#include
#define  F_CPU 8000000
#define fosc 8000000 //晶振 8MHZ
#define baud 9600 //波特率
#define DQ_IN         DDRE &= ~(1 << PE4) //设置输入,DS18B20接单片机PE4口
#define DQ_OUT         DDRE |= (1 << PE4) //设置输出
#define DQ_CLR         PORTE &= ~(1 << PE4) //置低电平
#define DQ_SET         PORTE |= (1 << PE4) //置高电平
#define DQ_R         PINE & (1 << PE4) //读电平
unsigned int temp_valuetemp_htemp_l;
unsigned int tempA1A2A3;A4;



// 延时程序  10倍
void delay_us(unsigned int i)
{
      unsigned int j;
      for(;i!=0;i--)
          {_delay_us(10);
           }
}

//************************************************************************* 
// DS18B20初始化
//*************************************************************************

unsigned char DS18B20_Reset(void)                 //初始化和复位

{
unsigned char i;
    DQ_OUT;
DQ_CLR;
delay_us(50); //延时500uS(480-960)
DQ_SET;
DQ_IN;
delay_us(8); //延时80uS
i = DQ_R;
delay_us(50); //延时500uS(保持>480uS)

if (i) 
        {
return 0x00;

        }
else 
        {
return 0x01;

        }

}
//************************************************************************* 
// DS18B20读一个字节函数
//************************************************************************* 
   
unsigned char ds1820_read_byte(void) 
{

unsigned char i;
unsigned char value = 0;
for (i = 8; i != 0; i--) 
        {
value >>= 1;
DQ_OUT;
DQ_CLR;
        delay_us(1); //*延时4uS

DQ_SET;
DQ_IN;
        delay_us(1); //*延时10uS

if (DQ_R) 
                {
value|=0x80;

                }
delay_us(6);        //*延时60uS

        }

return(value);
}
//************************************************************************* 
// 向18B20写一个字节函数
//*************************************************************************  

/*DS18B20字节写入函数*/
void ds1820_write_byte(unsigned char value) 
{

unsigned char i;
for (i = 8; i != 0; i--) 
        {
DQ_OUT;
DQ_CLR;
        delay_us(1); //延时4uS
if (value & 0x01) 
                {
DQ_SET;

                }
delay_us(8); //延时80uS
DQ_SET;         //位结束
value >>= 1;

        }

}
//*************************************************************************
// 发送温度转换命令
//************************************************************************* 

/*启动ds1820转换*/
void ds1820_start(void) {

DS18B20_Reset();
ds1820_write_byte(0xCC); //勿略地址
ds1820_write_byte(0x44); //启动转换
}

//*************************************************************************
// DS8B20读取温度信息
//************************************************************************* 

unsigned int ds1820_read_temp(void) 
{

unsigned int i;
unsigned char buf[9];

DS18B20_Reset();
ds1820_write_byte(0xCC); //勿略地址
ds1820_write_byte(0xBE); //读取温度
for (i = 0; i < 9; i++) 
     {
    buf[i] = ds182

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        5392  2013-04-18 15:44  uart3.c

评论

共有 条评论