由原理圖可知,八個數碼管并不是直接接在單片機的IO口上的,而是用了74HC595芯片,那么我們要想驅動數碼管,就必須了解595芯片到底是個什么玩意兒,大多數開發板并沒有使用這個芯片。
74HC595
74HC595芯片的作用就是把串行的信號轉為并行的信號。關于這個芯片的詳細信息以及時序問題,我不在這里詳細敘述,大家去問百度去,百度一大堆資料。
只談談74HC595芯片的使用步驟
第一步:將要準備輸入的唯一數據移入74HC595數據輸入端上。送位數據到595芯片。
第二步:將位數據逐步移入74HC595,即SCL產生一個上升沿,將SI上的數據移入74HC595移位寄存器中,先送低位,再送高位。
第三步:并行輸出數據,即數據并出。RCK產生一上升沿,將由QA-QH上已移入數據寄存器中的數據送入輸出鎖存器。
根據原理圖可以知道,數碼管驅動設計到兩個74HC595芯片,一個芯片的輸出用于控制數碼管的位選,另一個芯片的輸出控制數碼管的段選,兩個芯片的12號引腳同時受單片機的P2.5引腳控制,兩個芯片的11號引腳同時受到單片機的P2.6引腳控制,段選數據和位選數據都是通過單片機引腳P2.7發送,在控制時鐘引腳P2.6的控制下,當P2.6出現上升沿時,單片機通過P2.7引腳向505芯片內部發送數據,應先發送位選數據,當八位位選數
據在P2.7引腳產生的8個上升沿的作用下,從高位到低位一次存于Q7——Q0上。感覺說了這么多,已經有人懵逼了,覺得很煩,算啦,直接上代碼大家瞅瞅吧,我只給大家看看驅動代碼,至于main主函數里面的,相信大家自己可以完成:
實驗效果