關(guān)鍵字:89C2051,74HC164,電子鐘電路圖
用單片機89C2051串行通信74HC164制作發(fā)光電子鐘
作者:元增民
1.串行通信原理
單片機總共32個I/O口,若直接控制LED數(shù)碼管,最多只能控制4位。利用單片機同步串行通信功能和串并轉(zhuǎn)換器的串人串出功能,只要用單片機2個口線,就可以控制多位LED數(shù)碼管。這里結(jié)合多位LED數(shù)碼管的控制介紹單片機同步串行輸出通信。
同步串行輸出通信用兩根導(dǎo)線,其中TXD(P3.1)相當(dāng)于“寫”信號線,叫做同步時鐘線,RXD(P3.0)是數(shù)據(jù)線,見下圖。
單片機總共32個I/O口,若直接控制LED數(shù)碼管,最多只能控制4位。利用單片機同步串行通信功能和串并轉(zhuǎn)換器的串人串出功能,只要用單片機2個口線,就可以控制多位LED數(shù)碼管。這里結(jié)合多位LED數(shù)碼管的控制介紹單片機同步串行輸出通信。
同步串行輸出通信用兩根導(dǎo)線,其中TXD(P3.1)相當(dāng)于“寫”信號線,叫做同步時鐘線,RXD(P3.0)是數(shù)據(jù)線,見下圖。
2.串入并出寄存器
串人并出寄存器型號很多,像74HC164、74HCT164、74LS164和CD4014都是串入并出寄存器。
74LS164如右圖所示,其引腳功能如下:

①,②腳:A、B串行輸入數(shù)據(jù)DATA1,DATA2,通常合在一起作為串行數(shù)據(jù)輸入DATA使用;③~⑥、(10)~(13)腳:并行輸出,其中(13)腳兼作串行輸出;⑧腳:CLK,CLOCk,同步時鐘脈沖,輸入,正跳變有效;⑨腳:CLR,Clear,移位寄存器清零信號,輸入,低電平有效;⑦腳:CND,電源地;(14)腳:UCC,+5v電源輸入。
74××164芯片內(nèi)部主要功能部件是正跳變觸發(fā)、低電平清零的8位移位寄存器,其中正跳變觸發(fā)正好符合51單片機要求。74××164多個級聯(lián)對,13腳QH即是8位并行輸出的一位,又兼作串行輸出,即前一片芯片的串行輸出信號13腳接后一片芯片的串行輸入信號l、2腳,見下圖。
74××164芯片的邏輯功能:8腳CLK端子上的電壓出現(xiàn)一個正跳變,內(nèi)部8位移位寄存器就按照的順序移動一位。也就是說,把串行輸入數(shù)據(jù)S鎖存在QA中,原有的QA~G依次移動一位,而QH被刷新。74××164與LED數(shù)碼管的連接見下表。
3.單片機與串入并出寄存器的連接
74××164芯片與51單片機的連接見下圖,單片機要一位一位移送,編程序很費力。其實不然,SBUF是51單片機的一個負責(zé)串行通信的特殊功能寄存器。51單片機執(zhí)行一條串行發(fā)送指令MOVSBUF,A后,不僅把數(shù)據(jù)從源傳送到SBUF,而且自動啟動一次串行發(fā)送,在以下的8個機器周期內(nèi)依次將SBUF中的8位數(shù)據(jù)通過RXD線輸出。
下圖中單片機直接控制6個位數(shù)碼管,單片機串行輸出接到最低位74××164芯片串行輸入。連接規(guī)律是,較低位串行輸出接到較高位串行輸入。這樣一種硬件設(shè)計,有利于軟件設(shè)計時不顯示高位無用的O,使顯示器簡潔利落。
51單片機的串行發(fā)送指令MOVSBUF,Source要執(zhí)行兩個任務(wù),其一是把數(shù)據(jù)源Source送到發(fā)送緩沖器SBUF中;其二是啟動一次串行輸出,將發(fā)送緩沖器中的一個字節(jié)8位二進制數(shù)據(jù)按照從低位到高位的順序,伴隨單片機TXD線的同步脈沖依次送到串行數(shù)據(jù)線RXD上,并且由同步脈沖上升沿依次將各位二進制數(shù)據(jù)鎖存到所連接的串入并出緩沖器中。
根據(jù)下圖電路制作的6位LED電子鐘實物如右圖所示(略)。6片164芯片并排安裝,整個電路板尺寸為73×73mm2.相當(dāng)緊湊。
74××164芯片與51單片機的連接見下圖,單片機要一位一位移送,編程序很費力。其實不然,SBUF是51單片機的一個負責(zé)串行通信的特殊功能寄存器。51單片機執(zhí)行一條串行發(fā)送指令MOVSBUF,A后,不僅把數(shù)據(jù)從源傳送到SBUF,而且自動啟動一次串行發(fā)送,在以下的8個機器周期內(nèi)依次將SBUF中的8位數(shù)據(jù)通過RXD線輸出。
下圖中單片機直接控制6個位數(shù)碼管,單片機串行輸出接到最低位74××164芯片串行輸入。連接規(guī)律是,較低位串行輸出接到較高位串行輸入。這樣一種硬件設(shè)計,有利于軟件設(shè)計時不顯示高位無用的O,使顯示器簡潔利落。
51單片機的串行發(fā)送指令MOVSBUF,Source要執(zhí)行兩個任務(wù),其一是把數(shù)據(jù)源Source送到發(fā)送緩沖器SBUF中;其二是啟動一次串行輸出,將發(fā)送緩沖器中的一個字節(jié)8位二進制數(shù)據(jù)按照從低位到高位的順序,伴隨單片機TXD線的同步脈沖依次送到串行數(shù)據(jù)線RXD上,并且由同步脈沖上升沿依次將各位二進制數(shù)據(jù)鎖存到所連接的串入并出緩沖器中。
根據(jù)下圖電路制作的6位LED電子鐘實物如右圖所示(略)。6片164芯片并排安裝,整個電路板尺寸為73×73mm2.相當(dāng)緊湊。
雖然串行發(fā)送指令MOVSBUF,Source中的字節(jié)傳送任務(wù)只要2個機器周期就完成了,但是從SBUF朝外的串行發(fā)送卻至少需要8個機器周期。串行發(fā)送指令執(zhí)行后8個機器周期內(nèi),若繼續(xù)往SBUF中寫人數(shù)據(jù),則將打亂正在進行的串行發(fā)送。因此,串行發(fā)送指令執(zhí)行后8個機器周期內(nèi),不允許再次向SBUF中寫入任何數(shù)據(jù)。連續(xù)送數(shù)的方法有三種:查詢法、延遲法和中斷法。常用查詢法和延遲法。
查詢法五個字節(jié)數(shù)據(jù)的串行輸出程序如下:
將上述程序中兩次串行發(fā)送之間的JNB指令和CLR指令換成總共消耗8個機器周期的指令,如8條空操作指令NOP,就可把查詢法串行發(fā)送程序改成為延遲法串行發(fā)送程序。
下圖介紹的串行輸出電路實際不局限于LED數(shù)碼管控制,也可以控制諸如固態(tài)繼電器之類的負載,也可以通過晶體管開關(guān)控制普通繼電器,完成自動控制。
下圖介紹的串行輸出電路實際不局限于LED數(shù)碼管控制,也可以控制諸如固態(tài)繼電器之類的負載,也可以通過晶體管開關(guān)控制普通繼電器,完成自動控制。