74hc164驱动数码管c语言程序,74hc164驱动共阴数码管与共阳数码管_74hc164驱动源程序...

74hc164是比较典型的移位寄存器,该移位寄存器有一个数据输入端口、一个时钟信号端口和八个输出端口。这种方法只需要2个MPU 的IO端口,而且在锁存器件这2个端口还可以干别的事情。 74HC164驱动共阴、共阳数码管都很方便。

4be00a9cf44afcb9286e7c4c04258884.png

74hc164驱动要点

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

CLK=0;

DAT=num&0x01;

CLK=1;

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

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

74hc164驱动共阴数码管

74hc164驱动共阴数码管电路图

510712c8581adc6bf87f2066a7b6347b.png

74hc164驱动共阴数码管源程序

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

#include《AT892051.H》

#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驱动共阳数码管

74hc164驱动共阳数码管电路图

051ffe0df84a09aa0fbc26864316c824.png

74hc164驱动共阳数码管源程序

#include《reg51.h》

#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;

}

}