Prinsip Mikrokontroler

Arsitektur Mikroprosesor / Mikrokontroler (Jun 2019).

$config[ads_text] not found
Anonim

Prinsip Mikrokontroler

Litar Digital


soalan 1

Bacalah sebut harga berikut, dan kemudian usahakan istilah penjana mikrokontroler untuk melihat apa kaitannya dengan petikan itu:

Saya pergi ke persidangan komputer pertama saya di New York Hilton kira-kira 20 tahun lalu. Apabila seseorang di sana meramalkan pasaran untuk mikropemproses akhirnya akan berjuta-juta, orang lain berkata, "Di mana mereka semua akan pergi" # 1 "> Mendedahkan jawapan Sembunyikan jawapan

Saya akan membenarkan anda melakukan kerja rumah anda atas soalan ini!

Nota:

Bukan sahaja petikan yang lucu, tetapi juga menghairankan, terutamanya kepada kita yang dilahirkan tanpa sebarang komputer di rumah kita sama sekali, kurang banyak komputer peribadi.

Satu perkara yang saya ingin buat dalam mempersiapkan para pelajar untuk meneliti istilah "mikrokontroler" adalah untuk melihat bahawa kebanyakan komputer yang ada tidak termasuk variasi yang biasanya difikirkan oleh label "komputer." Komputer yang berfungsi dengan baik - serta kawalan enjin komputer dalam kereta, peralatan dapur, telefon selular, implan biomedikal, kad hari lahir bercakap, dan peranti kecil lain - jauh lebih kecil dan lebih khusus daripada komputer "tujuan umum" yang digunakan di meja mereka untuk menulis dokumen atau melayari internet. Mereka adalah senyap, tidak kelihatan dari "revolusi komputer" moden, dan dalam banyak cara lebih sesuai untuk memulakan pelajar elektronik digital untuk meneroka daripada rakan-rakan sejagat yang lebih besar.

Soalan 2

Unit mikrokontroler, atau MCU, adalah jenis khusus komputer digital yang digunakan untuk menyediakan penjujukan automatik atau kawalan sistem. Mikrokontroler berbeza dari komputer digital biasa yang sangat kecil (biasanya satu cip litar bersepadu), dengan beberapa pin yang khusus untuk input dan / atau output isyarat digital, dan memori yang terhad. Arahan yang diprogramkan ke dalam memori mikrokontroler memberitahunya bagaimana untuk bertindak balas terhadap keadaan input, dan jenis isyarat yang hendak dihantar kepada output.

Jenis isyarat paling mudah "difahami" oleh mikrokontroler ialah tahap voltan diskret: sama ada "tinggi" (kira-kira + V) atau "rendah" (kira-kira potensi tanah) diukur pada pin tertentu pada cip. Transistor dalaman kepada mikrokontroler menghasilkan isyarat "tinggi" dan "rendah" pada pin output, tindakan mereka dimodelkan oleh suis SPDT untuk kesederhanaan:

Pengawal mikro boleh diprogramkan untuk meniru fungsi pintar logik digital (AND, OR, NAND, NOR, dan sebagainya) sebagai tambahan kepada pelbagai fungsi gabungan dan multivibrator. Satu-satunya had sebenar yang boleh dilakukan oleh pengawal mikro adalah memori (betapa besarnya program boleh disimpan) dan pin input / output pada cip MCU.

Walau bagaimanapun, mikrokontroler sendiri terdiri daripada beribu-ribu (atau jutaan!) Litar pintu logik. Kenapa masuk akal untuk menggunakan mikrokontroler untuk melaksanakan fungsi logik yang sebahagian kecil daripada pintu konstituennya boleh dicapai secara langsung "# 2"> Mendedahkan jawapan Sembunyikan jawapan

Kemudahan konfigurasi dan fleksibiliti!

Nota:

Perhatikan bahawa saya tidak peduli untuk menjelaskan jawapan saya yang sangat singkat. Ini adalah subjek yang saya mahukan pelajar berfikir panjang dan sukar, kerana jawapan sebenar (s) terhadap soalan ini adalah sebab-sebab yang mendorong semua pembangunan peranti digital yang dapat diprogramkan.

Soalan 3

Murid memutuskan untuk membina litar cahaya menggunakan mikrokontroler dan bukan pemasa 555 atau beberapa litar astable yang dilabel keras. Malangnya, ada masalah di suatu tempat. Apabila mula berkuasa, lampu LED dihidupkan selama 1 saat, kemudian dimatikan dan tidak pernah terputus. Satu-satunya cara LED yang pernah kembali adalah jika MCU diset semula atau kuasa disandarkan dan dihidupkan:

Nyatakan Pin0 sebagai output

BEGIN

Tetapkan Pin0 HIGH

Jeda selama 1 saat

Tetapkan Pin0 LOW

END

Seorang pelajar yang lain, apabila meminta pertolongan, mengubah penyenaraian program dan menghantarnya semula dari komputer peribadi di mana ia sedang diedit kepada mikrokontroler, melalui kabel pengaturcaraan. Senarai program kini berbunyi seperti berikut:

Nyatakan Pin0 sebagai output

LOOP

Tetapkan Pin0 HIGH

Jeda selama 1 saat

Tetapkan Pin0 LOW

ENDLOOP

Apabila MCU diset semula dengan program baru, LED mula berkelip dan mati. . . lebih kurang. LED adalah "pada" kebanyakan masa, tetapi sekali setiap kali ia dimatikan dan kemudian segera kembali. Sebenarnya, tempoh "off" begitu singkat ia tidak dapat dilihat.

Apa yang pelajar mahukan adalah kitaran tugas 50%: "pada" selama 1 saat, kemudian "off" selama 1 saat, mengulangi kitaran itu selama-lamanya. Pertama, terangkan pentingnya pengubahsuaian program rakan sekelas, dan kemudian ubah semula penyenaraian program supaya LED melakukan apa yang pelajar mahukan.

Mendedahkan jawapan Sembunyikan jawapan

Satu "gelung" diperlukan untuk MCU mengulangi jeda / jeda / mati. Apa yang diperlukan sekarang ialah kelewatan masa lain dalam gelung:

Nyatakan Pin0 sebagai output

LOOP

Tetapkan Pin0 HIGH

Jeda selama 1 saat

Tetapkan Pin0 LOW

Jeda selama 1 saat ( baris baru kod )

ENDLOOP

Nota:

Tujuan soalan ini adalah untuk pelajar menyedari bahawa mikrokontroler mesti diberitahu untuk "gelung" melalui arahan berkedip cahaya. Benar-benar, ini hanyalah gambaran gelung dalam konteks praktikal.

Sekiranya anda tertanya-tanya mengapa saya menulis dalam pseudocode, berikut adalah beberapa sebab:

Tiada pengalaman terdahulu dengan pengaturcaraan yang diperlukan untuk memahami pseudocode
Ia tidak pernah keluar dari gaya
Perkakasan bebas
Tiada ralat sintaks

Jika saya telah membuat keputusan untuk mempamerkan kod yang sebenarnya akan dijalankan dalam pengawal mikrokontroler, saya akan menjadi soalan kepada usang. Dengan cara ini, saya dapat menyampaikan semangat program tanpa dirantai kepada standard pengaturcaraan yang sebenar. Satu-satunya kelemahan ialah pelajar perlu menterjemahkan pseudocode saya kepada kod sebenar yang sebenarnya akan dijalankan pada perkakasan MCU tertentu mereka, tetapi itu adalah masalah yang dijamin untuk beberapa orang tanpa mengira bahasa pengaturcaraan sebenar yang saya pilih.

Sudah tentu, saya dapat mengambil pendekatan Donald Knuth dan mencipta perkakasan dan arahan instrumen saya sendiri (khayalan). . .

Soalan 4

Seorang pelajar memutuskan untuk membina litar cahaya menggunakan mikropengawal. LED mestilah berkelip dan matikan hanya apabila suis tombol tekan tertekan. Ia sepatutnya mematikan apabila suis dilepaskan:

Nyatakan Pin0 sebagai output

Katakan Pin1 sebagai input

WHILE Pin1 adalah TINGGI

Tetapkan Pin0 HIGH

Jeda selama 0.5 saat

Tetapkan Pin0 LOW

Jeda selama 0.5 saat

ENDWHILE

LED berkelip dan mati seketika selagi suis tombol tekan diadakan apabila MCU dikuasakan atau diset semula. Sebaik sahaja suis dikeluarkan, LED dimatikan dan tidak akan kembali. Jika suis tidak pernah ditekan semasa permulaan, LED tidak akan datang! Jelaskan apa yang sedang berlaku, dan ubah suai program yang diperlukan untuk menyelesaikan masalah ini.

Mendedahkan jawapan Sembunyikan jawapan

Gelung "WHILE" bersyarat perlu diletakkan di dalam gelung tanpa syarat:

Nyatakan Pin0 sebagai output

Katakan Pin1 sebagai input

LOOP

WHILE Pin1 adalah TINGGI

Tetapkan Pin0 HIGH

Jeda selama 0.5 saat

Tetapkan Pin0 LOW

Jeda selama 0.5 saat

ENDWHILE

ENDLOOP

Persoalan susulan: tujuan apa resistor R pulldown berfungsi dalam litar pushbutton "nota tersembunyi"> Nota:

Tujuan soalan ini adalah untuk pelajar memahami apa gelung "SELURUH" mewakili secara praktikal: gelung dengan syarat. Ia juga berbeza daripada gelung bersyarat terhadap gelung tanpa syarat, dan menunjukkan bagaimana kedua-dua memainkan peranan dalam sistem interaktif seperti yang satu ini.

Sekiranya anda tertanya-tanya mengapa saya menulis dalam pseudocode, berikut adalah beberapa sebab:

Tiada pengalaman terdahulu dengan pengaturcaraan yang diperlukan untuk memahami pseudocode
Ia tidak pernah keluar dari gaya
Perkakasan bebas
Tiada ralat sintaks

Jika saya telah membuat keputusan untuk mempamerkan kod yang sebenarnya akan dijalankan dalam pengawal mikrokontroler, saya akan menjadi soalan kepada usang. Dengan cara ini, saya dapat menyampaikan semangat program tanpa dirantai kepada standard pengaturcaraan yang sebenar. Satu-satunya kelemahan ialah pelajar perlu menterjemahkan pseudocode saya kepada kod sebenar yang sebenarnya akan dijalankan pada perkakasan MCU tertentu mereka, tetapi itu adalah masalah yang dijamin untuk beberapa orang tanpa mengira bahasa pengaturcaraan sebenar yang saya pilih.

Sudah tentu, saya dapat mengambil pendekatan Donald Knuth dan mencipta perkakasan dan arahan instrumen saya sendiri (khayalan). . .

Soalan 5

Periksa rajah skematik dan penyenaraian program berikut (yang ditulis dalam "pseudocode" dan bukan bahasa pengaturcaraan formal) untuk menentukan jenis fungsi logik asas yang sedang dilaksanakan dalam unit mikrokontroler ini:

Nyatakan Pin0 sebagai output

Isytiharkan Pin1 dan Pin2 sebagai input

LOOP

JIKA Pin1 TINGGI, tetapkan Pin0 HIGH

ELSEIF Pin2 TINGGI, tetapkan Pin0 TINGGI

ELSE menetapkan Pin0 LOW

ENDIF

ENDLOOP

Mendedahkan jawapan Sembunyikan jawapan

Mikrokontroler ini melaksanakan fungsi ATAU logik.

Nota:

Walaupun fungsi logik ini boleh dilaksanakan dengan lebih mudah dan lebih murah dalam logik (gate) logik, tujuannya adalah untuk mendapatkan pelajar berfikir tentang pelaksanaan operasi logik dengan set arahan yang dijujukan dalam peranti yang boleh diprogramkan (MCU). Ini adalah lonjakan konseptual, asas tetapi sangat penting.

Sekiranya anda tertanya-tanya mengapa saya menulis dalam pseudocode, berikut adalah beberapa sebab:

Tiada pengalaman terdahulu dengan pengaturcaraan yang diperlukan untuk memahami pseudocode
Ia tidak pernah keluar dari gaya
Perkakasan bebas
Tiada ralat sintaks

