原创 Uart转1-Wire硬件控制器程序源码例程

2008-3-2 20:05 6524 5 6 分类: MCU/ 嵌入式


hotpower 发表于 2008-3-2 19:31 侃单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

楼主: Uart转1-Wire硬件控制器程序源码例程


//UART->DS18B20
//Uart转1-Wire硬件控制器程序源码例程
//HotPower@126.com 2008.3.2 于雁塔菜地
LPC_INT8U OneWire_Start (void);
LPC_INT8U OneWire_ReadWriteByte (LPC_INT8U data);
LPC_INT8U OneWire_ReadId (LPC_INT8U *pData);

LPC_INT8U OneWire_Start (void)
{
LPC_INT8U ch;
  Uart1Config.BaudRate = BD9600;
  Uart1Config.WordLenth = WordLength8;
  Uart1Config.TwoStopBitsSelect = false;//stop=1
  UART_Init(UART1);
  UART_PutCharByPolling(UART1, 0xf0);
//ch=0xf0 无应答  ch=0xe0 有应答 ds18b20在线
  ch = UART_GetCharByPolling(UART1);
  Uart1Config.BaudRate = BD115200;
  Uart1Config.WordLenth = WordLength6;
  Uart1Config.TwoStopBitsSelect = false;//stop=1
  UART_Init(UART1);
  return ch;
}

LPC_INT8U OneWire_ReadId (LPC_INT8U *pData)
{
LPC_INT8U i, ch;
//ch=0xf0 无应答  ch=0xe0 有应答 ds18b20在线
  ch = OneWire_Start();//960us
  OneWire_ReadWriteByte(0x33);
  for (i = 0; i < 8; i ++)
  {
    pData = OneWire_ReadWriteByte(0xff);//读一个字节
  }
  return ch;//返回结果
}


LPC_INT8U OneWire_ReadWriteByte (LPC_INT8U data)
{
LPC_INT8U i, ch;
LPC_INT8U value = 0;
  for (i = 0; i < 8; i ++)
  {
    if (data & 1)
    {
      UART_PutCharByPolling(UART1, 0x3f);//1
    }
    else
    {
      UART_PutCharByPolling(UART1, 0x00);//0
    }
    ch = UART_GetCharByPolling(UART1);
    data >>= 1;
    value >>= 1;
    if (ch & 0x07)//收到1T+3T个'0'为0
    {
      value |= 0x80;
    }
  }
  return value;
}

void main (void)
{
char RecData, TranBuff[30];
  if(SysInit() == 0)
  {
    // Start user program
    __enable_interrupt();
    UserStart();
  }
  
  __disable_interrupt();
  OneWire_ReadId(TranBuff);//读18b20的器件ID=28 2D 95 1D 00 00 00 22
  while(1);
}

1.读DS18B20系列码程序硬件仿真帖图
200832192836219.gif


2.HotCRC计数器计算CRC8过程校验帖图
200832192853394.gif


 



3.硬件接口电路
2008228214253944.gif

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户87263 2008-4-29 15:39

1wire总是感觉不太把握.你用的时候用什么经验吗?能介绍一下吗
相关推荐阅读
雁塔菜农 2012-04-05 17:51
2012年度新唐Cortex-M0助学开发套件有约束条件赠送申报贴
2012年度新唐Cortex-M0助学套件从4月起每月有约束条件发放16套。 申报人必须是21ic或 EDNC 会员 并具备1月的会龄。 申报时必须注明“遵守约束条件,缴纳250元订金,上...
雁塔菜农 2012-04-05 17:04
2012年度Cortex-M0助学园地推广框图
...
雁塔菜农 2012-04-01 17:59
2012年度Cortex-M0助学园地奖励计划细则
抢楼请点击:菜地公告:即日起创建《菜农Cortex-M0助学园地》(盖楼入口) 每月10号和25号的下午2:50进行2次抢楼,规则同去年12月的疯狂抢楼活动。 奖品由21IC、北航、广州迪圣...
雁塔菜农 2012-02-03 08:19
菜农谋略:搞定牛人宋俊德,对女牛人孙昌旭说:“记住,俺是雁塔菜农~~~ ”
http://www.baidu.com/s?wd=%B2%CB%C5%A9%D0%A6%CC%B8%A1%B6%D0%C2%C0%CB%C3%FB%C8%CB%D0%A7%D3%A6%A1%B7...
我要评论
1
5
关闭 站长推荐上一条 /3 下一条