2014-06-09 74 views
0

我有一個3.5數字7段LED顯示屏,我試圖用Arduino驅動。 Arduino運行帶鎖存器的移位寄存器(M74HC595)。 移位寄存器的8個輸出端通過2000歐姆電阻器進入顯示器的8段引腳。 顯示器的三位控制引腳轉到Arduino上的三個引腳。 顯示屏有一個共陰極,因此當控制引腳爲低電平時,該數字打開,當該數字處於高電平時,該數字關閉。Arduino:複用7段顯示問題

這工作正常,只要我只點亮一個數字,或點亮多個數字具有相同的段,但一旦我嘗試切換兩個或三個數字之間的段,這一切都搞砸了。 不應該有光的部分,而是有一個弱光,這與讀取實際數字有關。

如果我在寫入每個數字之間添加延遲,那麼不需要的光線會變暗一些,但很快,整個事物就會因爲高延遲而閃爍並且無法使用。

我做錯了什麼?

爲了使一個特定的數字,我上設置的Arduino的控制引腳,例如這是我使第一位數:

digitalWrite(digit1, LOW); 
digitalWrite(digit2, HIGH); 
digitalWrite(digit3, HIGH); 

然後推號碼到移位寄存器並將其移動到閂鎖(並且因此到顯示):

digitalWrite(latchPin, LOW); 
shiftOut(dataPin, clockPin, MSBFIRST, number); 
digitalWrite(latchPin, HIGH); 

這是我的方案:

Scheme

回答

2

首先,只有在輸出準備就緒後,才能通過公共引腳啓用數字。其次,它看起來像是在啓用了引腳的情況下切換數字,並且在數字變爲可見之後您正在更改它們,因此爲什麼在使用不同的數字時會變暗。

你應該按照這樣的循環。

  1. 推出你想要的值並啓用鎖存器。
  2. 用公共引腳點亮數字。
  3. 睡眠x毫秒。
  4. 用公共引腳關閉數字。
  5. 返回1並重復其他數字。

這個想法是,3位數字實際上會非常快地閃爍,但對於人眼來說,它總是看起來像是一直在閃爍。如果您首先啓用它們,那麼74595輸出中的最後一位數字將會有一個值,並且在一小段時間內會顯示該值。當你切換到實際值時,它會看起來更暗,因爲它可見的時間更少。當數字相同時,看起來沒有什麼不對。

+0

你是對的!它只需切換操作順序,以便在設置鎖存器後啓用該數字。謝謝 – user2503048

+0

不客氣。如果解決了你的問題,不要忘記接受答案。 –