发布网友 发布时间:2023-08-03 21:32
共1个回答
热心网友 时间:2024-10-20 09:49
74595是串行的,所以就按照那一位数例如十位数就是第9个脉冲(1~8位脉冲为个位数)
每位LED显示器段选线和74HC595的并行输出端相连,每一位可以独立显示(见图1)。在同一时间里,每一位显示的字符可以各不相同(每一位由一个74HC595的并行输出口控制段选码)。
N位LED显示要求N个74HC595芯片及N+3条I/O口线。
74595的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。这在串行速度慢的场合很有用处,数码管没有闪烁感。
74595是串入并出带有锁存功能移位寄存器,它的使用方法很简单,在正常使用时SCLR为高电平, G为低电平。从SER每输入一位数据,串行输595是串入并出带有锁存功能移位寄存器,它的使用方法很简单,如下面的真值表,在正常使用时SCLR为高电平, G为低电平。从SER每输入一位数据,串行输入时钟SCK上升沿有效一次,直到八位数据输入完毕,输出时钟上升沿有效一次,此时,输入的数据就被送到了输出端。入时钟SCK上升沿有效一次,直到八位数据输入完毕,输出时钟上升沿有效一次,此时,输入的数据就被送到了输出端。
追答给你参考:
unsigned char dis[]={0,1,10,10,10}; //定义显示缓冲区4个单元,第一个单元为空
unsigned char code segment[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,
0x27,0x7F,0x6F,0}; //定义数字0-9共阴数码管段码,最后一个为灭的段码
为了显示效果,主程序也改成如下的:
//****主函数****//
void main()
{
unsigned char j,n=1,i=1;
cpla=0;
while (1)
{
display(); //调用显示子程序
if(ins1==0) //按一次键,显示下一位
{
i++;if(i>4) i=1; //要显示的位
n++;if(n>9) n=0; //要显示的数
for(j=1;j<5;j++)
dis[j]=10; //灭掉所有位
dis[i]=n; //第i位显示n
while(ins1==0);
}
}
}