目录

 

51单片机

一、51单片机架构

内存

外存

CPU

RAM

ROM

MCU

MPU

GPU

NPU

FPU

SOC

二、位运算

三、LED

四、数码管

五、按键

六、中断

中断

中断源

外部中断

中断优先级

中断嵌套

中断处理流程

中断寄存器

IE:中断允许寄存器(可位寻址)

TCON:定时器/计数0/1控制寄存器

中断向量表

中断向量

中断服务函数

外部中断0初始化

定时器中断初始化

七、蜂鸣器

PWM:脉冲宽度调制

PWM周期

PWM占空比

震荡源

有源蜂鸣器

无源蜂鸣器

八、串口(UART)

硬件中的通信协议

单工

半双工

全双工

UART:通用异步收发器(全双工异步串行)

串行&并行

串行

并行

串口通信时的串口参数

串口参数

同步通信&异步通信

同步通信

异步通信

串口中断

九、Modbus协议

十、温度传感器

传感器参数

操作ROM指令

线与特性

ds18b20采集温度完整流程

ds18b20时序

复位时序

写时序

写0时序:

写1时序

读时序


 

51单片机

最小系统:能够使单片机工作所需最少器件

一、51单片机架构

内存

掉电数据块,读写数据速度快,价格昂贵

外存

掉电数据不丢失,读写数据速度慢,价格便宜

CPU

中央处理器,完成数据指令处理

RAM

随机访问内存,与内存具有相同的特性,存放变量,51单片机中RAM256个字节

ROM

只读存储器,存放单片机的程序、代码、指令,一般在程序运行期间只读

MCU

微控制器,集成度高,将所有功能集成到一块芯片上,成本低,应用于简单控制领域

MPU

微处理器,集成度低,只有一个cpu,需要外接功能模块,成本高,功能复杂,适用于跑linux系统

GPU

图像处理单元,处理图像数据

NPU

神经网络处理器,适用于算法领域、AI推理、硬件加速

FPU

浮点数单元,完成对浮点数运算

SOC

片上系统,多个芯片集成到一起构成

二、位运算

按位与:&   有0为0   (清0)

按位或:|    有1为1    (置1)

按位异或:^   相同为0,相反为1

取反:~   

三、LED

用到的寄存器:P2

四、数码管

用到的寄存器:P0(位选),P1(段选)

五、按键

按键的输入

if(P1&(1<<4)==0)  P14被按下

六、中断

中断

当中央处理器cpu正在处理某个事情的时候,外界发生了紧急处理请求,要求cpu放下当前的事情转而去处理紧急的事情,执行完紧急事件后再返回被中断的地方,继续原来的工作

中断源

打断cpu执行当前任务的源头

51单片机中有5个中断源:定时器1,定时器0,外部中断0,外部中断1,串口(UART)

外部中断

由引脚电平变化所引发的中断,当高电平变为低电平时可以引发中断

在51单片机中,只有2个引脚可以实现外部中断:外部中断0,外部中断1

中断优先级

cpu去执行中断任务时,会去比较多个中断的优先级,优先去执行优先级更高的任务

中断嵌套

最多允许嵌套2层(51单片机内)

中断处理流程

1、中断源发出中断请求

2、检查cpu是否响应中断,以及中断源是否被屏蔽

3、比较中断的优先级

4、保护现场(栈区),执行之前把返回的地址保存好

5、执行中断服务函数

6、恢复现场

中断寄存器

IE:中断允许寄存器(可位寻址)

TCON:定时器/计数0/1控制寄存器

中断向量表

本质是一个数组,数组中存放的是中断服务函数入口地址

中断向量

本质是一个标号,可以通过标号在中断向量表中找到中断服务函数

中断服务函数

外部中断0初始化

定时器中断初始化

 

七、蜂鸣器

PWM:脉冲宽度调制

能够使引脚产生1个方波

pwm能够让引脚电平周期性翻转

PWM周期

1个PWM方波(从上升沿/下降沿到下一个上升沿/下降沿)所经历的时间

PWM占空比

高电平在一个周期内所占的比例

震荡源

有源蜂鸣器

内部存在震荡源,上电后蜂鸣器发出固定频率的声音

无源蜂鸣器

