51单片机知识归档
- Date:2023-05-22
- Time:22:17
- Subject: 自动化
- Tags: #51 单片机
[[2023-05]]
直流电机介绍
- 直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转
- 直流电机主要由永磁体(定子)、线圈(转子)和换向器组成
- 除直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等
电机驱动电路
- 大功率直接驱动
- H 桥驱动
- 可以正反转动
PWM
- PWM(Pulse Width Modulation)即脉冲宽度调制,在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速、开关电源等领域
- PWM 重要参数:
- 频率 = 1 / TS 占空比 = TON(打开的时间) / TS(总时间) 精度 = 占空比变化步距(一格一格的调整,格子越小月细致)
- 紫线为等效的线
- 产生 pwm 方法
- 模型结构
- 波形
- 模型结构
- Date:2023-04-29
- Time:12:52
- Subject: 自动化
- Tags: #51 单片机
[[2023-04]]
51 自带 uart(Universal Asynchronous Receiver Transmitter,通用异步收发器)
电平标准
电平标准是数据 1 和数据 0 的表达方式,是传输线缆中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种:
TTL 电平:+5V 表示 1,0V 表示 0
RS232 电平:-3~-15V 表示 1,+3~+15V 表示 0
RS485 电平:两线压差+2~+6V 表示 1,-2~-6V 表示 0(差分信号)
电路
- 两端的设备的 TXD(发送)和 RXD(接受)交叉连接,单向可以一条,vcc,gnd 必须接
- 点平标准不一样的时候要加转换芯片
通信接口比较
相关术语
全双工:通信双方可以在同一时刻互相传输数据
半双工:通信双方可以互相传输数据,但必须分时复用一根数据线
单工:通信只能有一方发送到另一方,不能反向传输
异步:通信双方各自约定通信速率
同步:通信双方靠一根时钟线来约定通信速率,有时钟线
总线:连接各个设备的数据传输线路(类似于一条马路,把路边各住户连接起来,使住户可以相互交流)
51 单片机的 uart
- 我们的低端单片机只能一个
- 四个工作模式
- 模式 0:同步移位寄存器
- 模式 1:8 位 UART,波特率可变(常用)
- 模式 2:9 位 UART,波特率固定
- 模式 3:9 位 UART,波特率可变
- 串口模式图
- SBUF:串口数据缓存寄存器,物理上是两个独立的寄存器,但占用相同的地址。写操作时,写入的是发送寄存器,读操作时,读出的是接收寄存器
- 相关寄存器
- Date:2023-04-29
- Time:12:52
- Subject: 自动化
- Tags: #51 单片机
[[2023-04]]
介绍
单片机,英文 Micro Controller Unit,简称 MCU
里面有电脑的各个组成部分,有 CPU、RAM、ROM、定时器、中断系统、通讯接口,可以构成一个计算机系统,一个袖珍计算机,但是它小,功能实现比较完整
其可以完成的任务:信息采集(依靠传感器)、处理(依靠 CPU)和硬件设备(例如电机,LED 等)的控制,在我们比赛的时候处处都快体现(如机械臂,麦克纳姆轮)
我当前学的用的是 51 单片机,也就是 stc51 单片机,stc 是公司,
stm32 单片机 比赛用的
常见术语
- LED 灯
- 引脚 P1_0 P1 gnd vcc 对应有功能
- 串口 与电脑进行通讯,电脑也参与到工作来
- 定时器,用于计时系统,隔一段时间进行操作
- 中断系统:为了应急事件设计的,先处理应急的,暂停其他的,再回来
- 寄存器:连接软硬件的媒介,单片机的放在 ram,然后 ram 后面接着导线,寄存器相当于一个复杂机器的“操作按钮”,软件上设置了,实际的硬件电路能发生相应的功能
- keil4 keil5 用来写代码的平台
- c 语言,单片机的程序语言
- Date:2023-04-29
- Time:12:51
- Subject: 自动化
- Tags: #51 单片机
[[2023-04]]
定时器框架
时钟(提供计数单元的时钟脉冲)-> 计数单元(时钟计数)->中断系统(产生中断,执行定时任务)
工作模式
- 模式 0:13 位定时器
相当于一个计数器 - 模式 1:16 位定时器/计数器(常用)
- sysclk :系统时钟,也就是晶振周期,
- 12T 12 分频,1 微秒,这样记一次数
- 6T 类似
- C/T=0 count 选择上下的模式
中断系统
- 发生紧急事情,先暂停其他处理紧急,然后再回去,cpu 优先相依那个中断源请求问题,所以中断源就有优先级别
- 相当于可以同时进行两个任务(断点)
定时器相关寄存器
- 定时器/计数器 0 和 1 的相关寄存器
- 特殊的 ram 存储器,每个寄存器连着导线,控制电路连接的方式
- 可位寻址,可以单独设置;
- 不可位寻址,统一设置;
设置
驱动电路
ULN2003
- 增大驱动能力
- 与门 或门 非门 ,如下:
乐理部分
- Date:2023-05-18
- Time:23:53
- Subject: 自动化
- Tags: #51 单片机
[[2023-05]]
AT24C02
- AT24C02 是一种可以实现掉电不丢失的存储器,可用于保存单片机运行时想要永久保存的数据信息
- 存储介质:E2PROM
内部结构框图
- eeprom 的左边 x DEC 就是 decoder 编码器;下面就是输出端;上面用于擦除
- data word 地址寄存器
I2C 总线(i 方 c)
- 两根通信线:SCL(Serial Clock)、SDA(Serial Data)半双工通信
- 同步 半双工 带数据应答
- 通用的 I2C 总线,可以使各种设备的通信标准统一
- I2C 总线(Inter IC BUS)是由 Philips 公司开发的一种通用数据总线
I2C 电路规范
- 所有 I2C 设备的 SCL 连在一起,SDA 连在一起
- 设备的 SCL 和 SDA 均要配置成开漏输出模式
- SCL 和 SDA 各添加一个上拉电阻,阻值一般为 4.7KΩ 左右
- 开漏输出和上拉电阻的共同作用实现了“线与”的功能,此设计主要是为了解决多机通信互相干扰的问题
I2C 时序结构
- 起始条件:SCL 高电平期间,SDA 从高电平切换到低电平
- 终止条件:SCL 高电平期间,SDA 从低电平切换到高电平
- 发送一个字节:SCL 低电平期间,主机将数据位依次放到 SDA 线上(高位在前),然后拉高 SCL,从机将在 SCL 高电平期间读取数据位(读取 b7 下面的两个脉冲),所以 SCL 高电平期间 SDA 不允许有数据变化(方框内的下面两个脉冲得保持不变),依次循环上述过程 8 次(b7-b0),即可发送一个字节
- 接收一个字节:SCL 低电平期间,从机将数据位依次放到 SDA 线上(高位在前),然后拉高 SCL,主机将在 SCL 高电平期间读取数据位,所以 SCL 高电平期间 SDA 不允许有数据变化,依次循环上述过程 8 次,即可接收一个字节(主机在接收之前,需要释放 SDA,把控制权交给从机)紫色是从机控制的时候
- 发送应答(SA):在接收完一个字节之后,主机在下一个时钟发送一位数据,数据 0 表示应答,数据 1 表示非应答(ACK 就是应答)
- 接收应答(RA):在发送完一个字节之后,主机在下一个时钟接收一位数据,判断从机是否应答,数据 0 表示应答,数据 1 表示非应答(主机在接收之前,需要释放 SDA,也就是 sda 置高电平,控制权交给从机)
I2C 数据帧
- 发送一帧数据
- a6-3 在这个芯片规定为 1010 无法改变(相当于身份)后三位可以见到在原理图,都是接地的,为 0,最后一位决定功能,带横线接 gnd 起作用
- 向谁发什么
- 接受一帧数据
- 向谁收什么
- 先发送再接收数据帧(复合格式)
- 先说(发)再收取数据,对于传感器来说不必要,但是对于其他的,主机给了什么指令,就让从机回复些什么东西;实现的是 向谁收指定的什么
- 字节写
- 在 WORD ADDRESS(字地址)处写入数据 DATA
- 手册上的时序,可以参照思考对照一下,下面也是
- 随机读
- 读出在 WORD ADDRESS 处的数据 DATA
- 注:AT24C02 的固定地址为 1010,可配置地址本开发板上为 000(原理图中的 a0-a2),所以 SLAVE ADDRESS+W 为 0xA0 (Write 接地起作用),SLAVE ADDRESS+R 为 0xA1(Read 接高电平起作用)
- Date:2023-04-29
- Time:17:43
- Subject: 自动化
- Tags: #51 单片机
[[2023-04]]
RTC(Real Time Clock):实时时钟,是一种集成电路,通常称为时钟芯片
电路
寄存器
- 前两列命令字的结果,命令是什么,就是上面对应的功能
时序定义
- 第一位读取 write 还是 read,要是 read,则就把后面的那一段作为读取,从时钟芯片读取,write 就是下面的第二段,把它写入到里面去
- 一个时钟周期是一系列的上升沿伴随下降沿.要输入数据在时钟的上升沿数据必须有效,而 且在下降沿要输出数据位.如果 CE 输入为低电平,则所有数据传输终止,并且 I/O 口成高阻 抗状态.图 4 显示了数据传输. 在上电时, CE 必须为逻辑 0 直到 VCC 大于 2v,同样,SCLK 必须为逻辑 0 当 CE 变成逻辑 1 状态.
bcd 码
- 用 4 位二进制数来表示 1 位十进制数
- BCD 码转十进制:DEC=BCD/16 * 10+BCD%16; (2 位 BCD)
- 十进制转 BCD 码:BCD=DEC/10 * 16+DEC%10; (2 位 BCD)
- 在十六进制中的体现:0x13 表示 13,0x85 表示 85,0x1A 不合法
- Date:2023-04-29
- Time:14:34
- Subject: 自动化
- Tags: #51 单片机
[[2023-04]]
- 显示原理
74HC595
- 74HC595 是串行输入并行输出的移位寄存器,可用 3 根线输入串行数据,8 根线输出并行数据,多片级联后,可输出 16 位、24 位、32 位等,常用于 IO 口扩展。
- SER: 输入数据,serclk:移动位置,一层层往下,上面补充
- 先最上面 1 下一格子,然后最上面 0,现在 1 在第二行,然后两个再下沿,补第一层
- qh‘ 放到下一个芯片的寄存器里面(当 8 位满了之后)
- 低电平工作
srf sbit
- sfr(special function register):
- 特殊功能寄存器声明 例:sfr P0 = 0x80; 声明 P0 口寄存器,物理地址为 0x80
- sbit(special bit): 2. 特殊位声明例:sbit P0_1 = 0x81; 或 sbit P0_1 = P0^1; 声明 P0 寄存器的第 1 位
- 可位寻址/不可位寻址:在单片机系统中,操作任意寄存器或者某一位的数据时,必须给出其物理地址,又因为一个寄存器里有 8 位,所以位的数量是寄存器数量的 8 倍,单片机无法对所有位进行编码,故每 8 个寄存器中,只有一个是可以位寻址的。对不可位寻址的寄存器,若要只操作其中一位而不影响其它位时,可用“&=”、“|=”、“^=”的方法进行位操作
代码习惯
- 函数和变量命名建议小写开头,结构体建议大写开头,常量建议全大写
术语
- 首先要知道这个: 加横线一般表示这个接口低电平工作
- OE:
open enable 直译(打开使能)
说人话(打开此芯片的开关)
带上横线的意思用人话说就是(输入低电平这个芯片才能工作) - SRCLR:
serial clear 直译(连续清零/串行清零)
说人话(这个芯片数据清空)
带上横线的意思用人话说就是(输入低电平这个芯片里面的数据清空)
所以说你要用的话得接个高电平才能工作(毕竟你不能让芯片一直清空你准备的数据信号是不是) - SER: serial 直译(连续/串行)
说人话解释(这个接口就是商场大门,排成一条长队的数据就从这个接口进)
这个接数据输入的 IO 口 - SRCLK : serial clock 直译(连续时钟/串行时钟)
说人话解释(这个就是可以通行的绿色标志,数据从 SER 口排着队,这里大喊一声(具体操作就是给他一个高点平),贵客一位! 然后数据就从这里进一位)
感觉和水龙头也挺像的,开一下关一下,水和数据似得.打开走一点,打开走一点,打开走一点…
要用的话就是 给高电平一下 走一个位(bit) 给高电平一下走一个位(bit) - RCLK: receive clock 直译(接收时钟)
说人话解释(连着上面的说了啊,一个一个顾客进来凑够了一桌子 8 个人,不能让他们站着啊,你得让他们坐下来,这个就是请坐,你们一块坐下吧)
诶,这就输出了这个接口就是把当前的 8 个位,一块儿给输出的 要用的话就是给 给高电平一下,输出存的那几个位 - QA-QH:
就是桌子旁边的座位,这是输出口 最后进来的位在最前面 QA 座位 第二个进来位在第二个 QB 座位
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Chris!