Sa tutorial na ito pupunta kami sa isang 4x4 (16 key) keypad sa ATMEGA32A microcontroller. Alam namin na ang keypad ay isa sa pinakamahalagang mga aparato ng pag-input na ginamit sa mga proyekto sa electronics. Ang Keypad ay isa sa pinakamadaling paraan upang magbigay ng mga utos o tagubilin sa isang elektronikong sistema.
Kinakailangan ang Mga Bahagi
Hardware: ATMEGA32, power supply (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16 * 2LCD), 100uF capacitor, 100nF capacitor, 10KΩ resistor (8 piraso).
Software: Atmel studio 6.1 o Atmel studio 6.2, progisp o flash magic.
Circuit Diagram at Paggawa ng Paliwanag
Sa circuit PORTB ng ATMEGA32 ay konektado sa data port LCD. Narito dapat tandaan na huwag paganahin ang komunikasyon ng JTAG sa PORTC ot ATMEGA sa pamamagitan ng pagbabago ng fuse bytes, kung nais na gamitin ang PORTC bilang isang normal na port ng komunikasyon. Sa 16x2 LCD mayroong 16 na pin sa lahat kung mayroong back light, kung walang back light magkakaroon ng 14 na pin. Maaari ng isang tumakbo o iwanan ang mga light light pin. Ngayon sa 14 na pin mayroong 8 data pin (7-14 o D0-D7), 2 power supply pin (1 & 2 o VSS & VDD o gnd & + 5v), 3 rd pin para sa control ng kaibahan (kinokontrol ng VEE kung gaano kakapal ang mga character ipinakita), at 3 control pin (RS & RW & E).
Sa circuit, maaari mong obserbahan na kumuha lamang ako ng dalawang control pin, nagbibigay ito ng kakayahang umangkop, ang kaibahan ng kaunti at READ / WRITE ay hindi madalas ginagamit upang maaari silang maiksi sa lupa. Inilalagay nito ang LCD sa pinakamataas na kaibahan at mode na basahin. Kailangan lang naming makontrol ang Mga PIN na INABAYAHAN at RS upang magpadala ng mga character at data nang naaayon.
Ang mga koneksyon na tapos para sa LCD ay ibinibigay sa ibaba:
PIN1 o VSS sa lupa
Ang PIN2 o VDD o VCC sa + 5v na lakas
PIN3 o VEE sa lupa (nagbibigay ng pinakamataas na maximum na kaibahan para sa isang nagsisimula)
PIN4 o RS (Pagpili ng Rehistro) sa PD6 ng uC
Ang PIN5 o RW (Basahin / Isulat) sa ground (inilalagay ang LCD sa read mode ay pinapagaan ang komunikasyon para sa gumagamit)
PIN6 o E (Paganahin) sa PD5 ng uC
PIN7 o D0 hanggang PB0 ng uC
PIN8 o D1 hanggang PB1 ng uC
PIN9 o D2 hanggang PB2 ng uC
PIN10 o D3 hanggang PB3 ng uC
PIN11 o D4 hanggang PB4 ng uC
PIN12 o D5 hanggang PB5 ng uC
PIN13 o D6 hanggang PB6 ng uC
PIN14 o D7to PB7 ng uC
Sa circuit makikita mo na gumamit kami ng 8bit na komunikasyon (D0-D7) subalit hindi ito isang sapilitan, maaari naming gamitin ang 4bit na komunikasyon (D4-D7) ngunit sa 4 bit na programa sa komunikasyon ay medyo kumplikado. Kaya't mula sa pagmamasid lamang sa talahanayan sa itaas ay kumokonekta kami ng 10 mga pin ng LCD sa controller kung saan ang 8 mga pin ay mga pin ng data at 2 mga pin para sa kontrol.
Ngayon pag-usapan natin ang tungkol sa keypad, ang keypad ay walang iba kundi ang mga multiplexed na key. Ang mga pindutan ay konektado sa isang multiplexed form para sa pagbawas ng paggamit ng pin ng control system.
Isaalang-alang mayroon kaming isang 4x4 keypad, sa keypad na ito mayroon kaming 16 na mga pindutan, sa mga normal na kaso kailangan namin ng 16 mga pin ng controller upang i-interface ang 16 na mga pindutan, ngunit hindi ito maganda sa kontrol ng point of view ng system. Ang paggamit ng pin na ito ay maaaring mabawasan sa pamamagitan ng pagkonekta sa mga pindutan sa multiplex form.
Halimbawa isaalang-alang mayroon kaming 16 na mga pindutan at nais naming ilakip ito sa isang controller upang bumuo ng isang keypad, ang mga key na ito ay nakaayos tulad ng ipinakita sa figure:
Ang mga pindutan na ito ay konektado sa pamamagitan ng mga karaniwang haligi tulad ng ipinakita sa pigura:
Tulad ng ipinakita sa pigura, ang mga hindi minarkahang dulo ng bawat apat na mga pindutan ay na-drag papunta dito upang bumuo ng isang haligi, at sa gayon para sa 16 na mga key mayroon kaming apat na mga haligi.
Kung nakalimutan namin ang mga koneksyon ng mga haligi sa itaas, at kumonekta sa mga karaniwang minarkahang dulo ng bawat apat na mga pindutan na magkasama upang bumuo ng isang hilera:
Tulad ng ipinakita sa figure, para sa 16 key ay magkakaroon kami ng apat na row tulad ng ipinakita sa figure.
Ngayon kapag pareho silang nakikita na nakakuha kami ng isang bagay tulad ng sa ibaba circuit:
Dito nakakonekta namin ang 16 na mga susi sa isang multiplexed form upang mabawasan ang paggamit ng pin ng controller. Kung ihinahambing sa unang kaso ng konektadong 16 key kailangan namin ng 16pins sa controller ngunit ngayon pagkatapos ng multiplexing kailangan namin ng 8 pin ng controller upang ikonekta ang 16 key.
Karaniwan ito ang ipinakita sa loob ng isang keypad:
Tulad ng ipinakita sa itaas na pigura mayroong 16 mga susi sa keypad sa itaas at ang bawat isa sa mga key na ito ay kumakatawan sa isang pindutan sa pag-configure ng multiplexed na pindutan. At mayroon ding mga koneksyon na 8 pin tulad ng ipinakita sa itaas na pigura na sumasagisag sa multiplexed na koneksyon.
Ngayon para sa pagtatrabaho:
Ang keypad dito ay may apat na haligi at apat na mga hilera, para sa pagkilala sa pindutan na pinindot, gagamitin namin ang paraan ng sanggunian na cross. Dito muna ay ikokonekta namin ang lahat ng mga haligi o lahat ng mga hilera sa vcc, kaya kung ang mga hilera ay konektado sa karaniwang vcc, kukunin namin ang mga haligi bilang mga input sa controller.
Ngayon kung ang isang pindutan ay pinindot tulad ng ipinakita sa pigura:
Pagkatapos nito ang isang kasalukuyang dumadaloy sa pamamagitan ng circuit tulad ng ipinakita sa ibabang pigura:
Kaya't mayroon kaming mataas na C1, para sa isang pindutin ang. Sa sandaling ito, ililipat namin ang lakas at mga input port na, papalakasin namin ang mga haligi at kukuha ng mga hilera bilang mga input, Sa pamamagitan nito, magkakaroon ng daloy ng kuryente tulad ng ipinakita sa ibabang pigura:
Kaya para sa hilera mayroon kaming R1 mataas.
Tulad ng ngayon mayroon kaming C1 mataas sa unang kaso at R1 mataas sa pangalawang kaso, kaya mayroon kaming posisyon ng matrix ng pindutan kaya ang bilang na "isa".
Kung ang pangalawang pindutan ay pinindot, magkakaroon kami ng C1 bilang haligi ngunit ang mataas na lohika na nakukuha namin sa karaniwang haligi ay 'R2'. Sa gayon magkakaroon kami ng C1 at R2, kaya magkakaroon kami ng posisyon ng matrix ng pangalawang pindutan.
Ganito namin isusulat ang programa, ikukonekta namin ang walong mga pin ng keypad sa walong mga pin ng controller. At sa pagsisimula ay pinapagana namin ang apat na pin ng controller para sa pag-power ng apat na row ng keypad, sa oras na ito ang iba pang apat na pin ay kinuha bilang mga input. Kapag pinindot ang pindutan na kaukulang pin na haligi na nakuha at sa gayon ang pin ng controller ay nakuha, makikilala ito upang baguhin ang pag-input sa lakas at kapangyarihan upang mag-input, kaya magkakaroon kami ng mga hilera bilang mga input.
Sa pamamagitan nito makukuha namin ang pindutan na pinindot ng gumagamit. Ang mga address ng matrix na ito ay nakadirekta sa kaukulang numero, at ang numerong ito ay ipinapakita sa LCD.
Ang pagtatrabaho ng keypad interfacing sa avr microcontroller ay ipinapaliwanag hakbang-hakbang sa C code na ibinigay sa ibaba. Maaari mo ring suriin: ang keypad interfacing sa 8051 microcontroller.