读芯片手册及595串行实例全解 小伙伴们,是不是在刚接触芯片的时候感觉很吃力呢,多数的芯片手册都是英文的,是不是感动很无力呢。这篇文章将以74HC595为例,讲解手册的阅读方式,主要是时序图的解读,以及595应用实例。 1 595手册打开手册,我们将知道一个芯片的特征、用途、整体描述、参考数据(控制信号的大小),真值表和时序图(这两个很重要),其他的内容多数为在不同环境中的测试数据。 74HC595是具有8位移位寄存器和一个存储器,三态输出功能。移位寄存器和存储器是分别的时钟。
图1 引脚配置结构图 74595的数据端: QA—QH:八位并行输出端,可以直接控制数码管的8个段。 QH’:级联输出端。将它接下一个595的SER端。 SER:串行数据输入端。 74595的控制端说明: SCK(11脚):上升沿时数据寄存器的数据移位。移位方向QA-->QB-->QC-->...-->QH;下降沿移位寄存器数据不变。(脉冲宽度:5V时,大于几十纳秒就行了。我通常都选微秒级) RCK(12脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。通常我将RCK置为低电平,当移位结束后,在RCK端产生一个正脉冲(5V时,大于几十纳秒就行了。我通常都选微秒级),更新显示数据。 /SCL(10脚):低电平时将移位寄存器的数据清零。通常将它接Vcc。 /G(13脚):高电平时禁止输出(高阻态)。通常我将它接GND。
图2 时序图
每个引脚的功能我们清楚了,现在我们来学习如何看时序图。时序图中我们可以看出,SCK和RCK的上升沿是不同时刻的(先接收,再输出),我们可以看到串行数据输入端SER为高电平时,SCK有上升沿(此时/SCL为高电平,/G为低电平),这时移位寄存器的第一位被写1,也就在这时QH’脚输出,输出的值为移位寄存器的第8位,这时的值为0,见时序图。在接收到RCK第一个上升沿时,将移位寄存器中的值赋值给锁存寄存器,并并行输出,QA输出的是锁存寄存器的第一位,QB输出的是锁存寄存器的第二位,······ SCK的第三个上升沿时,SER为低电平,移位寄存器向左移一位,并将接收到的值写入移位寄存器的第一位,此时移位寄存器的存储的值为0000 0010。在RCK的第二个上升沿到来时,并行输出为0000 0010。 当SCK 的第九个上升沿时,SER为低电平,移位寄存器向左移一位(向高位),并将接收到的值写入移位寄存器的第一位,这时1已被移到移位寄存器的第8位,这时移位寄存器中的值为1000 0000,QH’输出为1。在RCK的第八个上升沿到来时,并行输出QH的输出为1,其他并行引脚输出为0。 当/G为1时,输出为高组态。 2 595串行按照电路图连接线路。接线图中,我绿灯代表的是QA端,用以区别其他端口。
图3 电路原理图
写入如下程序: - num1=0x88;
- for(j=0;j<8;j++) //串行数据输入
- {
- if(num1&0x80) //因为移位寄存器是低位向高位移。
- SER0=1; // SER串行输入端口
- else
- SER0=0;
-
- SCK0=0; //上升沿,输入到移位寄存器
- delay_us(1);
- SCK0=1;
- num1<<=1;
- }
- num0=0x11;
- for(j=0;j<8;j++) //串行数据输入
- {
- if(num0&0x80)
- SER0=1; // SER串行输入端口
- else
- SER0=0;
-
- SCK0=0; //上升沿,输入到移位寄存器
- delay_us(1);
- SCK0=1;
- num0<<=1;
- }
- RCK0=1;
- delay_ms(500);
复制代码num1数据写入编号为1的595,num0数据写入编号为0的595。
下载测试
图4 测试结果
595是一个串行输出,并行输出的寄存器,用在点阵中,只要3个控制引脚,就可以对一整块的点阵进行控制,解决单片机端口不够用问题。
|