原创 74HC164的驱动和应用

2010-9-28 15:18 2979 9 9 分类: EDA/ IP/ 设计与制造

74HC164的几点说明:


1.74HC164是串行输入,并行输出的;


2.它的并行输出其实是有延时的,只是延时时间小,可以认为是并行输出;



74hc164封装和真值表: 


 


真值表中文解释说明:



           H-高电平   L -低电平   X -任意电平 ↑-低到高电平跳变(上升沿有效)


           QA0,QB0,QH0   -规定的稳态条件建立前的电平


           QAn,QGn       -时钟最近的↑前的电平


          看真值表的第三条和第五条:就可以知道,在保持clear为 H clock为↑状态下,AB都为H时,移位寄存器移入H,而当移位寄存器移入L时,必须令B为L,而A不受约束。所以可以把AB断相连再接入单片机数据端口。还有一种是A脚直接接高电平,B脚连入单片机数据端(P2_7)


电路仿真图:






 


R为clear端, C1/->为clock端,&为A端(1脚)和B端(二角),3~13脚分表为QA~QH,


源程序:


                  /***74hc164是上升沿有效***/
#include<regx51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar ch;
sbit DAT=P2^7;//A,B端接一块后接入DAT
sbit CLK=P2^6;
char code seg[16]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff};
/*0~9和全灭状态*/
/*数经过移位寄存器后低位数为高位数,高位数为低位数
如:0000 0011移位以后为1100 0000*/


                /*延时一毫秒函数*/
void delay(uint ms)
{
uchar i;
for(;ms!=0;ms--)
   for(i=0;i<250;i++)
   {
    _nop_();
    _nop_();
    _nop_();
    _nop_();
   }
}
/***把代码发送到移位寄存器***/
void sendchar(ch)
{
   uchar i;
   for(i=0;i<8;i++)//8位数据传输完毕后才给数码管显示
{
      DAT=ch&0x01;//P2_7=0000000x
   /*DAT一直保持该状态,等时钟脉冲触发传递数值*/
   CLK=0;//下面两句制造一个上升沿
   CLK=1;
   /*一个seg[]刚好八位,164是串行输入的,分成八位输入*/
   ch>>=1;
   /*DAT=ch&0x01和ch>>=1的功能是一次取出八位二进制ch的每一位赋值给74hc164*/
}


                 }


                 void main(void)
{
uint m=0;
while(1)
{
     sendchar(seg[m]);
     if(++m==11) m=0;
   delay(200);
}
}


 



深圳市威智普电子有限公司


销售热线: 0755-83675696 / 83566110-818


传    真: 0755-83675696


QQ:      41540050


地    址: 深圳市福田区滨河大道9003号湖北大厦北座24楼A2


更多产品信息请登录http://www.wellchips.com

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
9
关闭 站长推荐上一条 /3 下一条