内部不存在震荡源,需要给定振幅,上电后不会发出声音

八、串口(UART)

硬件中的通信协议

UART、I2C、SPI、USB、CAN

单工

  • 数据接收方和数据发送方是固定的
  • 数据传输是通过一根信号线实现
  • 数据传输的方向是单一的

半双工

  • 通信双方既可以作为数据发送方也可以作为数据接收方 (接收方和发送方不固定)
  • 数据传输是通过一根信号线实现
  • 数据传输的方向可以是双向的(但同一时刻数据传输呈现单一性)

I2C:半双工

  • SCL:时钟线
  • SDA:数据线

全双工

  • 通信双方既可以作为数据发送方也可以作为数据接收方
  • 数据传输是通过两根信号线实现 任意时刻
  • 数据传输方向是双向的

SPI:全双工

  • SCLK:时钟线
  • CS:片选线

MOSI:主机发送,从机接收

MISO:主机接收,从机发送

UART:通用异步收发器(全双工异步串行)

  • RXS:数据接收信号线
  • TXD:数据发送信号线

串口遵循LSB优先(低位优先),先发低位

串行&并行

串行

通过一根信号线逐个bit逐个bit发送数据

1. 传输速度慢

2. 硬件成本低,实现简单

3. 传输距离远,抗干扰性好(RS485 差分)

并行

通过多根信号线多个bit同时发送

1. 传输速度快

2. 硬件成本高,实现复杂

3. 传输距离近,抗干扰性差(30米)

串口通信时的串口参数

奇偶校验: 无法检测偶数个bit出错的问题

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

串口参数

9600 8 N(O/E) 1
波特率 数据位 无校验(奇校验/偶校验) 停止位

同步通信&异步通信

同步通信

通信双方通过一根共享的时钟信号线规定数据传输的频率

异步通信

通信双方没有共享时钟信号线规定数据传输频率

 

串口通信通过波特率实现类似同步

串口中断

九、Modbus协议

主机下发协议,从机接收指令并解析完成对应的功能。并给主机回复

十、温度传感器

DS18B20:达拉斯公司,数字温度传感器

分辨率:传感器对温度变化的敏感程度

9位        0.5

10位        0.25

11位        0.125

12位        0.0625

传感器参数

传感器名称 功能 量程 精度 分辨率
DS18B20 温度采集 -55 ~125  +-0.5 12位,0.0625
         
  • GND和VCC不能接反,否则会出现瞬时温度过高

操作ROM指令

1、读ROM:0x33

2、匹配ROM:0x55

3、搜索ROM:0xF0

4、跳过ROM:0xCC

5、报警搜索:0xEC

线与特性

释放总线:把某个引脚拉高,就变为对方说了算,作为数据的接收方,需要释放总线

上拉电阻的目的:释放时,把引脚维持高电平

ds18b20采集温度完整流程

1. 复位 ds18b20_reset();

2. 发送0xCC,跳过ROM write_ds18b20(0xCC);

3. 发送0x44,开启温度转换 write_ds18b20(0x44);

4. 延时1s

5. 复位 ds18b20_reset();

6. 发送0xCC,跳过ROM write_ds18b20(0xCC);

7. 发送0xBE,读取温度 write_ds18b20(0xBE);

8. 读取两个字节温度

ds18b20时序

复位时序

  • 主机先将总线拉低至少480us,再释放总线,代表主机发送了一个复位脉冲
  • 主机如果在60-240us检测到总线出现低电平,代表ds18b20回复了一个存在脉冲
  • ds18b20最终释放总线,总线为高电平

写时序

  • 写0时序:

  1. 主机将总线拉低大于60us
  2. ds18b20在60us内进行采样,如果采到低电平,代表主机发送了一个0
  3. 主机释放总线,将引脚拉高
  • 写1时序

  1.  主机将总线拉低大于1us
  2. 主机释放总线,将引脚拉高
  3. ds18b20在45us内进行采样,如果采到高电平,代表主机发送了一个1

读时序

  1. 主机将总线拉低大于1us,释放总线,引脚变为高电平
  2. 主机再15us内进行采样
  3. 若采到一个高电平,代表读到1,若采到低电平,代表读到0
  4. 最终ds18b20释放总线

 

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