51单片机—串口

串口介绍

串口是一种应用十分广泛的通讯接口,串口成本低,容易使用,通信线路简单,可实现两个设备的互相通信。
51单片机内部自带UART(通用异步收发器),可实现单片机的串口通信

硬件电路

·简单双向串口通信有两根通信线(发送端TXD和接收端RXD)
·TXD和RXD要交叉连接
·当只需要单向的数据传输时,,可以直接一根通信线
·当电平标准不一样时,需要加电平转换芯片
在这里插入图片描述

电平标准

电平标准是数据1和数据0的表达方式,是传输线缆中人为 规定的电压与数据的对应关系,串口常用的电平标准有如下三种:
·TTL电平:+5V表示1,0V表示0
·RS232电平:-3 ~ -15V表示1,+3 ~ +15V表示0
·RS485电平:两线压差+2 ~ +6V表示1,-2 ~ -6V表示0(差分信号)

常见通信接口比较

在这里插入图片描述
此外还有:CAN、USB等
SCLK、SCL:时钟线
·全双工:通信双方可以在同一时刻互相传输数据
·半双工:通信双方可以互相传输数据,但必须分时复用一根数据线
·单工:通信只能有一方发送到另一方,不能反向传输(遥控器)
·异步:通信双方各自约定通信速率
·同步:通信双方靠一根时钟线来约定通信速率

·总线:连接各个设备的数据传输线路(类似于一条马路,把路边各住户连接起来,使住户可以相互交流)

串口参数及时序图

·波特率:串口通信的速率(发送和接收个数据位的间隔时间)
·检验位:用于数据验证(奇校验、偶校验)
·停止位:用于数据帧间隔
在这里插入图片描述
9位数据格式比8位数据格式多一位检验位(RBS/TBS)
在这里插入图片描述

·SBUF:串口数据缓存寄存器,物理上是两个独立的寄存器,但占用相同的地址。写操作时,写入的是发送寄存器,读操作时,读出的是接收寄存器

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是51单片机串行接口实验代码的示例: ```c #include <regx52.h> // 引入51单片机头文件 #define FOSC 11059200L // 单片机晶振频率 #define BAUD 9600 // 串口波特率 #define TH1_VALUE (256 - FOSC / 12 / BAUD) // 定时器1计数初值 sbit LED = P1^0; // LED连接的IO口 sbit RX_PIN = P3^0; // 串口接收引脚 sbit TX_PIN = P3^1; // 串口发送引脚 void init_uart() { TMOD &= 0xF0; // 清除定时器1模式位 TMOD |= 0x20; // 设置定时器1为模式2,自动重载 TH1 = TH1_VALUE; // 设置定时器1初值 TL1 = TH1_VALUE; // 设置定时器1初值 TR1 = 1; // 启动定时器1 SM0 = 0; // 设置串口工作模式为模式1,8位数据位,无校验位,1位停止位 SM1 = 1; REN = 1; // 打开串口接收 EA = 1; // 打开全局中断 ES = 1; // 打开串口中断 } void uart_send_char(unsigned char c) { SBUF = c; // 将待发送的字符放入SBUF中 while(!TI); // 等待发送完成 TI = 0; // 清空发送完成标志位 } void uart_send_string(char *s) { while(*s) { uart_send_char(*s); // 逐个发送字符 s++; } } void main() { init_uart(); while(1) { LED = !LED; // LED闪烁 uart_send_string("Hello World\r\n"); // 发送字符串 delay(500); // 延时500ms } } void uart_interrupt() interrupt 4 { if(RI) // 串口接收中断 { RI = 0; // 清空接收中断标志位 unsigned char c = SBUF; // 读取接收到的数据 // 在此处添加接收处理代码 } } ``` 注意,这只是一个示例代码,具体实现应根据具体需求进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值