LED saskarne ir pirmā lieta, ko mēģināt darīt, sākot darbu ar jebkuru mikrokontrolleru. Tātad, šajā apmācībā mēs saskarsimies ar LED ar 8051 mikrokontrolleru un uzrakstīsim C programmu, lai mirgot LED. Mēs esam izmantojuši ļoti populāru ATMEL mikrokontrolleri no 8051 ģimenes.
Pirms iedziļināties sīkāk, mums vajadzētu iegūt īsu priekšstatu par mikrokontrolleru AT89S52. Tas ir 40 kontaktu mikrokontrolleris, un tajā ir 4 porti (P0, P1, P2, P3), katrā ostā ir 8 kontakti. No programmatūras viedokļa katru portu varam uzskatīt par 8 bitu reģistru. Katrai tapai, kurai ir viena ieejas / izejas līnija, nozīmē, ka katru tapu var izmantot gan ievadei, gan izvadei, ti, lai nolasītu datus no kādas ierīces, piemēram, sensora, vai lai nodrošinātu izvadi kādai izvades ierīcei. Dažām tapām ir dubultā funkcionalitāte, kas ir minēta zemāk esošajā tapu diagrammas iekavās. Funkcionāli dubultā, piemēram, pārtraukt, skaitītājus, taimerus utt.
AT89S52 ir divu veidu atmiņa, pirmkārt, RAM, kurai ir 256 baiti atmiņas, un otrais ir EEPROM (elektroniski izdzēšama un programmējama tikai lasāma atmiņa), kurai ir 8 k baiti atmiņas. RAM tiek izmantota, lai saglabātu datus programmas izpildes laikā, un EEPROM, ko izmanto pašas programmas glabāšanai. EEPROM ir zibatmiņa, kurā mēs ierakstījām programmu.
Shēmas shēma un paskaidrojums
Gaismas diodes pievienošanai mēs izmantojam 1. kontakta 1. kontaktu. In iegulto C programmēšanas mēs varam piekļūt PIN 1 ostas 1, izmantojot P1_0. Mēs esam savienojuši 11.0592MHz frekvences kristāla oscilatoru ar PIN 19 un 18, ti, XTAL1 un XTAL2. Kristāla oscilatoru izmanto pulksteņa impulsu ģenerēšanai, un pulksteņa impulsu izmanto, lai nodrošinātu vidējo laiku aprēķināšanai, kas ir obligāts visu notikumu sinhronizēšanai. Šāda veida kristāli tiek izmantoti gandrīz visās mūsdienu digitālajās iekārtās, piemēram, datoros, pulksteņos utt. Visbiežāk lietotais kristāls ir kvarcs. Tā ir rezonanses oscilatoru ķēde, un kristāla svārstībām tiek izmantoti kondensatori, tāpēc mēs šeit esam savienojuši 22pf kondensatorus. Lai uzzinātu vairāk, varat lasīt par “rezonanses ķēdēm”.
Circuit diagramma LED sasaistei ar 8051 mikrokontrolleru 89S52 ir parādīts iepriekš minēto skaitli. 31. tapa (EA) ir savienota ar Vcc, kas ir aktīva zemā tapa. Tam vajadzētu būt savienotam ar Vcc, kad mēs neizmantojam ārējo atmiņu. Spraudni 30 (ALE) un tapu 29 (PSEN) izmanto, lai mikrokontrolleru pievienotu ārējai atmiņai, un 31. kontakts liek mikrokontrollerim izmantot ārējo atmiņu, kad tas ir pievienots zemei. Mēs neizmantojam ārēju atmiņu, tāpēc Pin31 savienojām ar Vcc.
9. kontakts (RST) ir atiestatīšanas PIN, ko izmanto, lai atiestatītu mikrokontrolleru, un programma tiek atsākta no sākuma. Tas atiestata mikrokontrolleru, kad tas ir savienots ar HIGH. Lai savienotu RST tapu, mēs izmantojām standarta atiestatīšanas shēmu, 10 k omu rezistoru un 1uF kondensatoru.
Tagad interesanta ir tā, ka mēs savienojam LED pretēji, tas nozīmē negatīvu kāju ar mikrokontrollera PIN, jo mikrokontrolleris nesniedz pietiekami daudz enerģijas, lai spīdētu LED, tāpēc šeit LED darbojas pēc negatīvās loģikas, piemēram, kad, tapa P1_0 ir 1 tad gaismas diode tiks noregulēta Izslēgta un, kad kontakta izeja ir 0, tad LED tiks ieslēgts. Ja PIN izeja ir 0, tā darbojas kā zeme un gaismas diode deg.
Kods Paskaidrojums
Lai iekļautu reģistra pamatdefinīcijas, ir iekļauta galvene REGX52.h. Iegultā C ir daudz mainīgo un konstanšu veidu, piemēram, int, char, neparakstīts int, pludiņš utt., Jūs tos varat viegli iemācīties. Šeit mēs izmantojam neparakstītu int, kura diapazons ir no 0 līdz 65535. Mēs izmantojam “for loop”, lai izveidotu aizkavi, lai LED kādu laiku ieslēgtu (P1_0 = 0, negatīva LED loģika) un un OFF (P1_0 = 1)., negatīva LED loģika) aizkavētam laikam. Parasti, ja “for loop” darbojas 1275 reizes, tas nodrošina 1 ms kavēšanos, tāpēc mēs esam izveidojuši funkciju “delay”, lai izveidotu DELAY un izsauktu to no galvenās programmas (main ()). Mēs varam nokavēt DELAY laiku (milisekundēs), vienlaikus izsaucot “delay” funkciju no galvenās funkcijas. Programmā “Kamēr (1)” nozīmē, ka programma tiks izpildīta bezgalīgi.
Es īsi paskaidroju, kā 1275 reižu cikls “par” nodrošina kavēšanos 1 ms:
8051. gadā 1 mašīnas ciklam ir nepieciešami 12 kristāla impulsi, un mums ir jāizmanto 11.0592Mhz kristāls.
Tātad laiks, kas nepieciešams 1 mašīnas ciklam: 12 / 11,0592 = 1,085 us
Tātad 1275 * 1,085 = 1,3 ms, 1275 reizes “par” cilpa dod gandrīz 1 ms kavēšanos.
Precīzu laika aiztures rezultātu, izmantojot “C” programmu, ir ļoti grūti aprēķināt, mērot no osciloskopa (CRO), ja (j = 0; j <1275; j ++) gandrīz 1 ms kavēšanās laiks ir.
Tātad, saprotot LED un 8051 mikrokontrolleru, mēs varam saprast, ka ar vienkāršu kodēšanu mēs varam mijiedarboties un kontrolēt aparatūru, izmantojot programmatūru (programmēšanu), izmantojot mikrokontrolleru. Arī mēs varam manipulēt ar katru mikrokontrollera portu un kontaktu, izmantojot programmēšanu.