Месяц назад я спросил this о мультиплексировании строки чисел с 4 7-сегментными дисплеями. Но теперь я пытаюсь обновить код, чтобы мультиплексировать строку букв, используя 7 7-сегментных дисплеев в python.Мультиплексный адрес и данные для отображения строки букв над параллельным портом
This is the new circuit. Когда я отправляю данные с использованием параллельного порта, Latch Enable получает самый старший бит (контакт 9). Во второй защелке Latch Enable принимает его также, но отрицается, это является причиной 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