Monitor 15 contacts with one PIC input

Several previously published Design Ideas and appnotes [1-4] show how to use many pushbuttons with a minimum number of inputs. They require an RC circuit where the timing can be measured to identify which pushbutton has been pressed, or an ADC input, with resistors forming a divider for each pushbutton pressed.

The following Design Idea shows another simple way to use up to 15 pushbuttons with only one I/O. The microcontroller chosen must contain an internal comparator with selectable values for the internal voltage reference VREF. The majority of 8-bit PIC microcontrollers in the mid-range family feature one or two internal comparators with just this.

Monitor 15 contacts with one PIC input

As a simple and practical example, the circuit in Figure 1 uses an 8-bit PIC controlling a 4-bit LED display to show which button has been pressed. A comparator interrupt routine reacts immediately to any pushbutton pressed. The routine cycles through VREF values until the comparator output COUT returns high, which will indicate the pushbutton pressed.

The fully commented assembler source code takes less than 100 words. It is not overly optimized, so as to simplify understanding and make translation to other controllers easy.

 

For more detail: Monitor 15 contacts with one PIC input


A Propos De L'Auteur

Ibrar Ayyub

Je suis expérimenté, rédacteur technique, titulaire d'une Maîtrise en informatique de BZU Multan, Pakistan à l'Université. Avec un arrière-plan couvrant diverses industries, notamment en matière de domotique et de l'ingénierie, j'ai perfectionné mes compétences dans la rédaction claire et concise du contenu. Compétent en tirant parti de l'infographie et des diagrammes, je m'efforce de simplifier des concepts complexes pour les lecteurs. Ma force réside dans une recherche approfondie et de présenter l'information de façon structurée et logique format.

Suivez-Nous:
LinkedinTwitter

Laisser un Commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

fr_FRFrench
Faire défiler vers le Haut