差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版 两侧同时换到之后的修订记录
比赛计分系统设计 [2018/10/22 14:54]
anran [实验原理]
比赛计分系统设计 [2018/10/22 14:55]
anran [实验原理]
行 120: 行 120:
 {{:​74hc595逻辑图.jpg?​600|74HC595内部结构图}} {{:​74hc595逻辑图.jpg?​600|74HC595内部结构图}}
  
-{{:​74hc595时序图.jpg?​300|74HC595时序图}}+{{:​74hc595时序图.jpg?​600|74HC595时序图}}
  
 根据74HC595内部结构及时序图可以得知,SH_CP(SCK)每个上升沿都会将DS(SER)的数据采样到8位移位寄存器中,当ST_CP(RCK)上升沿时,8位移位寄存器中的数据被所存到8位锁存器中,同时对应Q0~Q7管脚刷新对应输出。对于我们的硬件,我们首先通过SH_CP(SCK)和DS(SER)配合将需要传输的16位数据输出,然后控制ST_CP(RCK)产生上升沿,所以我们需要至少16个SH_CP(SCK)周期完成1次数码管控制。 根据74HC595内部结构及时序图可以得知,SH_CP(SCK)每个上升沿都会将DS(SER)的数据采样到8位移位寄存器中,当ST_CP(RCK)上升沿时,8位移位寄存器中的数据被所存到8位锁存器中,同时对应Q0~Q7管脚刷新对应输出。对于我们的硬件,我们首先通过SH_CP(SCK)和DS(SER)配合将需要传输的16位数据输出,然后控制ST_CP(RCK)产生上升沿,所以我们需要至少16个SH_CP(SCK)周期完成1次数码管控制。
行 176: 行 176:
 如果我们设计一个状态机,将数码管扫描的程序和74HC595串行驱动程序分别做成两个状态MAIN和WRITE,控制数码管扫描程序每次产生一组控制数据,执行一次74HC595串行通信,就可以完成我们数码管模块电路的驱动设计了。 如果我们设计一个状态机,将数码管扫描的程序和74HC595串行驱动程序分别做成两个状态MAIN和WRITE,控制数码管扫描程序每次产生一组控制数据,执行一次74HC595串行通信,就可以完成我们数码管模块电路的驱动设计了。
  
-{{:​5-状态机设计框架.png?​800|状态机设计框架}}+{{:​5-状态机设计框架.png?​600|状态机设计框架}}
  
 8位数码管刷新1次需要8个数码管各点亮1次,每个数码管点亮1次需要16位数据,16位数据通过串行方式传输给74HC595需要至少16个SH_CP(SCK)周期,按照我们前面说的数码管刷新率达到125次/​秒,扫描方式下每个数码管会点亮1毫秒,数码管点亮的时间应该等于1次数码管控制的时间,也就是16个SH_CP(SCK)周期,所以我们可以控制74HC595的SH_CP(SCK)时钟周期计算: 8位数码管刷新1次需要8个数码管各点亮1次,每个数码管点亮1次需要16位数据,16位数据通过串行方式传输给74HC595需要至少16个SH_CP(SCK)周期,按照我们前面说的数码管刷新率达到125次/​秒,扫描方式下每个数码管会点亮1毫秒,数码管点亮的时间应该等于1次数码管控制的时间,也就是16个SH_CP(SCK)周期,所以我们可以控制74HC595的SH_CP(SCK)时钟周期计算: