STC12C5A60S2(11.0592MHz) + DS18B20测温系统 (仅适于小白参考,敬请大牛指点)

声明,本人小白一个,仅有点基础软硬件常识,想DIY一个热水器控制系统,在TB上买了个STC12C5A60S2最小系统(因为这东东这带AD,免得再去外置AD)和DS18B20封装好的传感器,当然还有其它东东不一一俱来。本天真的以为卖家提供学习代码,做一个代码模块组装即可,不料组装编译后不能用,于是上网找代码,发现网上代码很多,但没一个能用。不过折腾了一番大致搞明白两个重要的事实:
1、DS18B20是一个对时序控制极其严苛的系统,所以延时控制非常重要!!时序顺序非常重要!!
2、STC12C5A60S2机器周期是1T(STC公司1T单片机与其它公司1T单片机机器周期还不同!!!网上说的,具体不知道哪里不同!!),而网上代码大都是以89C52平台为基础的,并且要命的时许多代码不标注时钟周期,当然,也有很多存在明显时序错误的忽悠人的代码;

清楚认识的以上事实后,自己回到自己好好学习的道路上来,那么针对于上述问题,理清思路:

1. 要解决精确延时问题;

2. 要搞清楚DS18B20交互方法;

3. 要搞清楚DS18B20时序结构;

注:以下代码是在卖家代码基础上做时序调整的。

首先关于时精确延时问题,原本想上网找可用的延时代码,无一例外没一个能用,当然没有仿真能力,也没有示波器,也没法验证到底是代码有问题还是我有问题,最好发现一个叫“单片机小精灵”的神器(原谅我等小白的无知),于是充分信任了该神器,用它来做延时,事实证明它是神器!!!对于不同时钟与芯片的主板,各位可以自行重生成相应时延的代码即可。
步骤如下:
1、打开软件选延时功能模块;
2、下拉框选择自己单片机挂载时钟的频率;
3、选择单片机类型,注意前面提到STC12C5A机器周期是1T并且与其它1T单片机还有不同,所以一定要选最后一个;
4、选择输出代码类型,我选的是C代码,选取该代码时不能调参(因为很多指令不是一个机器周期的),所以得多写个时延时子程序(最后优化写了四个也就搞定了),汇编咱不会,如果会的话可以选它,方便很多;
5、输入需要取得的延时长度;
6、点击“计算”,输出代码;
7、复制代码到延时模块;

接下来就要学习DS18B20的信息交互流程:

1、执行DS18B20初始化(执行每个功能指令前均需要执行该指令(有两个指令例外,但是我等小白可以忽略))
2、执行ROM操作指令(指读取DS18B20编号、告警数据、ROM指令忽略指令(忽略指令也属于ROM操作指令,指不对ROM进行操作,单片机采用写指令进行输出,指令代码0xCC,我等小白不要妄想忽略这个步骤))
3、执行功能指令(指启动DS18B20温度转换、读取温度等指令)

再下来就要说一下时序及代码的实现了:

1. DS18B20初始化操作;

操作时序如下:

  • 12
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
STC12S5A60S2是一款常用的单片机芯片,它具有多个IO口用于外设的连接,包括传感器。如果STC12S5A60S2采集温度时无法获取DS18B20传感器的数据,可能存在以下几个原因。 首先,我们需要确认硬件连接是否正确。DS18B20是一款数字温度传感器,通过单总线协议与单片机通信。确保DS18B20的VCC引脚连接到单片机的电源,GND引脚连接到单片机的地线,DQ引脚连接到单片机的IO口,并设置正确的上拉电阻。此外,还需要确认是否加入了合适的补偿电容,以提高传输的稳定性。 其次,需要确认软件部分的代码是否正确。在STC12S5A60S2上使用DS18B20传感器时,需要编写相应的软件驱动程序来与传感器通信。主要包括初始化传感器、发送指令、接收数据的过程。检查代码是否正确配置了IO口,是否按照DS18B20的通信协议进行正确的数据交互。 再次,需要确认时序是否正确。DS18B20传感器使用的单总线协议非常严格,包括数据传输的时序要求。确保代码中实现了正确的时序,例如精确的延时时间、正确的通信速度等。 最后,还需要排除其他可能的干扰因素。例如,前述的硬件连接中是否存在松动、短路等问题,是否存在其他设备与DS18B20产生干扰等。 总之,要解决STC12S5A60S2无法采集DS18B20数据的问题,我们需要 s[vi]细致地检查硬件连接、代码的正确性、时序的准确性、其他干扰因素等。手册和相关资料可以提供更多关于STC12S5A60S2和DS18B20的资讯,以帮助解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值