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上显示数码管的一个成功的例子:
#includesbitsda=P1^0;sbitclk=P1^1;sbitdig1=P1^2;sbitdig2=P1^3;sbitdig3=P1^4;sbitdig4=P1^5;inti;voidmain(){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个点。