ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° микропроцСссорных устройств

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠŸΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ LCD-ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€. Π”Π°Π»Π΅Π΅ происходит настройка ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… рСгистров ΠΈ ΠΏΠΎΡ€Ρ‚ΠΎΠ² ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ. На Π΄ΠΈΡΠΏΠ»Π΅ΠΉ выводится привСтствиС, Ρ‡Π΅Ρ€Π΅Π· 1 сСкунду начинаСтся ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ наТатия клавиши. Если клавиша Π½Π°ΠΆΠ°Ρ‚Π°, происходит Π΅Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΈΡΠΏΠ»Π΅Π΅. Если ΠΊΠΎΠ΄ Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ клавиши нСизвСстСн ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° микропроцСссорных устройств (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠœΠΈΠ½ΠΈΡΡ‚Π΅Ρ€ΡΡ‚Π²ΠΎ транспорта Российской Π€Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΠΈ Π€Π΅Π΄Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ агСнтство ΠΆΠ΅Π»Π΅Π·Π½ΠΎΠ΄ΠΎΡ€ΠΎΠΆΠ½ΠΎΠ³ΠΎ транспорта Π€Π΅Π΄Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ ГосударствСнноС Π‘ΡŽΠ΄ΠΆΠ΅Ρ‚Π½ΠΎΠ΅ ΠžΠ±Ρ‰Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π£Ρ‡Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π’Ρ‹ΡΡˆΠ΅Π³ΠΎ ΠŸΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ

" Π”Π°Π»ΡŒΠ½Π΅Π²ΠΎΡΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ государствСнный унивСрситСт ΠΏΡƒΡ‚Π΅ΠΉ сообщСния"

ЕстСствСнно-Π½Π°ΡƒΡ‡Π½Ρ‹ΠΉ институт ΠšΠ°Ρ„Π΅Π΄Ρ€Π° «ΠžΠΏΡ‚ичСскиС систСмы связи»

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° Π ΠΠ—Π ΠΠ‘ΠžΠ’ΠšΠ ΠœΠ˜ΠšΠ ΠžΠŸΠ ΠžΠ¦Π•Π‘Π‘ΠžΠ ΠΠ«Π₯ Π£Π‘Π’Π ΠžΠ™Π‘Π’Π’ Π˜ΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚ Н. И. ΠšΠ°Ρ€ΠΈΠΆΡΠΊΠ°Ρ Π ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠŸΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ И. Π‘. Π”ΠΎΡ€ΠΎΠ½ΠΈΠ½ Π₯абаровск 2012

  • Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅
  • 1. ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ATmega32
  • 1.1 ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ATmega32
  • 2. ОписаниС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ устройства
  • 3. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° PS/2
  • 3.1 ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ…
  • 3.2 ΠšΠΎΠ΄Ρ‹ сканирования
  • 4. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Код ΠΈ Π±Π»ΠΎΠΊ-схСма ΠΌΠΈΠΊΡ€ΠΎΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
  • Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠžΠ΄Π½ΠΎΠΊΡ€ΠΈΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ находят ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΡΠ°ΠΌΡ‹Ρ… Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… сфСрах: ΠΎΡ‚ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ±ΠΎΡ€ΠΎΠ², Ρ„ΠΎΡ‚ΠΎΠ°ΠΏΠΏΠ°Ρ€Π°Ρ‚ΠΎΠ² ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΠΌΠ΅Ρ€, ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠ², сканСров ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π»ΡŒΠ½Ρ‹Ρ… Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚ΠΎΠ² Π΄ΠΎ ΠΈΠ·Π΄Π΅Π»ΠΈΠΉ элСктронных Ρ€Π°Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Π²ΡΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ домашнСй Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ.

Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ появлСния ΠΏΠ΅Ρ€Π²Ρ‹Ρ… микропроцСссоров Π² 1970;Ρ… Π³ΠΎΠ΄Π°Ρ… ΠΈΡ… ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ постоянно возрастала Π·Π° ΡΡ‡Π΅Ρ‚ появлСния Π½ΠΎΠ²Ρ‹Ρ… Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½ΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Π’Π°ΠΊ постСпСнно слоТилась Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ°Ρ впослСдствии Π½Π°Π·Π²Π°Π½ΠΈΠ΅ CISC (Complex Instruction Set Computers — ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ со ΡΠ»ΠΎΠΆΠ½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄). Π’ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠ»ΠΎΡΡŒ ΠΈ Π½Π°ΡˆΠ»ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅: Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° RISC (Reduced Instruction Set Computers — ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ с ΡΠΎΠΊΡ€Π°Ρ‰Π΅Π½Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄). ИмСнно ΠΊ ΡΡ‚ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ относятся ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ AVR ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Atmel.

ОсновноС прСимущСство RISC-процСссоров Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ просты, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΈ, ΠΊΠ°ΠΊ слСдствиС, ΠΎΡ‡Π΅Π½ΡŒ Π±Ρ‹ΡΡ‚Ρ€ΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅. Π­Ρ‚ΠΎ позволяСт ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ.

На Π·Π°Ρ€Π΅ возникновСния микропроцСссоров Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния происходила ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π° Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ языкС ассСмблСра, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ устройство. По ΡΡƒΡ‚ΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ языки прСдставляли собой ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ², Π° ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠΈ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ выполнялся транслятором. Однако Π³Π»Π°Π²Π½Ρ‹ΠΉ нСдостаток ассСмблСрных языков Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… привязан ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ устройств ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ΅ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ассСмблСр слоТСн Π² ΠΎΡΠ²ΠΎΠ΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ достаточно Π±ΠΎΠ»ΡŒΡˆΠΈΡ… усилий для Π΅Π³ΠΎ изучСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΡ‚Ρ€Π°Ρ‡Π΅Π½Π½Ρ‹ΠΌΠΈ Π²ΠΏΡƒΡΡ‚ΡƒΡŽ, Ссли впослСдствии потрСбуСтся ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ.

Π―Π·Ρ‹ΠΊ Π‘, являясь языком высокого уровня, лишСн ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… нСдостатков ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для программирования любого микропроцСссора, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ компилятор с ΡΠ·Ρ‹ΠΊΠ° Π‘. Π’ ΡΠ·Ρ‹ΠΊΠ΅ Π‘ Π²ΡΠ΅ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, выполняСмыС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌΠΈ, прСдставлСны Π² Π²ΠΈΠ΄Π΅ абстрактных конструкций, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΉ лишь Π»ΠΎΠ³ΠΈΠΊΠΈ, Π½Π΅ Π·Π°Π±ΠΎΡ‚ΡΡΡŒ ΠΎ ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅.

Π’ Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Π΅ трСбуСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ устройство Π½Π° Π±Π°Π·Π΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ATmega32 сСмСйства AVR, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ Π½Π° ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅ PS/2 ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΡΡ‰Π΅Π΅ ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° LCD-ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€.

1. ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ATmega32

1.1 ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ATmega32

Π’ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ процСссорный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ATmega32. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ процСссорного модуля ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 1.1, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Π°Ρ элСктричСская схСма ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 1.2.

Рисунок 1.1 — Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ процСссорного модуля, Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ATmega32

Atmega32 являСтся КМОП (комплСмСнтарная Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° Ρ‚ранзисторах ΠΌΠ΅Ρ‚Π°Π»Π»-оксид-ΠΏΠΎΠ»ΡƒΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊ) 8-Π±ΠΈΡ‚Π½Ρ‹ΠΌ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ, построСнным Π½Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ AVR RISC Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, исполняСмыС Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ Ρ‚Π°ΠΊΡ‚, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ достигаСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² 1 MIPS (Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ, сколько ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² инструкций Π² ΡΠ΅ΠΊΡƒΠ½Π΄Ρƒ выполняСт процСссор Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ синтСтичСском тСстС) Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ частотС 1 ΠœΠ“Ρ†, Ρ‡Ρ‚ΠΎ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ эффСктивно ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ энСргии Π·Π° ΡΡ‡Ρ‘Ρ‚ Π²Ρ‹Π±ΠΎΡ€Π° ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

AVR ядро сочСтаСт Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄ с 32 Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌΠΈ рСгистрами ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния. ВсС 32 рСгистра соСдинСны с Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΎ-логичСским устройством (АЛУ), Ρ‡Ρ‚ΠΎ обСспСчиваСт доступ ΠΊ Π΄Π²ΡƒΠΌ нСзависимым рСгистрам Π½Π° Π²Ρ€Π΅ΠΌΡ исполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ Ρ‚Π°ΠΊΡ‚. Благодаря Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ достигнута Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠ°Ρ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° ΠΈ ΡΠΎΠΎΡ‚вСтствСнно высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² 10 Ρ€Π°Π· прСвосходящая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ CISC ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°.

ATmega32 содСрТит 32ΠšΠ±Π°ΠΉΡ‚ внутрисистСмно-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ FLASH памяти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π΅ΠΉ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ записи, 1024 Π±Π°ΠΉΡ‚ EEPROM, 2К Π±Π°ΠΉΡ‚ SRAM, 32 Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… рСгистра, JTAG интСрфСйс сканирования Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… рСгистров, Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ систСму ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, Ρ‚Ρ€ΠΈ Π³ΠΈΠ±ΠΊΠΈΡ… Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° — счётчика с ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ сравнСния, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΠ΅ прСрывания, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ интСрфСйс USART, Π±Π°ΠΉΡ‚-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π΄Π²ΡƒΡ…ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс, 8-ΠΈ ΠΊΠ°Π½Π°Π»ΡŒΠ½Ρ‹ΠΉ, 10-ΠΈ Π±ΠΈΡ‚Π½Ρ‹ΠΉ АЦП с Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ усилитСлСм (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для TQFP), ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Watchdog Ρ‚Π°ΠΉΠΌΠ΅Ρ€ с Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ, ΠΏΠΎΡ€Ρ‚ SPI ΠΈ ΡˆΠ΅ΡΡ‚ΡŒΡŽ Ρ€Π΅ΠΆΠΈΠΌΠ°ΠΌΠΈ сбСрСТСния энСргии. Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Idle ЦПУ Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ Π² Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΡ ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚ USART, Π΄Π²ΡƒΡ…ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½Ρ‹ΠΉ интСрфСйс, АЦП, SRAM, Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹ — счётчики, SPI ΠΏΠΎΡ€Ρ‚ ΠΈ ΡΠΈΡΡ‚Π΅ΠΌΠ° ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ. Π’ Atmega32 сущСствуСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ подавлСния ΡˆΡƒΠΌΠ° АЦП, ΠΏΡ€ΠΈ этом Π² Ρ†Π΅Π»ΠΎΠΌ Π² ΡΠΏΡΡ‰Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ АЦП ΠΈ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½Ρ‹ΠΉ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… ΡˆΡƒΠΌΠΎΠ² прСобразования. Π’ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ процСссор сохраняСт содСрТимоС всСх рСгистров, Π·Π°ΠΌΠΎΡ€Π°ΠΆΠΈΠ²Π°Π΅Ρ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹Ρ… сигналов, приостанавливаСт всС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ кристалла Π΄ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄Π° внСшнСго прСрывания ΠΈΠ»ΠΈ поступлСния внСшнСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Reset. Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ оТидания Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Ρ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΏΡ€ΠΈ остановкС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. Благодаря быстрому ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρƒ Π² Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π² Ρ‚ΠΎΠΌ числС ΠΈ ΠΏΠΎ Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΡŽ Atmega32 ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ приспосабливаСтся ΠΊ Π²Π½Π΅ΡˆΠ½ΠΈΠΌ условиям Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ мСньшС энСргии, Ρ‡Π°Ρ‰Π΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡΡΡŒ Π² Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π’ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ оТидания Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ состоянии находятся основной Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€.

ΠœΠΈΠΊΡ€ΠΎΡΡ…Π΅ΠΌΡ‹ Π²Ρ‹ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ использовании Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ энСргонСзависимой памяти высокой плотности. ВстроСнная ISP FLASH ΠΏΠ°ΠΌΡΡ‚ΡŒ позволяСт ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ памяти внутрисистСмно Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ SPI интСрфСйс стандартным ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€ΠΎΠΌ, ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ· ΡΠ½Π΅Ρ€Π³ΠΎΠ½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΉ памяти Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΡƒΡŽ Π² AVR ядрС. ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ 8-ΠΈ Π±ΠΈΡ‚Π½ΠΎΠΉ RISC Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ЦПУ ΠΈ Ρ‚Π²Ρ‘Ρ€Π΄ΠΎΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ FLASH памяти ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Atmega32 Π²Ρ‹ΡΠΎΠΊΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π²ΠΎ Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… систСмах управлСния.

Рисунок 1.2 —. Π‘Ρ…Π΅ΠΌΠ° элСктричСская ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Π°Ρ процСссорного модуля ATmega32

2. ОписаниС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ устройства

ЦСлью Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ являСтся созданиС устройства, способного ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ с PS/2 ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ Π²Ρ‹Π±Ρ€Π°Π½ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Atmel ATmega32 с ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ ΠΊ Π½Π΅ΠΌΡƒ LCD-ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ WINSTAR WH1602A. Π’Π°ΠΊΠΆΠ΅ ΠΊ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΏΠΎΡ€Ρ‚ PS/2 Ρ‚ΠΈΠΏΠ° «ΠΌΠ°ΠΌΠ°», ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π° стандартная ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°. ΠœΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиш ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΡ… ΡΠΈΠΌΠ²ΠΎΠ»Ρ‹ Π½Π° LCD-ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€. ЭлСктричСская ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Π°Ρ схСма Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ устройства прСдставлСна Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.1.

Рисунок 2.1 — Π‘Ρ…Π΅ΠΌΠ° элСктричСская ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Π°Ρ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ устройства

На ΡΡ…Π΅ΠΌΠ΅ прСдставлСн ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Atmega32 (U1). Π•Π³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Ρ‹ PA0-PA3, PA5-PA7 соСдинСны с Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌΠΈ D4-D7, RS, RW ΠΈ E ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° LCD1 соотвСтствСнно. К Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌ PD2 ΠΈ PD7 ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π²Ρ‹Π²ΠΎΠ΄Ρ‹ 5 (Clock) ΠΈ 1 (Data) ΠΏΠΎΡ€Ρ‚Π° PS/2 соотвСтствСнно.

К Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌ XTAL1 ΠΈ XTAL2 ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ внСшний ΠΊΠ²Π°Ρ€Ρ†Π΅Π²Ρ‹ΠΉ Ρ€Π΅Π·ΠΎΠ½Π°Ρ‚ΠΎΡ€ X1 с Ρ‡Π°ΡΡ‚ΠΎΡ‚ΠΎΠΉ 16 ΠœΠ³Ρ†. Π’Ρ‹Π²ΠΎΠ΄ Reset ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ ΠΏΠΈΡ‚Π°Π½ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· рСзистор R1 ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ с Π·Π΅ΠΌΠ»Π΅ΠΉ посрСдством ΠΊΠ½ΠΎΠΏΠΊΠΈ для возмоТности ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ устройства. ΠšΠΎΠ½Π΄Π΅Π½ΡΠ°Ρ‚ΠΎΡ€Ρ‹ C1, C2 ΠΈ Π‘3 ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΠΎΠΌΠ΅Ρ….

Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ устройства прСдставлСн Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.2.

Рисунок 2.2 — Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ устройства

3. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° PS/2

ΠŸΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ сначала происходит Π΅Ρ‘ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ. ПослС этого ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° Π³ΠΎΡ‚ΠΎΠ²Π° ΠΎΡ‚ΡΡ‹Π»Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ сообщСния. Для нашСго устройства достаточно одностороннСго Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ — ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° сообщСний ΠΎΡ‚ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΊ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ.

3.1 ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ…

Для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ простой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ». Как Π±Ρ‹Π»ΠΎ сказано Π²Ρ‹ΡˆΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Π²Π° Π²Ρ‹Π²ΠΎΠ΄Π°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ — Ρ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹ΠΉ сигнал (Clock) ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΅Ρ‘ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡ ΠΈ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ пСрСсылки Ρ„Ρ€Π΅ΠΉΠΌΠ°. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹Π²ΠΎΠ΄ — Π²Ρ‹Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ… (Data) нСсёт Π½Π΅ΠΏΠΎΡΡ€Π΅Π΄ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Рассмотрим порядок пСрСсылки (рисунок 3.1):

Рисунок 3.1 — ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΊ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ

§ Π‘Π½Π°Ρ‡Π°Π»Π° ΡƒΡ€ΠΎΠ²Π½ΠΈ Π½Π° ΠΎΠ±ΠΎΠΈΡ… Π²Ρ‹Π²ΠΎΠ΄Π°Ρ… высокиС. Π­Ρ‚ΠΎ соотвСтствуСт ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ оТидания (Idle), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚.

§ ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ пСрСсылку, выставив Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ сигнал Π² «0» (стартовый Π±ΠΈΡ‚) ΠΈ ΡΠΌΠ΅Π½ΠΈΠ² ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π½Π° Ρ‡Π°ΡΠ°Ρ… «1″ >» 0″ .

§ Π”Π°Π»Π΅Π΅ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° пСрСсылаСт 8 Π±ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Ρ… сообщСния ΠΎΡ‚ ΠΌΠ»Π°Π΄ΡˆΠ΅Π³ΠΎ Π±ΠΈΡ‚Π° ΠΊ ΡΡ‚Π°Ρ€ΡˆΠ΅ΠΌΡƒ, съСм ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ сигнала трСбуСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ появлСнии Π·Π°Π΄Π½Π΅Π³ΠΎ Ρ„Ρ€ΠΎΠ½Ρ‚Π° сигнала часов

§ ΠŸΡ€Π΅Π΄ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π±ΠΈΡ‚ называСтся Π±ΠΈΡ‚ΠΎΠΌ чётности (parity bit) ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ цСлостности ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π° (простой ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ).

§ ПослСдний Π±ΠΈΡ‚ равняСтся «1» ΠΈ Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ся стоповым Π±ΠΈΡ‚ΠΎΠΌ.

§ ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π° ΠΈ Π»ΠΈΠ½ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΡΠΎΡΡ‚ояниС оТидания.

Как Π²ΠΈΠ΄Π½ΠΎ, Ρ„Ρ€Π΅ΠΉΠΌ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ состоит ΠΈΠ· 11 Π±ΠΈΡ‚. ΠŸΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚ соотвСтствуСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅. Π’ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС это ΠΊΠΎΠ΄ сканирования (scancode).

3.2 ΠšΠΎΠ΄Ρ‹ сканирования

КаТдой клавишС ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ соотвСтствуСт Π»ΠΈΠ±ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ΄, Π»ΠΈΠ±ΠΎ комбинация ΠΊΠΎΠ΄ΠΎΠ² (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ сообщСния состоят ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Π°ΠΉΡ‚). А ΠΊΠΎΠ³Π΄Π° ΠΊΠ»Π°Π²ΠΈΡˆΡƒ ΠΎΡ‚ΠΏΡƒΡΠΊΠ°Π΅ΡˆΡŒ, ΠΏΡ€ΠΈΠ»Π΅Ρ‚Π°Π΅Ρ‚ сообщСниС ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Π°ΠΉΡ‚, Π³Π΄Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ — 0xF0, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ (ΠΈΡ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎ) соотвСтствуСт Ρ€Π°Π½Π΅Π΅ Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ клавишС. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ рисункС:

Рисунок 3.2 — ΠšΠΎΠ΄Ρ‹ сканирования

НапримСр, Ссли Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ F, Ρ‚ΠΎ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° ΠΏΠΎΡˆΠ»Ρ‘Ρ‚ сообщСниС 0x2B, Π° Π΅ΡΠ»ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ — 0xF0 0x2B.

4. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Код ΠΈ Π±Π»ΠΎΠΊ-схСма ΠΌΠΈΠΊΡ€ΠΎΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй устройства Π±Ρ‹Π»Π° написана ΠΌΠΈΠΊΡ€ΠΎΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅.

#define F_CPU 1 600 0000L // Частота ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° - 16 ΠœΠ“Ρ†

#include . h> // Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°

#include <avr/interrupt. h> // Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ

#include . h> // Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ

#include " lcd_conf. h" // Π‘ΠΈΠ±Π»ΠΈΡ‚ΠΎΡ‚Π΅ΠΊΠ° LCD

// Π’Ρ‹Π²ΠΎΠ΄ Data ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ PD7

#define DATA_PORT PORTD

#define DATA_DDR DDRD

#define DATA_PIN PIND

#define DATA 7

// Π’Ρ‹Π²ΠΎΠ΄ Clock ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ PD2

#define CLOCK_PORT PORTD

#define CLOCK_DDR DDRD

#define CLOCK_PIN PIND

#define CLOCK 2

unsigned int kb_data_bit = 0; // ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ для записи принятого Π±ΠΈΡ‚Π°

unsigned int kb_bit_count = 0; // Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ принятых Π±ΠΈΡ‚

unsigned char kb_buffer [33]; // Π‘ΡƒΡ„Π΅Ρ€ для хранСния принятых Π΄Π°Π½Π½Ρ‹Ρ…

unsigned int j = 0; // ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ-счСтчик

unsigned int i = 0; // ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ-счСтчик

unsigned int scancode = 0; // ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ для хранСния принятого сканкода

unsigned char key; // ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ для хранСния значСния Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ клавиши

// Массив скан-кодов

unsigned int codes [61] = {0x1C, 0x32, 0x21, 0x23, 0x24, 0x2B, 0x34, 0x33, 0x43, 0x3B, 0x42, 0x4B, 0x3A, 0x31, 0x44, 0x4D, 0x15, 0x2D, 0x1B, 0x2C, 0x3C, 0x2A, 0x1D, 0x22, 0x35, 0x1A, 0x45, 0x16, 0x1E, 0x26, 0x25, 0x2E, 0x36, 0x3D, 0x3E, 0x46, 0x0E, 0x4E, 0x55, 0x5D, 0x54, 0x5B, 0x4C, 0x52, 0x41, 0x49, 0x4A, 0x7C, 0x7B, 0x79, 0x71, 0x70, 0x69, 0x72, 0x7A, 0x6B, 0x73, 0x74, 0x6C, 0x75, 0x7D};

// Массив ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… клавиш

unsigned char keys [61] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '~', '-', '=', '\', ' [', '] ', '; ', '? ', ',', '. ', '/', '*', '-', '+', '. ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};

