Stap 6: USB gebaseerde LCD
Toe te voegen USB naar een LCD-scherm is gemakkelijk. Matrix Orbital hebben een bereik van USB gebaseerd displays al, die ook gebruik maken van FTDI chips. Hunne gebruikt de FT232 USB-<> - seriële chip. We zullen gebruiken hetzelfde circuit bovenstaande, met een HD44780 gebaseerde LCD aangesloten, en de code gewijzigd zodat u opdrachten of gegevens naar het display verzenden kunt. Dit voorbeeld zal niet zo veel functies hebben als de Matrix Orbital bereik (als ik niet wil uit smart-hey ze gaf me gratis monsters immers!), maar zal het bruikbaar op RS232 of USB. Mijn voorbeeld gebruikt de FT245 USB-<> = parallelle chip.< circuit hier >
Deze code is nog niet compleet. De definitieve versie zal toestaan u om te kiezen tussen RS232 of USB, ondersteunen verschillende commando's, enz. Deze code is een eenvoudig voorbeeld dat laat zien dat het idee werkt.
' {$STAMP BS2}
' *** VERKLAREN VARIABELEN ***
' CONSTANTEN
EnableLCD CON 8' LCD inschakelen pin (1 = ingeschakeld)
RW CON 9
RS CON 10' Register Select (1 = char)
readUSB CON 11 ' P11 = /RD op de USB-module
ClrLCD CON $01 ' schakelt het LCD-scherm
CrsrHm CON $02 ' cursor naar uitgangspositie
CrsrLf CON $10 ' naar links van de cursor verplaatsen
CrsrRt CON $14 ' cursor naar rechts bewegen
DispLf CON $18 ' shift weergegeven tekens links
DispRt CON $ 1 c ' shift weergegeven tekens rechts
DDRam CON $80 ' Display Data RAM controle
CGRam CON $40 ' aangepaste karakter RAM
Line1 CON $80 ' DDRAM adres van lijn 1
Line2 CON $C0 ' DDRAM adres van metrolijn 2
' Variabelen
char VAR Byte ' teken naar de LCD gestuurd
' *** MAIN PROGRAMMA ***
HOGE readUSB
LAGE RW
HOGE RS
LAGE EnableLCD
Initialize_LCD:
DIRS = % 0001111111111111
LCD_Init:
PAUZE 500' laat de LCD settle
char = 56' modus met meerdere regels
GOSUB LCD_Command
PAUZE 5
PULSOUT EnableLCD, 1
PULSOUT EnableLCD, 1
char = 12' disp op, crsr af, blink uit
GOSUB LCD_Command
char = 6' inc crsr, geen disp-verschuiving
GOSUB LCD_Command
char = ClrLCD
GOSUB LCD_Command
ReadFIFO: ' nu luisteren naar USB
IF IN14 = 0 dan GetUSBdata ' als /RXF laag is, de gegevens zijn beschikbaar
goto ReadFIFO
GetUSBdata:
DIRS = % 0001111100000000
LAGE readUSB
char = l
HOGE readUSB
DIRS = % 0001111111111111
GOSUB LCD_Write
GOTO ReadFIFO
LCD_Command:
LOW RS Voer opdrachtmodus
LCD_Write:
OUTL char =
PULSOUT EnableLCD, 1' strobe de regel inschakelen
HOGE RS terugkeer naar tekenmodus (zo niet al in tekenmodus
KEREN