RS232、RS485和TTL电平与串行通信
传送门
这篇文章很详细的对通讯各概念进行的解释
RS232 RS485 TTL同属于异步串行通信,这三种通信方式本质上是电平逻辑的区别。
串口通信初步认识
1、并行通信:通信时数据的各个位同时传送,可以实现字节为单位通信,但是通信线多占用资源多,成本高。
2、串行通信,一次只能发送一位,要发送8次才能发送一个字节。
GND为单片机系统电源参考地
TXD为串行发送引脚
RXD为串行接收引脚
低位先发,高位后发
波特率:发送二进制数据位的速率
IO口模拟串口通信原理
检测到接收口低电平
启动接收函数,设置中断时间(接收函数读取一个数据位的中间状态)
中断函数对数据位进行处理,处理到结束位时,设置标志,停止中断
发送函数也是类似
UART串口通信
通信三种基本类型
【1】单工通信:只允许一方向另外一方传送信息,另一方不能回传信息,比如电视遥控器、收音机广播等。
【2】 半双工通信:数据可以在双方之间传播,同一时刻只能其中一方发给另外一方,比如对讲机就是典型半双工。
【3】 全双工通信:发送数据的同时也能够接收数据,两者同步进行,比如我们的电话通信。
模块介绍
SCON——串行控制寄存器的位分配(地址0x98、可位寻址)
寄存器介绍
该波特率发生器只能由定时器T1或定时器T2产生
发送和接收数据缓冲存放在SBUF寄存器中
对信号进行采集16次,判断其中三次的数值
通信实例
#include <reg52.h>
void config(unsigned int baud);
void main()
{
EA=1;
config(9600);
while(1);
}
void config(unsigned int baud)
{
SCON=0X50; //配置串口为模式1
TMOD&=0X0F;
TMOD|=0X20; //配置T1为模式2 即8位重装模式
TH1=256-(11059200/12/32)/baud;
TL1=TH1; //这里设置定时器1主要是用来作为波特率发生器,故不使能中断
ET1=0; //禁止T1中断
ES=1; //使能串口中断
TR1=1; //启动T1
}
void InterruptUART() interrupt 4
{
if(RI) //接收完毕
{
RI=0;
SBUF=SBUF+1;
}
if(TI) //发送完毕
{
TI=0;
}
}