Jika saya telah membuat keputusan untuk mempamerkan kod yang sebenarnya akan dijalankan dalam pengawal mikrokontroler, saya akan menjadi soalan kepada usang. Dengan cara ini, saya dapat menyampaikan semangat program tanpa dirantai kepada standard pengaturcaraan yang sebenar. Satu-satunya kelemahan ialah pelajar perlu menterjemahkan pseudocode saya kepada kod sebenar yang sebenarnya akan dijalankan pada perkakasan MCU tertentu mereka, tetapi itu adalah masalah yang dijamin untuk beberapa orang tanpa mengira bahasa pengaturcaraan sebenar yang saya pilih.

Sudah tentu, saya dapat mengambil pendekatan Donald Knuth dan mencipta perkakasan dan arahan instrumen saya sendiri (khayalan). . .

Soalan 6

Periksa rajah skematik dan penyenaraian program berikut (yang ditulis dalam "pseudocode" dan bukan bahasa pengaturcaraan formal) untuk menentukan jenis fungsi logik asas yang sedang dilaksanakan dalam unit mikrokontroler ini:

Nyatakan Pin0 sebagai output

Isytiharkan Pin1 dan Pin2 sebagai input

LOOP

JIKA Pin1 adalah LOW, tetapkan Pin0 LOW

ELSEIF Pin2 adalah LOW, tetapkan Pin0 LOW

ELSE menetapkan Pin0 HIGH

ENDIF

ENDLOOP

Mendedahkan jawapan Sembunyikan jawapan

Mikrokontroler ini melaksanakan fungsi logik DAN.

Nota:

Walaupun fungsi logik ini boleh dilaksanakan dengan lebih mudah dan lebih murah dalam logik (gate) logik, tujuannya adalah untuk mendapatkan pelajar berfikir tentang pelaksanaan operasi logik dengan set arahan yang dijujukan dalam peranti yang boleh diprogramkan (MCU). Ini adalah lonjakan konseptual, asas tetapi sangat penting.

Sekiranya anda tertanya-tanya mengapa saya menulis dalam pseudocode, berikut adalah beberapa sebab:

Tiada pengalaman terdahulu dengan pengaturcaraan yang diperlukan untuk memahami pseudocode
Ia tidak pernah keluar dari gaya
Perkakasan bebas
Tiada ralat sintaks

Jika saya telah membuat keputusan untuk mempamerkan kod yang sebenarnya akan dijalankan dalam pengawal mikrokontroler, saya akan menjadi soalan kepada usang. Dengan cara ini, saya dapat menyampaikan semangat program tanpa dirantai kepada standard pengaturcaraan yang sebenar. Satu-satunya kelemahan ialah pelajar perlu menterjemahkan pseudocode saya kepada kod sebenar yang sebenarnya akan dijalankan pada perkakasan MCU tertentu mereka, tetapi itu adalah masalah yang dijamin untuk beberapa orang tanpa mengira bahasa pengaturcaraan sebenar yang saya pilih.

Sudah tentu, saya dapat mengambil pendekatan Donald Knuth dan mencipta perkakasan dan arahan instrumen saya sendiri (khayalan). . .

Soalan 7

Periksa rajah skematik dan penyenaraian program berikut (yang ditulis dalam "pseudocode" dan bukan bahasa pengaturcaraan formal) untuk menentukan jenis fungsi logik asas yang sedang dilaksanakan dalam unit mikrokontroler ini:

Nyatakan Pin0 sebagai output

Isytiharkan Pin1 dan Pin2 sebagai input

LOOP

JIKA Pin1 adalah LOW, tetapkan Pin0 HIGH

ELSEIF Pin2 adalah LOW, tetapkan Pin0 HIGH

ELSE menetapkan Pin0 LOW

ENDIF

ENDLOOP

Mendedahkan jawapan Sembunyikan jawapan

Mikrokontroler ini melaksanakan fungsi NAND yang logik.

Nota:

Walaupun fungsi logik ini boleh dilaksanakan dengan lebih mudah dan lebih murah dalam logik (gate) logik, tujuannya adalah untuk mendapatkan pelajar berfikir tentang pelaksanaan operasi logik dengan set arahan yang dijujukan dalam peranti yang boleh diprogramkan (MCU). Ini adalah lonjakan konseptual, asas tetapi sangat penting.

Sekiranya anda tertanya-tanya mengapa saya menulis dalam pseudocode, berikut adalah beberapa sebab:

Tiada pengalaman terdahulu dengan pengaturcaraan yang diperlukan untuk memahami pseudocode
Ia tidak pernah keluar dari gaya
Perkakasan bebas
Tiada ralat sintaks

Jika saya telah membuat keputusan untuk mempamerkan kod yang sebenarnya akan dijalankan dalam pengawal mikrokontroler, saya akan menjadi soalan kepada usang. Dengan cara ini, saya dapat menyampaikan semangat program tanpa dirantai kepada standard pengaturcaraan yang sebenar. Satu-satunya kelemahan ialah pelajar perlu menterjemahkan pseudocode saya kepada kod sebenar yang sebenarnya akan dijalankan pada perkakasan MCU tertentu mereka, tetapi itu adalah masalah yang dijamin untuk beberapa orang tanpa mengira bahasa pengaturcaraan sebenar yang saya pilih.

Sudah tentu, saya dapat mengambil pendekatan Donald Knuth dan mencipta perkakasan dan arahan instrumen saya sendiri (khayalan). . .

Soalan 8

Periksa rajah skematik dan penyenaraian program berikut (yang ditulis dalam "pseudocode" dan bukan bahasa pengaturcaraan formal) untuk menentukan jenis fungsi logik asas yang sedang dilaksanakan dalam unit mikrokontroler ini:

Nyatakan Pin0 sebagai output

Isytiharkan Pin1 dan Pin2 sebagai input

LOOP

JIKA Pin1 TINGGI, tetapkan Pin0 LOW

ELSEIF Pin2 adalah TINGGI, menetapkan Pin0 LOW

ELSE menetapkan Pin0 HIGH

ENDIF

ENDLOOP

Mendedahkan jawapan Sembunyikan jawapan

Mikrokontroler ini melaksanakan fungsi logikal NOR.

Nota:

