Berita
Berita
Ringkasan sains populer terkuat dari MCU
2022-03-16 529

MCU adalah singkatan dari Microcontroller Unit dalam bahasa Mandarin, yang umumnya dikenal sebagai mikrokomputer chip tunggal. Mikrokontroler dirancang untuk mengurangi frekuensi dan spesifikasi CPU secara tepat, serta mengintegrasikan antarmuka periferal seperti memori, penghitung, USB, konversi A/D, UART, PLC, DMA, dan bahkan sirkuit penggerak LCD pada satu chip untuk membentuk komputer tingkat chip. Mikrokontroler dapat melakukan berbagai kombinasi kontrol untuk berbagai aplikasi, seperti telepon seluler, periferal PC, kendali jarak jauh, elektronik otomotif, motor stepper industri, dan kontrol lengan robot. MCU dapat dilihat pada gambar.



satu
Sejarah singkat perkembangan mikrokontroler



Sejarah mikrokontroler memang tidak panjang, tetapi perkembangannya sangat pesat. Produksi dan pengembangannya umumnya sinkron dengan produksi dan pengembangan mikroprosesor (CPU). Sejak Intel Corporation dari Amerika Serikat pertama kali meluncurkan mikroprosesor 4-bit pada tahun 1971, perkembangannya hingga saat ini secara kasar dapat dibagi menjadi lima tahap. Berikut ini adalah pengantar tentang perkembangan mikrokontroler dari Intel Corporation.


1971 ~ 1976


Tahap awal pengembangan mikrokontroler. Pada November 1971, Intel pertama kali merancang Intel 4004, sebuah mikroprosesor 4-bit dengan integrasi 2,000 transistor/chip, dilengkapi dengan RAM, ROM, dan register geser, membentuk mikroprosesor MCS-4 pertama. Kemudian diluncurkan mikroprosesor 8-bit Intel 8008, dan mikroprosesor 8-bit lainnya yang diluncurkan oleh perusahaan lain.


1976 ~ 1980


Tahap mikrokontroler berkinerja rendah. Diwakili oleh seri MCS-48 yang diluncurkan oleh Intel pada tahun 1976, ia menggunakan struktur monolitik yang mengintegrasikan CPU 8-bit, antarmuka I/O paralel 8-bit, timer/counter 8-bit, RAM, dan ROM pada sebuah chip semikonduktor. Meskipun rentang pengalamatannya terbatas (tidak lebih dari 4 KB), tidak ada I/O serial, kapasitas RAM dan ROM kecil, dan sistem interupsi relatif sederhana, tetapi fungsinya dapat memenuhi kebutuhan kontrol industri umum dan instrumen serta meter cerdas.


1980 ~ 1983


Tahap mikrokontroler berkinerja tinggi. Mikrokontroler 8-bit berkinerja tinggi yang diluncurkan pada tahap ini umumnya memiliki port serial, sistem pemrosesan interupsi multi-level, dan beberapa timer/counter 16-bit. Kapasitas RAM dan ROM on-chip ditingkatkan, dan rentang pengalamatan dapat mencapai 64 KB. Beberapa chip juga memiliki antarmuka konversi A/D.


Tahun 1983~akhir 1980-an


16-bit microcontroller stage. In 1983, Intel launched the high-performance 16-bit microcontroller MCS-96 series. Due to its adoption of the latest manufacturing technology, the chip integration level is as high as 120,000 transistors/chip.


1990s


Microcontrollers are developing to a higher level in all aspects of integration, functionality, speed, reliability, and application fields.



dua
Classification and application of single chip microcomputer



MCU dapat dibagi menjadi dua jenis berdasarkan tipe memorinya: yang tanpa ROM terintegrasi dan yang dengan ROM terintegrasi. Untuk chip tanpa ROM terintegrasi, EPROM eksternal harus dihubungkan sebelum dapat digunakan (biasanya 8031); chip dengan ROM terintegrasi dibagi menjadi tipe EPROM terintegrasi (chip tipikal adalah 87C51), tipe ROM mask terintegrasi (chip tipikal adalah 8051), tipe Flash terintegrasi (chip tipikal adalah 89C51) dan tipe lainnya.


Berdasarkan tujuannya, mikrokontroler dapat dibagi menjadi tipe umum dan tipe khusus; berdasarkan lebar bus data dan panjang byte data yang dapat diproses dalam satu waktu, mikrokontroler dapat dibagi menjadi mikrokontroler 8, 16, dan 32-bit.


Saat ini, pasar aplikasi MCU domestik yang paling luas berada di bidang elektronik konsumen, diikuti oleh bidang industri dan pasar elektronik otomotif. Elektronik konsumen meliputi peralatan rumah tangga, televisi, konsol game, sistem audio dan video, dll. Bidang industri meliputi rumah pintar, otomatisasi, aplikasi medis, dan pembangkitan serta distribusi energi baru. Bidang otomotif meliputi sistem penggerak dan kontrol keselamatan otomotif.



tiga
Fungsi dasar mikrokontroler



For most MCUs, the following functions are the most common and basic. For different MCUs, the way they are described may be different, but they are essentially the same:


1. Timer (pengatur waktu): Meskipun terdapat banyak jenis Timer, secara umum dapat dikelompokkan menjadi dua kategori: Jenis pertama adalah Timer dengan interval waktu tetap, yaitu waktu pengaturan waktu ditentukan oleh sistem dan tidak dapat dikendalikan oleh program pengguna. Sistem hanya menyediakan beberapa interval waktu tetap untuk dipilih oleh program pengguna, seperti 32Hz, 16Hz, 8Hz, dan lain-lain. Jenis Timer ini lebih umum ditemukan pada MCU 4-bit, sehingga dapat digunakan untuk mengimplementasikan fungsi clock, timing, dan fungsi terkait lainnya.


Jenis lainnya adalah Timer Terprogram. Sesuai namanya, waktu pewaktuan Timer jenis ini dapat dikontrol oleh program pengguna. Metode kontrolnya meliputi: pemilihan sumber clock, pemilihan pembagian frekuensi (Prescale), dan pengaturan jumlah preset. Beberapa MCU memiliki ketiganya sekaligus, sementara yang lain mungkin hanya memiliki satu atau dua. Aplikasi Timer jenis ini sangat fleksibel, dan penggunaannya pun terus berubah. Salah satu aplikasi yang paling umum adalah menggunakannya untuk mengimplementasikan output PWM.


Karena sumber clock dapat dipilih secara bebas, jenis Timer ini umumnya dikombinasikan dengan Event Counter.


2. Port IO: Setiap MCU memiliki sejumlah port IO. Tanpa port IO, MCU kehilangan saluran untuk berkomunikasi dengan dunia luar. Berdasarkan konfigurasi port IO, port tersebut dapat dibagi menjadi beberapa tipe berikut:


Port input murni atau port output murni: Jenis port IO ini ditentukan oleh desain perangkat keras MCU. Port ini hanya dapat berfungsi sebagai input atau output, dan perangkat lunak tidak dapat digunakan untuk pengaturan waktu nyata.


