|
Holgi's LCD-Display am
COM-Port
Die Schaltung entstand weil ich nur mal ein bißchen mit dem USART
vom PIC16F628 rumspielen wollte. Der wird wohl zu meinem Lieblings-PIC
werden. Er kann einiges mehr als ein PIC16F84.
-
2k Programmspeicher
-
224Bytes RAM
-
128 Bytes EEPROM
-
2x8 Bit Timer/Counter
-
1x16 Bit Timer/Counter der auch einen eigenen externen Oscillator benutzen
kann z.B. 32,768kHz für eine Uhr
-
16 Bit Capture, Compare
-
PWM
-
zwei analoge Komparatoren
-
MCLR kann als IO-Pin RA5 verwendet werden, also ein IO-Pin mehr als
der 16F84
-
synchroner oder asynchroner USART mit Full-Duplex. 3 Byte FIFO bei Receive,
2 Byte bei Transmit
-
interner RC-Oscillator der im Programm zwecks Energieeinsparung von
4MHz auf 37kHz umgeschaltet werden kann
Und das alles im 18 Pin Gehäuse ! So genug Werbung gemacht. Jetzt
gehts zur Schaltung :)
Sie zeigt zum einen natürlich erstmal Texte an. Was denn sonst
noch ? Balkenanzeigen z.B. ! Zusätzlich habe ich so gut wie alle Steuerbefehle
integriert:
-
Cursor an Position Zeile, Spalte setzen
-
Cursor an, aus, blinkend
-
Display löschen
-
Display aus
-
Display links, rechts verschieben (natürlich die Buchstaben, nicht
das Display ;)
-
Selbst definierte Zeichen in das Character RAM übertragen und anzeigen
-
Umlaute ä,ö,ü,ß,Ä,Ö,Ü werden auf
den Zeichensatz des Displays übersetzt
-
9600 Baud, 8 Bit, 1 Stopbit, keine Parität (noch nicht veränderbar)
-
Displays mit 1, 2, 4 Zeilen sind möglich. 4x24 und 4x40 glaube
ich nicht !
Die Schaltung kann in den meisten Fällen aus den Leitungen DTR
und RTS versorgt werden und braucht keine externe Stromversorgung. Bei
einigen meiner Displays auch nur aus DTR, das bei Terminalprogrammen häufig
automatisch gesetzt wird. Wenn die serielle Schnittstelle nicht genug Strom
liefert oder wenn eine Hintergrundbeleuchtung benutzt werden soll muß
die Schaltung extern mit 5V versorgt werden. Wenn DTR oder RTS nicht vorhanden
sind, z.B. bei einfachen Microcontroller Schaltungen, kann man einfach
12V auf DTR (Pin4 Sub-D Buchse) legen. Oder 5V wenn D4, R1 gebrückt
und ZD1, R3, D5 weggelassen werden.
Das Übertragungsprotokoll ist ASCII. Kein Hard/Softwarehandshake.
Zeichen wie CR oder LF werden ignoriert ! Die TXD Leitung vom PIC wird
nur zum zurücksenden eines ID Codes "LCD1"+CR+LF benutzt um nachsehen
zu können ob der PIC anwesend ist. Bei reinem Empfangsbetrieb und
externer Stromversorgung reicht eine Zweidrahtverbindung. Der Absender
kann Steuerbefehle und Textdaten ohne zu warten an den PIC senden. Der
USART und der 3 Byte FIFO sorgen dafür das der PIC im Hintergrund
fast ohne Prozessorbelastung empfängt und genügend Zeit hat ins
Display zu schreiben. Mit einem PIC16F84 wäre das nicht möglich.
Zusätzlich zum FIFO wird noch ein 16 Byte Ringpuffer beim Empfang
benutzt. Er wird per Interrupt gefüllt.
Zu den Steuerbefehlen bitte Readme.txt im ZIP-Archiv lesen.
Quellcodes, Brenndatei, Schaltplan und Board
für Eagle 3.5
Einige werden sich über die seltsame Verschaltung und die Widerstände
am PIC wundern. Die RXD und TXD Leitungen müssen bei Verwendung des
USART's invertiert werden. Dazu habe ich die beiden Komparatoren im PIC
benutzt. R5 ist ein Pullup für RA4. RA4 ist nur ein OpenDrain Ausgang.
Für die direkte Ankopplung an einen Microcontroller (ohne MAX232
dazwischen) alle Pins an PortA nicht beschalten. RB1 (RXD) an TXD des Controllers
anschließen. RB2 (TXD) wenn erwünscht an RXD des Controllers.
R2, ZD2 ganz weglassen.
Ich entwerfe keine Schaltungen oder Programme für
andere. Dazu fehlt mir einfach die Zeit. Bei mir sind keine Bausätze,
Platinen oder programmierte Chips zu den Schaltungen erhältlich.
|
|