Walaupun fungsi logik ini boleh dilaksanakan dengan lebih mudah dan lebih murah dalam logik (gate) logik, tujuannya adalah untuk mendapatkan pelajar berfikir tentang pelaksanaan operasi logik dengan set arahan yang dijujukan dalam peranti yang boleh diprogramkan (MCU). Ini adalah lonjakan konseptual, asas tetapi sangat penting.

Sekiranya anda tertanya-tanya mengapa saya menulis dalam pseudocode, berikut adalah beberapa sebab:

Tiada pengalaman terdahulu dengan pengaturcaraan yang diperlukan untuk memahami pseudocode
Ia tidak pernah keluar dari gaya
Perkakasan bebas
Tiada ralat sintaks

Jika saya telah membuat keputusan untuk mempamerkan kod yang sebenarnya akan dijalankan dalam pengawal mikrokontroler, saya akan menjadi soalan kepada usang. Dengan cara ini, saya dapat menyampaikan semangat program tanpa dirantai kepada standard pengaturcaraan yang sebenar. Satu-satunya kelemahan ialah pelajar perlu menterjemahkan pseudocode saya kepada kod sebenar yang sebenarnya akan dijalankan pada perkakasan MCU tertentu mereka, tetapi itu adalah masalah yang dijamin untuk beberapa orang tanpa mengira bahasa pengaturcaraan sebenar yang saya pilih.

Sudah tentu, saya dapat mengambil pendekatan Donald Knuth dan mencipta perkakasan dan arahan instrumen saya sendiri (khayalan). . .

Soalan 9

Periksa rajah skematik dan penyenaraian program berikut (yang ditulis dalam "pseudocode" dan bukan bahasa pengaturcaraan formal) untuk menentukan jenis fungsi logik asas yang sedang dilaksanakan dalam unit mikrokontroler ini:

Nyatakan Pin0 sebagai output

Isytiharkan Pin1 dan Pin2 sebagai input

LOOP

JIKA Pin1 sama dengan Pin2, tetapkan Pin0 LOW

ELSE menetapkan Pin0 HIGH

ENDIF

ENDLOOP

Mendedahkan jawapan Sembunyikan jawapan

Mikrokontroler ini melaksanakan fungsi Eksklusif-OR logik.

Nota:

Walaupun fungsi logik ini boleh dilaksanakan dengan lebih mudah dan lebih murah dalam logik (gate) logik, tujuannya adalah untuk mendapatkan pelajar berfikir tentang pelaksanaan operasi logik dengan set arahan yang dijujukan dalam peranti yang boleh diprogramkan (MCU). Ini adalah lonjakan konseptual, asas tetapi sangat penting.

Sekiranya anda tertanya-tanya mengapa saya menulis dalam pseudocode, berikut adalah beberapa sebab:

Tiada pengalaman terdahulu dengan pengaturcaraan yang diperlukan untuk memahami pseudocode
Ia tidak pernah keluar dari gaya
Perkakasan bebas
Tiada ralat sintaks

Jika saya telah membuat keputusan untuk mempamerkan kod yang sebenarnya akan dijalankan dalam pengawal mikrokontroler, saya akan menjadi soalan kepada usang. Dengan cara ini, saya dapat menyampaikan semangat program tanpa dirantai kepada standard pengaturcaraan yang sebenar. Satu-satunya kelemahan ialah pelajar perlu menterjemahkan pseudocode saya kepada kod sebenar yang sebenarnya akan dijalankan pada perkakasan MCU tertentu mereka, tetapi itu adalah masalah yang dijamin untuk beberapa orang tanpa mengira bahasa pengaturcaraan sebenar yang saya pilih.

Sudah tentu, saya dapat mengambil pendekatan Donald Knuth dan mencipta perkakasan dan arahan instrumen saya sendiri (khayalan). . .

Soalan 10

Mikrokontroler adalah jenis khusus komputer digital yang digunakan untuk menyediakan penjujukan automatik atau kawalan sistem. Mikrokontroler berbeza dari komputer digital biasa yang sangat kecil (biasanya satu cip litar bersepadu), dengan beberapa pin yang khusus untuk input dan / atau output isyarat digital, dan memori yang terhad. Arahan yang diprogramkan ke dalam memori mikrokontroler memberitahunya bagaimana untuk bertindak balas terhadap keadaan input, dan jenis isyarat yang hendak dihantar kepada output.

Jenis isyarat paling mudah "difahami" oleh mikrokontroler ialah tahap voltan diskret: sama ada "tinggi" (kira-kira + V) atau "rendah" (kira-kira potensi tanah) diukur pada pin tertentu pada cip. Transistor dalaman kepada mikrokontroler menghasilkan isyarat "tinggi" dan "rendah" pada pin output, tindakan mereka dimodelkan oleh suis SPDT untuk kesederhanaan:

Ia tidak memerlukan banyak imaginasi untuk membayangkan bagaimana mikrokontroler boleh digunakan dalam sistem praktikal: menghidupkan dan mematikan peranti luaran mengikut pin dan / atau keadaan masa input. Contohnya termasuk kawalan perkakas (pemasa oven, pengawal suhu), kawalan enjin automotif (penyuntik bahan api, pemasaan pencucuhan, sistem diagnostik diri), dan robotik (servo actuation, pemprosesan deria, logik navigasi). Sebenarnya, jika anda tinggal di negara perindustrian, anda mungkin memiliki beberapa mikrosontroler (tertanam dalam pelbagai peranti) dan tidak menyedarinya!

Salah satu had praktikal mikrokontroler, walau bagaimanapun, ialah had arus output rendah mereka: biasanya kurang daripada 50 mA. Pengecutan litar dalaman mikrokontroler melarang kemasukan transistor output yang mempunyai penarafan kuasa yang penting, jadi kami mesti menyambungkan transistor ke pin output untuk memacu sebarang beban penting.

Katakan kami ingin mempunyai pemacu mikrokontroler injap solenoid DC yang memerlukan 2 amps semasa pada 24 volt. Satu penyelesaian mudah ialah menggunakan transistor NPN sebagai peranti "interposing" antara mikropengawal dan injap solenoid seperti ini:

