1か月前、私は4つの7セグメントディスプレイで数値の文字列を多重化することについてこれを尋ねました。しかし今、私はPythonで7つの7セグメントディスプレイを使用して文字列を多重化するようにコードを更新しようとしています。
これが新しい回路です。パラレルポートを使用してデータを送信すると、ラッチイネーブルが最上位ビット(ピン9)を受信します。2番目のラッチでは、ラッチイネーブルもそれを受け取りますが、否定されます。これが7404の理由です。
つまり、アドレスが設定されているか(/ LE == False)、データが設定されています(/ LE = True)。
これが私がやろうとしていることです。「X」は、7セグメントディスプレイがオフになっていることを表します。しかし、それをアーカイブすることはできません。
XXXXXXX
XXXXXXS
XXXXXST
XXXXSTA
XXXSTAC
XXSTACK
XSTACKX
STACKX0
TACKX0V
ACKX0V3
CKX0V3R
KX0V3RF
X0VERFL
0VERFL0
VERFL0W
ERFL0WX
RFL0WXX
FL0WXXX
L0WXXXX
0WXXXXX
WXXXXXX
XXXXXXX
これは、文字列「STACK0V3RFL0W」の出力になります。
また、過去のコード:
import sys
import parallel
class Display(object):
def __init__(self):
'''Init and blank the "display".'''
self.display = [' '] * 4
self._update()
def setData(self,data):
'''Bits 0-3 are the "value".
Bits 4-7 are positions 0-3 (first-to-last).
'''
self.display = [' '] * 4
value = data & 0xF
if data & 0x10:
self.display[0] = str(value)
if data & 0x20:
self.display[1] = str(value)
if data & 0x40:
self.display[2] = str(value)
if data & 0x80:
self.display[3] = str(value)
self._update()
def _update(self):
'''Write over the same four terminal positions each time.'''
sys.stdout.write(''.join(self.display) + '\r')
if __name__ == '__main__':
p = Display()
pp=parallel.Parallel()
nums = raw_input("Enter a string of numbers: ")
# Shift over the steam four-at-a-time.
stream = 'XXXX' + nums + 'XXXX'
data = [0] * 4
for i in range(len(stream)-3):
# Precompute data
for pos in range(4):
value = stream[i+pos]
data[pos] = 0 if value == 'X' else (1<<(pos+4)) + int(value)
# "Flicker" the display...
for delay in xrange(1000):
# Display each position briefly.
for d in data:
pp.setData(d)
# Clear the display when done
p.setData(0)