电子常识
74hc164是比较典型的移位寄存器,该移位寄存器有一个数据输入端口、一个时钟信号端口和八个输出端口。这种方法只需要2个MPU 的IO端口,而且在锁存器件这2个端口还可以干别的事情。 74HC164驱动共阴、共阳数码管都很方便。
1、上升沿写入串行数据:
CLK=0;
DAT=num&0x01;
CLK=1;
2、写入数据的数码管编码(指代码中的 tab[])
串行数据是FIFO先进先出,也就是先写高位,移位放入。
74hc164驱动共阴数码管电路图
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驱动共阳数码管源程序
#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;
}
}
全部0条评论
快来发表一下你的评论吧 !