我手里有一张8通道的AD采集卡,之前上位机与AD采集卡通过485
通信进行收发数据。如图1
现在呢,由于需要,想加一块液晶显示,实时显示8个通道的采集数据。现在方案是这样,51
单片机带一个485收发口,加一个12864屏幕,然后用线直接连在PC与AD采集卡中间,只接受数据,并且显示在液晶上。如图2
由于是单片机新手,还不太会写单片机程序。
哪位大神可以帮忙写一下程序。特别是主程序,我找了一些模块程序,比如12864显示模块,rs485模块,crc校验程序,就是主程序这一块有点乱,不知道怎么下手。
8通道AD采样通信MODBUS协议说明
功能码:03;
输入寄存器地址:40001-40008;
说明:读取输入寄存器;
①主机发送格式:【设备地址】【03】【寄存器地址高字节】【寄存器地址低字节】【寄存
器数高字节】【寄存器数低字节】【CRC 低字节】【CRC 高字节】;
②设备回应:【设备地址】【03】【字节数】【寄存器1 值高字节】【寄存器1 值低字节】…
【寄存器N 值高字节】【寄存器N 值低字节】【CRC 低字节】【CRC 高字节】
举例,在地址为1 的设备的第5 通道接满量程输入,读取模块采集值:
主机发送(HEX):01 03 00 00 00 08 44 0C;
设备回应(HEX):01 03 10 00 00 00 00 00 02 00 00 FF FF 00 02 00 03 00 00 26 2A;
| 寄存器地址 | 寄存器功能说明 | 寄存器取值 (寄存器类型为16Bit) |
| 40001 | 第1 路模拟量输入 | 0X0000-0XFFFF(16 位分辨率) |
| 40002 | 第2 路模拟量输入 | 0X0000-0XFFFF(16 位分辨率) |
| 40003 | 第3路模拟量输入 | 0X0000-0XFFFF(16 位分辨率) |
| 40004 | 第4路模拟量输入 | 0X0000-0XFFFF(16 位分辨率) |
| 40005 | 第5路模拟量输入 | 0X0000-0XFFFF(16 位分辨率) |
| 40006 | 第6路模拟量输入 | 0X0000-0XFFFF(16 位分辨率) |
| 40007 | 第7路模拟量输入 | 0X0000-0XFFFF(16 位分辨率) |
| 40008 | 第8路模拟量输入 | 0X0000-0XFFFF(16 位分辨率) |
MODBUS 请求:
功能码 1BYTE 0x03
起始地址 2BYTE 0x0000--0xffff
读取数量 2BYTE N(1—125)
MODBUS 响应:
功能码 1BYTE 0x03
字节计数 1BYTE 2*N
输入状态 N*2 BYTE