hallo, wir machen in der uni einen versuch "mechatronische systeme" und sollen folgendes machen: ein schrittmotor soll angesteuert werden,die bedienung soll über eine serielle tastatur erfolgen, die beteibsart soll über ein alphanumerisches lcddisplay angezeigt werden. habe schon eine grobe lösung. aber kann jemand weiter helfen? danke
also nach dem restart soll folgendes zu sehen sein: der cursor blinkt links oben und es soll folgendes zu sehen sein: goto=--- ziel=00 step durch lesen des kommadoregisters kann das busy-flag und die aktuelle zeichenplatzadresse überprüftwerden. YxxxxxxB durch beschreiben des daten registers mit einem ascii zeichen wird dies auf der aktuellen zeichenplatzadresse gespeichert und das zeichen auf dem zugeordneten platz gestellt. wie bekomme ich solch eine displayanzeige hin?
>wie bekomme ich solch eine displayanzeige hin?
Man suche sich das Datenblatt eines LC-Display's und schaue nach, was
so ein Display bzw. dessen Controller als Steuersignale erwartet.
Dann wähle man einen Mikrocontroller, und realsiere einen Algorithmus,
der diese Funktion implementiert.
Ich hab zwar nicht (lange) an der Uni studiert, aber deine
Fragestellung ist etwas sehr abstrakt...Satzzeichen würden helfen...
Vielleicht mal so: Was sollst du machen?
die aufgabenstellung ist nicht abstrakt, denn genau so steht es fast auf dem blatt...habe auch nicht behauptet, dass es einfach ist. deswegen frage ich ja nach und naja gut. kann mir jemand helfen? vielleicht hat ja jemand schon mal was mit einem schrittmotor programmiert oder dergleichen...
In deinem ersten Post schreibst du was von Schrittmotor, im deinem zweiten dann was von LCDisplay. Schrittmotorsteuerungen zu programmieren ist recht simpel (aus "Pippifax" genannt). Für die Lösung deiner Aufgabe fehlen ein paar Randbedingungen (Controller, Programmiersprache, LCD-Controller etc.) Hast du schon mal überlegt, die Aufgabe in Teilaufgaben zu teilen? Einerseits hast du die Motorsteuerung, andererseits die HID (Tastatur und LCD). Was willst du zuerst realsieren? In der Aufgabe sind doch schon die drei Teilaufgaben aufgeführt: Eingabe über die serielle Tastatur, Anzeige auf dem LCD und die Motorsteuerung. Hangel dich einfach von einer Aufgabe zur nächsten. [Kritik] Hier sind ne Menge Leute bereit, dir zu helfen, allerdings wird dir niemand die Lösung auf einem silbernen Tablett servieren. Dafür sind hier überwiegend technisch-interessierte Leute unterwegs, und keine Sozialpädagogen...Jammern hilft also nicht. Hier gibt es Hilfe zur Selbsthilfe, und wenn du an einer Uni studierst, erwartet man von dir, dass du dich in Probleme und deren Lösung einarbeitest. Zumindest wurde mir eine entsprechende Vorgehensweise an der FH beigebracht. [/Kritik]
ja du hast ja recht! sorry.... nur manchmal verliert man etwas die geduld und die nerven..also sorry.. ich kann ja mal den code hier posten und du schaust in dir mal an?? hoffe es ist nicht zu lang: ;********************************************************* ;Benjamin Moenius & Nadine Huebner************************ ;********************************************************* ; CMD equ 3000H ;Kommando-Register DAT equ 3001H ;Daten-Register GOTOH equ 30H GOTOZ equ 31H GOTOE equ 32H ZIELH equ 33H ZIELZ equ 34H ZIELE equ 35H STEPH equ 36H STEPZ equ 37H STEPE equ 38H org 0 ;Reset LJMP Haupt ;nach Reset org 23H ;SINT LJMP EMP ;weiter Interuptprogramm org 100H ;Hauptprogramm Haupt: MOV TMOD,#00100000B ;Timer 1 im Reload Mode MOV TH1,#(-26) ;Nachladewert MOV TL1,#(-26) ;Startwert SETB TR1 ;Timer1 starten MOV SCON,#01010000B ;Serielle Schnittstelle, 8bit UART MOV IE,#10010000B ;Generelle + Serielle Interuptfreigabe ; ACALL INIT_DISPLAY_MODS ACALL DISPLAY_INITIAL ACALL DISPLAY_RESTART SJMP $ ;Verweihlschleife am Ende EMP: MOV A,SBUF ;Zeichen aus SBUF holen CLR RI ;Empfangsflag loeschen CLR P1.7 ;Taste liefert beim Druck 0 an P1.7 JB P,SPEI ;Paritaet richtig, wenn P=1 RETI SPEI: MOV R1,A ;Zeichen ins Register schreiben ; CJNE R1,#'i',LABEL_1 ; ACALL RETI ;Ruecksprung DISPLAY_INITIAL: MOV DPTR,#3000H ;Displayinitialisierung MOV A, #30H ;8-Bit_Modus_initialisierung ohne Busy-Flag abfrage movx @DPTR, A ;Indirekte Adressierung des externen Datenspeichers LCALL WARTE_5MS ;5ms warten (Unterprogramm) MOV A, #30H movx @DPTR, A ACALL WARTE_5MS MOV A, #30H movx @DPTR, A ACALL WARTE_5MS ACALL MARK MOV A, #38H ;4-Zeilen Darstellung movx @DPTR, A ACALL MARK mov A, #01H ;Display loeschen und Zeichenplatz 0 einstellen movx @DPTR, A ACALL MARK mov A, #06H ;Autoinkrement, aktueller Zeichenplatz um 1 erhöht movx @DPTR, A ACALL MARK mov A, #0FH ;Display aktiv und Cursor blinkt auf dem aktuellem Zeichenplatz movx @DPTR, A ; Ende Display-Initialisierung ACALL WARTE_5MS ret SET_ADDR: ; Zeichenplatzadresse aktualisieren ACALL MARK mov DPTR, #CMD setb 0E7H movx @DPTR, A ret WARTE_5MS: mov R2, #05H ZEIT: mov R3, #250 DJNZ R3, $ DJNZ R2, ZEIT RET MARK: push ACC push DPL push DPH MOV DPTR, #3000H WAIT_LCD: MOVX A, @DPTR JB ACC.7, WAIT_LCD POP DPH POP DPL pop ACC ret ;BUSY-Flag-Abfrage BUSY: PUSH ACC ;Akku sichern PUSH DPL ;Low-Byte des Datenpointers sichern PUSH DPH ;High-Byte des Datenpointers sichern MOV DPTR,#CMD ;Datenpointer zeigt auf Kommandoregister MARK_1: MOVX A,@DPTR ;CMD in Akku JB ACC.7,MARK_1 ;Warten, wenn BUSY-Flag gesetzt POP DPH ;Datenpointer wiederherstellen POP DPL POP ACC ;Akku wiederherstellen RET INIT_DISPLAY_MODS: mov GOTOH, #'-' mov GOTOZ, #'-' mov GOTOE, #'-' mov ZIELH, #'0' mov ZIELZ, #'0' mov ZIELE, #'0' ;Prüfe falls Motor auf Null mov STEPH, #'S' mov STEPZ, #'Y' mov STEPE, #'N' ret DISPLAY_RESTART: CALL BUSY ;Zeichenplatzadresse:1.Zeile 1.Platz MOV DPTR,#DAT MOV A,#'G' MOVX @DPTR,A CALL BUSY MOV A,#'O' MOVX @DPTR,A CALL BUSY MOV A,#'T' MOVX @DPTR,A CALL BUSY MOV A,#'O' MOVX @DPTR,A CALL BUSY MOV A,#'=' MOVX @DPTR,A CALL BUSY MOV A,#' ' MOVX @DPTR,A CALL BUSY MOV A,#'-' MOVX @DPTR,A CALL BUSY MOV A,#'-' MOVX @DPTR,A CALL BUSY MOV A,#'-' MOVX @DPTR,A MOV DPTR,#CMD ;Zeichenplatzadresse:2.Zeile 1.Platz CALL BUSY MOV A,#0C0H MOVX @DPTR,A CALL BUSY MOV DPTR,#DAT MOV A,#'Z' MOVX @DPTR,A CALL BUSY MOV A,#'I' MOVX @DPTR,A CALL BUSY MOV A,#'E' MOVX @DPTR,A CALL BUSY MOV A,#'L' MOVX @DPTR,A CALL BUSY MOV A,#'=' MOVX @DPTR,A CALL BUSY MOV A,#' ' MOVX @DPTR,A CALL BUSY MOV A,#'0' MOVX @DPTR,A CALL BUSY MOV A,#'0' MOVX @DPTR,A CALL BUSY MOV A,#'0' MOVX @DPTR,A MOV DPTR,#CMD ;Zeichenplatzadresse:3.Zeile 1.Platz CALL BUSY MOV A,#94H MOVX @DPTR,A CALL BUSY MOV DPTR,#DAT MOV A,#'S' MOVX @DPTR,A CALL BUSY MOV A,#'T' MOVX @DPTR,A CALL BUSY MOV A,#'E' MOVX @DPTR,A CALL BUSY MOV A,#'P' MOVX @DPTR,A CALL BUSY MOV A,#'=' MOVX @DPTR,A CALL BUSY MOV A,#' ' MOVX @DPTR,A CALL BUSY MOV A,#'S' MOVX @DPTR,A CALL BUSY MOV A,#'Y' MOVX @DPTR,A CALL BUSY MOV A,#'N' MOVX @DPTR,A RET end ;Ende der Assemblierung
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.