int main (void)

{

GICR = 0x40; // УстанавливаСм Π»ΠΎΠ³.1 Π² 6 Π±ΠΈΡ‚ рСгистра GICR для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ ΠΏΠΎ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ Π½Π° INT0

MCUCR = 0x02; // УстанавливаСм Π»ΠΎΠ³.1 Π² 1 Π±ΠΈΡ‚ рСгистра MCUCR для настройки Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ прСрывания Π½Π° INT0 ΠΏΠΎ ΡΠΏΠ°Π΄Π°ΡŽΡ‰Π΅ΠΌΡƒ Ρ„Ρ€ΠΎΠ½Ρ‚Ρƒ сигнала

GIFR = 0x40; // УстанавливаСм Π»ΠΎΠ³.1 Π² 6 Π±ΠΈΡ‚ рСгистра GIFR для установки Π²Π΅ΠΊΡ‚ΠΎΡ€Π° прСрывания Π½Π° INT0

DATA_DDR |= (0 << DATA); // НастраиваСм PD7 Π½Π° Π²Ρ…ΠΎΠ΄

sei (); // Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅ΠΌ прСрывания

LCD_Init (); // Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ дисплСй

LCD_Set_Position (1,0);

LCD_Show_String ΠŸΡ€ΠΈΠ²Π΅Ρ‚);

