`
yunchow
  • 浏览: 317820 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

74HC164控制数码管显示

阅读更多
      刚开始的时候把74HC164当成了74HC573使了,还看了原理图,半天摸不出个所以然,然后上网查了资料,才知道原来74HC164是串入并出的,此时才知道思考方向出错了。于是再看原理图再分析示例代码方有所获。

      原来164只有一个输入端sda(P10),一个控制位clk(P11),还有四个位选:dig1~dig4分别与P13~P15相连,我们可以通过控制dig来达到选位的目的,然后再用sda来向164里传数。而164共有8个输出端,刚好对应了数码管的一个字节(a,b,c,d,,e,f,g,dp),从而显示出不同的数。
       还有我写的一个例子程序发现了一个小问题,现在想不通,放到这以后再想:为164送数的时候不能用while(1)死循环,因为这样会导致传不进数,至于原因,我还不清楚。

       以下是我成功在74HC164上显示数码管的一个成功的例子:

#include<reg52.h>

sbit sda=P1^0;
sbit clk=P1^1;
sbit dig1=P1^2;
sbit dig2=P1^3;
sbit dig3=P1^4;
sbit dig4=P1^5;
int i;
void main()
{
    dig1=0;
    dig2=0;
    dig3=0;
    dig4=0;//将4个数码管全部选中
    
    for(i=0;i<8;i++)
    {
        clk=1;
        sda=1; //将所有段全部赋1,会使全部段都显示
        clk=0;
    }
    
}


程序运行效果:将显示4个8和4个点。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics