Ang LED interfacing ay ang unang bagay, susubukan ng isa na magsimula sa anumang microcontroller. Kaya dito sa tutorial na ito ay mag-i- interface kami ng isang LED na may 8051 microcontroller, at magsusulat ng isang C Program upang pumikit ang LED. Gumamit kami ng isang tanyag na microcontroller AT89S52, ng 8051 na pamilya, ng ATMEL.
Bago magpunta sa detalye, dapat kaming makakuha ng ilang maikling ideya tungkol sa microcontroller AT89S52. Ito ay 40 pin microcontroller, at mayroong 4 port (P0, P1, P2, P3), ang bawat port ay may 8 pin. Maaari naming isaalang-alang ang bawat port bilang 8 bit na rehistro, mula sa pananaw ng software. Ang bawat pin na mayroong isang linya ng Input / output, nangangahulugang ang bawat pin ay maaaring magamit para sa pag-input pati na rin para sa output, ibig sabihin, upang mabasa ang form ng data ng ilang aparato tulad ng sensor o upang maibigay ang output nito sa ilang output device. Ang ilang mga pin ay may dalawahang pag-andar, na nabanggit sa bracket sa Pin Diagram sa ibaba. Dobleng paggana tulad ng para sa makagambala, counter, timer atbp.
Ang AT89S52 ay may dalawang uri ng memorya, una ang RAM na mayroong 256 Bytes ng memorya at pangalawa ang EEPROM (Electronically Erasable at Programmable Read Only Memory) na mayroong 8k bytes ng memorya. Ginagamit ang RAM upang maiimbak ang data sa panahon ng pagpapatupad ng isang programa at ginamit ang EEPROM upang iimbak ang mismong Program. Ang EEPROM ay ang flash memory kung saan ginamit namin upang sunugin ang programa.
Circuit Diagram at Paliwanag
Gumagamit kami ng pin ng isa sa port 1 upang ikonekta ang LED. Sa naka- embed na C programming maaari nating ma-access ang PIN 1 ng port 1 sa pamamagitan ng paggamit ng P1_0. Nakakonekta kami ng isang kristal oscillator na 11.0592MHz dalas sa PIN 19 at 18 ie XTAL1 at XTAL2. Ginagamit ang Crystal oscillator upang makabuo ng mga pulso ng orasan, at ginagamit ang pulso ng orasan upang ibigay ang ibig sabihin para sa pagkalkula ng tiyempo, na sapilitan na i-synchronize ang lahat ng mga kaganapan. Ang ganitong uri ng mga kristal na ginagamit sa halos bawat modernong digital na kagamitan tulad ng sa mga computer, relo atbp. Karaniwang ginagamit na Crystal ay quartz. Ito ay isang resonant oscillator circuit at ang mga capacitor ay ginagamit upang i-oscillate ang kristal, kaya nakakonekta kami dito 22pf capacitors. Maaari mong basahin ang tungkol sa "mga resonant circuit" upang malaman ang higit pa.
Ang diagram ng circuit para sa LED na nakikipag-ugnay sa 8051 microcontroller 89S52 ay ipinapakita sa itaas na pigura. Ang Pin 31 (EA) ay konektado sa Vcc, na isang aktibong mababang pin. Dapat itong konektado sa Vcc kapag hindi namin ginagamit ang anumang panlabas na memorya. Ang Pin 30 (ALE) at pin 29 (PSEN) ay ginagamit upang ikonekta ang microcontroller sa panlabas na memorya at ang Pin 31 ay nagsasabi sa microcontroller na gumamit ng panlabas na memorya, kapag nakakonekta sa Ground. Hindi kami gumagamit ng anumang panlabas na memorya kaya kinonekta namin ang Pin31 sa Vcc.
Ang Pin 9 (RST) ay ang pag-reset ng PIN, ginamit upang i-reset ang microcontroller at ang programa ay nagsisimula muli mula sa simula. Nire-reset ang microcontroller kapag nakakonekta sa TAAS. Gumamit kami ng karaniwang pag-reset ng circuitry, 10k ohm risistor at 1uF Capacitor upang ikonekta ang RST pin.
Ngayon ang kagiliw-giliw na bahagi dito ay ikinonekta namin ang LED sa reverse, nangangahulugang negatibong binti sa microcontroller PIN, dahil ang microcontroller ay hindi nagbibigay ng sapat na lakas upang mag-glow ng isang LED, kaya narito ang LED na tumatakbo sa negatibong lohika tulad ng kung kailan, pin P1_0 ay 1 pagkatapos ang LED ay maaayos na OFF at kapag ang output ng pin ay 0 pagkatapos ay i-ON ang LED. Kapag ang output ng PIN ay 0, kumikilos ito tulad ng ground at LED glows.
Paliwanag sa Code
Ang Header REGX52.h ay isinama upang isama ang pangunahing mga kahulugan ng rehistro. Mayroong maraming mga uri ng mga variable at pare-pareho sa naka-embed na C tulad ng int, char, unsigned int, float atbp, madali mong matututunan ang mga ito. Narito ginagamit namin ang unsigned int na ang saklaw ay mula 0 hanggang 65535. Gumagamit kami ng "para sa loop" para sa paglikha ng pagkaantala, upang ang LED ay ON para sa ilang oras (P1_0 = 0, negatibong LED lohika) at at OFF (P1_0 = 1, negatibong LED lohika) para sa naantala na oras. Pangkalahatan kapag ang "para sa loop" ay tumatakbo para sa 1275 beses na ito, nagbibigay ng pagkaantala ng 1ms, kaya nilikha namin ang pagpapaandar na 'pagkaantala' para sa paglikha ng PAG-ULIT at tinawag ito mula sa pangunahing programa (pangunahing ()). Maaari naming ipasa ang PANAHON ng oras (sa ms) habang tinawag ang "pagkaantala" na pag-andar mula sa pangunahing pagpapaandar. Sa programa, ang "Habang (1)" ay nangangahulugang ang programa ay magpapatupad ng walang hanggan.
Maikling ipinaliwanag ko, kung paano 1275 beses na tumatakbo ang "para" na loop ay nagbibigay ng pagkaantala ng 1ms:
Sa 8051, 1 cycle ng makina ay nangangailangan ng 12 kristal na pulso upang maisagawa at gumamit kami ng 11.0592Mhz na kristal.
Kaya't kinakailangan ang oras para sa 1 ikot ng makina: 12 / 11.0592 = 1.085us
Kaya't 1275 * 1.085 = 1.3ms, 1275 beses ng "for" loop ay nagbibigay ng halos 1ms ng pagkaantala.
Ang eksaktong pagkaantala ng oras na nagawa ng "C" na programa ay napakahirap makalkula, kapag ang pagsukat mula sa oscilloscope (CRO), para sa (j = 0; j <1275; j ++) ay nagbibigay ng pagkaantala ng halos 1ms.
Kaya maaari nating maunawaan sa pamamagitan lamang ng pag- interfaced ng LED sa 8051 microcontroller, na sa isang simpleng pag-coding na, maaari nating maiugnay at makontrol ang hardware sa pamamagitan ng software (program) gamit ang microcontroller. Maaari din nating manipulahin ang bawat port at pin ng microcontroller sa pamamagitan ng pagprograma.