找回密码
 立即注册
楼主: YangHY

第一课 序言《AI8051U的特点》

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2026-03-03 08:35:54
已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

积分
1374
发表于 2026-2-2 22:19:27 | 显示全部楼层
复位(输出0保持480us,输出1保持60us,读取当前电平,延时420us)

在初始化序列期间,总线上的主设备通过拉低1-wire总线超过480us来发送(TX)复位脉冲之后主设备释放总线而进入接收模式(RX),当总线释放后,5ka 左右的上拉电阻将1-wire总线拉至高电平,当 18B20检测到该上升边沿信号后,其等待 15us至60us 后通过将 1-wire 总线拉低60us至240us 来实现发送一个存在脉冲。

截图202602022219244175.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2026-03-03 08:35:54
已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

积分
1374
发表于 2026-2-2 22:20:29 | 显示全部楼层
写时段:

截图202602022220263238.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2026-03-03 08:35:54
已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

积分
1374
发表于 2026-2-2 22:23:57 | 显示全部楼层
为了形成写1 时段,在将1-wire总线拉低后,主设备必须在15us之内释放总线。当总线释放后,
5KΩ 的上拉电阻将总线拉至高。为了形成写 0 时段,在将 1-wire 总线拉低后,在整个时段期间主设备必须一直拉低总线(至少 60us)。在主设备初始化写时段后,18B20 将会在 15us 至 60us 的时间窗口内对总线进行采样。如果总线在采样窗口期间是高电平,则逻辑1被写入18B20:若总线是低电平,则逻辑 0 被写入 18B20。

2)写0,写1写0(输出0保持60us+,输出1保持1us+)
写1(输出0保持1us+,输出1保持60us+)

3)读0,读1读0/1(输出0保持1us+输出1保持1us+,读取当前电平,延时60us)

截图202602022223555994.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2026-03-03 08:35:54
已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

积分
1374
发表于 2026-2-2 22:25:25 | 显示全部楼层
总线图要仔细看清楚:

截图202602022225226948.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2026-03-03 08:35:54
已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

积分
1374
发表于 2026-2-2 22:26:22 | 显示全部楼层
汇总一下:大致是3步:

截图202602022226176894.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2026-03-03 08:35:54
已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

积分
1374
发表于 2026-2-2 22:28:55 | 显示全部楼层
好难懂,写代码前先停一下:

这个所有代码的底层逻辑图,要看懂:
截图202602111052287685.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2026-03-03 08:35:54
已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

积分
1374
发表于 2026-2-11 10:54:11 | 显示全部楼层
简单讲:

截图202602111054045083.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2026-03-03 08:35:54
已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

积分
1374
发表于 2026-2-11 11:02:13 | 显示全部楼层
把18b20.c 和18b20.h的架子搭起来:

在.c里把任务写清楚:

/*4.1 底层驱动
复位(输出0保持480us,输出1保持60us,读取当前电平,延时420us)
写0(输出0保持60us+,输出1保持1us+)
写1(输出0保持1us+,输出1保持60us+)
读0/1(输出0保持1us+,输出1保持1us+,读取当前电平;延时60us)
4.2 接口函数
写1字节(先输出低位,在输出高位)
读1字节(先读到的是低位,后读到的是高位)
4.3 用户功能函数
温度读取换算函数
(复位-CCH-44H-等待-复位-CCH-BEH-读取2字节温度数据-换算)

DS18B20 是接在P33上的,18b20.h里面有#define DQ  P33
*/
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2026-03-03 08:35:54
已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

积分
1374
发表于 2026-2-11 11:06:08 | 显示全部楼层
首先完成复位:

//复位(输出0保持480us,输出1保持60us,读取当前电平,延时420us)
void DS18B20_Reset(void)
{
        u8 flag = 1;
       
        while( flag )                //只要括号里的变量大于0,就会一直执行
        {
                DQ = 0;
                Delay480us();
                DQ = 1;
                Delay60us();
                flag = DQ;                        //设备存在,会拉低总线
                Delay480us();
        }
}
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2026-03-03 08:35:54
已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

积分
1374
发表于 2026-2-11 11:06:58 | 显示全部楼层
其中用的的时间函数:

void Delay480us(void)        //@24.000MHz
{
        unsigned long edata i;

        _nop_();
        _nop_();
        _nop_();
        i = 2878UL;
        while (i) i--;
}

void Delay60us(void)        //@24.000MHz
{
        unsigned long edata i;

        _nop_();
        _nop_();
        _nop_();
        i = 358UL;
        while (i) i--;
}

void Delay1us(void)        //@24.000MHz
{
        unsigned long edata i;

        _nop_();
        _nop_();
        _nop_();
        i = 4UL;
        while (i) i--;
}

回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-4-6 06:14 , Processed in 0.116072 second(s), 76 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表