AVR Assembler Övningsexempel 7 (4 / 12 steg)
Steg 4: Wire knappsatsen
Nu följa kopplingsschemat och tråd tangentbordet till din skärbräda.
Hur detta kommer att fungera är vi kommer att få 5V i på vänster sida och höger sida går till GND. Den första pin till höger i diagrammet går in i först av våra analoga stift på Atmega328p mikrokontroller. När det finns inga knappar tryckte signal 0V, och när var och en av de olika knapparna trycks indata till den analoga ingången kommer att spänna mellan 0V och 5V med olika mycket beroende på vilken knapptryckningen. Vi valde resistor värdena så att varje sökväg skulle innehålla ett motstånd som var annorlunda från resten. Den analoga porten på mikrokontroller tar en analog signal och delar upp det i 1024 olika kanaler mellan 0V och 5V. Detta innebär att varje kanal har en bredd 5V/1024 = 0,005 V/kanal = 5 mV/kanal. Så den analoga ingången kan skilja inspänningar som skiljer mer än 5 mV. I vårt fall har vi valt resistor värden så att alla två knapptryckningar kommer en signal spänning som skiljer sig med mer än detta så mikrokontroller bör lätt kunna avgöra vilken knapptryckningen. Det stora problemet är att hela systemet är mycket bullriga så kommer vi att välja en rad spänningar att mappa till varje knapptryckning-- men vi kommer att lyckas lite senare.
Observera att vi har möjlighet att styra en 14 knappen knappsats med bara en enda inmatningsraden till styrenheten. Det är en av de användbara aspekterna av analoga ingångar.
Nu vårt första försök att kontrollera tangentbordet kommer att ha en knapptryckning orsaka ett avbrott, avbrott subrutinen kommer att läsa den analog ingången och besluta vilken knapptryckningen och sedan kommer det ut numret till våra register analyzer subrutin som visar nyckelvärdet i binär på våra 8 lysdioder som vi satt upp i handledning 5.