一.知识点记![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/052ccf336d3c390a7b399b1c1b800c1e.png)
1.74HC595操作
15 和 1 到 7 脚 QA--QH:并行数据输出
9 脚 QH 非:串行数据输出
10 脚 SCLK 非( MR) : 低电平复位引脚
11 脚 SCK( SHCP) : 移位寄存器时钟输入
12 脚 RCK( STCP) : 存储寄存器时钟输入
13 脚 G 非( OE) : 输出有效
14 脚 SER( DS) : 串行数据输入
74HC595 模块内使用了 4 块 74HC595芯片,它们采用了级联方式,即 RCLK 和 SRC 管脚并联在一起。
74HC595 需要用到的控制管脚 R CLK、SRCLK、SER(原理图上名称上画横线表示低电平 or 下降沿有效 )
74HC595 采用了级联方式,即 RCLK 和 SRCLK 管脚并联在一起,并且 74HC595 (A)的输出 QH 非连接到 74HC595(B)的串行输入口 SER,而 74HC595(B)的 输出 QH非 又连接到 74HC595(C)的串行输入口 SER,依次类推。
当所有数据就位后,控制上升沿输出缓存
74HC595 高位在前,低位在后,一位一位的移动。
一般硬件使得OE直接接地,可使得工作,就可以使能输出。
2.位寻址
中断系统中会涉及许多寄存器,这个时候我们会遇到一些有点陌生的名词,比如接下来说的“可位寻址”和“不可位寻址”,如下图:
位寻址是指对一些内部数据存储器RAM和特殊功能寄存器进行位操作的寻址。
简单来说,可位寻址就是指可以对该寄存器当中的某一位(bit)进行操作。、
例如同样对图中两个寄存器的B0位(EX0、ES2)进行赋值操作,因为IE是可位寻址的,所以我们可以直接将EX0“拿”出来操作。
EX0=1;而IE2是不可位寻址的,所以我们如果想对ES2赋值,就要对IE2整个寄存器赋值,不能“拿”出来。
IE2=0x01 //0000 0001
2.代码分析
/* SER( DS) : 串行数据 */
SER = Byte&(0x80>>i); //进行移位操作
/* SCK( SHCP) : 移位寄存器时钟输入 */
SCK =1 //进行数据移位,放到移位寄存器,高电平有效
SCK =0 ; //清0
RCK = 1; //移位寄存器输出到IO口,发送
RCK = 0; //使用完清0
当对应的某一行置 1 电平,某一列置 0 电平,则相应的二极管就亮;
3.注意事项
unsigned char code XX [32]={};
code是关键字,将数组的数据改变存放地址,从RAM 改为FLASH(但是只能读取不能写入了)