3
한 달 전에 this에 4 개의 7 세그먼트 디스플레이가있는 숫자 문자열 다중화에 대해 질문했습니다. 하지만 지금은 파이썬에서 7 개의 7 세그먼트 디스플레이를 사용하여 문자열을 멀티 플렉스하도록 코드를 업데이트하려고합니다.병렬 포트를 통한 문자열 표시를위한 다중 주소 및 데이터
This is the new circuit. 병렬 포트를 사용하여 데이터를 보내면 래치 사용은 최상위 비트 (핀 9)를 수신합니다. 두 번째 래치에서 래치 인 에이블 또한 수신되지만 무효화됩니다. 즉, 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