“网友”叫你先上STM32,51是小朋友玩的,所以你就不学51了

“网友”叫你先上STM32,51是小朋友玩的,所以你就不学51了

初学者建议从51单片机开始,虽然很多人建议直接上STM32,但本人还是建议先学习51单片机,简单且不容易打消积极性,很多人都是在积极性消退之后就会半途而废,等熟悉了LED、串口、SPI、按键、中断、IIC等这些基础之后,如果对单片机还有兴趣,不妨再去晋升学习STM32单片机,有了51单片机作为基础,这时候学习STM32也是可以非常快的就能上手。

“网友”叫你先上STM32,51是小朋友玩的,所以你就不学51了_第1张图片

一般的寄存器的定制是从0开始定义,0000这个寄存器地址存放的是温度的一个数据,然后0001这个采用的是湿度的数据,它们两个数据的范围都是0到65535,并且都是只读的,所以它适用于的是03这个功能,组态地址就不用关心了,这个是PLC当中用的一个组态地址,实际上这个组态地址等于寄存器地址加上4001,要把它转成十进制去加上4001,这个是一个规定,可以去设置自己的寄存器的地址,然后来说明你的寄存器里面存放的是什么值,别人读的时候就知道怎么去读了。

“网友”叫你先上STM32,51是小朋友玩的,所以你就不学51了_第2张图片

比如说想读的是你当前的波特率,那我可以用03这个功能,从0067这个地址起始地址开始读,读一个寄存器是不是就读的就是你的波特率,给一个校验码就应该就能够响应什么是你的波特率的数据,同时波特率它也告诉我们,波特率它是可读可写的,既然可读可写,它应该提供的06功能码,就可以写单个寄存器,也可以用0六这个功能码去对它进行操作,比如更改它的设备地址,修改它的波特率,这些都是可以的。

温湿度传感器USB接口和485信号,它们俩之间是肯定不能直接通信的,可以借助一个小模块,USB转485的模块,这种模块现在也不贵,感兴趣的可以去入手一个,这里面有四根线,电源线,还有两根信号线,然后A线接传感器的A ,B接传感器的B,电路连好了之后就可以借助助手来实现这个通讯的功能的测试,它支持的是主机问询,从机应答的一种方式,所以主机要去问它,它才会给你回答。

在这种主从系统当中,从机设备是不允许主动的发起通信的,我们要想通信必须由主机发起,我们可以去打开这个串口,然后去发送我们的问询,读两个字节,从0000这个寄存器地址起始地址开始读,读寄存器在读计算器,也就是把温度和湿度都读出来,这个时候还有一个校验码,校验的话是CRC校验,校验码不对它是肯定是不会响应的,这个时候它给出了一个响应0103,然后04,01代表01地址,03的功能码,0四代表返回的数据长度四个字节,返回的值是04 89 15 B2,它这里面的数据的值都是16进制的。

“网友”叫你先上STM32,51是小朋友玩的,所以你就不学51了_第3张图片

16进制值首先要把它转成十进制数,举个例子0079,它转成十进制是121,假设数据的倍率是100倍,这个值应该是1.21度,湿度也是一样的,所以它这个地方有一个倍率是100,要控制一个485的一个接口芯片,首先转成发送状态,转成发送状态之后发送问询帧,发送问询之后立马切换成接收状态,然后接收这一帧数据,用超时的办法去接收,接收完这么一包数据之后要解析这个数据,把这两个数据取出来转成十进制,然后按照它这个数据的方式把它再除以100,就可以转成当前的温度和湿度。

对单片机感兴趣的可以查看往期分享内容希望能帮助大家在学习单片机的路上少走一些弯路想要入门单片机可以持续关注创为单片机编程,,回复“带我学习”查看更多内容分享

“网友”叫你先上STM32,51是小朋友玩的,所以你就不学51了_第4张图片

你可能感兴趣的:(单片机,嵌入式,C语言,单片机,stm32,51单片机,嵌入式硬件,c语言)