51单片机学习—串口通信

串口介绍

串口是一种应用十分广泛的通讯接口,可以实现两个设备之间的相互通信。

51单片机内部自带UART(通用异步收发器)。

硬件电路

简单的双向串口通信有两根通信线(TXD发送端、RXD接收端),二者需要交叉连接

当电平标准不一致时,需要添加电平转换芯片。

 电平标准

是数据1和数据0的表达方式,是认为规定的电压与数据的对应关系,常见的电平标准:

  • TTL点平:+5V表示1,0V表示0
  • RS232电平:-3V~-15V表示1,+3V~+15V表示0
  • RS485电平:两线压差+2~+6V表示1,-2~-6V表示0(距离千米之上)

通信接口

名称引脚定义通信方式  特点
UARTTXD、RXD全双工、异步点对点通信

I2C

SCL、SDA半双工、同步可挂载多个设备
SPISCLK、MOSI、MISO、CS全双工、同步可挂载多个设备
1-WireDQ半双工、异步可挂载多个设备
  • 全双工:通信双方可以在同一时刻互相传输数据
  • 半双工:通信双方可以互相传输数据,但必须分时复用一根数据线单工:通信只能有一方发送到另一方,不能反向传输
  • 异步:通信双方各自约定通信速率
  • 同步:通信双方靠一根时钟线来约定通信速率
  • 总线:连接各个设备的数据传输线路(类似于一条马路,把路边各住户连接起来,使住户可以相互交流)

电平转换接口

 串口参数及时序

  • 波特率:串口通信速率(发送和接受数据的速率)
  • 检验位:用于数据的验证
  • 停止位:用于数据的之间的间隔

数据检验:可以检验数据收发的正确,有奇检验、偶检验。

例如:发送0000 0011 1(发送的数据中有两个一,第九位上补上一个一使一的个数变为奇数),收 0000 0011 1(发现接收的数据中有三个一是奇数,可视为正确)但是,也有局限性 0000 0101中也有三个一。

串口模式图

 SBUF:串日数据缓存寄存器,物理上是两个独立的寄存器。但占用相同的地址。写操作时,写入的是发送寄存器,读操作时,读出的是接收寄存器。当SBUF在=的左边表示发送数据,例如:SBUF=0x11;当SBUF在=的右边表示接收数据,例如:a=SBUF。

串口寄存器配置

 

 代码展示(完成发送数据递增)

/**
   * @brief  串口初始化//4800bps@11.0592MHz
   * @param   无
   * @retval  无
   */
void UART_Init(void)		//9600bps@11.0592MHz
{
	PCON &= 0x7F;		//波特率不倍速
	SCON = 0x50;		//8位数据,可变波特率
	TMOD &= 0x0F;		//设置定时器模式
	TMOD |= 0x20;		//设置定时器模式
	TL1 = 0xFD;		//设置定时初始值
	TH1 = 0xFD;		//设置定时重载值
	ET1 = 0;		//禁止定时器%d中断
	TR1 = 1;		//定时器1开始计时
	ES=1;
	EA=1;
}


/**
   * @brief   串口发送一个字节数据
   * @param   Byte 要发送的一个字节数据
   * @retval  无
   */

void UART_SendByte(unsigned char Byte)
{
	SBUF=Byte;
	while(TI==0);
	TI=0;
}



unsigned char Sec;

void main()
{
	UART_Init();
	while(1)
	{
		UART_SendByte(Sec);	
		Sec++;
		Delay(1000);
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值