接下来我将用几个篇幅来介绍如何使用显示驱动芯片74hc595来驱动数码管的方法。同时我们也可以学习到串行数据传输的方法以及一些数字芯片通用的一些概念,比如时钟引脚,上升沿,锁存,移位寄存等。理解了这些通用的概念对学习使用其他芯片是很有帮助的。
74hc595是具有8位移位寄存器和一个存储器,三态输出功能。移位寄存器和存储器是分别的时钟。数据在shcp的上升沿输入,在stcp的上升沿进入到存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(ds),和一个串行输出(q7’),和一个异步的低电平复位(mr),存储寄存器有一个并行8位的,具备三态的总线输出,当使能oe时(为低电平),存储寄存器的数据输出到总线。
74595的数据端:
qa--qh: 八位并行输出端,可以直接控制数码管的8个段。
qh': 级联输出端。将它接下一个595的si端。
si: 串行数据输入端。
74595的控制端说明:
595具体使用的步骤:
第一步:目的:将要准备输入的位数据移入74hc595数据输入端上。
方法:送位数据到_595。
第二步:目的:将位数据逐位移入74hc595,即数据串入
方法:sck_595产生一上升沿,将psi_595上的数据移入74hc595中.从低到高
第三步:目的:并行输出数据。即数据并出
方法:p1.1产生一上升沿,将由si_595上已移入数据寄存器中的数据
送入到输出锁存器。
说明: 从上可分析:从sck_595产生一上升沿(移入数据)和rck_595产生一上升沿(输出数据)是二个独立过程,实际应用时互不干扰。即可输出数据的 同时移入数据。看下整个过程的演示动画,或许你就能更加清楚了。
程序如下,复制就能用。
1 sbit si_595=p2^0; 2 sbit rck_595=p2^2; 3 sbit sck_595=p2^1
;
4 void hc595senddata(unsigned char sendval)//发送数据 5 { 6 unsigned char i; 7 for (i=0; i<8; i++) 8 { 9 if ((sendval< 10 else si_595=0; 11 sck_595=0;//从sck_595产生一上升沿(移入数据) 12 _nop_(); 13 _nop_(); 14 sck_595=1; 15 } 16 }
17 void hc595showdata()//rck_595产生一上升沿(输出数据) 18 { 19 rck_595=0; 20 _nop_(); 21 _nop_(); 22 rck_595=1; 23 } 24