“大神”叫你先上STM32,51是小朋友玩的,所以你就不学51了
初学者建议从51单片机开始,虽然很多人建议直接上STM32,但本人还是建议先学习51单片机,简单且不容易打消积极性,很多人都是在积极性消退之后就会半途而废,等熟悉了LED、串口、SPI、按键、中断、IIC等这些基础之后,如果对单片机还有兴趣,不妨再去晋升学习STM32单片机,有了51单片机作为基础,这时候学习STM32也是可以非常快的就能上手。
一般的寄存器的定制是从0开始定义,0000这个寄存器地址存放的是温度的一个数据,然后0001这个采用的是湿度的数据,它们两个数据的范围都是0到65535,并且都是只读的,所以它适用于的是03这个功能,组态地址就不用关心了,这个是PLC当中用的一个组态地址,实际上这个组态地址等于寄存器地址加上4001,要把它转成十进制去加上4001,这个是一个规定,可以去设置自己的寄存器的地址,然后来说明你的寄存器里面存放的是什么值,别人读的时候就知道怎么去读了。
比如说想读的是你当前的波特率,那我可以用03这个功能,从0067这个地址起始地址开始读,读一个寄存器是不是就读的就是你的波特率,给一个校验码就应该就能够响应什么是你的波特率的数据,同时波特率它也告诉我们,波特率它是可读可写的,既然可读可写,它应该提供的06功能码,就可以写单个寄存器,也可以用0六这个功能码去对它进行操作,比如更改它的设备地址,修改它的波特率,这些都是可以的。
温湿度传感器USB接口和485信号,它们俩之间是肯定不能直接通信的,可以借助一个小模块,USB转485的模块,这种模块现在也不贵,感兴趣的可以去入手一个,这里面有四根线,电源线,还有两根信号线,然后A线接传感器的A,B接传感器的B,电路连好了之后就可以借助助手来实现这个通讯的功能的测试,它支持的是主机问询,从机应答的一种方式,所以主机要去问它,它才会给你回答。
在这种主从系统当中,从机设备是不允许主动的发起通信的,我们要想通信必须由主机发起,我们可以去打开这个串口,然后去发送我们的问询,读两个字节,从0000这个寄存器地址起始地址开始读,读寄存器在读计算器,也就是把温度和湿度都读出来,这个时候还有一个校验码,校验的话是CRC校验,校验码不对它是肯定是不会响应的,这个时候它给出了一个响应0103,然后04,01代表01地址,03的功能码,0四代表返回的数据长度四个字节,返回的值是048915B2,它这里面的数据的值都是16进制的。
16进制值首先要把它转成十进制数,举个例子0079,它转成十进制是121,假设数据的倍率是100倍,这个值应该是1.21度,湿度也是一样的,所以它这个地方有一个倍率是100,要控制一个485的一个接口芯片,首先转成发送状态,转成发送状态之后发送问询帧,发送问询之后立马切换成接收状态,然后接收这一帧数据,用超时的办法去接收,接收完这么一包数据之后要解析这个数据,把这两个数据取出来转成十进制,然后按照它这个数据的方式把它再除以100,就可以转成当前的温度和湿度。
对单片机感兴趣的可以查看往期分享内容,希望能帮助大家在学习单片机的路上少走一些弯路
相关文章