首页 > 其他分享 >串口通信&控制LED

串口通信&控制LED

时间:2024-07-08 20:58:43浏览次数:9  
标签:LED UART void 通信 电平 Delay 单片机 串口

目录

1. 串口介绍

2. 硬件电路

3. 电平标准

4. 接口及引脚定义

5. 常见通信接口比较

6. 51单片机的UART

7. 串口参数及时序图

8. 串口模式图

9. 串口和中断系统

10. 串口相关寄存器

11. 串口向电脑发送数据

12. 电脑通过串口控制LED


1. 串口介绍
  • 串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信。
  • 单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大的扩展了单片机的应用范围,增强了单片机系统的硬件实力。
  • 51单片机内部自带UART(Universal Asynchronous Receiver Transmitter,通用异步收发器),可实现单片机的串口通信。

2. 硬件电路
  • 简单双向串口通信有两根通信线(发送端TXD和接收端RXD)
  • TXD与RXD要交叉连接
  • 当只需单向的数据传输时,可以直接一根通信线
  • 当电平标准不一致时,需要加电平转换芯片

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

5. 常见通信接口比较
名称引脚定义通信方式特点

UART

TXD、RXD

全双工、异步

点对点通信

    I²C

SCL、SDA

半双工、同步

可挂载多个设备

SPI

SCLK、MOSI、MISO、CS

全双工、同步

可挂载多个设备

1-Wire

DQ

半双工、异步

可挂载多个设备

 

还有CAN、USB等

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

STC89C52有1个UART

STC89C52的UART有四种工作模式:

  模式0:同步移位寄存器

  模式1:8位UART,波特率可变(常用)

  模式2:9位UART,波特率固定

  模式3:9位UART,波特率可变

7. 串口参数及时序图
  • 波特率:串口通信的速率(发送和接收各数据位的间隔时间)
  • 检验位:用于数据验证
  • 停止位:用于数据帧间隔

8. 串口模式图

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

9. 串口和中断系统

这里使用的中断系统图是传统51单片机的图,STC89C52的中断系统图可参考手册

10. 串口相关寄存器

HEX模式/十六进制模式/二进制模式:以原始数据的形式显示

文本模式/字符模式:以原始数据编码后的形式显示

11. 串口向电脑发送数据
#include <REGX52.H>
#include"Delay.h"
unsigned char sec;        //main.c

void UART_Init()		
{
	PCON |= 0x80;		
	SCON = 0x40;		
	TMOD &= 0x0F;		
	TMOD |= 0x20;		
	TL1 = 0xF3;		
	TH1 = 0xF3;		
	ET1 = 0;		
	TR1 = 1;		
}

void UART_send(unsigned char a)
{
	SBUF=a;
	while(TI==0);
	TI=0;
}
void main()
{
	UART_Init();
      while(1)
   {
     UART_send(sec);
		 sec++;
		 Delay(1000);
   }
}
#include <REGX52.H>        //Delay.c


void Delay(unsigned int xms)		
	
{
	unsigned char i, j;
while(xms)
{
	i = 2;
	j = 239;
	do
	{
		while (--j);
	} while (--i);
	xms--;
}
}
#ifndef __Delay_H  //防止重定义
#define __Delay_H  //Delay.h

void Delay(unsigned int xms);	


#endif
12. 电脑通过串口控制LED
#include <REGX52.H>
#include"Delay.h"        //main.c

void UART_Init()		
{
	PCON |= 0x80;		
	SCON = 0x50;		
	TMOD &= 0x0F;		
	TMOD |= 0x20;		
	TL1 = 0xF3;		
	TH1 = 0xF3;		
	ET1 = 0;		
	TR1 = 1;	
	EA=1;
	ES=1;	
}

void UART_send(unsigned char a)
{
	SBUF=a;
	while(TI==0);
	TI=0;
}
void main()
{
		UART_Init();
		while(1)
   {
    
   }
}
void VART_Routine() interrupt 4
{
	if(RI==1)
	{
		P2=~SBUF;
		UART_send(SBUF);
		RI=0;
	}
}

谢谢观看