Malangnya, BJT tunggal tidak memberikan keuntungan semasa yang cukup untuk melancarkan solenoid. Dengan 20 mA output semasa dari pin mikrokontroler dan β hanya 25 (biasa untuk transistor kuasa), ini hanya memberikan kira-kira 500 mA kepada gegelung solenoid.

Penyelesaian masalah ini melibatkan dua transistor bipolar dalam susunan pasangan Darlington :

Walau bagaimanapun, terdapat satu penyelesaian lain - menggantikan BJT tunggal dengan MOSFET tunggal, yang tidak memerlukan arus memandu sama sekali. Tunjukkan bagaimana ini boleh dilakukan:

Mendedahkan jawapan Sembunyikan jawapan

Nota:

Tujuan persoalan panjang ini bukan sekadar untuk mengetahui bagaimana cara menggantikan BJT dengan MOSFET, tetapi juga memperkenalkannya kepada konsep mikrokontroler, yang merupakan alat yang semakin penting dalam sistem elektronik moden.

Sesetengah pelajar mungkin bertanya tentang tujuan diod dalam litar ini. Jelaskan kepada mereka bahawa ini adalah diod commutating, kadang-kadang dipanggil diod pemutar bebas, yang diperlukan untuk mengelakkan transistor daripada dilebih-lebihkan oleh transients voltan tinggi yang dihasilkan oleh gegelung solenoid apabila de-tenaga ("inductive sickback").

Soalan 11

Mikrokontroler digunakan untuk menyediakan pembetulan faktor kuasa automatik untuk beban AC:

Periksa rajah skema ini, kemudian jawab soalan-soalan berikut:

Bagaimana mikrokontroler dapat merasakan faktor kuasa beban AC "# 11"> Menerangkan jawapan Sembunyikan jawapan

Saya akan membiarkan anda dan rakan sekelas anda membincangkan bagaimana MCU dapat mengesan faktor kuasa. Terdapat lebih daripada satu penyelesaian yang sah untuk melakukannya!

Kapasitor 20 μF dan 80 μF kedua-duanya akan terlibat: Keluaran DCU DCBA akan menjadi 0101 (perhatikan bahawa output mesti rendah untuk memberi kuasa geganti masing-masing!). Dengan output ini, faktor kuasa yang diperbetulkan ialah 0.99939 dan bukannya 0.77 asal.

Nota:

Persoalan ini menimbulkan beberapa konsep menarik untuk semakan, serta mensintesis konsep lama dan baru dalam elektronik untuk pelajar anda pertimbangkan. Pastikan untuk memberi banyak masa untuk perbincangan mengenai soalan ini, serta apa-apa masa kajian yang diperlukan untuk pengiraan faktor kuasa!

Soalan 12

Mikrokontroler ini diprogramkan untuk mengubah kecerahan yang dilihat dari LED dengan cara kawalan modulasi denyut nadi (PWM) output pin 0:

Nyatakan Pin0 sebagai output

Nyatakan X sebagai pemboleh ubah integer

LOOP

Tetapkan Pin0 LOW

Jeda untuk mikrosecond 100 - X

Tetapkan Pin0 HIGH

Jeda untuk microsecond X

ENDLOOP

Tentukan apa nilai X adalah untuk menetapkan kecerahan LED pada 80%, dan juga kekerapan isyarat PWM.

Mendedahkan jawapan Sembunyikan jawapan

Soalan ini mungkin paling baik dijawab dengan melukis rajah masa Pin 0, dengan catatan masa 100 - X μs dan X μs.

Soalan susulan: apakah resolusi kawalan PWM ini, memandangkan X adalah pembolehubah integer "nota tersembunyi"> Nota:

Modulasi lebar pulse (PWM) adalah cara yang sangat biasa dan berguna untuk menghasilkan output analog daripada mikrokontroler (atau litar elektronik digital lain) yang hanya mampu menghasilkan output voltan "tinggi" dan "rendah". Dengan PWM, masa (atau lebih khusus, kitaran tugas ) adalah domain analog, manakala amplitud ialah domain digital. Ini membolehkan kita untuk "menyelinap" isyarat analog melalui saluran data digital (on-off).

Sekiranya anda tertanya-tanya mengapa saya menulis dalam pseudocode, berikut adalah beberapa sebab:

Tiada pengalaman terdahulu dengan pengaturcaraan yang diperlukan untuk memahami pseudocode
Ia tidak pernah keluar dari gaya
Perkakasan bebas
Tiada ralat sintaks

Jika saya telah membuat keputusan untuk mempamerkan kod yang sebenarnya akan dijalankan dalam pengawal mikrokontroler, saya akan menjadi soalan kepada usang. Dengan cara ini, saya dapat menyampaikan semangat program tanpa dirantai kepada standard pengaturcaraan yang sebenar. Satu-satunya kelemahan ialah pelajar perlu menterjemahkan pseudocode saya kepada kod sebenar yang sebenarnya akan dijalankan pada perkakasan MCU tertentu mereka, tetapi itu adalah masalah yang dijamin untuk beberapa orang tanpa mengira bahasa pengaturcaraan sebenar yang saya pilih.

Sudah tentu, saya dapat mengambil pendekatan Donald Knuth dan mencipta perkakasan dan arahan instrumen saya sendiri (khayalan). . .

Soalan 13

Banyak mikrokontroler dilengkapi dengan fungsi PWM terbina dalam, supaya anda tidak perlu kodkan algoritma PWM tersuai anda sendiri. Fakta ini menunjuk kepada populariti modulasi lebar denyut sebagai skema kawalan. Terangkan mengapa PWM begitu popular, dan berikan beberapa contoh praktikal bagaimana ia boleh digunakan.

Mendedahkan jawapan Sembunyikan jawapan

Saya akan membiarkan anda melakukan penyelidikan sendiri untuk soalan ini! Jawapannya adalah / tidak sukar dicari.

Nota:

Modulasi lebar pulse (PWM) adalah cara yang sangat biasa dan berguna untuk menghasilkan output analog daripada mikrokontroler (atau litar elektronik digital lain) yang hanya mampu menghasilkan output voltan "tinggi" dan "rendah". Dengan PWM, masa (atau lebih khusus, kitaran tugas ) adalah domain analog, manakala amplitud ialah domain digital. Ini membolehkan kita untuk "menyelinap" isyarat analog melalui saluran data digital (on-off).

