Schlüssel Scannen für 89c52

G

garg29

Guest
Hallo Freunde, ich habe eine Einheit, in der im Mess-Temp mit DS1820 mit 89c52and dispklaying das Ergebnis auf dem LCD (16 X 2) ausgelegt. Das Gerät verfügt über eine Menü-Taste für die Einstellung max Temp.-Wert. Es verfügt über zwei zusätzliche Tasten (Plus und Minus) zur Einstellung der Werte. Wenn die Temperatur geht über diesen Wert ein Relais aktiviert ist. Nun mein Problem ist, wenn irgendwann drückt der Benutzer das Menü-Taste, um die Temperatur eingestellt. Mikrocontroller doesnt erkennen Sie die Taste drücken Ursache ist es mit Lesen beschäftigt DS1820, die einige kleine Verzögerung Routinen auch durch DS1820 erforderlichen Angaben enthält. Wie kann ich die Schlüssel Scannen dh. Wie kann ich das System oder Mikrocontroller zu einer ihrer wichtigsten sobald es pressed.it nicht verpassen sollten Sie die Taste Scannen zu reagieren. open_menu: ----- Codierung für plus minus Schlüssel ------ ----- ----- ret-Schleife: jnb menu_key, open_menu write_ds1820: ---- ----- ---- - auch Verzögerung Routinen read_ds1820: ----- ----- ---- auch Verzögerung Routinen display_lcd: ---- --- - ajmp Schleife das ist der Code-Sequenz please help me out für die ordnungsgemäße Methode der Schlüssel Scannen. mit freundlichen Grüßen amit
 
Lesen DS1820 sollte nicht länger als ein paar Millisekunden. Keyscanning kann sehr viel langsamer. Die Aufgaben, die Sie beschrieben haben, sollte kein Problem sein für die Tastatur scannen. Sie können auch bei 100ms Intervall scannen und noch derzeit keine wahrnehmbar Verzögerung in der Reaktion zu sehen.
 
Hallo .. wenn Sie niedrigen Crystal für 89C52 verwenden und eine langsame und lange Verzögerung für 18S20 dann könnte es für keyscan langsam .. und es ist auch möglich, Interrupt für keymatrix nutzen .. Aber für Ihren Code, den ich denke, es sollte kein Problem sein. Versuchen Sie, überprüfen Sie Ihre Verzögerungscode ersten oder Sie könnten auch versuchen, put "jnb menu_key, open_menu" an jedem Ende Routinen
 
Knöpfe, Tasten oder Tastaturen sollten in den meisten Fällen aktiviert einen Interrupt aus. Dies sollte mit den anderen Aufgaben beiseite legen für eine Weile, lesen Sie eine Taste oder eine Schaltfläche, setzen einige Fahnen oder Bytes, über die in der Hauptschleife gehandelt werden, und gehen Sie dorthin zurück, wo Sie aufgehört haben, und weiter .. Sie werden nicht zu verlieren nichts ..
 
Dank für die Beantwortung Freunde ", IanP", wie u, sagte der Schlüssel sollte ein Interrupt erzeugt, kann aber u mir bitte sagen, wie zu unterbrechen für eine ganze Tastatur erzeugen ... denn 8051 hat zwei externe Interrupt wir nur zwei Tasten am unterbrechen können .. .. bitte mein Problem lösen ..
 
Das hängt von der cofiguation Ihrer Schaltung. Wenn es mit Tastatur-Konfiguration der Tastatur ist, können Sie beschäftigen richtigen Schlüssel-pad-Decoder IC, wie MM74C922/923, und diese IC haben "data available" Linie, die die uP unterbrechen angeschlossen werden kann. Wenn Sie mehrere Tasten gleichzeitig Verbindungen zu mehreren uP Pins können Sie erkennen und Funktion von connectig Dioden oder Multi-Input UND (NAND) Toren. Es gibt immer eine Lösung .. Regards, IanP
 
Ich benutze Tastaturen in einer Vielzahl von Projekten und haben fast nie unterbrochen werden. Sie erfordern zusätzliche Hardware und weitere Software. Da keyscanning keine hohen Geschwindigkeiten, können Sie sie alle 50ms oder so. Die 50ms ankreuzen kann durch den System-Timer neben ihrem anderen timed Aufgaben erzeugt werden. Hier ist was Sie tun.
Code:
 main () {Initialisierungen (); while (1) {if (key_data = 0) {do der Schlüssel Parsen Aufgabe;} lesen DS1820 update LCD}} //----------- - Interrupt-Routine von Timer 0 TIMER_INT Interrupt 1 {/ / vorkommenden alle 50ms Reload-Timer, tun andere Dinge zeitlich lesen Tasten und eingestellt key_data auf einen anderen Wert als Null}
 

Welcome to EDABoard.com

Sponsor

Back
Top