本文旨在介紹單片機入門的基礎知識,為初接觸或即將接觸單片的新手提供一個入門指導。本文章會陸續推出,隔幾天一個章節。希望對廣大即將接觸單片機的人有所幫助,如果有錯誤歡迎回帖指出與本人交流或加入QQ群143586739.
由于電腦系統重裝,PROTEUS沒有找到破解版,本章就不做仿真了,直接上電路圖和程序講解。
上一章簡單介紹了數碼管的靜態顯示,主要是講解數碼管顯示數據的原理,這種方法的優點是硬件電路簡單編程思路明晰,但是卻浪費單片機的IO口。數碼管的動態顯示(使用專用芯片)可以做到節省IO的目的。
動態顯示的原理:動態顯示的特點是將所有位數碼管的段選線并聯在一起,由位選線控制是哪一位數碼管有效。選亮數碼管采用動態掃描顯示。所謂動態掃描顯示即輪流向各位數碼管送出字形碼和相應的位選,利用發光管的余輝和人眼視覺暫留作用,使人的感覺好像各位數碼管同時都在顯示。

圖中使用兩片74HC595驅動4位數碼管(本例其實可以驅動8位),DAT,RCK,CLK是直接連接到單片機引腳的,由此可以看出只需要使用3個IO接口驅動8位數碼管,大大節省了IO資源。本例中使用共陽數碼管,調節R38,R39,R40,R41可以改變字段的亮度。
硬件分析:
數碼管的段選都是連在一起的,顯示的時候通過片選來確定要點亮哪一片數碼管,然后讓片選要依次選通就可以實現數據動態顯示。

這里用的是LPC11C14單片機,圖中的宏定義使用了三目運算符。

第52行,寫數據前將CLK拉低;
第53行,先判斷高位,高位有數據則將數據送至74HC595;
第55行,數據移位;

該函數的目的是讓RCK產生一個上升沿,因為74HC595在RCK處于上升沿的時候才將數據鎖存并顯示。

第91,92,93,94,95行,分離數據的個,十,百位;
第97,98行,控制片選;
動態顯示就是這個效果:

|