SN74HC595应用之数码管

分类: STC15 |
595可以将串行数据扩展至并行数据,在点通数码管的时候,可以节约io端口。595的管脚图如下:
为了选通数码管的位,可以先将数据通过U1的SER口输入。例如要选通G1、G2则先将数据0一位一位送入U1的SER口。然后再输入串行数据给U1,U1将先前送入的选通数据给U2,这样就实现了位选。然后再将段显数据送入U1,来实现数码管的显示。
595要实现数据的输入过程是这样的:SRCLK在上升沿时将数据一位一位送入移位寄存器。RCLK在上升沿时将数据送入存储寄存器,在下降沿时保持数据不变。SRCLR为清零端,低电平有效,所以一般直接接高电平。
要实现数据输入SER口,程序如下:
{
NUM_SCK=0; //下降沿不变
}
NUM_RCK=0;
//上升沿移位寄存器数据进入数据存储器,下降沿不变
SetOneBit(0);
//选通G1
SetOneBit(0);
//选通G2
SetOneBit(1);
//不选通G3
SetOneBit(1);
//不选通G4
NUM_RCK=1;
//移位寄存器的数据进入显示存储器
段码信号送入
curDisplayNumCode=numCode[j];
//显示数字
for(i=0;i<8;i++)
{
SetOneBit(curDisplayNumCode&0x80);
//每一位移入74HC595的移位寄存器
curDisplayNumCode<<=1;
}
QA~QH为串行数据输出口,QH'为级连输出,与下一个595的SER管脚相连。如下图
http://s4/mw690/002cNJ3nzy75lOhNjGza3&690为了选通数码管的位,可以先将数据通过U1的SER口输入。例如要选通G1、G2则先将数据0一位一位送入U1的SER口。然后再输入串行数据给U1,U1将先前送入的选通数据给U2,这样就实现了位选。然后再将段显数据送入U1,来实现数码管的显示。
void SetOneBit(u8 b)
NUM_SER=b; //串行输入
NUM_SCK=1; //上升沿数据移位
位选信号先送入
NUM_OE=1;
NUM_RCK=1; //移位寄存器的数据进入显示存储器
NUM_OE=0; //使能显示
前一篇:单片机学习经验
后一篇:STC15 初始化IO端口