3
1月前に、私はthisに4つの7セグメントディスプレイで数字の文字列を多重化することを尋ねました。しかし今、私はPythonで7個の7セグメントディスプレイを使って文字列を多重化するようにコードを更新しようとしています。パラレルポートで文字列を表示するためのマルチプレクスアドレスとデータ
This is the new circuit.パラレルポートを使用してデータを送信すると、ラッチイネーブルは最上位ビット(ピン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
これは、文字列「STACK 0V3RFL0W」の出力になります。
また、過去のコード:
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)
あなたはPySerialの[PyParallel](http://pyserial.sourceforge.net/pyparallel.html)で見たことがありますか?かなり簡単です。 – jedwards
私はそれを使用しています! :) – aerojun
私はここで質問を見ることができません。 – Johnsyweb