_delay_ms (1000);

LCD_Clear ();

LCD_Set_Position (1,0);

LCD_Show_String НаТата клавиша: » );

while (1)

{

if ((kb_bit_count == 0) || (kb_bit_count == 11)) // Если счСтчик принятых Π±ΠΈΡ‚ = 0 ΠΈΠ»ΠΈ 11

{

KB_Decode (); // ВыдСляСм сканкод ΠΈΠ· принятых Π΄Π°Π½Π½Ρ‹Ρ…

if (scancode! = 0) // Если ΠΎΠ½ Π½Π΅ = 0 - Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π½Π° дисплСй ΠΊΠ»Π°Π²ΠΈΡˆΡƒ

{

LCD_Set_Position (2,5);

LCD_Show_Char (key);

_delay_ms (1);

}

}

}

}

ISR (INT0_vect) // ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅

{

KB_Recieve (); // ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅

}

void KB_Recieve (void) // ОписаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ получСния Π΄Π°Π½Π½Ρ‹Ρ…

{

kb_data_bit = (DATA_PIN >> 7); // ЗаписыаСм Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ½Π½ΡƒΡŽ kb_data_bit состояниС PD7

if (kb_bit_count < 32) // Если счСтчик принятых Π±ΠΈΡ‚ < 32

{

kb_buffer [kb_bit_count] = kb_data_bit; // ЗаписываСм принятый Π±ΠΈΡ‚ Π² Π±ΡƒΡ„Π΅Ρ€ kb_buffer Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Ρ€Π°Π²Π½ΡƒΡŽ числу принятых Π±ΠΈΡ‚

kb_bit_count++; // Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ счСтчик принятых Π±ΠΈΡ‚ Π½Π° 1

} else { // Если счСтчик принятых Π±ΠΈΡ‚ = 32

kb_buffer [kb_bit_count] = kb_data_bit; // ЗаписываСм принятый Π±ΠΈΡ‚ Π² Π±ΡƒΡ„Π΅Ρ€ kb_buffer Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Ρ€Π°Π²Π½ΡƒΡŽ числу принятых Π±ΠΈΡ‚

kb_bit_count = 0; // БбрасываСм счСтчик принятых Π±ΠΈΡ‚

}

}

