新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 跟我學51單片機(五):單片機動態(tài)掃描驅(qū)動數(shù)碼管

跟我學51單片機(五):單片機動態(tài)掃描驅(qū)動數(shù)碼管

作者: 時間:2013-02-06 來源:網(wǎng)絡 收藏
74HC595 是8 位串行輸入/ 輸出或者并行輸出移位寄存器芯片,可以將串行的數(shù)據(jù),轉為并行的輸出,這樣可以節(jié)約控制器的IO 口資源,因而廣泛應用。

  74HC595 最多需要5 根控制線, 即SDI(Pin14)、SCK(Pin11)、RCK(Pin12)、 (Pin10)和(Pin13)。圖2 中將 直接接到高電平, 用軟件來實現(xiàn)寄存器清零; 直接接到低電平, 一直輸出有效。把其余三根線和單片機的I/O 口相接, 即可實現(xiàn)對74HC595 的控制。數(shù)據(jù)從SDI 口送入74HC595 , 在每個SCK 的上升沿, SDI 口上的數(shù)據(jù)移入寄存器, 在SCK 的第9 個上升沿, 數(shù)據(jù)開始從SDO 移出。如果把第一個74HC595的SDO 和第二個74HC595 的SDI 相接, 數(shù)據(jù)即移入第二個74HC595 中, 照此一個個接下去, 可接任意多個。數(shù)據(jù)全部送完后, 給RCK 一個上升沿, 寄存器中的數(shù)據(jù)即置入鎖存器。此時為低電平, 數(shù)據(jù)即從并口Q0 ~ Q7 輸出。

  74HC245 為八總線收發(fā)器芯片,即可以將數(shù)據(jù)從A 總線端口傳送到B 總線端口,也可將數(shù)據(jù)從B 總線端口傳送到A 總線端口。傳送方向由方向控制管腳DIR(芯片1 腳)輸入的邏輯電平而定。其真值表如表3 所示:

表3 74HC245輸入輸出真值表

  H 代表高電平,L 代表低電平,X 代表不定的狀態(tài)。

  四、程序設計

  本講設計實例核心程序如下:

  ……

  #define SDI P2_7 ( 1)

  #define SCLK P2_6 ( 2)

  #define RCLK P2_5 ( 3)

  ……

  void dat_in(unsigned char dat) ( 4)

  {

  unsigned char i; ( 5)

  for(i=0;i8;i++) ( 6)

  {

  SCLK=0; ( 7)

  SDI=dat0X80; ( 8)

  dat《=1; ( 9)

  SCLK=1; ( 10)

  }

  RCLK=0; ( 11)

  RCLK=1; ( 12)

  }

  程序詳細說明:

 ?。?)將數(shù)據(jù)輸出端定義為P2.7 管腳。

 ?。?)將數(shù)據(jù)時鐘輸出端定義為P2.6 管腳。

 ?。?)將寄存器時鐘輸出端定義為P2.5 管腳。

  (4)數(shù)據(jù)傳入函數(shù),傳入一字節(jié)。

 ?。?)定義一個無符號字符型變量。

 ?。?)要因為要傳送一個字節(jié),故要8 次。

 ?。?)數(shù)據(jù)時鐘先輸出低。

 ?。?)讓數(shù)據(jù)管腳輸出傳入字節(jié)的最高位。

  (9)傳入字節(jié)左移一位。

  (10)數(shù)據(jù)時鐘輸出高,上升沿將數(shù)據(jù)所存儲至74HC595 數(shù)據(jù)寄存器中。

 ?。?1)寄存器時鐘先輸出低。

 ?。?2)寄存器時鐘輸出高,上升沿將數(shù)據(jù)所存儲至74HC595 數(shù)據(jù)寄存器中。

  以上字程序的作用, 當發(fā)送一個字節(jié)的顯示數(shù)據(jù)的時候, 通過74HC595 進行串行轉并行的控制,每次從單片機IO發(fā)送1Bit出去, 循環(huán)8次, 完成發(fā)送一個字節(jié),之后再的輸出端以一個字節(jié)的方式傳輸給數(shù)碼管, 實現(xiàn)顯示。

  五、調(diào)試要點與實驗現(xiàn)象

  接好硬件電路,通過冷啟動方式將程序所生成的。hex 文件下載到單片機運行后,復位單片機,就可以觀察到板上8 個數(shù)碼管都點亮(見圖3),并從數(shù)字0 到9 變化閃爍。調(diào)試的時候需要注意的是,數(shù)碼管的使能控制端(見圖2)必須用跳線帽跳上,從而讓74HC138 能工作輸出。不需要用到數(shù)碼管時可以, 反之,跳開以節(jié)省系統(tǒng)電流損耗。

圖3 數(shù)碼管顯示效

  另外過程中, 數(shù)碼管顯示的亮度與驅(qū)動電流、點亮時間和關斷時間有關, 所以應當適當調(diào)整驅(qū)動電流大小和掃描頻率, 從而控制顯示所需要的亮度。這在驅(qū)動尺寸較大的數(shù)碼管組時更是如此,為了穩(wěn)定顯示,硬件方面必須達到該有的驅(qū)動能力,如在驅(qū)動端再接達林頓管等。軟件方面,應在實際的調(diào)試過程中不斷的嘗試(見本講程序中所掃描次數(shù)的經(jīng)驗值),找到一個最佳臨界點,即要注意的延時間隔和掃描次數(shù)。

  六、總結

  本講介紹了單片機動態(tài)的原理并給出了實例,通過該講,我們可以總結如下:

  的優(yōu)點:當顯示位數(shù)較多時,采用動態(tài)顯示方式比較節(jié)省I/O 口,硬件電路也較靜態(tài)顯示簡單;缺點:其穩(wěn)定度不如靜態(tài)顯示方式。而且在顯示位數(shù)較多時CPU要輪番掃描,占用CPU較多的時間。

  總的來說,無論是動態(tài)還是靜態(tài)顯示,其顯示更新的速率不能太快,如數(shù)據(jù)不停變化,太快則無法看清楚顯示的內(nèi)容,在軟件設計是必須注意的。另外,在同等條件下動態(tài)顯示的亮度比靜態(tài)顯示要差一些,所以在適當提高驅(qū)動電流,例如使用限流電阻,就應略小于靜態(tài)顯示電路中的,或者使用緩沖驅(qū)動芯片。下講將重點講述單片機外部中斷以及應用,以對紅外遙控器進行解碼作為實例,敬請期待。

紅外遙控器相關文章:紅外遙控器原理

萬能遙控器相關文章:萬能遙控器代碼


51單片機相關文章:51單片機教程



上一頁 1 2 下一頁

評論


相關推薦

技術專區(qū)

關閉