C语言小学生都能学会,你还说单片机很难,难道你连小学生都不如吗
我是很认真的,没有在跟你吹水,前段时间有邻居知道我是攻城狮,闲聊的时候想让我带他的女儿学习单片机,当时我就拒绝了,因为在我的认知范围里这个年纪的小朋友很难学的会,而且女孩子家家学做什么攻城狮,心中一百个白眼翻上天,后来她说她女儿之前学了C++,有点基础,当时我就愣住了,现在的小学生都那么牛X的吗。不过最后我还是让她回去慎重考虑一下,毕竟我这里培训的定位是那些学习完之后想找到工作的,我们课程也是以项目驱动去学习,年纪这么小的学生学校里的科目课程就已经眼花缭乱了,还是留一点童年给人家吧。
关于单片机要想修改它的设备地址寄存器地址,可以用后面的指令去修改,比如说要想改地址,可以用0106这个功能去修改它,比如说想改成02,就可以去按照它这个方式来去修改一下,比如说一个产品,从需要用两个点的温湿度传感器,这个时候就用两个,不可能让它两个都是用同一个地址,所以要改,比如买了一个产品,它默认的是01,要把它地址改成02,用00这个功能码修改,它是写单个寄存器,01可以是06,然后要更改这个设备地址,设备地址寄存器地址是0066,所以要是0066,接下来要改地址,要改的地址要给它个数据。
比如说要改成02,最后是校验,这个时候给它发这个指令,它就会把这个地址改成02,点击发送,对于一个正确的命令帧它会响应,手册当中也会指出来它要说什么,它会响应修改后的设备地址02,然后功能码00,接着是寄存器地址0066,最后是目标地址,修改的这个目标地址0002这个时候就修改好了,接下来如果说还用原来的这个地址去读它,肯定就读不出来了,可以试一下,再用01,03,然后用0000,然后0002,这个时候再去读它的时候它就没有响应。
它没有响应,原因是什么?因为这个设备它的地址已经不符了,发给它01的时候,它的设备地址是02,它第一次比较这个地址的时候,它就知道不是发给它的,所以它后面的数据是不会去解析处理,它就不会给你返回数据,它只有对于正确的应询问询真它才会给出响应,要用0二,CRC校验也要正确,然后功能码03,然后连着读两个寄存器,从00这个寄存器开始读,还是读的温度和湿度,这个地址对于这个位寻帧,它的交易码可以通过工具,可以用这个来计算一下获取,给出了具体的一个响应,功能码返回字节数,后面是校验,这时候就得到了温度和湿度的数据。
这个时候每次都要计算校验码,不太方便,一些朋友手头上可能没有温湿度传感器,也没有USB转485的设备或者转换器,可以用工具来模拟,可以用作为从机来模拟一下,用它作为主机如何去读取温湿度传感器的数据,首先把串口枪给它关掉,然后先连接一下打开串口COM5,然后900波特率八位数据位没有机构校验,停止位点击OK,要读温湿度传感器,但是设备地址是二,从0开始读寄存器,就是0读两个寄存器,然后点击OK,这个时候它就把温湿度传感器读过来了,读过来之后可以看到它已经把它转成了十进制来显示了。
它具体的发的数据是什么?先把它停止,然后把这个数据拷贝出来报备,可以对照一下,把发送的拷贝出来,返回的值实际上也是一样的,借助工具就很方便,不再需要单独的去找一个网站去计算CRC校验码了,可以借助它来实现相关的操作,当然也可以用它来实现修改地址,它一般就提供两个功能码,可以用功能码去读写多个寄存器,可以去读写多个寄存器,实际上就是提供两个功能码03和06,对一个层级设备来说,要么就是说可以去读它的数据,它返回数据给我们,要么就是去修改它的一些设置或者一些参数,所以这两个功能码一般的产品来说基本上都是足够了。
对单片机感兴趣的可以查看往期分享内容,希望能帮助大家在学习单片机的路上少走一些弯路,想要入门单片机可以持续关注创为单片机编程,,回复“带我学习”查看更多内容分享。
审核编辑:汤梓红
-
单片机
+关注
关注
6032文章
44521浏览量
633119 -
寄存器
+关注
关注
31文章
5322浏览量
120022 -
设备
+关注
关注
2文章
4475浏览量
70541
发布评论请先 登录
相关推荐
评论