快速掌握单片机基础(3)(PWM)(通信协议基础)(串口通信时序与参数)(电气特性与电平标准)(51单片机UART寄存器配置)(串口应用层协议)

8.PWM(脉冲宽度调制)

定义:能够引脚产生一个方波,周期性的让引脚的电平发生翻转。

PWM 周期:一个方波所经历的时间(上升沿/下降沿到下一个上升沿/下降沿所经历的时间)。

PWM 占空比:在一个周期内高电平所占的比例。

应用:背光调节、蜂鸣器。

蜂鸣器原理:

声音 ➔ 声波 ➔ 音调 ➔ 频率。

有源蜂鸣器:存在震荡源,通电后蜂鸣器会发出持续固定频率的声音。

无源蜂鸣器:不存在震荡源,通电后不会发出声音,需要给定蜂鸣器一个震荡(方波)才能发声。

定时器 + PWM占空比 + 蜂鸣器(指定频率发声)

计算实例:

基础条件:51单片机工作频率:12MHz / 12 = 1MHz = 1000000Hz。单片机+1所需时间 = 1 / 1000000Hz = 0.000001s。

实例1:频率 200HZ,占空比 50%

周期时间:1 / 200HZ = 0.005s

半周期(高电平时间):0.005s / 2 = 0.0025s

计数次数:0.0025s / 0.000001s = 2500

初值:65535 - 2500 = 63035

实例2:频率 400HZ,占空比 50%

周期时间:1 / 400HZ = 0.0025s

半周期(高电平时间):0.0025s / 2 = 0.00125s

计数次数:0.00125s / 0.000001s = 1250

初值:65535 - 1250 = 64285

9. 通信协议基础

常见通信协议 :UART、I2C、SPI、CAN

UART定义 :Universal Async Receiver/Transmitter,通用异步收发器。特点:全双工、串行、异步

1)UART信号线

VCC:电源正极

GND:接地

TXD(Transmit Data):发送数据信号线

RXD(Receive Data):接收数据信号线

接线原则:一方的TXD接另一方的RXD,交叉连接。例如:51单片机与GPS传感器(ATGM336H-5N)通信。

2)通信方式分类

(1)单工通信:

数据的发送方和接收方是固定的。

数据传输通过一根信号线完成。

传输方向固定,只能从发送方到接收方。

(2)半双工通信(如I2C:VCC、GND、SDA、SCL)

通信双方既可以作为发送方,也可以作为接收方。

数据传输通过一根信号线实现。

传输方向可以是双向的,但同一时刻传输方向呈单一性

(3) 全双工通信(如UART)

通信双方既可以作为发送方,也可以作为接收方。

数据传输通过两根信号线实现。

数据传输方向在任意时刻可以是双向的。

3)串行传输与并行传输区别

(1)串行

通过一根信号线,按照先后次序逐个bit逐个bit发送数据。

特点:

传输速率慢(只有一根线逐个bit去传输数据)

硬件成本低,实现简单

传输距离远,抗干扰性强(信号线少,干扰小,不存在多根线之间信号偏移 RS485 差分)

(2)并行

通过多根信号线同时去传输多个bit数据。

特点:

传输速率快(通过多根线同时发送多个bit数据)

硬件成本高,实现复杂

传输距离近,抗干扰性差(30米距离内,信号偏移、电磁波干扰、误差)

10.串口通信时序与参数

1)数据传输顺序

串口通信遵循LSB先行原则(低位先行),即先发送数据低位。

2)串口通信时序(帧结构)

空闲状态:高电平

起始位:发送1bit低电平代表起始位。

数据位:发送8bit数据位(先发低位)。

校验位:发送1bit校验位(低电平/高电平,奇校验/偶校验)。

停止位:发送1bit高电平代表停止位。

3)同步与异步通信概念

时钟线:约定双方的通信频率。

同步通信:通信双方有一根共享的时钟信号线来约定通信的频率。

异步通信:通信双方没有时钟线进行通信频率约定(UART属于此类,依靠波特率约定)。

4)波特率与通信参数

波特率:bits per second (bps),每秒传输bit数量。

常见值:2400bps、4800bps、9600bps、115200bps。

串口通信参数格式:9600 8 N 1

9600: 波特率

8: 8位数据位

N: None 无校验

1: 停止位1位

其他格式:2400 8 E 1(E: Even 偶校验);

4800 8 O 1 (O: Odd 奇校验)。

5)奇偶校验原理

(1) 奇校验

校验位为'1',若数据位中'1'的个数加上校验位的'1'保持'1'的总个数为奇数个,则代表奇校验通过。

(2) 偶校验

校验位为'0',若数据位中'1'的个数加上校验位的'0'保持'1'的总个数为偶数个,则代表偶校验通过。

例:字符 'A' 0100 0001 ),奇校验发送 :0100 0001 1

11.电气特性与电平标准

TTL 电平

1(高电平):5V

0(低电平):0V

RS232 电平:负逻辑

1(高电平):-3V ~ -15V

0(低电平):3V ~ 15V

RS485 电平:差分

1(高电平):2V ~ 6V

