在不同设备上进行数据交换,最价廉物美的莫过于串行通信(RS232)了,有关串行通信的点滴可自行去百度搜索。
在以下的篇幅里,展示51单片机如何与计算机进行通信,本节解析51单片机的Turbo51代码。
先上51单片机的硬件电路图:
在通信之前,必须约定一个握手的协议,以保证通信的正确无误。此工作非常重要。
通信协议可采用各种流行的协议,也可以自行约定。为了简化代码,自设定如下的通信协议:
1、 上位机 ==> 单片机
格式: 起始字 + 单片机地址 + 命令 + 校验
1byte 1byte 1byte 1byte = 4 byte
其中:
起始字,固定为: $7E
单片机地址,固定为: $01
命令,控制单片机的动作:
= $00 同时灭两个LED
= $01 亮绿色LED,灭蓝色LED
= $02 灭绿色LED,亮蓝色LED
= $03 同时亮两个LED
校验,为前面3个字节的累加和
2、 单片机 ==> 上位机
格式: 起始字 + 单片机地址 + 命令 + 参数 + 校验
1byte 1byte 1byte 1byte 1byte = 5 byte
其中:
起始字,固定为: $7E
单片机地址,固定为: $01
命令,来自计算机端:
= $00 同时灭两个LED
= $01 亮绿色LED,灭蓝色LED
= $02 灭绿色LED,亮蓝色LED
= $03 同时亮两个LED
参数,将当前单片机的控制状态反馈给计算机
= $00 两个LED都灭
= $01 绿色LED亮,蓝色LED灭
= $02 绿色LED灭,蓝色LED亮
= $03 两个LED都亮
校验, 为前面4个字节的累加和
//定义用到的常量