标签:LED,UART,void,通信,电平,Delay,单片机,串口
From: https://blog.csdn.net/Limerence_Aries/article/details/140278236

相关文章

  • 蓝桥杯单片机学习总结(Day1 实现LED闪烁)
    标题一:通过SM74HC138译码器打开控制8个LED灯的寄存器标题二:编程思路标题三:总结 打开LED寄存器: 由开发板的原理图可知其8个LED灯的寄存器开关为SM74HC138译码器(以下用38译码器称代)的Y4口,该38译码器的输入端P25~P27,其分别对应P25->SM74HC138_A、P26->SM74HC138_B、P27->S......
  • stm32串口接受定长和不定长数据的两种中断方式
    stm32串口有两种中断方式1.字节中断(定长数据接受)接收指定字节数的数据后产生中断:HAL_UART_Receive_IT(&huart3,rxBuffer,21);注意这里仍然是接受一个字节进入一次IRQ中断函数,这里指定的字节数指的是接受指定字节数量后进入一次回调函数,由于IRQ函数会关闭中断,如需重复接受定......
  • 400WLED防眩通路灯
    适用范围:适用于公路、铁路隧道、桥涵、广场、建筑物等作泛光照明使用。厂房、廊道、栈桥变电站、车站、港口、轮船、货场、工业建筑、城市广场等场所的大面积照明。产品特点采用LED光源,配合高效率恒流驱动电源,比气体放电灯节电达60%;LED组件全部密封,防水防尘,无需内部清洁和......
  • 通信协议_C#实现自定义ModbusRTU主站
    背景知识:modbus协议介绍相关工具mbslave:充当从站。虚拟串口工具:虚拟出一对串口。VS2022。实现过程以及Demo打开虚拟串口工具:打开mbslave:此处从站连接COM1口。Demo实现创建DLL库,创建ModbusRTU类,进行实现:usingSystem;usingSystem.Collections.Generic;usi......
  • 【无人机通信】基于哈里斯鹰算法实现无人机辅助可见光通信NOMA 的总速率最大化附matla
     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • 网络通信系统的voronoi图显示与能耗分析matlab仿真
    1.程序功能描述       两层基站(BS)组成整个通讯网络,第1层为Macro基站记为,第2层为Micro基站记为,均服从泊松分布,相互独立,在坐标为10×10km的面积内、按照泊松分布随机生成若干个点(随机抛洒两遍nodes,两层叠加起来)。然后画成voronoi图:也就是在相邻两个点(同种......
  • 通信方式中常用的串口,你真的了解么?
    串口介绍一、引言串行接口(SerialPort),简称串口,是计算机与外部设备或其他计算机之间进行数据交换的一种通信接口。与并行通信相比,串行通信通过一条或几条信号线按顺序传输数据,具有接口简单、传输距离长等优点。串口在计算机历史中占据了重要位置,即便在今天,许多工业控制系统、......
  • 串口电平多种,TLL、232、485、422到底应该如何选择?
    串口通信是电子设备之间进行数据交换的重要方式,其中常见的电平标准包括TTL电平、RS-232电平、RS-485电平和RS-422电平。本文将详细介绍这些电平的由来、原理、特点、优缺点、应用、实现方式及接线方式,帮助各位同学或工程师更好地理解这些通讯基础。TTL电平TTL(Transistor......
  • stm32串口 环形缓冲区 代码
    voidHAL_UART_RxCpltCallback(UART_HandleTypeDef*huart){ //printf("ITIN\r\n");// printf("%d\r\n",HAL_GetTick()); //置零设定电流值PID时间if(huart->Instance==USART3){ //将数据放入缓冲区 circular_buffer.buffe......
  • Java面试之并发与网络通信常见面试题
    并发编程部分1.什么是进程和线程?进程:操作系统分配资源的最小单位,各个进程之间占据独立的寻址空间,运行也是独立运行,进程间通信需要一些机制。线程:程序执行的基本单位,一个进程可以开启多个线程,他们的很多空间(如堆空间)是公用的。线程执行开销小,但是不够安全。2.线程有几......