74HC164控制數(shù)碼管顯示
剛開始的時候把74HC164當(dāng)成了74HC573使了,還看了原理圖,半天摸不出個所以然,然后上網(wǎng)查了資料,才知道原來74HC164是串入并出的,此時才知道思考方向出錯了。于是再看原理圖再分析示例代碼方有所獲。
原來164只有一個輸入端sda(P10),一個控制位clk(P11),還有四個位選:dig1~dig4分別與P13~P15相連,我們可以通過控制dig來達(dá)到選位的目的,然后再用sda來向164里傳數(shù)。而164共有8個輸出端,剛好對應(yīng)了數(shù)碼管的一個字節(jié)(a,b,c,d,,e,f,g,dp),從而顯示出不同的數(shù)。
還有我寫的一個例子程序發(fā)現(xiàn)了一個小問題,現(xiàn)在想不通,放到這以后再想:為164送數(shù)的時候不能用while(1)死循環(huán),因?yàn)檫@樣會導(dǎo)致傳不進(jìn)數(shù),至于原因,我還不清楚。
以下是我成功在74HC164上顯示數(shù)碼管的一個成功的例子:
#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個數(shù)碼管全部選中for(i=0;i<8;i++){clk=1;sda=1;//將所有段全部賦1,會使全部段都顯示clk=0;}}
程序運(yùn)行效果:將顯示4個8和4個點(diǎn)。