码迷,mamicode.com
首页 > 其他好文 > 详细

74HC164dD驱动LED

时间:2015-11-09 12:32:17      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

驱动要点:

   1、上升沿写入串行数据:

     CLK=0;

     DAT=num&0x01;

     CLK=1;

  2、写入数据的数码管编码(指代码中的 tab[])

     串行数据是FIFO先进先出,也就是先写高位,移位放入。

 

    电路如图:

技术分享技术分享

 

 

 

 共阴数码管74HC164串行驱动(经过测试)

//共阴数码管74HC164串行驱动

#include

#define uint unsigned int

#define uchar unsigned char

sbit DAT=P3^7; //模拟串口数据发送端

sbit CLK=P3^4;//模拟时钟控制端

 

uchar code tab[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xff,0xf6};//0-9,-,全灭

 

void sendbyte(uchar byte)

{   

        uchar num,c;

        num=tab[byte];

  for(c=0;c<8;c++)

        {

    CLK=0;

  DAT=num&0x01;

  CLK=1;

        num>>=1;

       

       

        }

 

}

 

 

void delay_50ms(unsigned int t)

{

unsigned int j; 

for(;t>0;t--)

  for(j=6245;j>0;j--)

{;}

}

 

main()

{

 

 

unsigned char h;

  while(1){

  for(h=0;h<10;h++){

      delay_50ms(1);

      sendbyte(h);

        

 

  delay_50ms(4);

  }

  h=0;

    }

   

}

 

 

 

 共阳数码管74HC164串行驱动(暂未测试)

#include

#define uint unsigned int

#define uchar unsigned char

sbit DAT=P1^1; //模拟串口数据发送端

sbit CLK=P1^2;//模拟时钟控制端

uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};//0-9,-,全灭 (共阳字段表)

 

void sendbyte(uchar byte)

{   

        uchar num,c;

        num=tab[byte];

  for(c=0;c<8;c++)

        {

    CLK=0;

  DAT=num&0x80; //(0x80即十进制的128, 二进制的10000000 按位发送)

  CLK=1;

        num<<=1;

       

       

        }

 

}

 

void delay_50ms(unsigned int t) //50MS演示程序

{

unsigned int j; 

for(;t>0;t--)

  for(j=6245;j>0;j--)

{;}

}

 

main()

{

 

unsigned char h;

  while(1){

  for(h=0;h<10;h++){

      delay_50ms(1);

      sendbyte(h);

  delay_50ms(10);

  }

  h=0;

    }

}

74HC164dD驱动LED

标签:

原文地址:http://www.cnblogs.com/zym0805/p/4949376.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!