In questo tutorial interfacciamo una tastiera 4x4 (16 tasti) con il microcontrollore ATMEGA32A. Sappiamo che la tastiera è uno dei dispositivi di input più importanti utilizzati nei progetti di elettronica. La tastiera è uno dei modi più semplici per dare comandi o istruzioni a un sistema elettronico.
Componenti richiesti
Hardware: ATMEGA32, alimentatore (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16 * 2LCD), condensatore 100uF, condensatore 100nF, resistenza 10KΩ (8 pezzi).
Software: Atmel studio 6.1 o Atmel studio 6.2, progisp o flash magic.
Schema del circuito e spiegazione del funzionamento
Nel circuito PORTB di ATMEGA32 è collegato alla porta dati LCD. Qui bisogna ricordarsi di disabilitare la comunicazione JTAG in PORTC o ATMEGA cambiando i byte dei fusibili, se si vuole usare il PORTC come una normale porta di comunicazione. In 16x2 LCD ci sono 16 pin in tutto se c'è una retroilluminazione, se non c'è retroilluminazione ci saranno 14 pin. Si può alimentare o lasciare i perni della retroilluminazione. Ora nei 14 pin ci sono 8 pin dati (7-14 o D0-D7), 2 pin di alimentazione (1 & 2 o VSS & VDD o gnd & + 5v), 3 ° pin per il controllo del contrasto (VEE controlla lo spessore dei caratteri mostrato) e 3 pin di controllo (RS & RW & E).
Nel circuito, puoi osservare che ho preso solo due pin di controllo, questo dà flessibilità, il bit di contrasto e READ / WRITE non vengono usati spesso in modo che possano essere cortocircuitati a massa. Questo mette l'LCD nel più alto contrasto e modalità di lettura. Abbiamo solo bisogno di controllare i pin ENABLE e RS per inviare caratteri e dati di conseguenza.
Di seguito sono riportati i collegamenti effettuati per l'LCD:
PIN1 o VSS a terra
Alimentazione da PIN2 o VDD o VCC a + 5v
PIN3 o VEE a massa (offre il massimo contrasto migliore per un principiante)
PIN4 o RS (selezione registro) a PD6 di uC
PIN5 o RW (lettura / scrittura) a massa (mette l'LCD in modalità di lettura facilita la comunicazione per l'utente)
PIN6 o E (Abilita) a PD5 di uC
PIN7 o D0 a PB0 di uC
PIN8 o D1 a PB1 di uC
PIN9 o D2 a PB2 di uC
PIN10 o D3 a PB3 di uC
PIN11 o D4 a PB4 di uC
PIN12 o D5 a PB5 di uC
PIN13 o D6 a PB6 di uC
PIN14 o D7 a PB7 di uC
Nel circuito si può vedere che abbiamo utilizzato la comunicazione a 8 bit (D0-D7) tuttavia non è obbligatoria, possiamo usare la comunicazione a 4 bit (D4-D7) ma con la comunicazione a 4 bit il programma diventa un po 'complesso. Quindi dalla semplice osservazione della tabella sopra stiamo collegando 10 pin dell'LCD al controller in cui 8 pin sono pin dati e 2 pin per il controllo.
Ora parliamo di tastiera, la tastiera non è altro che tasti multiplexati. I pulsanti sono collegati in una forma multiplex per ridurre l'utilizzo dei pin del sistema di controllo.
Considera che abbiamo una tastiera 4x4, in questa tastiera abbiamo 16 pulsanti, in casi normali abbiamo bisogno di 16 pin del controller per interfacciare 16 pulsanti, ma questo non va bene dal punto di vista del sistema di controllo. Questo utilizzo dei pin può essere ridotto collegando i pulsanti in formato multiplex.
Ad esempio si consideri che abbiamo 16 pulsanti e che vogliamo collegarlo a un controller per formare una tastiera, questi tasti sono disposti come mostrato in figura:
Questi pulsanti sono collegati da colonne comuni come mostrato in figura:
Come mostrato in figura, le estremità non contrassegnate di ogni quattro pulsanti vengono trascinate insieme per formare una colonna, quindi per 16 tasti abbiamo quattro colonne.
Se dimentichiamo le connessioni delle colonne sopra e le estremità contrassegnate comuni collegate di ogni quattro pulsanti insieme per formare una riga:
Come mostrato in figura, per 16 tasti avremo quattro righe come mostrato in figura.
Ora, quando vengono visti entrambi insieme, otteniamo qualcosa di simile al circuito seguente:
Qui abbiamo collegato 16 tasti in una forma multiplex in modo da ridurre l'utilizzo dei pin del controller. Rispetto al primo caso di 16 tasti collegati, avevamo bisogno di 16 pin sul controller, ma ora dopo il multiplexing abbiamo bisogno semplicemente di 8 pin del controller per collegare 16 tasti.
Normalmente questo è ciò che si presenta all'interno di una tastiera:
Come mostrato nella figura sopra, ci sono 16 tasti nel tastierino sopra e ciascuno di questi tasti rappresenta un pulsante nella configurazione del pulsante multiplexato. Inoltre ci sono connessioni a 8 pin come mostrato nella figura sopra che simboleggia la connessione multiplex.
Ora per lavorare:
La tastiera qui ha quattro colonne e quattro righe, per l'identificazione del pulsante premuto, useremo il metodo di riferimento incrociato. Qui per prima cosa collegheremo tutte le colonne o tutte le righe a vcc, quindi se le righe sono collegate a vcc comune, prenderemo le colonne come input per il controller.
Ora se il pulsante uno viene premuto come mostrato in figura:
Dopodiché una corrente scorre attraverso il circuito come mostrato nella figura seguente:
Quindi abbiamo C1 alto, per la pressione di un pulsante. In questo momento, sposteremo le porte di alimentazione e di input, ovvero, alimenteremo le colonne e prenderemo le righe come input, In questo modo, ci sarà un flusso di corrente come mostrato nella figura seguente:
Quindi per la riga abbiamo R1 alto.
A partire da ora abbiamo C1 alto nel primo caso e R1 alto nel secondo caso, quindi abbiamo la posizione della matrice del pulsante da cui il numero "uno".
Se viene premuto il secondo pulsante, avremo C1 come colonna ma la logica alta che otteniamo nella colonna comune sarà "R2". Quindi avremo C1 e R2, quindi avremo la posizione della matrice del secondo pulsante.
Questo è il modo in cui scriveremo il programma, collegheremo otto pin della tastiera a otto pin del controller. E per iniziare alimentiamo quattro pin del controller per alimentare quattro file di tastiera, in questo momento gli altri quattro pin vengono presi come input. Quando viene premuto il pulsante, il pin della colonna corrispondente viene tirato su e quindi il pin del controller viene sollevato, questo verrà riconosciuto per cambiare l'ingresso in alimentazione e alimentazione in ingresso, quindi avremo righe come input.
In questo modo otteniamo il pulsante premuto dall'utente. Questo indirizzo di matrice viene indirizzato al numero corrispondente e questo numero viene visualizzato sul display LCD.
Il funzionamento dell'interfacciamento della tastiera con il microcontrollore avr è spiegato passo passo nel codice C riportato di seguito. È inoltre possibile verificare: l'interfacciamento della tastiera con il microcontrollore 8051.