Terni Silvesterbummler Beitrag melden Geschrieben 13. Januar 2004 Ich brauche dringend Hilfe zu einer Aufgabenstellung: Tastenauswertung mit Anzeige am LCD: Je nach gedrückter Taste ist deren Code auszuwerten und am LCD anzuzeigen. "Code xx (binär) entspricht Taste yy (dezimal)". Wer kann mir dabei helfen? 0 Zitieren Diesen Beitrag teilen Link zum Beitrag Auf anderen Seiten teilen More sharing options...
Terni Silvesterbummler Beitrag melden Geschrieben 14. Januar 2004 hinzufügen möchte ich noch: Es soll verwendet werden: µC: SAB 80C517A Programm: Keil µVision µC-Board mit 12 Tasten (von 0-11) - diese sollen ausgewertet werden 0 Zitieren Diesen Beitrag teilen Link zum Beitrag Auf anderen Seiten teilen More sharing options...
Funkmaster romazone.org Beitrag melden Geschrieben 15. Januar 2004 hab dein problem wie versprochen in die tu graz newsgroup gepostet - hier die erste antwort: Ein wenig schwierig, wenn man nicht genau weiß, wie das Board aufge-baut ist. Ich denke mal, es handelt sich vielleicht um eine 4x3-Matrix-Tastatur. Wenn dem so ist, kann man über einen Port bzw. über einen externen Adressdekoder eine der Steuerleitungen auf 1 setzen und die anderen auf 0 belassen. Danach kann man die Leseleitungen abfragen und somit herausfinden, welche Taste gedrückt wurde. Z.B. Steuerleitungen => '0100' Leseleitungen <= '100' würde bedeuten, 1. Taste in der zweiten Reihe gedrückt. Verwendet man für Steuer- und Leseleitungen je ein Nibble hätte man z.B. den Binär- wert 0100 0100 = 44h für diese Taste. Der dezimale Wert wäre je nach Zählweise (von oben, von unten, wie beim Taschenrechner) 4 oder 7 oder so. S >-----+-----+-----+ T | | | E | | | U >-----+-----+-----+ E | | | R | | | L >-----+-----+-----+ E | | | I | | | T >-----+-----+-----+ U | | | N | | | G v v v LESELEITUNGEN 0 Zitieren Diesen Beitrag teilen Link zum Beitrag Auf anderen Seiten teilen More sharing options...
Muuu Lettland Tour 2003 Beitrag melden Geschrieben 15. Januar 2004 Musst du genau diesen µC verwenden ? Oder geht ein PIC von Microchip auch ? 0 Zitieren Diesen Beitrag teilen Link zum Beitrag Auf anderen Seiten teilen More sharing options...
Terni Silvesterbummler Beitrag melden Geschrieben 15. Januar 2004 Musst du genau diesen µC verwenden ? Oder geht ein PIC von Microchip auch ? ja, ich muss den Infineon SAB 80C517A verwenden! zur Ergänzung: Das µC-Board, auf dem gearbeitet wird, sieht so aus: 0 Zitieren Diesen Beitrag teilen Link zum Beitrag Auf anderen Seiten teilen More sharing options...
Terni Silvesterbummler Beitrag melden Geschrieben 15. Januar 2004 unten in der Mitte findet man die Tasten (3x4 - Matrix), die wie folgt angeordnet sind: 0 Zitieren Diesen Beitrag teilen Link zum Beitrag Auf anderen Seiten teilen More sharing options...
Funkmaster romazone.org Beitrag melden Geschrieben 16. Januar 2004 hab die neuen infos wieder gepostet - werde mich melden wenns lösungsvorschläge gibt! 0 Zitieren Diesen Beitrag teilen Link zum Beitrag Auf anderen Seiten teilen More sharing options...
Terni Silvesterbummler Beitrag melden Geschrieben 27. Januar 2004 hab die neuen infos wieder gepostet - werde mich melden wenns lösungsvorschläge gibt! gibts was neues? P.S.: Die Initialisierung für das Hitachi-Display ist schon erledigt. ;***************************LCD.ASM*************************************** ;***************Hitachi - LCD - Display : Unterprogramme****************** ;------------------------------------------------------------------------- $NOMOD51 $INCLUDE(REG517A.INC) ; LCD-Controller: HD 44780; Ansteuerung über P5.1 ...P5.7 ; 2 Zeilen, 4 Bit-Ansteuerung ; P5.1 = RS P5.2 = R/W P5.3 = E P5.4 .. P5.7 = DB4 .. DB7 ; temporär benötigte Register während der Abarbeitung : R1,R2,R4,R5,R6 ; permanent benötigte Register für Variablenübergabe in Oneascout und DATAtoLCD: ; in R4 steht die Position (Adresse), ; in R5 das ASCII - Zeichen ; Permanent benötigter Datenbereich: DATA : 7Eh,7Fh für DPTR PUBLIC LCD_init,datatolcd,oneascout,lcd_write_reg,lcd_busy,lcd_enable,lcd_clr_home lcd_port equ 0f8h ;Port 5 LCDINITIAL segment code ; verschiebbares Code - Segment RSEG LCDINITIAL ;*************************************************************************** ; Unterprogramm LCD_INIT ; Voraussetzungen: keine Bedarf: R1,R4,R6 lcd_init: mov r1,#0ffh ;Verzoegerungsschleife f?r 15ms, mov r6,#30d ;Die Verz"gerungsschleifen sind f?r 12MHz Systemtakt ausgelegt! loop: djnz r1,loop djnz r6,loop mov lcd_port,#00110000b ;Function set, 8 Bit-Init. A5=A4=1 call lcd_enable ;macht setb en clrb en mov r6,#9d ;Verz"gerungsschleife 4,1ms loop2: djnz r1,loop2 djnz r6,loop2 call lcd_enable ;noch einmal mov r1,#100d ;Verz"gerungsschleife 100us loop3: djnz r1,loop3 call lcd_enable mov lcd_port,#00100000b ;Interfacelaenge = 4Bit, Function set call lcd_enable ; DL = 0, D3 bis D0 = egal call lcd_busy mov r4,#00101000b ;jetzt endlich 4Bit:progr. 2 Zeilen, 5*7 call lcd_write_reg ;unteres und dann oberes Nibble senden mov r4,#00001000b ;Display off call lcd_write_reg mov r4,#00001100b ;Display on call lcd_write_reg mov r4,#00000110b ;entry mode : Bewegungsrichtung Cursor rechts call lcd_write_reg call lcd_clr_home ;clear display call lcd_home ret ;*************weitere Unterprogramme*********************************************** lcd_home: mov r4,#2d ;Cursor Home (00H,DD RAM Adr. bleibt!) jmp lcd_write_reg lcd_clr_home: mov r4,#1d ;Clear Home jmp lcd_write_reg ;************************LCD_ENABLE*************************************************************** ; Voraussetzungen: keine Bedarf: keiner lcd_enable: setb lcd_port.3 ;Enable 1 setzen clr lcd_port.3 ;Enable 0 setzen ret ;************************LCD.BUSY****************************************************** ; Voraussetzungen: keine Bedarf: keiner ;Busyflag prüfen und gegebenenfalls warten lcd_busy: mov lcd_port,#11110100b ;Port auf Eingabe schalten, R/W = 1 lcd_busy_en: setb lcd_port.3 ;Enable auf 1 jb lcd_port.7,noch_busy ;noch busy ?, busy bit = P5.7 clr lcd_port.3 ;Enable auf 0 call lcd_enable ;Dummyread f?r die unteren 4Bits ret noch_busy: clr lcd_port.3 ;Enable auf 0 call lcd_enable ;Dummyread f?r die unteren 4Bits jmp lcd_busy_en ;************************Unterprogramm Lcd_Write_reg********************** ;Voraussetzungen: R4 mit LCD - Adresse Bedarf: R4 ;Adresse in R4 am LCD-Modul einstellen lcd_write_reg: call lcd_busy mov a,#11110000b ;das obere Nibble ausmaskieren anl a,r4 mov lcd_port,a call lcd_enable ;und ausgeben mov a,#00001111b ;das untere Nibble ausmaskieren anl a,r4 swap a ;Nibbles tauschen mov lcd_port,a call lcd_enable ;und ausgeben ret ;*****************************ONEASCOUT************************************* ; Voraussetzungen: R4,R5 mit Werten Bedarf: R4,R5 ;schreibt ein ASCII -Zeichen (in R5) auf Adresse (in R4) des LCD raus Oneascout: push acc push PSW call lcd_write_reg ; call lcd_busy mov a, r5 ;oberes Nibble senden anl a, #11110000b mov lcd_port,a setb lcd_port.1 ;RS = 1 call lcd_enable ;und ausgeben mov a, r5 ;unteres Nibble senden swap a anl a,#11110000b ; mov lcd_port,a setb lcd_port.1 ;RS = 1 call lcd_enable ;und ausgeben pop PSW pop acc ret ; ;**********************DATAtoLCD************************************************ ; Voraussetzungen: DPTR mit Adresse des Strings ; Bedarf: R2,R4,R5 DATA: 7E, 7F als Zwischenspeicher für DPTR ; Schreibt Datenstring (2mal 20 Zeichen max. zweizeiliges Display ) aus ROM ; zeichenweise nach R5, die Adresse nach R4 und ueber ONEASCOUT aufs Display ; Abbruchbedingung ist '0' nach String ; String darf nicht länger als 40 Zeichen sein. 2.Zeile = 21. Zeichen,vorher Blanks! DATAtoLCD: push acc push PSW Mov R2, #00H ; Zeichenzaehler mov 7Eh,dpl ; DPTR sichern mov 7Fh,dph output: mov dpl,7Eh ; DPTR für auszugebenden Text mov dpH,7Fh mov a,R2 movc a,@a+DPTR ; ASCII - Zeichen in den Acc jnz naechster; pop PSW pop acc Ret ; Ausgabe beendet naechster: mov r5, a ; ASCII - Zeichen nach R5 mov dptr,#zeichenadr ; Zeichenadresse mov a,R2 ; und nach R4 movc a,@a+dptr inc R2 mov r4,a call oneascout jmp output ;****************************************************************************** Zeichenadr: ;Position(Adresse) d. Zeichen (zweizeilig, 2*20 Zeichein)immer gleich db 80H,81h,82h,83h,84h,85h,86h,87h,88h,89h,8ah,8bh,8ch,8dh,8eh,8fh db 90H,91h,92h,93h db 0c0h,0c1h,0C2H,0C3H,0C4H,0C5H,0C6H,0C7H,0C8H,0C9H,0cah,0cbh,0cch,0cdh,0ceh,0cfh db 0d0h,0d1h,0d2H,0d3H ;****************************************************************************** end Bräuchte eigentlich nur mehr die Assembler-Routine für die Aufgabenstellung (1. Post) 0 Zitieren Diesen Beitrag teilen Link zum Beitrag Auf anderen Seiten teilen More sharing options...
Gast Südspaten Bonobo (merda) Beitrag melden Geschrieben 27. Januar 2004 Um was handelt es sich bei diesen wirren Schriften? 0 Zitieren Diesen Beitrag teilen Link zum Beitrag Auf anderen Seiten teilen More sharing options...
Terni Silvesterbummler Beitrag melden Geschrieben 27. Januar 2004 Um was handelt es sich bei diesen wirren Schriften? Initialisierung eines Hitachi-LCD-Displays in Assembler. 0 Zitieren Diesen Beitrag teilen Link zum Beitrag Auf anderen Seiten teilen More sharing options...
Terni Silvesterbummler Beitrag melden Geschrieben 28. Januar 2004 brauche schnell mal das Blockschaltbild online..... 0 Zitieren Diesen Beitrag teilen Link zum Beitrag Auf anderen Seiten teilen More sharing options...
Terni Silvesterbummler Beitrag melden Geschrieben 28. Januar 2004 und nocheins: 0 Zitieren Diesen Beitrag teilen Link zum Beitrag Auf anderen Seiten teilen More sharing options...
Terni Silvesterbummler Beitrag melden Geschrieben 28. Januar 2004 die tasten: 0 Zitieren Diesen Beitrag teilen Link zum Beitrag Auf anderen Seiten teilen More sharing options...
Terni Silvesterbummler Beitrag melden Geschrieben 28. Januar 2004 Hier das Datenblatt für den TAstaturdekoder 74C923, der auf der Platine verbaut ist. MM74C923.pdf 0 Zitieren Diesen Beitrag teilen Link zum Beitrag Auf anderen Seiten teilen More sharing options...
chrisz21 1 X 2 Beitrag melden Geschrieben 28. Januar 2004 sag mal was studierst du den für ne arge sache? 0 Zitieren Diesen Beitrag teilen Link zum Beitrag Auf anderen Seiten teilen More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.