Port IO yang dapat dibaca dan ditulis secara langsung: Misalnya, port IO MCS-51 termasuk dalam jenis port IO ini. Ketika instruksi baca port IO dieksekusi, port tersebut menjadi port input; ketika instruksi tulis port IO dieksekusi, port tersebut secara otomatis menjadi port output.


Programming to set the input and output direction: The input or output of this type of IO port is set by the program according to actual needs. The application is relatively flexible and can realize some bus-level applications, such as I2C bus, various LCD, LED Driver control buses, etc.


Untuk penggunaan port IO, poin penting yang harus diingat adalah: untuk port input, harus ada sinyal level yang jelas untuk memastikan bahwa sinyal tersebut tidak mengambang (ini dapat dicapai dengan menambahkan resistor pull-up atau pull-down); untuk port output, level status output harus mempertimbangkan kondisi koneksi eksternalnya, dan harus dipastikan bahwa tidak ada penarikan atau penyerapan arus dalam keadaan siaga atau statis.


3. External interrupt: External interrupt is also a basic function of most MCUs. It is generally used for real-time triggering of signals, data sampling and status detection. The interrupt methods include rising edge trigger, falling edge trigger and level trigger. External interrupts are generally implemented through input ports. If it is an IO port, its interrupt function will be turned on only when it is set to input; if it is an output port, the external interrupt function will be automatically turned off (there are some exceptions in ATMEL's ATiny series, which can also trigger the interrupt function when it is an output port). The applications of external interrupts are as follows:


Detection of external trigger signals: One is based on real-time requirements, such as control of thyristors, detection of sudden signals, etc., while the other is the need to save power.


Measurement of signal frequency: In order to ensure that the signal is not missed, external interrupt is the ideal choice.


Penguraian data: Dalam bidang aplikasi kendali jarak jauh, untuk mengurangi biaya desain, seringkali diperlukan penggunaan perangkat lunak untuk menguraikan berbagai data yang dikodekan, seperti penguraian pengkodean Manchester dan PWM.


Key detection and system wake-up: For MCUs that enter the sleep state, they generally need to be awakened through external interrupts. The most basic form is a key press, which produces level changes through the action of the key.


4. Communication interface: The communication interface provided by MCU generally includes SPI interface, UART, I2C interface, etc., which are described as follows:


Antarmuka SPI: Jenis antarmuka ini adalah metode komunikasi paling dasar yang disediakan oleh sebagian besar MCU. Transmisi datanya dikendalikan oleh jam sinkron. Sinyal-sinyalnya meliputi: SDI (input data serial), SDO (output data serial), SCLK (jam serial) dan sinyal Ready; dalam beberapa kasus, mungkin tidak ada sinyal Ready; jenis antarmuka ini dapat bekerja dalam mode master atau mode slave. Secara umum, hal ini bergantung pada siapa yang menyediakan sinyal jam. Pihak yang menyediakan jam disebut master, dan pihak lawan disebut slave.


UART (Universal Asynchronous Receive Transmit): It is the most basic asynchronous transmission interface. It has only two signal lines, Rx and Tx. The basic data format is: Start Bit + Data Bit (7-bits/8-bits) + Parity Bit (Even, Odd or None) + Stop Bit (1~2Bit). The time occupied by one bit of data is called Baud Rate.


For most MCUs, the length of data bits, data check mode (odd check, even check or no check), stop bit length and Baud Rate can be flexibly set through program programming. The most commonly used method of this type of interface is to communicate with the serial port of a PC.


I2C interface: I2C is a data transmission protocol developed by Philips. It is also implemented using 2 signals: SDAT (serial data input and output) and SCLK (serial clock). Its biggest benefit is that multiple devices can be attached to this bus and identified and accessed through addresses; one of the biggest benefits of the I2C bus is that it is very convenient to use software to implement it through the IO port. Its transmission data rate is completely controlled by SCLK, which can be fast or slow, unlike the UART interface, which has strict rate requirements.


5. Watchdog (timer pengawas): Watchdog juga merupakan konfigurasi dasar sebagian besar MCU (beberapa MCU 4-bit mungkin tidak memiliki fungsi ini). Watchdog pada sebagian besar MCU hanya memungkinkan program untuk meresetnya tetapi tidak mematikannya (beberapa diatur saat program diprogram, seperti MCU seri Microchip PIC), dan beberapa MCU menggunakan metode khusus untuk memutuskan apakah akan menghidupkannya, seperti seri KS57 Samsung. Selama program mengakses register Watchdog, ia secara otomatis dihidupkan dan tidak dapat dimatikan lagi. Secara umum, waktu reset watchdog dapat diatur secara terprogram. Aplikasi paling dasar dari Watchdog adalah untuk menyediakan kemampuan pemulihan mandiri bagi MCU yang mengalami kerusakan akibat kegagalan yang tidak terduga.



Empat
Global mainstream microcontroller manufacturer

(Ranked in no particular order, organized into mainstream manufacturers. If there is anything missing, please add it in the comment area)




Eropa dan Amerika




1. Freescale+NXP (Freescale+NXP): Belanda, terutama menyediakan MCU 16-bit dan 32-bit. Aplikasi: Elektronik otomotif, LED dan penerangan umum, perawatan kesehatan, konvergensi multimedia, peralatan rumah tangga dan perkakas listrik, teknologi otomatisasi bangunan, kontrol motor, catu daya dan konverter daya, energi dan jaringan pintar, otomatisasi, infrastruktur komputer dan komunikasi.




2. Microchip+Atmel (Microchip Technology + Atmel): Amerika Serikat, terutama menyediakan MCU 16-bit dan 32-bit. Aplikasi: elektronik otomotif, penggunaan industri, kontrol motor, mobil, otomatisasi bangunan, peralatan rumah tangga, hiburan rumah, otomatisasi industri, penerangan, Internet of Things, energi cerdas, peralatan elektronik seluler, periferal komputer.




3. Cypress+Spansion (Cypress + Spansion Semiconductor): The United States, mainly provides 8-bit, 16-bit, and 32-bit MCUs. Applications: automotive electronics, home appliances, medical, consumer electronics, communications and telecommunications, industry, wireless.




4. ADI (Analog Devices): Amerika Serikat, terutama menyediakan MCU 8-bit, 16-bit, dan 32-bit. Aplikasi: Dirgantara dan pertahanan, aplikasi otomotif, teknologi bangunan, komunikasi, elektronik konsumen, energi, perawatan kesehatan, instrumentasi dan pengukuran, motor, otomatisasi industri, keamanan.




5. Infineon: Jerman, terutama menyediakan MCU 16-bit dan 32-bit. Aplikasi: elektronik otomotif, elektronik konsumen, teknik, kendaraan komersial dan pertanian, pengolahan data, transportasi listrik, aplikasi industri, peralatan medis, peralatan bergerak, kontrol dan penggerak motor, catu daya, untuk sepeda motor, sepeda listrik dan kendaraan listrik kecil, jaringan pintar, penerangan, solusi sistem tenaga surya, solusi sistem energi angin.




6. ST Microelectronics: Italia/Prancis, terutama menyediakan MCU 32-bit. Aplikasi: LED dan penerangan umum, transportasi, perawatan kesehatan, konvergensi multimedia, peralatan rumah tangga dan perkakas listrik, teknologi otomatisasi bangunan, kontrol motor, catu daya dan konverter daya, energi dan jaringan pintar, otomatisasi, infrastruktur komputer dan komunikasi.




7. Qualcomm: Amerika Serikat, terutama menyediakan MCU 16-bit dan 32-bit. Aplikasi: Ponsel pintar, tablet, modem nirkabel.




8. Texas Instruments: United States, mainly provides 16-bit and 32-bit MCUs. Application scope: automotive electronics, consumer electronics, medical equipment, mobile devices, communications.




9. Maxim (Maxim): Amerika Serikat, terutama menyediakan MCU 32-bit. Lingkup aplikasi: elektronik otomotif, elektronik konsumen, aplikasi industri, keamanan.




Jepang dan Korea Selatan  




1. Renesas: Jepang, terutama menyediakan MCU 16-bit dan 32-bit. Lingkup aplikasi: komputer dan periferal, elektronik konsumen, elektronik kesehatan dan medis, elektronik otomotif, industri, dan komunikasi.




2. Toshiba: Jepang, terutama menyediakan MCU 16-bit dan 32-bit. Lingkup aplikasi: elektronik otomotif, penggunaan industri, kontrol motor, komunikasi nirkabel, telepon seluler, komputer dan peralatan periferal, pencitraan dan audio dan video, konsumen (peralatan rumah tangga), penerangan LED, keamanan, manajemen daya, peralatan hiburan.




3. Fujitsu: Jepang, terutama menyediakan MCU 32-bit. Lingkup aplikasi: otomotif, medis, permesinan, peralatan rumah tangga.




4. Samsung Electronics: Korea Selatan, terutama menyediakan MCU 16-bit dan 32-bit. Aplikasi: elektronik otomotif, penggunaan industri, kontrol motor, mobil, otomatisasi bangunan, peralatan rumah tangga, hiburan rumah, otomatisasi industri, penerangan, Internet of Things, energi cerdas, peralatan elektronik seluler, periferal komputer.




Wilayah Tiongkok  




daratan Cina  




1. Sigma Microelectronics: Terutama menyediakan MCU 32-bit, ruang lingkup aplikasi: telekomunikasi, manufaktur, energi, transportasi, listrik, dll.




2. Zhuhai Orbit: Mainly provides 32-bit MCU, application scope: aerospace: satellite station ships, aircraft; high-end industrial control: embedded computers; ship control, industrial control, power equipment, environmental monitoring.




3. Inovasi GigaDevice: Terutama menyediakan MCU 32-bit, ruang lingkup aplikasi: otomatisasi industri, antarmuka manusia-mesin, kontrol motor, pemantauan keamanan, rumah pintar, Internet of Things.




4. Shengsi Microelectronics: Terutama menyediakan MCU 8-bit dan 32-bit. Lingkup aplikasi: peralatan rumah tangga kecil, elektronik konsumen, remote control, mouse, baterai lithium, produk digital, elektronik otomotif, instrumen dan pengukuran medis, mainan, kontrol industri, rumah pintar dan keamanan, serta bidang lainnya.




5. Chipsea Technology: Terutama menyediakan MCU 16-bit dan 32-bit. Lingkup aplikasi: instrumentasi, Internet of Things, elektronik konsumen, peralatan rumah tangga, dan elektronik otomotif.




6. Lianhua Integrated Circuit: Terutama menyediakan MCU 8-bit dan 16-bit. Lingkup aplikasi: elektronik konsumen, peralatan rumah tangga, kontrol industri, peralatan komunikasi, elektronik otomotif, dan komputer.




7. Zhuhai Jianrong: Terutama menyediakan MCU 8-bit, ruang lingkup aplikasi: peralatan rumah tangga, catu daya portabel.




8. Actions Technology: Terutama menyediakan MCU 8-bit hingga 32-bit, dengan cakupan aplikasi: komputer tablet, rumah pintar, multimedia, Bluetooth, dan audio wifi.




9. Aisco Microelectronics: Terutama menyediakan MCU 8-bit dan 16-bit. Lingkup aplikasi: chip konsumen, chip komunikasi, chip informasi, dan peralatan rumah tangga.




10. Huaxin Microelectronics: Terutama menyediakan MCU 8-bit dan 4-bit. Aplikasi: penerima satelit, pengisi daya ponsel, kalender abadi, dan remote control all-in-one.




11. Shanghai Belling (Huada Semiconductor Holdings): Mainly provides 8-bit, 16-bit, and 32-bit MCUs. Applications: computer peripherals, HDTV, power management, small appliances, and digital appliances.




12. Haier Integrated Circuits: Terutama menyediakan MCU 14-bit, 15-bit, dan 16-bit. Lingkup aplikasi: elektronik konsumen, elektronik otomotif, industri, dan instrumen pintar.




13. Beijing Ingenic: Terutama menyediakan MCU 32-bit, ruang lingkup aplikasi: perangkat wearable, Internet of Things, peralatan rumah pintar, otomotif, elektronik konsumen, komputer tablet.




14. China Microelectronics: Terutama menyediakan MCU 8-bit. Aplikasi: peralatan rumah pintar, elektronik otomotif, pemantauan keamanan, penerangan LED dan lansekap, mainan pintar, rumah pintar, dan elektronik konsumen.




15. Shenzhou Loongson Integrated Circuit: Mainly provides 32-bit MCU, application scope: power monitoring, smart grid, industrial digital control, Internet of Things, smart home, data monitoring.




16. Ziguang Microelectronics: Terutama menyediakan MCU 8-bit dan 16-bit. Lingkup aplikasi: peralatan rumah pintar.




17. Times Minxin: Terutama menyediakan MCU 32-bit, ruang lingkup aplikasi: navigasi mobil, pemantauan lalu lintas, pengawasan kapal penangkap ikan, jaringan telekomunikasi listrik.




18. China Resources Silicon Microelectronics (anak perusahaan China Resources Microelectronics): terutama menyediakan MCU 8-bit dan 16-bit. Lingkup aplikasi: elektronik konsumen, kontrol industri, dan peralatan rumah tangga.




19. National Core Technology: Mainly provides 32-bit MCU, application scope: information security field, office automation field, communication network field, information security field.




20. Zhongtian Micro: Terutama menyediakan MCU 32-bit. Aplikasi: ponsel pintar, TV digital, set-top box, elektronik otomotif, GPS, e-reader, dan printer.




21. China Resources Microelectronics: Terutama menyediakan MCU 8-bit dan 16-bit. Lingkup aplikasi: sirkuit kontrol umum untuk peralatan rumah tangga, elektronik konsumen, dan kontrol otomatisasi industri.




22. Zhongying Electronics: Mainly provides 4-bit, 8-bit, 16-bit, and 32-bit MCUs. Application scope: home appliances and motors.




23. Lingdong Microelectronics: Mainly provides 32-bit, application scope: motor control, Bluetooth control, high-definition display, wireless charging, drones, micro printers, smart labels, electronic cigarettes, LED dot matrix screens, etc.




24. Nuvoton Technology: Terutama menyediakan MCU 8-bit, ruang lingkup aplikasi: pencahayaan, Internet of Things, dll.




25. Neusoft Carrier: Terutama menyediakan MCU 8-bit dan 32-bit. Aplikasi: peralatan rumah tangga, rumah pintar, instrumentasi, pengontrol panel LCD, kontrol industri, dll.




26. Betley: Terutama menyediakan MCU 32-bit, ruang lingkup aplikasi: rumah pintar, kontrol industri, dan produk konsumen.




27. Shengquan Technology: Mainly provides 8-bit MCU, application scope: small and medium-sized display panels for automotive, education, industrial control, medical, etc.




28. Hangshun Chip: Terutama menyediakan MCU 8-bit dan 32-bit. Lingkup aplikasi: otomotif, Internet of Things, dll.




29. Fudan Microelectronics: Terutama menyediakan MCU 16-bit dan 32-bit. Aplikasi: meteran pintar, kunci pintu pintar, dll.




30. Huada Semiconductor: Mainly provides 8-bit, 16-bit, and 32-bit MCUs. Applications: industrial control, intelligent manufacturing, smart life, and the Internet of Things.




Taiwan, Cina  




1. Hongjing Technology: mainly provides 32-bit MCU. Application scope: communications, industrial control, information appliances, and voice.




2. Holtek Semiconductor: terutama menyediakan MCU 8-bit dan 32-bit. Lingkup aplikasi: elektronik konsumen, penerangan LED, dll.




3. Lingyang Technology: terutama menyediakan MCU 8-bit dan 16-bit. Lingkup aplikasi: audio dan video rumahan.




4. Zhongying Electronics: mainly provides 4-bit and 8-bit MCUs. Application scope: chargers, mobile power supplies, home appliances, industrial control.




5. Songhan Technology: terutama menyediakan MCU 8-bit dan 32-bit. Lingkup aplikasi: remote control, pengisi daya pintar, sistem besar dan kecil, timbangan elektronik, termometer telinga, monitor tekanan darah, pengukur tekanan ban, berbagai peralatan pengukuran dan kesehatan.




6. Winbond Electronics: mainly provides 8-bit and 16-bit MCUs. Application scope: automotive electronics, industrial electronics, network, computer, consumer electronics, Internet of Things.




7. Ten Speed ​​Technology: mainly provides 4-bit, 8-bit, and 51-bit MCUs. Application scope: remote controls, small household appliances.




8. Youhua Microelectronics: terutama menyediakan MCU 4-bit dan 8-bit. Lingkup aplikasi: produk sirkuit terpadu perekam, elektronik konsumen, produk rumah tangga.




9. Yingguang Technology Microcontroller: mainly provides 4-bit and 8-bit MCUs. Application scope: machinery, automation, home appliances, robots.




10. Elan Electronics: mainly provides 8-bit and 16-bit MCUs. Application scope: consumer electronics, computers, smartphones.
 




lima
Tips for learning microcontrollers
   




The basic principles and functions of any MCU are similar. The only difference is the configuration and number of peripheral function modules, instruction systems, etc.




Untuk sistem instruksi, meskipun bentuknya tampak sangat berbeda, sebenarnya itu hanyalah simbol yang berbeda. Makna yang diwakilinya, fungsi yang harus diselesaikan, dan metode pengalamatannya pada dasarnya serupa.




Untuk memahami MCU, Anda perlu mengetahui terlebih dahulu ruang ROM, ruang RAM, jumlah port IO, jumlah timer dan metode pengaturan waktu, modul fungsi periferal (Sirkuit Periferal) yang disediakan, sumber interupsi, tegangan operasi dan konsumsi daya, dll.




Setelah memahami fitur-fitur MCU ini, langkah selanjutnya adalah membandingkan fungsi-fungsi MCU yang dipilih dengan fungsi-fungsi yang dibutuhkan untuk pengembangan proyek sebenarnya, dan mengklarifikasi sumber daya mana yang saat ini dibutuhkan dan mana yang tidak digunakan dalam proyek ini.




Untuk fungsi-fungsi yang perlu digunakan dalam proyek tetapi tidak disediakan oleh MCU yang dipilih, Anda perlu memahami dengan cermat informasi terkait MCU tersebut agar dapat mengimplementasikannya menggunakan metode tidak langsung. Misalnya, jika proyek yang Anda kembangkan perlu berkomunikasi dengan port COM PC, dan MCU yang dipilih tidak menyediakan port UART, Anda dapat mempertimbangkan untuk menggunakan interupsi eksternal untuk mengimplementasikannya.




For the resources needed for project development, you need to carefully understand and read the Manua*, while you can ignore or browse the unnecessary functional modules. For MCU learning, application is the key and the main purpose.




Setelah memperjelas fungsi-fungsi relevan dari MCU, Anda dapat mulai memprogram.




For beginners or designers who are using this MCU for the first time, they may encounter many unclear descriptions of the functions of the MCU. For such problems, there are two methods to solve them. One is to write a special verification program to understand the functions described in the data; the other is to temporarily ignore it and write the MCU program according to your current understanding, leaving it to be modified and improved during debugging. The former method is suitable for projects with loose time and beginners, while the latter method is suitable for people with certain experience in microcontroller development or when the project schedule is tight.




Jangan meluangkan waktu khusus untuk memahami sistem perintah. Sistem instruksi hanyalah simbol dari deskripsi logis. Anda hanya dapat melihat instruksi yang relevan sesuai dengan logika Anda sendiri dan persyaratan logis program selama pemrograman. Seiring perkembangan pemrograman, Anda akan semakin mahir dalam sistem instruksi, dan bahkan dapat menghafalnya tanpa sadar.




enam
Microcontroller programming




Terdapat perbedaan besar antara penulisan program MCU dan penulisan program PC. Meskipun perangkat pengembangan MCU berbasis C semakin populer, bagi para perancang yang menginginkan kode program yang efisien dan suka menggunakan bahasa assembly, bahasa assembly tetap menjadi bahasa pemrograman yang paling ringkas dan efektif.




Untuk pemrograman MCU, kerangka dasarnya dapat dikatakan kurang lebih sama. Secara umum dibagi menjadi tiga bagian: bagian inisialisasi (ini adalah perbedaan terbesar antara pemrograman MCU dan PC), badan loop program utama, dan penanganan interupsi. Deskripsi masing-masing bagian adalah sebagai berikut:




1. Initialization: For the design of all MCU programs, initialization is the most basic and important step, which generally includes the following:




Sembunyikan semua interupsi dan inisialisasi penunjuk tumpukan: Bagian inisialisasi umumnya tidak menginginkan terjadinya interupsi apa pun.




Clear the system's RAM area and display Memory: Although sometimes it may not be completely necessary, from the perspective of reliability and consistency, especially to prevent unexpected errors, it is recommended to develop good programming habits.




Inisialisasi port IO: Sesuai dengan persyaratan aplikasi proyek, atur mode input dan output dari port IO yang relevan. Untuk port input, Anda perlu mengatur resistor pull-up atau pull-down; untuk port output, Anda harus mengatur level output awalnya untuk mencegah kesalahan yang tidak perlu.




Pengaturan interupsi: Untuk semua sumber interupsi yang perlu digunakan dalam proyek, sumber tersebut harus diaktifkan dan kondisi pemicu untuk interupsi harus diatur. Untuk interupsi redundan yang tidak digunakan, interupsi tersebut harus dimatikan.




Inisialisasi modul fungsional lainnya: Untuk semua modul fungsional periferal MCU yang perlu digunakan, pengaturan yang sesuai harus dilakukan sesuai dengan persyaratan aplikasi proyek. Misalnya, untuk komunikasi UART, Baud Rate, panjang data, metode verifikasi, dan panjang Stop Bit perlu diatur. Untuk Programmer Timer, sumber clock, jumlah pembagian frekuensi, dan Reload Data harus diatur.




Initialization of parameters: After completing the initialization of the MCU hardware and resources, the next step is to initialize some variables and data used in the program. The initialization of this part needs to be designed according to the specific project and the overall arrangement of the program. For some applications that use EEPROM to save project prefabricated data, it is recommended to copy the relevant data to the RAM of the MCU during initialization to improve the program's access speed to data and reduce the power consumption of the system (in principle, accessing external EEPROM will increase the power consumption of the power supply).




2. Badan loop program utama: Sebagian besar MCU berjalan terus menerus dalam waktu lama, sehingga badan program utamanya pada dasarnya dirancang dalam bentuk loop. Untuk aplikasi dengan beberapa mode kerja, mungkin ada beberapa badan loop, yang dikonversi melalui flag status. Untuk badan program utama, modul-modul berikut umumnya disusun:




Program perhitungan: Program perhitungan umumnya memakan waktu, jadi kami sangat menentang pemrosesannya dalam kondisi interupsi apa pun, terutama operasi perkalian dan pembagian.




Memproses program dengan persyaratan waktu nyata rendah atau tanpa persyaratan sama sekali;
 




Display transmission program: mainly for applications with external LED and LCD drivers.




3. Penanganan interupsi: Program interupsi terutama digunakan untuk menangani tugas dan peristiwa dengan persyaratan waktu nyata yang tinggi, seperti deteksi sinyal mendadak eksternal, deteksi dan pemrosesan tombol, penghitungan waktu, pemindaian tampilan LED, dll.




In general, the interrupt program should keep the code as concise and short as possible. For functions that do not need to be processed in real time, the trigger flag can be set in the interrupt, and then the main program will perform specific transactions. This is very important, especially for low-power, low-speed MCUs, which must ensure timely response to all interrupts.




4. Untuk pengaturan berbagai tugas yang berbeda, setiap MCU memiliki metode pemrosesan yang berbeda:




For example, for low-speed, low-power MCU (Fosc=32768Hz) applications, considering that such projects are handheld devices and use ordinary LCD displays, the response to key presses and display response requires high real-time performance, so timed interrupts are generally used to process key presses. Actions and data display; for high-speed MCUs, such as Fosc>1MHz applications, since the MCU has enough time to execute the main program loop body at this time, it can only set various trigger flags in the corresponding interrupts and put all tasks in the main program body for execution.




5. Dalam pemrograman MCU, satu hal yang perlu mendapat perhatian khusus adalah:

Penting untuk mencegah variabel atau data yang sama diakses atau diatur secara bersamaan di dalam badan program interupsi dan program utama. Metode pencegahan yang efektif adalah dengan mengatur pemrosesan data tersebut dalam sebuah modul, dan menentukan apakah akan melakukan operasi terkait pada data tersebut dengan menilai flag pemicu; di badan program lain (terutama interupsi), hanya atur flag pemicu di tempat data perlu diproses. --Hal ini memastikan bahwa eksekusi data dapat diprediksi dan unik.




tujuh   Engineer's summary of microcontroller programming  




1. Kembangkan kebiasaan baik dalam meringkas. Meringkas bukan hanya ringkasan dari pembelajaran Anda sendiri, tetapi juga peninjauan dan pendalaman proses pembelajaran. Hal ini juga dapat menghindari kesalahan yang sama di kemudian hari.


2. Sebelum menulis program, Anda harus terlebih dahulu memahami proyek tersebut, menyadarinya, dan membuat kerangka kerja umum. Sangat penting untuk mempertimbangkan dengan cermat bagaimana menyusunnya dan tata letak mana yang paling masuk akal. Perlu menganalisis modul mana yang harus dikerjakan terlebih dahulu, langkah-langkah spesifik dari modul ini, bagaimana menamai setiap fungsi, koneksi dengan modul lain, dan sebagainya. Sebaiknya siapkan selembar kertas dan catat proses-proses penting.


3. Untuk pemrograman modular dalam bahasa C, Anda harus terlebih dahulu membagi setiap modul, memprogram modul demi modul, menentukan urutan, mengikuti urutan tersebut, dan kemudian menulis modul berikutnya setelah modul tersebut berhasil. Untuk file header, tulis file header modul setelah modul tersebut selesai ditulis.


4. Don’t ignore warnings when they appear. It means that there must be something unreasonable in the program. You need to find out the source and find a solution. Be specific when looking for sources. You can search the Internet for information in this area, or ask others for advice. For example, the main function in another project was actually added to this project. There are actually duplicate function names. There are also reasons to analyze the experimental phenomena and progress step by step. There was also the wrong interface selected when defining the port. Sometimes, it’s good to take a break and think about it if you really can’t solve it. No matter how simple it is, you should pay attention to it, as there may be mistakes.   
Dalam pengembangan aplikasi mikrokontroler, masalah seperti efisiensi penggunaan kode, kinerja anti-interferensi, dan keandalan mikrokontroler masih menjadi tantangan. Sekarang kita akan merangkum beberapa keterampilan dasar yang harus dikuasai dalam pengembangan mikrokontroler.        
 
  delapan
  Keterampilan pengembangan mikrokontroler  
1 How to reduce bugs in programs
Regarding how to reduce program bugs, you should first consider the following out-of-range management parameters that should be considered during system operation.  
 
  • Parameter fisik: Parameter ini terutama merupakan parameter masukan sistem, yang meliputi parameter eksitasi, parameter operasi selama proses akuisisi, dan parameter hasil di akhir proses.
  • Parameter sumber daya: Parameter ini terutama mencakup sumber daya sirkuit, perangkat, dan unit fungsional dalam sistem, seperti kapasitas memori, panjang unit penyimpanan, dan kedalaman penumpukan.
  • Parameter aplikasi: Parameter aplikasi ini sering muncul sebagai kondisi aplikasi dari beberapa mikrokontroler dan unit fungsional. Parameter proses: mengacu pada parameter yang berubah secara teratur selama pengoperasian sistem.

2. Bagaimana cara meningkatkan efisiensi kode pemrograman bahasa C?
Penggunaan bahasa C untuk pemrograman mikrokontroler merupakan tren yang tak terhindarkan dalam pengembangan dan penerapan mikrokontroler. Jika Anda ingin mencapai efisiensi maksimum saat memprogram dalam bahasa C, sebaiknya Anda memahami kompiler C yang Anda gunakan. Pertama, uji jumlah baris pernyataan bahasa assembly yang sesuai dengan setiap kompilasi bahasa C, sehingga Anda dapat mengetahui efisiensinya dengan jelas. Saat memprogram di masa mendatang, gunakan pernyataan dengan efisiensi kompilasi tertinggi. Setiap kompiler C akan memiliki perbedaan tertentu, sehingga efisiensi kompilasinya juga akan berbeda. Panjang kode dan waktu eksekusi kompiler C yang unggul untuk sistem tertanam hanya 5-20% lebih panjang daripada fungsi yang sama yang ditulis dalam bahasa assembly.  
For complex projects with tight development time, C language can be used, but the prerequisite is that you are very familiar with the C language and C compiler of the MCU system. Pay special attention to the data types and algorithms supported by the C compilation system. Although C language is the most common high-level language, different MCU manufacturers have different C language compilation systems, especially in the operation of some special function modules. Therefore, if you do not understand these features, there will be many problems during debugging, which will lead to lower execution efficiency than assembly language.


3 How to solve the anti-interference problem of microcontroller
Cara paling efektif untuk mencegah interferensi adalah dengan menghilangkan sumber interferensi dan memblokir jalur interferensi, tetapi seringkali sulit untuk melakukannya, sehingga kita hanya dapat melihat apakah kemampuan anti-interferensi mikrokontroler cukup kuat. Sembari meningkatkan kemampuan anti-interferensi sistem perangkat keras, anti-interferensi perangkat lunak semakin mendapat perhatian karena desainnya yang fleksibel, penghematan sumber daya perangkat keras, dan keandalan yang baik.  
The most common phenomenon of microcontroller interference is reset. As for the program running away, software traps and watchdogs can actually be used to bring the program back to the reset state. Therefore, the most important thing for microcontroller software to resist interference is to handle the reset state.  
Secara umum, mikrokontroler akan memiliki beberapa register penanda yang dapat digunakan untuk menentukan penyebab reset; selain itu, Anda juga dapat menyembunyikan beberapa penanda di RAM sendiri. Setiap kali program direset, penyebab reset yang berbeda dapat ditentukan dengan menilai penanda-penanda ini; Anda juga dapat langsung melompat ke program yang sesuai berdasarkan penanda yang berbeda. Hal ini memungkinkan program untuk berjalan terus menerus, dan pengguna tidak akan menyadari bahwa program telah direset saat menggunakannya.  
4. Bagaimana cara menguji keandalan sistem mikrokontroler?
Setelah desain sistem mikrokontroler selesai, akan ada berbagai item dan metode pengujian untuk berbagai produk sistem mikrokontroler, tetapi beberapa di antaranya wajib diuji:
 
  • Uji kelengkapan fungsi perangkat lunak mikrokontroler.
  • Pengujian daya hidup dan daya mati
  • Uji penuaan
  • Tes seperti ESD dan EFT

Terkadang, kita juga dapat mensimulasikan kerusakan yang mungkin terjadi selama penggunaan oleh manusia. Misalnya, sengaja menggosok port kontak sistem mikrokontroler dengan tubuh manusia atau kain pakaian untuk menguji kemampuan anti-statis. Menggunakan bor listrik berdaya tinggi untuk bekerja dekat dengan sistem mikrokontroler untuk menguji kemampuan menahan interferensi elektromagnetik.


To sum up, the single-chip microcomputer has become an important aspect of computer development and application. The important significance of the application of single-chip microcomputer is that it fundamentally changes the traditional control system design ideas and design methods.


Sebagian besar fungsi yang dulunya harus diimplementasikan oleh sirkuit analog atau sirkuit digital kini dapat diimplementasikan melalui metode perangkat lunak menggunakan mikrokontroler. Teknologi kontrol semacam ini, di mana perangkat lunak menggantikan perangkat keras, juga disebut teknologi mikrokontrol, yang merupakan revolusi dalam teknologi kontrol tradisional.  
Selain itu, selama proses pengembangan dan penerapan, kita harus menguasai keterampilan dan meningkatkan efisiensi agar dapat digunakan untuk berbagai tujuan yang lebih luas.        
        Sembilan
Chip operation summary
       
Operasi pada chip terutama merupakan operasi pada register di dalam chip. Register di dalam chip memiliki alamat uniknya sendiri yang dipetakan pada memori, yang merupakan operasi pada alamat yang sesuai. Saat mempelajari chip, pertama-tama perhatikan diagram pewaktuan, kemudian pahami register yang sesuai, pahami cara kerjanya, tentukan port yang dibutuhkan (yang dapat diidentifikasi oleh program), dan tulis prosedur operasi tulis dan prosedur operasi baca.


How to write data into the chip, how to read data, and which port to input or read through (the most important thing).


Saat menghubungkan chip melalui bus, Anda harus terlebih dahulu memahami protokol bus tersebut. Chip yang terhubung ke bus I2C terutama mengontrol chip lain melalui bus ini.


1. Satu IC 74hc595 dalam matriks titik digunakan untuk pemilihan kolom, dan dua IC lainnya digunakan untuk pemilihan warna. Matriks titik tersebut setara dengan kumpulan dioda.


Only when one end is given a high level and the other end is given a low level can the diode light up. It's just that when one end is selected differently, different colors will light up.


Pemilihan mode kerja timer: Empat bit tinggi mengatur timer T1, dan empat bit rendah mengatur T0. Kemudian dua digit terakhir dari setiap mode mengatur mode kerja. Saat mengatur dua timer, berhati-hatilah untuk menggunakan operator (|). Saat menggunakan interupsi, perhatikan untuk membersihkan interupsi yang harus dibersihkan setelah memasuki interupsi.


2. Transceiver port serial: Mode 2 (pemuatan ulang nilai awal otomatis) umumnya digunakan untuk mengatur kecepatan baud. Karena perangkat yang berbeda memiliki kemampuan pemrosesan data yang berbeda, pengaturan kecepatan baud terutama untuk menangani perangkat berkecepatan rendah dan berkomunikasi satu sama lain. Bit flag interupsi harus dihapus oleh perangkat lunak. Saat mengatur interupsi port serial, baik yang dihasilkan oleh pengiriman atau penerimaan, dapat memasuki fungsi interupsi, jadi perhatikan pengaturan fungsi interupsi. (Secara umum, atur satu fungsi, sebagai komputer host atau komputer slave).


Jika Anda menggunakan interupsi untuk mengirim, Anda harus mencari tahu cara memasuki interupsi untuk pertama kalinya, jadi Anda harus mengirimnya sekali terlebih dahulu, dan kemudian Anda dapat memasuki interupsi. Hanya satu byte yang dapat dikirim dalam satu waktu, dan bit berikutnya hanya dapat dikirim setelah TI diatur.


3. Konversi Pcf8591ad memiliki empat saluran input. Saat membaca pcf8591, saluran mana pun yang dipilih, tegangan input dari saluran tersebut akan dibaca. Data yang dikonversi disimpan dalam chip dan kemudian dibaca. Saat membaca, pertama-tama tulis alamat chip, kemudian tulis sub-alamat perangkat (0x40|nomor saluran), dan kemudian baca data.


4. Da conversion is to first write the device address into the chip, then write the sub-address (0x40), and then write the digital quantity to be converted. Device address chip information is introduced.


5. Untuk layar LCD, setelah data ditulis dan ditampilkan, data tersebut akan selalu ditampilkan tanpa pembaruan terus-menerus. Jika Anda ingin mengubahnya, Anda hanya dapat memasukkannya kembali.


6. For the ds1302 clock chip, when reading data, the first data is read at the falling edge of the eighth clock when writing data, and then prepares for the next output. Pay attention to the writing method of the program and the location of the return value.


7. Pertama, tentukan register di Ds1302, lalu tulis data ke dalamnya. Register pada data chip menunjukkan alamatnya. (Saya masih belum sepenuhnya memahami program proteksi tulis. Bukankah selalu ada penulisan? Mengapa proteksi tulis masih diaktifkan?)


(Menurut penjelasan sebelumnya, Anda dapat mengatur flag setelah waktu inisialisasi. Jika flag ini ada, tidak perlu menginisialisasi waktu. Namun, jika daya dimatikan, RAM MCU tidak dapat menyimpan flag ini, jadi Anda dapat menggunakan RAM DS1302 untuk menyimpan flag dan membacanya setelah daya dinyalakan. Saya juga seorang pemula, dan saya berencana untuk menggunakan DS1302 baru-baru ini. Saya tidak tahu apakah ini benar, dan saya belum mengimplementasikannya. Mohon bagikan lebih lanjut.)


8. Sebaiknya catat inisialisasinya agar tidak lupa di kemudian hari. Terkadang perhatikan apakah bit terendah atau bit tertinggi yang dioperasikan terlebih dahulu saat membaca atau menulis, yang dapat dinilai berdasarkan diagram pewaktian.


9. For infrared transceiver, when receiving, it determines whether it is high level or low level based on the time between two falling edges. When writing a program, first use a timer to determine the time, save it, and then convert it into binary (read more about how to write this program, it is very good).


10. Motor stepper: Motor ini terutama digunakan untuk pengalihan. Torsi motor stepper menurun seiring dengan peningkatan kecepatan. Motor ini terutama digunakan untuk pengumpanan otomatis komponen yang diproses pada mesin perkakas. Motor ini juga dapat digunakan di tempat-tempat kontrol dengan presisi yang lebih tinggi.


The stepper motor is an open-loop control element stepper motor device that converts electrical pulse signals into angular displacement or linear displacement. Under non-overload conditions, the motor's speed and stop position only depend on the frequency and number of pulses of the pulse signal, and are not affected by load changes. When the stepper driver receives a pulse signal, it drives the stepper motor to rotate in the set direction at a fixed angle, called the "step angle". Its rotation runs step by step at a fixed angle. The angular displacement can be controlled by controlling the number of pulses to achieve accurate positioning; at the same time, the speed and acceleration of the motor rotation can be controlled by controlling the pulse frequency to achieve speed regulation.


11. Servo motor: (servo motor) refers to the engine that controls the operation of mechanical components in the servo system. It is an indirect transmission device that assists the motor. Servo motors can control speed and position accuracy very accurately, and can convert voltage signals into torque and rotational speed to drive control objects. The rotor speed of the servo motor is controlled by the input signal and can respond quickly. In the automatic control system, it is used as an actuator and has the characteristics of small electromechanical time constant, high linearity, starting voltage, etc. It can convert the received electrical signal into the angular displacement or angular velocity output on the motor shaft. They are divided into two categories: DC and AC servo motors. Their main feature is that there is no rotation when the signal voltage is zero, and the rotational speed decreases at a constant speed as the torque increases. DC motor: Large range, all on small cars.


12. Overview of Chinese characters:
Untuk menampilkan karakter Tionghoa pada monitor atau printer, karakter Tionghoa dirancang ke dalam matriks titik sesuai dengan simbol grafis, dan kode matriks titik (kode glif) yang sesuai diperoleh.


The unified encoding method used to represent Chinese characters in the computer forms a Chinese character encoding called an internal code (such as a national standard code), and the internal code is unique (equivalent to the ID number of the character). The Chinese character encoding formed to facilitate the input of Chinese characters is an input code, which is an external code of Chinese characters. The input code is different due to different encoding methods and is diverse. The Chinese character code formed for displaying and printing out Chinese characters is a glyph code. The computer finds the glyph code of the Chinese character in the font model library through the Chinese character internal code and realizes its conversion.


Kode dalam kamera


According to the provisions of the national standard code, each Chinese character has a certain binary code, but this code will conflict with the ASCII code when processed internally by the computer. To solve this problem, add 1 to the first digit of each byte of the national standard code. Since the ASCII code only uses 7 bits, the "1" in the first place can be used as a mark to identify Chinese character codes. When the computer processes the code with "1" in the first place, it understands it as Chinese character information, and when it processes the code with "0" in the first place, it understands it as an ASCII code. The national standard code (internal code) processed in this way is the internal code.


If we replace the "." of this "口" graphic with "0", we can get the glyph code of "口" very vividly: 0000H 0004H 3FFAH 2004H 2004H 2004H 2004H 2004H 2004H 2004H 2004H2004H 3FFAH 2004H 0000H 0000H. When the computer wants to output "口", it first finds the first address of the display font library, calculates based on the internal code of "口", and then finds the glyph code of "口", and then scans the screen sequentially according to the glyph code (in binary) through the control of the character generator. Where the binary code is "0", the place where it is "0" is scanned, and the place where it is "1" is scanned to highlight, so the character pattern of "口" can be obtained.


Font aksara Tionghoa disusun berdasarkan urutan kode standar nasional dan disimpan dalam memori dalam bentuk file biner, membentuk pustaka font aksara Tionghoa, yang juga disebut pustaka glif aksara Tionghoa, atau pustaka aksara Tionghoa.


Dua metode pengkodean, lihat file header.


GB1616.h//------------------ Definisi struktur data font karakter Tionghoa ------------------------//structtypFNT_GB16 //Struktur data font karakter Tionghoa {unsignedcharIndex[3]; //Indeks kode internal karakter Tionghoa unsignedchar Msk[32];//data kode matriks titik }; /// ... (piksel):16×16--------------------------------------------------------------------------------*/"Xu",0x10,0x80,0x10,0x80,0x21 ,0x40,0x42,0x20,0x94,0x10,0x1B,0xEC,0x20,0x80,0x60,0x80,0xAF,0xF8,0x 20,0x80,0x22,0xA0,0x24,0x90,0x2A,0x88,0x21,0x00,0x00,0x00,0x00,0x00,
 
This structure is very simple: one is the internal code, and one is the dot matrix sequence. The previous dot matrix library was placed in the order of the internal code, and no internal code index was needed. If only some Chinese characters were placed, the internal code index was needed. (The Chinese character "Xu" in the front is to find the dot matrix sequence of the word when outputting "Xu". This dot matrix sequence is written by myself. When displayed with 1602, because the chip has an English dot matrix sequence in the memory, there is no need to write it.) Generally, two bytes are enough for the internal code. If you use one more byte, you just add a trailing 0. In this way, the Chinese character string can be directly placed in the Chinese character internal code;


codeGB_16[k].Index[0] codeGB_16[k] indicates that there is an array of structure typFNT_GB16 called codeGB_16 codeGB_16[k] is the k+1 member of the array index is a member of structure typFNT_GB16, so it can be referenced with codeGB_16[k].Index. At the same time, index is an array, so it can be indexed[0] If((codeGB_16[k].Index[0]==c[0])&&(codeGB_16[k].Index[1]==c[1])) && is a logical AND operator, which means that the values on both sides of the && symbol are true. Only the value of && is true, that is, true && true =true. This sentence means: codeGB_16[k].Index[0]==c[0] and codeGB_16[k].Index[1]==c[1] are established at the same time. If the following statement is executed, codeGB_16[] is a structure array, codeGB_16[k].Index[0] means the 0th element value of the index member of the Kth structure of the structure array.  
      13. 12864 LCD:

Setiap titik tampilan sesuai dengan angka biner, 1 berarti menyala, 0 berarti mati. RAM yang menyimpan informasi matriks titik ini disebut memori data tampilan. Untuk menampilkan grafik atau karakter Cina tertentu, informasi matriks titik yang sesuai harus ditulis ke dalam unit penyimpanan yang sesuai.  
Penghitung alamat (AC) pada RAM grafis hanya akan secara otomatis menaikkan alamat horizontal (sumbu X) sebesar satu. Ketika alamat horizontal = 0FH, maka akan direset menjadi 00H. Namun, ia tidak akan secara otomatis menaikkan alamat vertikal dengan carry. Oleh karena itu, ketika beberapa data ditulis secara terus menerus, program perlu menentukan apakah alamat vertikal perlu direset.


14. RAM Gambar (GDRAM)

RAM tampilan gambar menyediakan ruang memori 128×8 byte. Saat mengubah RAM gambar, pertama-tama tulis nilai koordinat horizontal dan vertikal secara berurutan, lalu tulis dua byte data ke RAM gambar. Penghitung alamat (AC) akan secara otomatis menambah alamat horizontal (alamat X) sebanyak satu. Ketika alamat horizontal adalah 0XFH, alamat tersebut akan direset menjadi 00H; alamat vertikal tidak akan secara otomatis bertambah 1. Tampilan gambar harus dimatikan selama penulisan ke RAM gambar.

 
[cpp] view plain copy//Display Chinese characters voiddispString (uchar X, Y,uchar *msg)//Which row is X and which column is Y. msg is Chinese characters {if(X==0) write_data(*msg++); //Display Chinese characters }}////////////////////////////////// //////////////// ////////////////// Display image voiddisppicture(uchar code *adder){ uint i,j;//*******Display the upper half screen content settings for(i=0;i<32;i++)//32 column addresses in the upper half of the screen { write_com(0x80 + i);//SET vertical address VERTICALADD write_com(0x80);//SET horizontal address HORIZONTAL ADDfor(j=0;j<16;j++) { write_data(*adder); adder++; }}//************Display content settings in the lower half of the screen for(i=0;i<32;i++) //{ write_com(0x80 + i); //SET vertical address VERTICALADD write_com(0x88); //SET horizontal address HORIZONTAL ADDfor(j=0;j<16;j++){write_data(*adder);adder++;} }}
 
For C language, space is automatically allocated for a defined variable, and its address is the name of the variable. Through this name, the data can be retrieved in the memory and new data can be obtained through calculation. However, in assembly, the programmer needs to define the storage space and send the data to the accumulator for calculation. Every step requires the programmer's operation. In C language, these processes are completed by the compiler.




15. Some useful questions and answers

①. Bagaimana alokasi memori variabel dilakukan dalam bahasa C mikrokontroler? Mungkinkah kompiler secara cerdas menambahkan kode alokasi dan daur ulang selama proses kompilasi? Poin kuncinya adalah, bagaimana saya dapat memastikan program yang saya buat tidak mengalami kesalahan kelebihan memori (memory overflow)? Jika saya melakukan operasi rekursif, maka kebutuhan memori sulit dihitung sendiri.




②. Will the microcontroller C language be restricted in variable definition? For example, the multiplication and division operations of floating-point data are written through assembly, and the code is quite complicated. If written directly in C language, wouldn't it be too simple?




③. In the hex file generated by the C language of the microcontroller, is the address distribution of the instruction and data ROM automatically assigned by the compiler? Can users assign it?




Answer 1: A microcontroller program written in C language is first compiled by a program (it seems to be c51.exe). After the compilation is completed, the storage space size of the variables has been arranged, but the specific address has not yet been allocated (the address is floating). Next, another program (it seems to be a51.exe) is connected. After the connection, the specific address is determined.  
If there are too many variables, the compiler will prompt that the data segment is too large. To ensure that there is no memory overflow error, the main consideration is whether the stack overflows, and it depends on experience.




The C language of microcontrollers generally prohibits recursion, and recursive operations are generally avoided. After all, microcontrollers are not PCs, which will affect the speed. If you want to recurse, it is more appropriate to use a DSP chip. In short, you must be able to choose the appropriate chip.




Jawaban 2: Ukuran variabel (jumlah digit) umumnya sama dengan jumlah digit pada akumulator chip. Misalnya, 51 biasanya menggunakan 8 bit karena merupakan mikrokontroler 8-bit.

The microcontroller can define bit variables, but it cannot define bit arrays. Writing in C language seems simple, but actually generates the largest amount of code. The microcontroller used for control hardly uses floating point operations, which is not only slow but troublesome and takes up space. If it is a DSP chip, it will be much better if it has a suitable hardware structure.




Answer 3: Generally, it is automatically allocated. It can be programmed in a mixture of C language and assembly language, or it can be assembled online using Keil C. The data exchange between the chip and the outside is done through the port.



Nomor telepon perusahaan: +86-0755-83044319
Faks/FAX: +86-0755-83975897
Surel: 1615456225@qq.com
QQ: 3518641314 Manajer Li

QQ: 332496225 Manajer Qiu

Alamat: Ruang 809, Gedung C, Gedung Teknologi Zhantao, No. 1079 Jalan Minzhi, Distrik Baru Longhua, Shenzhen

whatsapp

Hotline Layanan

tel: +86 755 83044319

WhatsApp

Whatsapp:+8618073002950