串口可以说是我们C51单片机中最重要的部分,没有之一,如果串口学明白了,你的51基本可以说是毕业了。
在讲串口之前我们先介绍一下通信,想我们日生活中的蓝耳机,电话等都是通过通信进行的,而我们讲keil中写好的hex文件烧录给板子,也是通过通信进行。
一、工作原理
我们的计算机在与板子进行沟通时,其实就跟我们日常人与人之间说话是一样的。
人和人之间说话用英文,中文,而中文还分为普通话和方言。那我们为了正常交流,就得统一语言。我们的计算机如果想控制单片机,就得统一通信。其时我们写的C语言代码,就是一种语言,但这种语言,只有计算机能听懂,单片机无法识别。而我们的单片机能听懂的语言是一个一个的数据(也就是hex文件)。所以为了让它俩能够正常交流,中途就得带一个翻译。
那这个翻译我们就称为通信。
二、通信原理
通信分为串行通信和并行通信。可以理解为电路上的串联和并联。
并行:多个数据一起传输。
如上图所示,如果我们想同一时刻控制8个LED灯,那我们就可以通过并行通信,传一个数据(比如说0x6D),即可控制。
串行:一个数据接一个数据传输
比如同样是控制8个LED灯,我们就得一个一个控制灯的亮与灭。
对比上述2种通信传输,各有优缺点,具体可参照下图(百度百科)。
串行通信对于远距离传输可以大大节约成本,这使得其在日常生活中越来越广范使用,所以下面,我们将重点介绍串行通信。
交流 设备
我说——>你听 接收
你说——>我听 发送
内容:大脑支配 CPU
语言:双方统一 协议
通信协议
通信协议分为硬件层协议,软件层协议。
硬件层协议 可以理解为我们人与人交流时的耳朵,嘴巴。对应的就是我们计算机的USB接口(USB我们当前阶段最为常用,其实还有其他接口,这里就不介绍了)。除了物理上的连线,我们还有电平信号,传输秩序等。比如 iic,UART,SPI等,之后我们都会介绍。
软件层协议 就比较侧重于上层,更高级的应用。比如modbus协议,由于较为高级,就不介绍了。
总之:硬件与软件相辅相成。
三、翻译环节
我们的计算机是通过USB接口与单片机相连,而单片机是TXD和RXD这2个引脚(UART,后续会重点介绍)。不难发现两边的协议没有统一。那这时候就跟人与人说话一样,需要一个翻译。
那这个翻译就是CH340。
通过上图CH340那部分在电路中的功能,就可以把数据传输到RX和TX这2个引脚上了,就能够解读计算机的代码含义了。
四、总结
本节虽然无代码示例,但也格外重要,就跟我开头所说,我们前面所讲的定时器,计数器,中断,都可以理解为:为串口做铺垫。
本节重难点:理解计算机与单片机之间如何“沟通交流”。