RS232、RS485和TTL电平与UART串口通信

RS232、RS485和TTL电平与串行通信

传送门
这篇文章很详细的对通讯各概念进行的解释

RS232 RS485 TTL同属于异步串行通信,这三种通信方式本质上是电平逻辑的区别。

串口通信初步认识

1、并行通信:通信时数据的各个位同时传送,可以实现字节为单位通信,但是通信线多占用资源多,成本高。
2、串行通信,一次只能发送一位,要发送8次才能发送一个字节。

RS232、RS485和TTL电平与UART串口通信_第1张图片
GND为单片机系统电源参考地
TXD为串行发送引脚
RXD为串行接收引脚

RS232、RS485和TTL电平与UART串口通信_第2张图片低位先发,高位后发
波特率:发送二进制数据位的速率

IO口模拟串口通信原理

检测到接收口低电平
启动接收函数,设置中断时间(接收函数读取一个数据位的中间状态)
中断函数对数据位进行处理,处理到结束位时,设置标志,停止中断
发送函数也是类似

UART串口通信

通信三种基本类型
【1】单工通信:只允许一方向另外一方传送信息,另一方不能回传信息,比如电视遥控器、收音机广播等。
【2】 半双工通信:数据可以在双方之间传播,同一时刻只能其中一方发给另外一方,比如对讲机就是典型半双工。
【3】 全双工通信:发送数据的同时也能够接收数据,两者同步进行,比如我们的电话通信。

模块介绍

SCON——串行控制寄存器的位分配(地址0x98、可位寻址)
RS232、RS485和TTL电平与UART串口通信_第3张图片
寄存器介绍
RS232、RS485和TTL电平与UART串口通信_第4张图片该波特率发生器只能由定时器T1或定时器T2产生
发送和接收数据缓冲存放在SBUF寄存器中
对信号进行采集16次,判断其中三次的数值

通信实例

#include 
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;
	}
 }

一个通讯例子

你可能感兴趣的:(单片机)