0(低电平):-2V ~ -6V

CH340 芯片:电平转换芯片(用于单片机与电脑USB通信时的电平转换)。

12.51单片机UART寄存器配置

1)核心寄存器说明

(1)SCON(串口控制寄存器):

bit6和bit7清0,bit6置1:配置串口工作方式为8位UART波特率可变。

bit4置1:允许串口接收数据。

(2)PCON**(电源控制寄存器)**:

bit6清零:SMOD0=0,可以通过SCON寄存器中的bit6和bit7指定串口工作方式。

bit7置1:波特率翻倍。

(3)TMOD(定时器模式寄存器)

高4位清0,bit5置1:配置定时器1为8位自动重装载模式。

(4)TCON(定时器控制寄存器)

bit6置1:打开定时器1,开启计数。

(5)IE(中断允许寄存器):

bit7和bit4置1:开启串口中断 + CPU总中断。

2)波特率产生(定时器1初值)

2400波特率如何产生?使用定时器1(8位自动重装载模式)。

初值计算公式:

12MHz晶振:初值 230

11.0592MHz晶振:初值 232

TL和TH寄存器:8位自动重装载模式下,TL和TH都赋值为230(对应255-25的溢出)。

3)数据缓冲区(SBUF)

SBUF:串口接收/发送缓冲区(物理上为两个独立的寄存器,共用一个地址)。

接收缓冲区:xxxx xxxx(用于读取接收到的数据)。

发送缓冲区:dat(用于写入要发送的数据,如 SBUF = 'a';)。

4)初始化流程图逻辑

配置串口工作方式(SCON bit6/7)

允许串口接收数据(SCON bit4)

配置PCON(SMOD0=0, bit7=1翻倍)

配置定时器1模式(TMOD高4位清0,bit5置1)

设置定时器1初值(TL1=TH1=230或232)

打开定时器1,开启计数(TCON bit6=1)

开启串口中断+CPU总中断(IE bit7=1, bit4=1)

5)数据发送与接收代码逻辑

发送:轮询(主循环中)

while(1)

{

send_char();

}

// 字符串发送 puts

while (*p != '\0')

{

putchar(*p);

p++;

}

接收:中断(在中断服务函数中处理)。

6)存储类型关键字

data:将变量的存储位置放到芯片内部RAM(256byte)。

xdata:将变量的存储位置放到芯片外部扩展RAM(64KB)。

13.串口应用层协议(Modbus任务)

1)主从应答机制

主机(Windows):永远是发起通信的一方,拥有对通信的绝对控制。

从机(51单片机):无法发起通信,只能根据主机下发的指令完成对应的控制,并给主机回复应答。

任务描述:主机向从机发送Modbus协议格式指令,从机解析指令,根据指令完成对应功能并向从机回复应答。

2)Modbus协议帧格式

格式顺序:

起始位 | 地址码 | 功能码 | 数据1 | 数据2 | 校验位 | 结束位

功能码(实现的具体功能):

0x01:控制LED灯

0x02:数码管显示

0x03:蜂鸣器控制

0x04:温度采集

校验方式:累加和校验(或CRC校验,应用层提及)。

3)数据帧交互实例

主机 -> 从机:0xAA 0x01 0x01 0x00 0x42 0xEE 0xBB

从机 -> 主机:0xAA 0x01 0x81 0x00 0x42 0x6E 0xBB

注意:回复时,功能码最高位置1(如0x01变为0x81),代表这是从机的应答。

数据流向位:0代表数据从主机到从机;1代表数据从从机到主机(体现在功能码的最高位)。

4)从机解析与执行流程

(1)接收主机发过来的数据。

(2)解析数据,获得功能码。

(3)根据功能码完成对应的控制(数据位)。

(4)向主机回复应答。

相关推荐
天空'之城3 小时前
单片机基础核心知识点汇总(四十)
单片机·嵌入式硬件
smartpi_ai3 小时前
离线语音模块误识别问题全面解决方案:命令词设计、防误触与灵敏度调优指南
人工智能·单片机·语音识别
LCG元3 小时前
STM32F103 驱动 HX711 称重实战:DOUT 就绪时序、增益切换陷阱与两点标定精度实测
stm32·单片机·嵌入式硬件
小李不想当小白6 小时前
DMA直接存储器存取(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·分享
朝发如雪6 小时前
快速掌握单片机基础(6)(数据处理与传送指令)(跳转与分支指令)(栈操作与混合编程)(程序状态寄存器操作指令)(内存映射)
单片机·arm
blue_ice .6 小时前
Verilog DDS 数字信号发生器:DAC 输出模拟波形与 ADC 回采观测
开发语言·单片机·嵌入式硬件·fpga开发
远翔调光芯片^138287988727 小时前
ECP5702能芯科技PD取电芯片在市场上的优势有哪些?
开发语言·人工智能·单片机·嵌入式硬件·智能家居
时空自由民.7 小时前
WSL解决USB 串口连接问题与linux串口权限问题
linux·单片机
伟大的前程10 小时前
Flash 只能将比特从 1 改写为 0,无法从 0 改回 1
单片机