int KB_Decode (void) // ОписаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ вычислСния скан-ΠΊΠΎΠ΄Π°

{

scancode = (kb_buffer [1] << 0) | (kb_buffer [2] << 1) | (kb_buffer [3] << 2) | (kb_buffer [4] << 3) |

(kb_buffer [5] << 4) | (kb_buffer [6] << 5) | (kb_buffer [7] << 6) | (kb_buffer [8] << 7); // ЗаписываСм Π±ΠΈΡ‚Ρ‹ сканкода, отбросив старт, стоп Π±ΠΈΡ‚Ρ‹ ΠΈ Π±ΠΈΡ‚ чСтности

if (scancode == 0xAA) // Если сканкод = 0xAA (привСтствиС ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹), сбрасываСм сканкод ΠΈ счСтчик принятых Π±ΠΈΡ‚

{

kb_bit_count = 0;

scancode = 0;

}

for (j = 0; j < 60;) // Π˜Ρ‰Π΅ΠΌ соотвСтствиС сканкода Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Если Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ, присваиваСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ key ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ символ

{

if (scancode == codes [j])

{

key = keys [j];

break;

} else {

key = '0';

j++;

}

}

}

ΠŸΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ LCD-ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€. Π”Π°Π»Π΅Π΅ происходит настройка ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… рСгистров ΠΈ ΠΏΠΎΡ€Ρ‚ΠΎΠ² ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ. На Π΄ΠΈΡΠΏΠ»Π΅ΠΉ выводится привСтствиС, Ρ‡Π΅Ρ€Π΅Π· 1 сСкунду начинаСтся ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ наТатия клавиши. Если клавиша Π½Π°ΠΆΠ°Ρ‚Π°, происходит Π΅Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΈΡΠΏΠ»Π΅Π΅. Если ΠΊΠΎΠ΄ Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ клавиши нСизвСстСн ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π½Π° ΡΠΊΡ€Π°Π½ выводится символ «0». Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ описана Π½Π° Π±Π»ΠΎΠΊ-схСмС (рисунок 4.1).

Рисунок 4.1 — Π‘Π»ΠΎΠΊ-схСма Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΈΠΊΡ€ΠΎΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΈΠΊΡ€ΠΎΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ°Ρ… 4.2−4.4.

Рисунок 4.2 — Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ устройство ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиши «K»

Рисунок 4.3 — Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ устройство ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиши «R»

Рисунок 4.4 — Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ устройство ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиши «=»

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

микропроцСссорноС устройство ΠΊΠΎΠ΄ сканированиС

Π’ Ρ…ΠΎΠ΄Π΅ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π»ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ устройство Π½Π° Π±Π°Π·Π΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ATmega32 сСмСйства AVR, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ Π½Π° ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅ PS/2 ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΡΡ‰Π΅Π΅ ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° LCD-ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