I denna handledning ska vi gränssnitt en 4x4 (16 tangent) knappsats med ATMEGA32A mikrokontroller. Vi vet att knappsatsen är en av de viktigaste ingångsenheterna som används i elektronikprojekt. Knappsatsen är ett av de enklaste sätten att ge kommandon eller instruktioner till ett elektroniskt system.
Komponenter krävs
Hårdvara: ATMEGA32, strömförsörjning (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16 * 2LCD), 100uF kondensator, 100nF kondensator, 10KΩ motstånd (8 delar).
Programvara: Atmel studio 6.1 eller Atmel studio 6.2, progisp eller flash magi.
Kretsschema och arbetsförklaring
I kretsen är PORTB på ATMEGA32 ansluten till dataport LCD. Här bör man komma ihåg att inaktivera JTAG-kommunikationen i PORTC ot ATMEGA genom att ändra säkringsbyten, om man vill använda PORTC som en normal kommunikationsport. I 16x2 LCD finns det 16 stift överallt om det finns en bakgrundsbelysning, om det inte finns något bakgrundsbelysning kommer det att finnas 14 stift. Man kan driva eller lämna bakljuset. Nu i de 14 stiften finns 8 datastift (7-14 eller D0-D7), 2 effektmatningsstiften (1 & 2 eller VSS & VDD eller GND & + 5v), 3 : e stift för kontrastreglering (VEE-styr hur tjock tecknen bör vara visas) och 3 kontrollstift (RS & RW & E).
I kretsen kan du observera att jag bara har tagit två kontrollstift, detta ger flexibiliteten, kontrastbiten och LÄS / SKRIV används inte ofta så att de kan kortslutas till marken. Detta sätter LCD i högsta kontrast och läsläge. Vi behöver bara kontrollera ENABLE- och RS-stift för att skicka tecken och data i enlighet därmed.
De anslutningar som görs för LCD ges nedan:
PIN1 eller VSS till jord
PIN2 eller VDD eller VCC till + 5v ström
PIN3 eller VEE till marken (ger maximal kontrast bäst för en nybörjare)
PIN4 eller RS (Registrera val) till PD6 i uC
PIN5 eller RW (läs / skriv) till marken (sätter LCD i läsläge underlättar kommunikationen för användaren)
PIN6 eller E (Aktivera) till PD5 för uC
PIN7 eller D0 till PB0 för uC
PIN8 eller D1 till PB1 i uC
PIN9 eller D2 till PB2 i uC
PIN10 eller D3 till PB3 i uC
PIN11 eller D4 till PB4 i uC
PIN12 eller D5 till PB5 i uC
PIN13 eller D6 till PB6 i uC
PIN14 eller D7 till PB7 i uC
I kretsen kan du se att vi har använt 8-bitars kommunikation (D0-D7) men detta är inte obligatoriskt, vi kan använda 4-bitars kommunikation (D4-D7) men med 4-bitars kommunikationsprogram blir det lite komplext. Så från enbart observationen av ovanstående tabell ansluter vi 10 stift LCD till styrenheten där 8 stift är datapinnar och 2 stift för kontroll.
Låt oss nu prata om knappsatsen, knappsatsen är inget annat än multiplexerade tangenter. Knappar är anslutna i multiplexform för att minska användningen av stift i styrsystemet.
Tänk på att vi har en 4x4-knappsats, i den här knappsatsen har vi 16 knappar, i normala fall behöver vi 16 kontrollstift för att gränssnitt 16 knappar, men detta är inte bra i styrsystemets synvinkel. Denna stiftanvändning kan minskas genom att ansluta knapparna i multiplexform.
Tänk till exempel att vi har 16 knappar och vi vill koppla den till en styrenhet för att bilda ett tangentbord, dessa tangenter är ordnade enligt bilden:
Dessa knappar är anslutna med vanliga kolumner som visas i figuren:
Som visas i figuren dras icke markerade ändar av var fjärde knappar för att bilda en kolumn, så för 16 tangenter har vi fyra kolumner.
Om vi glömmer kolonnanslutningarna ovan och kopplade gemensamma markerade ändar av var fjärde knappar tillsammans för att bilda en rad:
Som visas i figuren, för 16 tangenter kommer vi att ha fyra rader som visas i figuren.
Nu när de båda ses tillsammans får vi något som nedanstående krets:
Här har vi anslutit 16 tangenter i multiplexform för att minska stiftanvändningen av styrenheten. Jämfört med det första fallet med anslutna 16 nycklar behövde vi 16nålar på styrenheten men nu efter multiplexering behöver vi helt enkelt 8 stift av styrenheten för att ansluta 16 tangenter.
Normalt är det här som presenteras i en knappsats:
Som visas i figuren ovan finns det 16 tangenter i knappsatsen ovan och var och en av dessa knappar representerar en knapp i den multiplexerade knappkonfigurationen. Och det finns också 8-poliga anslutningar som visas i figuren ovan som symboliserar multiplexad anslutning.
Nu för att arbeta:
Knappsatsen här har fyra kolumner och fyra rader, för identifiering av knapptryckt ska vi använda korsreferensmetod. Här först ska vi antingen ansluta alla kolumner eller alla rader till vcc, så om rader är anslutna till vanliga vcc kommer vi att ta kolumnerna som ingångar till styrenheten.
Nu om knapp en trycks ned enligt bilden:
Därefter strömmar en ström genom kretsen enligt bilden nedan:
Så vi har C1 hög, för en knapptryckning. Just nu kommer vi att flytta kraft- och ingångsportarna, vi ska driva kolumnerna och ta rader som ingångar, Därmed kommer det att finnas ett strömflöde enligt bilden nedan:
Så för raden har vi R1 hög.
Från och med nu har vi C1 högt i första fallet och R1 högt i andra fallet, så vi har matrisposition för knappen, därav siffran "en".
Om du trycker på den andra knappen kommer vi att ha C1 som kolumn men den höga logiken vi får i vanlig kolumn är 'R2'. Så vi kommer att ha C1 och R2, därför kommer vi att ha matrisposition för den andra knappen.
Så här ska vi skriva programmet, vi ska ansluta åtta stift på knappsatsen till åtta stift av styrenheten. Och till att börja med driver vi fyra stift av styrenhet för att driva fyra rader med knappsats, vid den här tiden tas de andra fyra stiften som ingångar. När du trycker på knappen motsvarar kolumnstiftet uppåt och så styrpinnen dras upp kommer detta att kännas igen för att ändra ingången till ström och ström till ingång, så vi kommer att ha rader som ingångar.
Genom detta får vi trycka på knappen av användaren. Denna matrisadresser riktas till motsvarande nummer och detta nummer visas på LCD-skärmen.
Arbetet med tangentbordets gränssnitt med AVR-mikrokontroller förklaras steg för steg i C-koden nedan. Du kan också kontrollera: gränssnitt för knappsats med 8051 mikrokontroller.