移位寄存器74HC595芯片编程
1. 硬件介绍
原理图:
2块595芯片用以拓展IO口
0#595芯片控制数码管段选和LCD1602数据传输脚
1#595芯片控制数码管位选
74HC595性能简介:
74HC595是典型的移位串转并三态输出驱动器。
8 位并行三态输出,并且可以级联输出。
74HC595引脚功能:
74HC595时序图 :
74HC595传输2字节过程:
2. 软件编程
- 定义595的控制管脚,并在初始化函数配置标准IO口模式,即2.2,2.3,2.4配置成低电平
注:
只将部分位配置成标准IO口模式:按位与(&)操作
- 由时序图定义管脚初始状态
- 创建595底层驱动(数据发送函数)
创建函数
声明函数
调用函数
- 发送环节
已创建的变量HC595_Write_Buffer [2]
有两个数组存储数据:HC595_Write_Buffer [0]、HC595_Write_Buffer [1]
数据移动从0号595芯片到1号595芯片
数据传输先进先出,先发送HC595_Write_Buffer [1]里的数据,再发送HC595_Write_Buffer [0]里的数据
具体发送步骤:
- SH脚低电平
- 缓存数据的最高位拷贝到DS脚(&0x80),每次只拷贝当前最高位,&运算结果遵循非0即1
- 缓存数据左移1位,次高位变成最高位,等待下一次循环发送
- SH脚高电平,DS脚上数据左移一位
- 2个字节发送完,ST发送一次高电平
- 查看发送结果
逻辑仪打开,结果符合
更改发送数据继续测试
- 发送第二个字节的数据
代码和前一次发送一样
发送数组0的数据,将原本在0号595芯片内的数组1的数据挤进1号595芯片
为数组0赋值
逻辑仪观察发送结果
- 输出
截止目前,只是将数据发送到595芯片,并没有输出到管脚
代码
- SPI协议解码
解码结果