Soalan 14

Modulasi lebar pulse (PWM) tidak hanya berguna untuk menghasilkan output analog dengan mikrokontroler, tetapi juga berguna untuk menerima input analog melalui pin yang hanya mengendalikan tahap voltan digital on-off (tinggi rendah). Litar berikut mengambil isyarat voltan analog ke komparator, menghasilkan PWM, kemudian menghantar isyarat PWM kepada input mikropengawal:

Isikan Pin0 sebagai input

Deklarasikan Last_Pin0 sebagai pemboleh ubah boolean

Nyatakan Time_High sebagai pemboleh ubah integer

Deklarasikan Time_Low sebagai pemboleh ubah integer

Deklarasikan Duty_Cycle sebagai pemboleh ubah terapung

Tetapkan Time_High dan Time_Low keduanya kepada sifar

LOOP

Tetapkan Last_Pin0 sama dengan Pin0

Jika Pin0 adalah TINGGI, kenaikan Time_High mengikut satu

Jika Pin0 adalah LOW, kenaikan Time_Low dengan satu

Jika Last_Pin0 tidak sama dengan Pin0, pergi ke SUBROUTINE

ENDLOOP

SUBROUTINE

Set Duty_Cycle bersamaan dengan (Time_High / (Time_High + Time_Low))

Tetapkan Time_High dan Time_Low keduanya kepada sifar

Kembali ke gelung panggilan

ENDSUBROUTINE

Terangkan bagaimana program ini berfungsi. Petunjuk: pembolehubah boolean Last_Pin0 digunakan untuk mengesan apabila keadaan Pin0 telah berubah daripada 0 hingga 1 atau dari 1 hingga 0.

Mendedahkan jawapan Sembunyikan jawapan

Bahagian yang paling rumit dari program ini adalah memikirkan fungsi pembolehubah Last_Pin0, dan bagaimana ia menentukan masa untuk melaksanakan subrutin. Saya amat mengesyorkan anda melakukan "percubaan pemikiran" dengan isyarat input gelombang yang perlahan kepada mikrokontroler, memeriksa bagaimana pembolehubah Time_High dan Time_Low menjadi bertambah dengan keadaan gelombang persegi.

Nota:

Modulasi lebar pulse (PWM) adalah cara yang sangat biasa dan berguna untuk menghasilkan output analog daripada mikrokontroler (atau litar elektronik digital lain) yang hanya mampu menghasilkan output voltan "tinggi" dan "rendah". Di sini, kita juga melihat ia digunakan sebagai bentuk modulasi isyarat masukan . Dengan PWM, masa (atau lebih khusus, kitaran tugas ) adalah domain analog, manakala amplitud ialah domain digital. Ini membolehkan kita untuk "menyelinap" isyarat analog melalui saluran data digital (on-off).

Sekiranya anda tertanya-tanya mengapa saya menulis dalam pseudocode, berikut adalah beberapa sebab:

Tiada pengalaman terdahulu dengan pengaturcaraan yang diperlukan untuk memahami pseudocode
Ia tidak pernah keluar dari gaya
Perkakasan bebas
Tiada ralat sintaks

Jika saya telah membuat keputusan untuk mempamerkan kod yang sebenarnya akan dijalankan dalam pengawal mikrokontroler, saya akan menjadi soalan kepada usang. Dengan cara ini, saya dapat menyampaikan semangat program tanpa dirantai kepada standard pengaturcaraan yang sebenar. Satu-satunya kelemahan ialah pelajar perlu menterjemahkan pseudocode saya kepada kod sebenar yang sebenarnya akan dijalankan pada perkakasan MCU tertentu mereka, tetapi itu adalah masalah yang dijamin untuk beberapa orang tanpa mengira bahasa pengaturcaraan sebenar yang saya pilih.

Sudah tentu, saya dapat mengambil pendekatan Donald Knuth dan mencipta perkakasan dan arahan instrumen saya sendiri (khayalan). . .

Soalan 15

Komputer digital berkomunikasi dengan peranti luaran melalui port : set terminal biasanya diatur dalam kumpulan 4, 8, 16, atau lebih (4 bit = 1 nybble, 8 bit = 1 bait, 16 bit = 2 bait). Terminal ini boleh ditetapkan ke keadaan logik tinggi atau rendah dengan menulis program untuk komputer yang menghantar nilai berangka ke port. Sebagai contoh, inilah ilustrasi mikrokontroler yang diarahkan untuk menghantar nombor heksadesimal F3 ke port A dan 2C ke port B:

Katakan kami ingin menggunakan empat bit atas port A (pin 7, 6, 5, dan 4) untuk menggerakkan gegelung motor stepper dalam urutan lapan langkah ini:

Langkah 1:
0001
Langkah 2:
0011
Langkah 3:
0010
Langkah 4:
0110
Langkah 5:
0100
Langkah 6:
1100
Langkah 7:
1000
Langkah 8:
1001

Memandangkan setiap pin menjadi tinggi, ia memacu kuasa MOSFET pada, yang menghantar arus melalui gegelung motor stepper masing-masing. Dengan mengikuti urutan "shift" seperti yang ditunjukkan, motor akan berputar jumlah kecil untuk setiap kitaran.

Tulis jujukan nombor yang diperlukan untuk dihantar ke port A untuk menghasilkan urutan tertentu bagi pergeseran bit, dalam heksadesimal. Biarkan empat bit bawah port A semua dalam keadaan logik rendah.

Mendedahkan jawapan Sembunyikan jawapan

Langkah 1:
10 16
Langkah 2:
30 16
Langkah 3:
20 16
Langkah 4:
60 16
Langkah 5:
40 16
Langkah 6:
C0 16
Langkah 7:
80 16
Langkah 8:
90 16

Soalan susulan: tulis urutan yang sama dalam perpuluhan dan bukannya perenambelasan:

Langkah 1:
Langkah 2:
Langkah 3:
Langkah 4:
Langkah 5:
Langkah 6:
Langkah 7:
Langkah 8:

Nota:

Walaupun akar soalan ini tidak lebih daripada penukaran binari-ke-heksadesimal, ia juga memperkenalkan pelajar kepada konsep mengawal keadaan bit di port mikrokomputer dengan menulis nilai hex. Oleh itu, soalan ini sangat praktikal!

