求助:51单片机和顺丰金千分表通讯(已编写程序)
时间:10-02
整理:3721RD
点击:
顺丰金数字千分表 量表数据线协议
1、串口数据一共五个字节,波特率4800,数据是10位,其中1位起始位,8位数据位和1位停止位,没有奇偶效验位。数据一直主动发,和外部设备的状态无关。
2、第一个字节为同步码:0xaa,表示串行起始数据,用于数据同步。
3、第二,三,四字节表示测量的位移数据,每个字节表示2位十进制数,数据低位先发送
举例说明: 第二字节数:0x30
第三字节数:0x55
第四字节数: 0x01
上述数据表示测量的数据是 1.553mm(单位是公制情况下)
4、第五个字节,低四位(bit)表示显示控制符
Bit0=公英制选择(其中0表示公制,1为英制)
Bit1=正负方向标 志(其中0为正,1为负)
Bit2=1数据被确认(只适用于带确认按钮的数据线)
程序已经编好了,用电脑中串口助手模拟千分表发送数据 aa30550100 ,单片机板子上的lcd上显示正确,为 1.5530mm,但是直接用千分表连单片机板,lcd上没有任何反应。
然后我又编了一个测试小程序,单片机只要接收到aa就能显示0.0000mm,不管aa后面是任何长度的数字都行。用电脑模拟成功,但是千分表和单片机相连,lcd还是不显示任何值。
希望各位大神帮忙看看,帮我找找原因,我已经快被折腾疯了。非常感谢!
1、串口数据一共五个字节,波特率4800,数据是10位,其中1位起始位,8位数据位和1位停止位,没有奇偶效验位。数据一直主动发,和外部设备的状态无关。
2、第一个字节为同步码:0xaa,表示串行起始数据,用于数据同步。
3、第二,三,四字节表示测量的位移数据,每个字节表示2位十进制数,数据低位先发送
举例说明: 第二字节数:0x30
第三字节数:0x55
第四字节数: 0x01
上述数据表示测量的数据是 1.553mm(单位是公制情况下)
4、第五个字节,低四位(bit)表示显示控制符
Bit0=公英制选择(其中0表示公制,1为英制)
Bit1=正负方向标 志(其中0为正,1为负)
Bit2=1数据被确认(只适用于带确认按钮的数据线)
程序已经编好了,用电脑中串口助手模拟千分表发送数据 aa30550100 ,单片机板子上的lcd上显示正确,为 1.5530mm,但是直接用千分表连单片机板,lcd上没有任何反应。
然后我又编了一个测试小程序,单片机只要接收到aa就能显示0.0000mm,不管aa后面是任何长度的数字都行。用电脑模拟成功,但是千分表和单片机相连,lcd还是不显示任何值。
希望各位大神帮忙看看,帮我找找原因,我已经快被折腾疯了。非常感谢!
量表和单片机的uart电平制式是否一致?另外用电脑模拟时使用的usb转TTL芯片模块还是直接连接的九针COM串口?
先检验一下单片机是否能够正常接收量表发送出来的数据,可以利用逻辑分析仪看看量表的输出波形是否正常,可能是串行接口或者波特率有问题吧
谢谢您的回答^_^ 下面是我的观点:
量表的波特率是4800,这个通过量表与电脑通讯验证了。
电脑可以和量表通讯,量表的接口是没有问题的。
电脑模拟量表发送的数据发送给单片机,单片机能够接收,我觉得程序应该没有什么大问题。
而量表发送的数据单片机接收不到,我在想是不是我有什么没有考虑到?
请问,问题解决了吗?是什么问题?