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

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