Sekiranya pelajar bertanya, beritahu mereka bahawa awalan tanda dolar kadang-kadang digunakan untuk menandakan nombor heksadesimal. Masa lain, awalan 0x digunakan (contohnya, $ F3 dan 0xF3 bermaksud perkara yang sama).

Soalan 16

Periksa rajah skematik dan penyenaraian program berikut (yang ditulis dalam "pseudocode" dan bukan bahasa pengaturcaraan formal) untuk menentukan jenis fungsi logik asas yang sedang dilaksanakan dalam unit mikrokontroler ini:

Nyatakan Pin0 sebagai output

Isytiharkan Pin1 dan Pin2 sebagai input

LOOP

JIKA Pin1 sama dengan Pin2, tetapkan Pin0 HIGH

ELSE menetapkan Pin0 LOW

ENDIF

ENDLOOP

Mendedahkan jawapan Sembunyikan jawapan

Mikrokontroler ini melaksanakan fungsi Eksklusif-NOR logikal.

Nota:

Walaupun fungsi logik ini boleh dilaksanakan dengan lebih mudah dan lebih murah dalam logik (gate) logik, tujuannya adalah untuk mendapatkan pelajar berfikir tentang pelaksanaan operasi logik dengan set arahan yang dijujukan dalam peranti yang boleh diprogramkan (MCU). Ini adalah lonjakan konseptual, asas tetapi sangat penting.

Sekiranya anda tertanya-tanya mengapa saya menulis dalam pseudocode, berikut adalah beberapa sebab:

Tiada pengalaman terdahulu dengan pengaturcaraan yang diperlukan untuk memahami pseudocode
Ia tidak pernah keluar dari gaya
Perkakasan bebas
Tiada ralat sintaks

Jika saya telah membuat keputusan untuk mempamerkan kod yang sebenarnya akan dijalankan dalam pengawal mikrokontroler, saya akan menjadi soalan kepada usang. Dengan cara ini, saya dapat menyampaikan semangat program tanpa dirantai kepada standard pengaturcaraan yang sebenar. Satu-satunya kelemahan ialah pelajar perlu menterjemahkan pseudocode saya kepada kod sebenar yang sebenarnya akan dijalankan pada perkakasan MCU tertentu mereka, tetapi itu adalah masalah yang dijamin untuk beberapa orang tanpa mengira bahasa pengaturcaraan sebenar yang saya pilih.

Sudah tentu, saya dapat mengambil pendekatan Donald Knuth dan mencipta perkakasan dan arahan instrumen saya sendiri (khayalan). . .

Soalan 17

Komputer digital berkomunikasi dengan peranti luaran melalui port : set terminal biasanya diatur dalam kumpulan 4, 8, 16, atau lebih. Terminal ini boleh ditetapkan ke keadaan logik tinggi atau rendah dengan menulis program untuk komputer yang menghantar nilai berangka ke port. Sebagai contoh, di sini adalah ilustrasi mikrokontroler yang diarahkan untuk menghantar nombor heksadesimal 2B ke port A dan A9 ke port B:

Katakan kami ingin menggunakan tujuh bit pertama setiap pelabuhan (pin 0 hingga 6) untuk memacu dua 7-segmen, paparan umum-katod, dan bukannya menggunakan IC decoder BCD-to-7-segmen:

Tulis nilai hexadecimal yang diperlukan untuk output pada port A dan B untuk menghasilkan paparan "42" pada dua unit paparan 7 segmen.

Mendedahkan jawapan Sembunyikan jawapan

Port A = 5B 16 Port B = 66 16

Perhatikan bahawa jawapan berikut juga sah:

Port A = DB 16 Port B = E6 16

Soalan susulan: tulis nilai-nilai angka yang sama dalam perpuluhan dan bukannya heksadesimal.

Nota:

Asas soalan ini sedikit lebih daripada penukaran binari-ke-heksadesimal, tetapi ia juga memperkenalkan pelajar kepada konsep mengawal keadaan bit di port mikrokomputer dengan menulis nilai hex. Oleh itu, soalan ini sangat praktikal! Walaupun tidak mungkin seseorang akan meninggalkan dekoder BCD-ke-7-segmen apabila membina paparan perpuluhan dua digit (kerana melakukannya dengan cara ini menggunakan lebih banyak microcontroller yang lebih mahal I / O pin), tentunya mungkin! Terdapat banyak aplikasi selain daripada ini di mana anda perlu mendapatkan mikrokontroler untuk menghasilkan gabungan tertentu negeri-negeri yang tinggi dan rendah, dan cara terpantas untuk memprogram ini adalah untuk mengeluarkan nilai hex ke port.

Sekiranya pelajar bertanya, beritahu mereka bahawa awalan tanda dolar kadang-kadang digunakan untuk menandakan nombor heksadesimal. Masa lain, awalan 0x digunakan (contohnya, $ F3 dan 0xF3 bermaksud perkara yang sama).

Soalan 18

Satu kaedah memandu piksel dalam paparan berasaskan grid adalah untuk mengatur piksel ke baris dan lajur, kemudian memilih piksel masing-masing untuk pencahayaan oleh persimpangan garis baris tertentu dan baris lajur tertentu. Dalam contoh ini, kita mengawal grid 8 × 8 LED dengan dua pelabuhan 8-bit (1-bait) pengawal mikrokontroler:

Ambil perhatian bahawa keadaan tinggi diperlukan pada salah satu pin B port untuk mengaktifkan barisan, dan keadaan yang rendah diperlukan pada salah satu pin A untuk mengaktifkan lajur, kerana anod LED menyambung ke port A dan katod LED bersambung ke port B.

Tentukan kod heksadesimal yang kita perlu output pada port A dan B untuk memberi tenaga kepada LED di sudut kiri bawah grid 8 × 8.

Port A =

Port B =

Mendedahkan jawapan Sembunyikan jawapan

Port A = $ FE

Port B = $ 80

Nota:

Soalan 19

Periksa rajah skematik dan penyenaraian program berikut (yang ditulis dalam "pseudocode" dan bukan bahasa pengaturcaraan formal) untuk menentukan jenis fungsi logik asas yang sedang dilaksanakan dalam unit mikrokontroler ini:

