这种通讯方式非常简单。他只需要三根线。第一根线是微控制器的发送连接着电脑的接收。第二根线电脑的发送连接着微控制器的接收。第三根线是地线,我们给电脑发送数据通过第一根线就可以完成。比如我们给电脑发送大写字母A,妈妈这一根线上到底发送了什么呢?通过波形图测试发现。微控制器发送的波形是这样的,这是一帧完整的串形数据。一共10位,它是从走往右依次把数据发送出去了,第一位是起始位,他永远是低电平。第十位是停止位,它永远都是高电平。然后中间8个是二进制数据,因为是2进制,所以第一位代表1。第二位代表2。第三位代表4,依次类推,第八位代表128。按照这个规律,我们把收到的这个A的这个波形每一位相➕,最后的结果就是65,65和A之间有什么关系?这得看ASCII码对照表了。表中65z正好对应大写的A。
ASCII码
而且我们要发送C的话,微控制器就得发送67了。我们想要发送什么数据,就按照表中的值让微控制器发送高低电平就可以了。但是需要注意,在我们发送的时候,必须要有时间间隔。那么这个时间间隔是多少呢?这得看串口通讯的波特率了。我们现在使用的波特率是9600。意思是1秒之内,发送9600位这样的数据。也就是每一位数据之间的间隔为100微秒。按照这个规律每隔100微秒,我们给电脑发送一次高低电平。电脑就能收到,我们发送的是什么。比如我们现在发送的是66电脑收到的就是B。如果想要发送更快的话,可以选择更高的波特率。如果选择115200的波特率。则她在1秒之内,可以发送115,200个数据。比刚才快了十多倍,则他发送的时间间隔调整为8.7微秒。我们发送的时间间隔和波特率一定要严格对应上如果对应不上可能会出现这样的情况,当我们把数据发送过去,接收方可能已经过了接收时间。这样就会导致数据错乱,刚才我们从串口通讯的对底层解释到了他到底是什么?其实在现在窗口发送数据的时候。根本不需要像我们刚才说的那么麻烦。就拿Arduino开发版为例。这是他发送大写字母C的程序。在程序的开头设置好波特率。然后直接C使用这个函数就能发送出去。根本不需要我们设置时间间隔也不需要,我们按照ASCII表像刚才那样一微一位的去发送数据。因为这个函数做了,我们上面所说的一切,他本质就是按照时间间隔。把大写字母C根据ASCII码,一位一位的发送出去。这就是串口通讯的本质。无论程序有多简单,最后发送的高低电平都是固定不变的。
,