Holgi's LCD-Display am COM-Port

Schaltplan
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. 

E-Mail

Zur Startseite