admin管理员组文章数量:1564205
前言
此篇只对各函数功能做通俗易懂的解释,适合初学者理解串口通信的功能。
一、串口通信
1.什么是串口通信
我们使用的usb转串口是经典的串口通信之一,实现了电脑与单片机之间的联系,将程序通过串口从电脑下载到单片机中,还有诸多外设也是利用了串口进行通信,完成了与单片机直接进行交互
通俗解释,一个温度传感器,将电信号转换成数字信号发送给单片机,这个过程就是串口通信。
2.通信模式
通信的方式可以分为多种,
按照数据传送方式可分为串行通信和并行通信。
按照通信的数据同步方式,可分为异同通信和同步通信。
按照数据的传输方向又可分为单工、半双工和全双工通信。下面我们就来简单介绍这几种通信方式。
异步通信:
异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。
异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较
小,但每个字符要附加 2~3 位用于起止位,各帧之间还有间隔,因此传输效率
不高。
同步通信
同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。
可以通过两种方法实现。
单工、半双工与全双工通信
单工是指数据传输仅能沿一个方向,不能实现反向传输。
半双工是指数据传输可以沿两个方向。
全双工是指数据可以同时进行双向传输。
3.通信速率
衡量通信性能的一个非常重要的参数就是通信速率,通常以比特率(Bitrate)来表示。比特率是每秒钟传输二进制代码的位数,单位是:位/秒( bps)。
如每秒钟传送 240 个字符,而每个字符格式包含 10 位(1 个起始位、1 个停止位、8 个数据位)。
二、使用步骤
串口通信无非就是选择哪种模式,以怎样的速率进行通信。
我们会使用定时器配置通讯速率
我们会通过标志位进入中断服务函数
只需记住一点,RI和TI 需要软件置零。
以下图片可以对照配置好的代码去看,无非就是配置了些东西罢了
SCON=0x50;// 设置串口工作方式
PCON |= 0x80; //看图
TMOD &= 0x0F; //设置定时器模式
TMOD |= 0x20; //设置定时器模式
TL1 = 0xF3; //设定定时初值
TH1 = 0xF3; //设定定时器重装值
ET1 = 0; //禁止定时器1中断(我们不需要进去定时器1的中断服务函数故禁止)
TR1 = 1; //启动定时器1
EA=1;
ES=1;
2.功能实现两大步
第一步之配置
配置波特率
配置串口
void UART_Init()
{
SCON=0x50;//设置串口工作方式
PCON |= 0x80;
TMOD &= 0x0F; //设置定时器模式
TMOD |= 0x20; //设置定时器模式
TL1 = 0xF3; //设定定时初值
TH1 = 0xF3; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
EA=1;
ES=1;
}
第二步之发送
我们发送八位数据 FF 即 11111111 RI自动置 1
进入中断
注意:波特率与我们设置的波特率保持一致,看定时器的值即4800
第三步之进入中断
void UART_Routine() interrupt 4
{
if(RI==1) //如果接收标志位为1,接收到了数据
{
P2=~SBUF; //读取数据,取反后输出到LED
RI=0; //软件清0接收标志位清0
}
}
版权声明:本文标题:串口通信-电脑控制单片机点亮LED 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1727383384a1112151.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论