Hallo, ich möchte mit dem Codevision C Compiler ein kleines Programm schreiben, welches mehrere ADCs und ein LCD verwenden soll. Dazu möchte ich die lcd.h benuten. Diese lcd.h benötigt allerdings einen 8 Bit Port. Allerdings fällt mir kleine Lösung ein, welchen ich da nehmen soll. PortB (PB8 und PB7) ist durch das Quarz belegt und PortC ist durch die ADCs belegt. Mache ich da einen Denkfehler, oder geht das wirklich nicht so einfach?
Du musst ja kein 8Bit Port verwenden. Wuerde ich sogar im leben nicht machen, eben deshalb weil du dann unnuetz Beine verschwendest. Die Controller kennen auch einen 4Bit Mode. Allerdings brauchst du noch wenigstens zwei Steuerleitungen, unter 6Pins wirst du es nicht schaffen. Ich verwende daher gerne eine andere Loesung. Bau dir eine kleine Platine mit einem Display und einem PCF8574. Das ist ein I2C nach Parallel Wandler. Daran verwendest du dann das Display im 4Bit Mode. Dir bleiben dann immer noch zwei Bits die du entweder fuer zwei Taster oder zum einschalten der Displaybeleuchtung verwenden kannst. Sowas habe ich immer rumliegen und kann es ganz nach Bedarf an jedem meiner Controller anstecken. Selbst wenn die fertige Schaltung spaeter kein LCD braucht, es ist fuer die Fehlersuche immer ganz praktisch wenn man zwischendurch mal was ausgeben kann. Und wenn ich mal nur sehr geringe Ansprueche habe dann stecke ich an denselben Port einfach ein DSM-822 von Pollin dran und stelle den Source kurz um. Olaf
Siehe Beitrag von Peter Dannegger in der Codesammlung für eine Temperaturmessung mit DS.... Er verwendet ein Schieberegister 74HC164 und braucht dann nur 3 Ports beim AVR. Ich habe es auch mit dem 74HC589 hinbekommen. Der PCF8574 wäre mir zu teuer... Gruß
Danke für eure Antworten. Es ging mir halt darum, möglichst einfach in die C Programmierung mit dem AVR einzusteigen und daher wollte ich zuerst den fertigen lcd.h benutzen. Später möchte ich was mit I²C machen, aber für den Einstieg wollte ich alles möglichst übersichtlich halten. Der Link von crazy horse scheint genau die Lösung zu sein. Ich werde das mal versuchen.
sehe gerade, dass die Dateien gar nicht dabei waren - hat wohl gar keinen interressiert :-)
und die headerdatei. die .h Datei ins inc-Verzeichnis, die .lib-Datei ins lib-Verzeichnis. im Programm dann #include <lcd_split.h>
Ich habs auch mal mit einem seriellen Schieberegister gemacht, weiss garnicht mehr genau welches. Geht natuerlich auch. Wichtig ist nur das man sich eine Funktion write_byte() schreibt auf die dann alle anderen Libaryfunktionen aufsetzen. Wenn du dann naemlich ein Schieberegister nimmst ruft die deine Funktion fuers Schiebereigster auf, wenn du das Dingen direkt angeschlossen hast dann gibt es die Daten eben nur so aus. Haengt es an einen Mega8 wird das eingebaute I2C benutzt und soll es auf einem 90S2313 laufen dann wird I2C in Software implementiert. So kann man seine Arbeit immer weiterverwenden weil du immer nur eine Funktion aendern musst. Olaf
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.