Nyatakan Pin0 sebagai output

Isytiharkan Pin1, Pin2, dan Pin3 sebagai input

LOOP

JIKA Pin1 TINGGI, tetapkan Pin0 HIGH

ELSEIF Pin2 TINGGI, tetapkan Pin0 TINGGI

ELSEIF Pin3 adalah TINGGI, menetapkan Pin0 TINGGI

ELSE menetapkan Pin0 LOW

ENDIF

ENDLOOP

Mendedahkan jawapan Sembunyikan jawapan

Mikrokontroler ini melaksanakan fungsi logik A 3-input.

Nota:

Walaupun fungsi logik ini boleh dilaksanakan dengan lebih mudah dan lebih murah dalam logik (gate) logik, tujuannya adalah untuk mendapatkan pelajar berfikir tentang pelaksanaan operasi logik dengan set arahan yang dijujukan dalam peranti yang boleh diprogramkan (MCU). Ini adalah lonjakan konseptual, asas tetapi sangat penting.

Sekiranya anda tertanya-tanya mengapa saya menulis dalam pseudocode, berikut adalah beberapa sebab:

Tiada pengalaman terdahulu dengan pengaturcaraan yang diperlukan untuk memahami pseudocode
Ia tidak pernah keluar dari gaya
Perkakasan bebas
Tiada ralat sintaks

Jika saya telah membuat keputusan untuk mempamerkan kod yang sebenarnya akan dijalankan dalam pengawal mikrokontroler, saya akan menjadi soalan kepada usang. Dengan cara ini, saya dapat menyampaikan semangat program tanpa dirantai kepada standard pengaturcaraan yang sebenar. Satu-satunya kelemahan ialah pelajar perlu menterjemahkan pseudocode saya kepada kod sebenar yang sebenarnya akan dijalankan pada perkakasan MCU tertentu mereka, tetapi itu adalah masalah yang dijamin untuk beberapa orang tanpa mengira bahasa pengaturcaraan sebenar yang saya pilih.

Sudah tentu, saya dapat mengambil pendekatan Donald Knuth dan mencipta perkakasan dan arahan instrumen saya sendiri (khayalan). . .

Soalan 20

Seorang pelajar membina sebuah litar mikrokontroler untuk menghidupkan LED sekali untuk setiap lima langkah input suis. Litar ini mudah, dengan mikrokontroler menggunakan gelung bersyarat untuk menambah pemboleh ubah setiap kali suis ditekan:

Nyatakan Pin0 sebagai output

Katakan Pin1 sebagai input

Nyatakan X sebagai pemboleh ubah integer

LOOP

WHILE Pin1 adalah TINGGI

Tambah 1 hingga X (X = X + 1)

ENDWHILE

JIKA X sama dengan 5, tetapkan Pin0 TINGGI dan tetapkan X ke 0

ELSE menetapkan Pin0 LOW

ENDIF

ENDLOOP

Malangnya, program ini tidak dilaksanakan seperti yang dirancang. Bukannya LED yang datang pada setiap lima operasi switch, nampaknya secara rawak apabila suis dilepaskan. Kadang-kadang LED bertukar selepas penggantian suis pertama, manakala masa lain ia mengambil lebih daripada lima tolak suis untuk mendapatkannya untuk menghidupkan.

Selepas beberapa analisis yang teliti, ia berlaku kepada pelajar bahawa masalahnya terletak pada gelung WHILE. Oleh kerana mikrokontroler jauh lebih cepat daripada tangan manusia, gelung itu berkali-kali banyak kali semasa suis sedang ditekan daripada hanya satu kali, bermakna bahawa pembolehubah X terhitung dari 0 hingga 5 berkali-kali untuk setiap operasi suis. Ia hanya secara kebetulan, maka, X akan sama dengan lima selepas keluar gelung WHILE.

Apa yang diperlukan oleh pelajar adalah untuk beralih kepada kenaikan sebanyak 1 hanya untuk peralihan beralih ke tepi : di tepi positif nadi masukan. Masalahnya adalah bagaimana untuk melakukan ini menggunakan pengaturcaraan.

Seorang pelajar lain, ketika menghadapi masalah yang sama, memilih untuk menyelesaikannya dengan cara ini dan ia berfungsi dengan baik:

Nyatakan Pin0 sebagai output

Katakan Pin1 sebagai input

Berikan suis sebagai pembolehubah Boolean (0 atau 1)

Deklarasikan Last_Switch sebagai pembolehubah Boolean (0 atau 1)

Nyatakan X sebagai pemboleh ubah integer

LOOP

Tetapkan Last_Switch sama dengan Tukar

Tukar Tukar bersamaan dengan Pin1

JIKA Tukar = 1 dan Last_Switch = 0 THEN menambah 1 hingga X (X = X + 1)

LAIN melakukan apa-apa ke X

ENDIF

JIKA X sama dengan 5, tetapkan Pin0 TINGGI dan tetapkan X ke 0

ELSE menetapkan Pin0 LOW

ENDIF

ENDLOOP

Terangkan bagaimana program ini berjaya menaikkan X hanya pada setiap peralihan yang mematikan ke atas tombol suis pushbutton sementara program lain menaikkan X dengan cepat sepanjang tempoh keseluruhan suis tekan butang ditekan.

Mendedahkan jawapan Sembunyikan jawapan

Kunci untuk memahami bagaimana algoritma ini berfungsi adalah untuk merealisasikan pemboleh ubah Last_Switch akan selalu menjadi satu imbasan (pelaksanaan lingkaran) di balik Pemboleh ubah.

Soalan cabaran: adakah perkara di mana dalam program ini dua baris berikut "nota disembunyikan"> Nota:

Algoritma pengesanan pulsa ini sangat biasa digunakan dalam program-program yang berurusan dengan input suis sejagat. Ia melaksanakan dalam perisian apa rangkaian pengesanan nadi di dalam flip-flop-triggered edge, untuk kesan yang sama: untuk memulakan beberapa jenis tindakan hanya di pinggir isyarat denyut.

  • ← Lembaran Kerja Sebelumnya

  • Indeks Lembaran Kerja

  • Lembaran kerja seterusnya →