Haberler
Haberler
MCU'nun en güçlü popüler bilim özeti
2022-03-16 529

MCU, Mikrodenetleyici Birimi anlamına gelir. Çince'de mikrodenetleyicinin kısaltması olan ve genellikle tek çipli mikrobilgisayar olarak bilinen bu cihaz, CPU'nun frekansını ve özelliklerini uygun şekilde azaltarak bellek, sayıcı, USB, A/D dönüştürme, UART, PLC, DMA ve hatta LCD sürücü devreleri gibi çevresel arayüzleri tek bir çip üzerinde birleştirerek çip seviyesinde bir bilgisayar oluşturur. Cep telefonları, PC çevre birimleri, uzaktan kumandalar, otomotiv elektroniği, endüstriyel step motorlar ve robot kol kontrolü gibi farklı uygulamalar için farklı kontrol kombinasyonları gerçekleştirebilir. MCU şekilde görülebilir.



bir
A brief history of the development of microcontrollers



Mikrokontrolörlerin tarihi uzun değil, ancak çok hızlı bir şekilde gelişti. Üretimi ve gelişimi genellikle mikroişlemcilerin (CPU'lar) üretimi ve gelişimiyle eş zamanlıdır. Amerika Birleşik Devletleri'ndeki Intel Corporation'ın 1971'de ilk 4 bitlik mikroişlemcisini piyasaya sürmesinden bu yana, bugüne kadarki gelişimi kabaca beş aşamaya ayrılabilir. Aşağıda Intel Corporation'dan mikrokontrolörlerin gelişimine bir giriş yer almaktadır.


1971~1976


Mikrokontrolcülerin gelişiminin ilk aşaması. Kasım 1971'de Intel, ilk olarak 2,000 transistör/çip entegrasyonuna sahip, RAM, ROM ve kaydırma yazmacı ile donatılmış 4 bitlik bir mikroişlemci olan Intel 4004'ü tasarladı ve böylece ilk MCS-4 mikroişlemcisini oluşturdu. Ardından 8 bitlik mikroişlemci Intel 8008'i ve diğer şirketler tarafından piyasaya sürülen diğer 8 bitlik mikroişlemcileri piyasaya sürdü.


1976~1980


Düşük performanslı mikrodenetleyici aşaması. Intel tarafından 1976'da piyasaya sürülen MCS-48 serisi ile temsil edilen bu aşama, 8 bitlik bir CPU, 8 bitlik paralel G/Ç arayüzü, 8 bitlik zamanlayıcı/sayıcı, RAM ve ROM'u tek bir yarı iletken çip üzerinde entegre eden monolitik bir yapı kullanır. Adresleme aralığı sınırlı (en fazla 4 KB), seri G/Ç'si yok, RAM ve ROM kapasitesi küçük ve kesme sistemi nispeten basit olmasına rağmen, işlevleri genel endüstriyel kontrol ve akıllı cihaz ve ölçüm cihazlarının ihtiyaçlarını karşılayabilir.


1980~1983


Yüksek performanslı mikrodenetleyici aşaması. Bu aşamada piyasaya sürülen yüksek performanslı 8 bit mikrodenetleyiciler genellikle seri portlara, çok seviyeli kesme işleme sistemlerine ve birden fazla 16 bit zamanlayıcı/sayıcıya sahiptir. Çip üzerindeki RAM ve ROM kapasitesi artırılır ve adresleme aralığı 64 KB'ye ulaşabilir. Bazı çiplerde ayrıca A/D dönüştürme arayüzü de bulunur.


1983~1980'lerin sonları


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.



iki
Tek çipli mikrobilgisayarların sınıflandırılması ve uygulamaları



Mikrodenetleyiciler (MCU'lar), bellek türlerine göre iki tipe ayrılabilir: çip üzerinde ROM'u olmayanlar ve çip üzerinde ROM'u olanlar. Çip üzerinde ROM'u olmayan çipler için, kullanılmadan önce harici bir EPROM'un bağlanması gerekir (tipik olarak 8031); çip üzerinde ROM'u olan çipler ise çip üzerinde EPROM tipi (tipik çip 87C51), çip üzerinde maske ROM tipi (tipik çip 8051), çip üzerinde Flash tipi (tipik çip 89C51) ve diğer tipler olarak ayrılır.


Kullanım amacına göre genel amaçlı ve özel amaçlı olmak üzere ikiye ayrılabilir; veri yolu genişliğine ve bir seferde işlenebilecek veri baytlarının uzunluğuna göre ise 8, 16 ve 32 bitlik mikrodenetleyicilere (MCU) ayrılabilir.


At present, the most extensive domestic MCU application market is in the consumer electronics field, followed by the industrial field and the automotive electronics market. Consumer electronics includes household appliances, televisions, game consoles, audio and video systems, etc. Industrial fields include smart homes, automation, medical applications, and new energy generation and distribution. The automotive field includes automotive powertrain and safety control systems.



üç
Mikrokontrolcünün temel fonksiyonları



Çoğu mikrodenetleyici için aşağıdaki fonksiyonlar en yaygın ve temel olanlardır. Farklı mikrodenetleyicilerde tanımlanma biçimleri farklı olabilir, ancak özünde aynıdırlar:


1. TImer (timer): Although there are many types of TImer, they can be summarized into two categories: One type is TImer with fixed time intervals, that is, the timing time is set by the system and cannot be controlled by the user program. The system only provides several fixed time intervals for the user program to choose, such as 32Hz, 16Hz, 8Hz, etc. This type of TImer is more common in 4-bit MCUs, so it can be used to implement clock, timing and other related functions.


The other type is Programmable Timer. As the name suggests, the timing time of this type of Timer can be controlled by the user's program. The control methods include: selection of clock source, selection of frequency division (Prescale) and setting of preset number. Some MCUs have all three at the same time, while others may have one or two of them. This type of Timer application is very flexible, and its actual use is also ever-changing. One of the most common applications is to use it to implement PWM output.


Since the clock source can be freely selected, this type of Timer is generally combined with the Event Counter.


2. IO ports: Any MCU has a certain number of IO ports. Without IO ports, the MCU loses the channel to communicate with the outside world. According to the configurability of the IO port, it can be divided into the following types:


Pure input or pure output port: This type of IO port is determined by the MCU hardware design. It can only be input or output, and software cannot be used for real-time settings.


Directly read and write IO ports: For example, the IO port of MCS-51 belongs to this type of IO port. When the read IO port instruction is executed, it is an input port; when the write IO port instruction is executed, it is automatically an output port.


Giriş ve çıkış yönünü ayarlamak için programlama: Bu tip IO portunun girişi veya çıkışı, gerçek ihtiyaçlara göre program tarafından ayarlanır. Uygulama nispeten esnektir ve I2C veri yolu, çeşitli LCD, LED sürücü kontrol veri yolları vb. gibi bazı veri yolu seviyesindeki uygulamaları gerçekleştirebilir.


Giriş/çıkış portlarının kullanımı için akılda tutulması gereken önemli bir nokta şudur: Giriş portu için, sinyalin net bir seviyede olması ve sinyalin dalgalanmamasını sağlaması gerekir (bu, bir pull-up veya pull-down direnci eklenerek sağlanabilir); çıkış portu için, çıkış durum seviyesi harici bağlantı koşullarını dikkate almalı ve bekleme veya statik durumda akım çekme veya düşürme olmaması sağlanmalıdır.


3. Harici Kesme: Harici kesme, çoğu mikrodenetleyicinin temel bir işlevidir. Genellikle sinyallerin gerçek zamanlı tetiklenmesi, veri örneklemesi ve durum tespiti için kullanılır. Kesme yöntemleri arasında yükselen kenar tetikleme, düşen kenar tetikleme ve seviye tetikleme bulunur. Harici kesmeler genellikle giriş portları aracılığıyla uygulanır. Eğer bir IO portu ise, kesme işlevi yalnızca giriş olarak ayarlandığında açılır; eğer bir çıkış portu ise, harici kesme işlevi otomatik olarak kapatılır (ATMEL'in ATiny serisinde bazı istisnalar vardır, bu seride çıkış portu olduğunda da kesme işlevi tetiklenebilir). Harici kesmelerin uygulamaları aşağıdaki gibidir:


Harici tetikleme sinyallerinin tespiti: Bunlardan biri, tristörlerin kontrolü, ani sinyallerin tespiti vb. gibi gerçek zamanlı gereksinimlere dayanırken, diğeri güç tasarrufu ihtiyacına dayanmaktadır.


Sinyal frekansının ölçümü: Sinyalin kaçırılmamasını sağlamak için harici kesme ideal bir seçenektir.


Veri kod çözme: Uzaktan kumanda uygulamaları alanında, tasarım maliyetini düşürmek için, Manchester ve PWM kodlaması gibi çeşitli kodlanmış verilerin kod çözülmesi için yazılım kullanmak sıklıkla gereklidir.


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. İletişim arayüzü: Mikrodenetleyici tarafından sağlanan iletişim arayüzü genellikle SPI arayüzü, UART, I2C arayüzü vb. içerir ve bunlar aşağıdaki gibi açıklanmaktadır:


SPI arayüzü: Bu arayüz türü, çoğu mikrodenetleyici (MCU) tarafından sağlanan en temel iletişim yöntemidir. Veri iletimi senkron bir saat sinyaliyle kontrol edilir. Sinyaller şunlardır: SDI (seri veri girişi), SDO (seri veri çıkışı), SCLK (seri saat) ve Hazır sinyali; bazı durumlarda Hazır sinyali olmayabilir; bu arayüz türü ana modda veya köle modda çalışabilir. Popüler terimlerle, saat sinyalini kimin sağladığına bağlıdır. Saati sağlayan taraf ana, karşı taraf ise köledir.


UART (Evrensel Asenkron Alıcı-Gönderici): En temel asenkron iletim arayüzüdür. Sadece iki sinyal hattı vardır: Rx ve Tx. Temel veri formatı şöyledir: Başlangıç ​​Biti + Veri Biti (7 bit/8 bit) + Eşlik Biti (Çift, Tek veya Yok) + Durdurma Biti (1~2 bit). Bir bit verinin kapladığı süreye Baud Hızı denir.


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 arayüzü: I2C, Philips tarafından geliştirilen bir veri iletim protokolüdür. SDAT (seri veri girişi ve çıkışı) ve SCLK (seri saat) olmak üzere 2 sinyal kullanılarak uygulanır. En büyük avantajı, bu veri yoluna birden fazla cihazın bağlanabilmesi ve adresler aracılığıyla tanımlanıp erişilebilmesidir; I2C veri yolunun en büyük avantajlarından biri de, IO portu üzerinden yazılım kullanarak uygulanmasının çok kolay olmasıdır. İletim veri hızı, katı hız gereksinimlerine sahip UART arayüzünün aksine, tamamen SCLK tarafından kontrol edilir ve hızlı veya yavaş olabilir.


5. Watchdog (watchdog timer): Watchdog is also a basic configuration of most MCUs (some 4-bit MCUs may not have this function). The Watchdog of most MCUs can only allow the program to reset it but not turn it off (some are set when the program is burned in, such as Microchip PIC series MCU), and some MCUs use a specific method to decide whether to turn it on, such as Samsung's KS57 series. As long as the program accesses the Watchdog register, it is automatically turned on and cannot be turned off again. Generally speaking, the reset time of watchdog can be set programmably. The most basic application of Watchdog is to provide a self-recovery capability for MCUs that crash due to unexpected failures.



Dört
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)




Avrupa ve Amerika




1. Freescale+NXP (Freescale+NXP): Netherlands, mainly provides 16-bit and 32-bit MCUs. Applications: Automotive electronics, LED and general lighting, healthcare, multimedia convergence, home appliances and power tools, building automation technology motor control, power supplies and power converters, energy and smart grids, automation, computer and communication infrastructure.




2. Microchip+Atmel (Microchip Technology + Atmel): Amerika Birleşik Devletleri merkezli olup, ağırlıklı olarak 16 bit ve 32 bit MCU'lar sunmaktadır. Uygulama alanları: otomotiv elektroniği, endüstriyel kullanım, motor kontrolü, otomobiller, bina otomasyonu, ev aletleri, ev eğlence sistemleri, endüstriyel otomasyon, aydınlatma, Nesnelerin İnterneti, akıllı enerji, mobil elektronik ekipmanlar, bilgisayar çevre birimleri.




3. Cypress+Spansion (Cypress + Spansion Semiconductor): Amerika Birleşik Devletleri merkezli olup, ağırlıklı olarak 8-bit, 16-bit ve 32-bit MCU'lar sunmaktadır. Uygulama alanları: otomotiv elektroniği, ev aletleri, tıp, tüketici elektroniği, iletişim ve telekomünikasyon, endüstri, kablosuz.




4. ADI (Analog Devices): United States, mainly provides 8-bit, 16-bit, and 32-bit MCUs. Applications: Aerospace and defense, automotive applications, building technology, communications, consumer electronics, energy, healthcare, instrumentation and measurement, motors, industrial automation, security.




5. Infineon: Almanya, ağırlıklı olarak 16 bit ve 32 bit mikrodenetleyiciler (MCU) sağlamaktadır. Uygulama alanları: otomotiv elektroniği, tüketici elektroniği, mühendislik, ticari ve tarım araçları, veri işleme, elektrikli ulaşım, endüstriyel uygulamalar, tıbbi ekipman, mobil ekipman, motor kontrolü ve tahriki, güç kaynağı, motosikletler, elektrikli bisikletler ve küçük elektrikli araçlar için, akıllı şebekeler, aydınlatma, güneş enerjisi sistemi çözümleri, rüzgar enerjisi sistemi çözümleri.




6. ST Microelectronics: İtalya/Fransa, ağırlıklı olarak 32 bit MCU üretmektedir. Uygulama alanları: LED ve genel aydınlatma, ulaşım, sağlık, multimedya entegrasyonu, ev aletleri ve elektrikli el aletleri, bina otomasyon teknolojisi, motor kontrolü, güç kaynakları ve güç dönüştürücüler, enerji ve akıllı şebekeler, otomasyon, bilgisayar ve iletişim altyapısı.




7. Qualcomm: The United States, mainly provides 16-bit and 32-bit MCUs. Applications: Smartphones, tablets, wireless modems.




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): United States, mainly provides 32-bit MCU. Application scope: automotive electronics, consumer electronics, industrial applications, security.




Japonya ve Güney Kore  




1. Renesas: Japan, mainly provides 16-bit and 32-bit MCUs. Application scope: computers and peripherals, consumer electronics, health and medical electronics, automotive electronics, industry, and communications.




2. Toshiba: Japan, mainly provides 16-bit and 32-bit MCUs. Application scope: automotive electronics, industrial use, motor control, wireless communications, mobile phones, computers and peripheral equipment, imaging and audio and video, consumer (home appliances), LED lighting, security, power management, entertainment equipment.




3. Fujitsu: Japan, mainly provides 32-bit MCU. Application scope: automobile, medical, machinery, home appliances.




4. Samsung Electronics: South Korea, mainly provides 16-bit and 32-bit MCUs. Applications: automotive electronics, industrial use, motor control, automobiles, building automation, home appliances, home entertainment, industrial automation, lighting, Internet of Things, smart energy, mobile electronic equipment, computer peripherals.




Çin bölgesi  




Çin toprakları  




1. Sigma Microelectronics: Başlıca 32 bit MCU'lar sağlar, uygulama alanları: telekomünikasyon, üretim, enerji, ulaşım, elektrik vb.




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. GigaDevice Innovation: Mainly provides 32-bit MCU, application scope: industrial automation, human-machine interface, motor control, security monitoring, smart home, Internet of Things.




4. Shengsi Mikroelektronik: Ağırlıklı olarak 8 bit ve 32 bit mikrodenetleyiciler (MCU) sağlar. Uygulama alanları: küçük ev aletleri, tüketici elektroniği, uzaktan kumandalar, fareler, lityum piller, dijital ürünler, otomotiv elektroniği, tıbbi aletler ve ölçüm cihazları, oyuncaklar, endüstriyel kontrol, akıllı ev ve güvenlik ve diğer alanlar.




5. Chipsea Technology: Mainly provides 16- and 32-bit MCUs. Application scope: instrumentation, Internet of Things, consumer electronics, home appliances, and automotive electronics.




6. Lianhua Entegre Devre: Ağırlıklı olarak 8 bit ve 16 bit mikrodenetleyiciler (MCU) sağlar. Uygulama alanları: tüketici elektroniği, beyaz eşya, endüstriyel kontrol, iletişim ekipmanları, otomotiv elektroniği ve bilgisayarlar.




7. Zhuhai Jianrong: Ağırlıklı olarak 8 bitlik mikrodenetleyiciler (MCU) sağlar, uygulama alanları: ev aletleri, taşınabilir güç kaynakları.




8. Actions Technology: Ağırlıklı olarak 8-bit ila 32-bit MCU'lar sağlar, uygulama alanları: tablet bilgisayarlar, akıllı ev, multimedya, Bluetooth, wifi ses.




9. Aisco Microelectronics: Ağırlıklı olarak 8 bit ve 16 bit mikrodenetleyiciler (MCU) sağlar. Uygulama alanları: tüketici çipleri, iletişim çipleri, bilgi işlem çipleri ve ev aletleri.




10. Huaxin Mikroelektronik: Ağırlıklı olarak 8 bit ve 4 bit mikrodenetleyiciler (MCU) sağlar. Uygulama alanları: uydu alıcıları, cep telefonu şarj cihazları, sürekli takvimler ve hepsi bir arada uzaktan kumandalar.




11. Shanghai Belling (Huada Semiconductor Holdings): Ağırlıklı olarak 8-bit, 16-bit ve 32-bit mikrodenetleyiciler (MCU) sağlar. Uygulama alanları: bilgisayar çevre birimleri, HDTV, güç yönetimi, küçük ev aletleri ve dijital cihazlar.




12. Haier Integrated Circuits: Mainly provides 14-bit, 15-bit, and 16-bit MCUs. Application scope: consumer electronics, automotive electronics, industry, and smart instruments.




13. Beijing Ingenic: Ağırlıklı olarak 32 bit MCU'lar üretmektedir. Uygulama alanları: giyilebilir cihazlar, Nesnelerin İnterneti, akıllı ev aletleri, otomobiller, tüketici elektroniği, tablet bilgisayarlar.




14. Çin Mikroelektronik: Ağırlıklı olarak 8 bitlik mikrodenetleyiciler (MCU) sağlar. Uygulama alanları: akıllı ev aletleri, otomotiv elektroniği, güvenlik izleme, LED aydınlatma ve peyzaj, akıllı oyuncaklar, akıllı evler ve tüketici elektroniği.




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 Mikroelektronik: Ağırlıklı olarak 8 bit ve 16 bit mikrodenetleyiciler (MCU) sağlar. Uygulama alanı: akıllı ev aletleri.




17. Times Minxin: Başlıca 32 bit MCU sağlar, uygulama alanları: otomobil navigasyonu, trafik izleme, balıkçı gemisi denetimi, enerji telekomünikasyon şebekesi.




18. China Resources Silicon Microelectronics (a subsidiary of China Resources Microelectronics): mainly provides 8-bit and 16-bit MCUs. Application scope: consumer electronics, industrial control, and home appliances.




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: Ağırlıklı olarak 32 bit mikrodenetleyiciler (MCU) sağlar. Uygulama alanları: akıllı telefonlar, dijital TV'ler, set üstü kutular, otomotiv elektroniği, GPS, e-kitap okuyucular ve yazıcılar.




21. China Resources Microelectronics: Mainly provides 8-bit and 16-bit MCUs. Application scope: general control circuits for home appliances, consumer electronics, and industrial automation control.




22. Zhongying Elektronik: Başlıca 4 bit, 8 bit, 16 bit ve 32 bit mikrodenetleyiciler (MCU) sağlar. Uygulama alanı: ev aletleri ve motorlar.




23. Lingdong Mikroelektronik: Ağırlıklı olarak 32 bit işlemciler sunmaktadır. Uygulama alanları: motor kontrolü, Bluetooth kontrolü, yüksek çözünürlüklü ekranlar, kablosuz şarj, dronlar, mikro yazıcılar, akıllı etiketler, elektronik sigaralar, LED nokta vuruşlu ekranlar vb.




24. Nuvoton Technology: Mainly provides 8-bit MCU, application scope: lighting, Internet of Things, etc.




25. Neusoft Carrier: Ağırlıklı olarak 8 bit ve 32 bit mikrodenetleyiciler (MCU) sağlar. Uygulama alanları: ev aletleri, akıllı evler, ölçüm cihazları, LCD panel kontrolörleri, endüstriyel kontrol vb.




26. Betley: Ağırlıklı olarak 32 bit MCU sağlar, uygulama alanları: akıllı ev, endüstriyel kontrol ve tüketici ürünleri.




27. Shengquan Technology: Ağırlıklı olarak 8 bit MCU'lar sağlar, uygulama alanı: otomotiv, eğitim, endüstriyel kontrol, tıp vb. için küçük ve orta ölçekli ekran panelleri.




28. Hangshun Chip: Mainly provides 8-bit and 32-bit MCUs. Application scope: automobiles, Internet of Things, etc.




29. Fudan Mikroelektronik: Ağırlıklı olarak 16 bit ve 32 bit mikrodenetleyiciler (MCU) sağlar. Uygulama alanları: akıllı sayaçlar, akıllı kapı kilitleri vb.




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.




Tayvan, çin  




1. Hongjing Technology: ağırlıklı olarak 32 bit MCU'lar sunmaktadır. Uygulama alanları: iletişim, endüstriyel kontrol, bilgi işlem cihazları ve ses.




2. Holtek Semiconductor: ağırlıklı olarak 8 bit ve 32 bit mikrodenetleyiciler (MCU) sağlar. Uygulama alanları: tüketici elektroniği, LED aydınlatma vb.




3. Lingyang Technology: ağırlıklı olarak 8 bit ve 16 bit mikrodenetleyiciler (MCU) sağlar. Uygulama alanı: ev ses ve video sistemleri.




4. Zhongying Elektronik: ağırlıklı olarak 4 bit ve 8 bit mikrodenetleyiciler (MCU) sağlar. Uygulama alanları: şarj cihazları, taşınabilir güç kaynakları, ev aletleri, endüstriyel kontrol.




5. Songhan Technology: ağırlıklı olarak 8 bit ve 32 bit mikrodenetleyiciler (MCU) sağlamaktadır. Uygulama alanları: uzaktan kumandalar, akıllı şarj cihazları, büyük ve küçük sistemler, elektronik tartılar, kulak termometreleri, tansiyon ölçme cihazları, lastik basınç ölçerler, çeşitli ölçüm ve sağlık ekipmanları.




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: ağırlıklı olarak 4-bit, 8-bit ve 51-bit MCU'lar sağlar. Uygulama alanı: uzaktan kumandalar, küçük ev aletleri.




8. Youhua Mikroelektronik: ağırlıklı olarak 4 bit ve 8 bit mikrodenetleyiciler (MCU) sağlar. Uygulama alanı: kayıt entegre devre ürünleri, tüketici elektroniği, ev ürünleri.




9. Yingguang Teknoloji Mikrodenetleyici: ağırlıklı olarak 4 bit ve 8 bit MCU'lar sunmaktadır. Uygulama alanları: makineler, otomasyon, ev aletleri, robotlar.




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




beş
Mikrokontrolcüler öğrenmek için ipuçları
   




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.




For instruction systems, although they appear to be very different in form, they are actually just different symbols. The meanings they represent, the functions to be completed, and the addressing methods are basically similar.




Bir mikrodenetleyiciyi anlamak için öncelikle ROM alanı, RAM alanı, giriş/çıkış portu sayısı, zamanlayıcı sayısı ve zamanlama yöntemleri, sağlanan çevresel fonksiyon modülleri (Çevre Devresi), kesme kaynakları, çalışma voltajı ve güç tüketimi vb. hakkında bilgi sahibi olmanız gerekir.




After understanding these MCU Features, the next step is to compare the functions of the selected MCU with the functions required for actual project development, and clarify which resources are currently needed and which are not used in this project.




Projede kullanılması gereken ancak seçilen mikrodenetleyici tarafından sağlanmayan fonksiyonlar için, bunları dolaylı yöntemlerle uygulamak amacıyla mikrodenetleyicinin ilgili bilgilerini dikkatlice anlamanız gerekir. Örneğin, geliştirmekte olduğunuz projenin PC COM portuyla iletişim kurması gerekiyorsa ve seçilen mikrodenetleyici bir UART portu sağlamıyorsa, bunu uygulamak için harici kesintileri kullanmayı düşünebilirsiniz.




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.




Mikrodenetleyicinin ilgili işlevlerini netleştirdikten sonra programlamaya başlayabilirsiniz.




Yeni başlayanlar veya bu mikrodenetleyiciyi ilk kez kullanan tasarımcılar, mikrodenetleyicinin işlevlerine dair birçok belirsiz açıklamayla karşılaşabilirler. Bu tür sorunlar için iki çözüm yöntemi vardır. Birincisi, verilerde açıklanan işlevleri anlamak için özel bir doğrulama programı yazmaktır; diğeri ise bunu geçici olarak göz ardı edip, mevcut anlayışınıza göre mikrodenetleyici programını yazmak ve hata ayıklama sırasında değiştirilip geliştirilmek üzere bırakmaktır. İlk yöntem, zamanı kısıtlı projeler ve yeni başlayanlar için uygundur, ikinci yöntem ise mikrodenetleyici geliştirme konusunda belirli bir deneyime sahip kişiler veya proje takvimi sıkı olduğunda uygundur.




Don't take any special time to understand the command system. The instruction system is just a symbol of logical description. You can only view the relevant instructions according to your own logic and the logical requirements of the program during programming. As programming progresses, you will become more and more proficient in the instruction system, and you can even memorize it unconsciously.




altı
Microcontroller programming




Mikrodenetleyici (MCU) program yazımı ile bilgisayar (PC) program yazımı arasında büyük bir fark vardır. C tabanlı MCU geliştirme araçları giderek daha popüler hale gelse de, verimli program kodu isteyen ve assembly dilini kullanmayı seven tasarımcılar için assembly dili hala en özlü ve etkili programlama dilidir.




Mikrodenetleyici programlama için temel çerçeve kabaca aynıdır. Genellikle üç bölüme ayrılır: başlatma bölümü (bu, mikrodenetleyici programlama ile PC programlama arasındaki en büyük farktır), ana program döngüsü gövdesi ve kesme işleyici. Bunların açıklamaları aşağıdaki gibidir:




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




Tüm kesintileri maskeleyin ve yığın işaretçisini başlatın: Başlatma kısmı genellikle herhangi bir kesintinin meydana gelmesini istemez.




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.




G/Ç portunun başlatılması: Projenin uygulama gereksinimlerine göre, ilgili G/Ç portunun giriş ve çıkış modunu ayarlayın. Giriş portu için, yukarı çekme veya aşağı çekme direncini ayarlamanız gerekir; çıkış portu için, gereksiz hataları önlemek için başlangıç ​​seviyesi çıkışını ayarlamanız gerekir.




Kesme ayarları: Projede kullanılması gereken tüm kesme kaynakları için, kesmelerin tetikleme koşulları ayarlanmalı ve bunlar etkinleştirilmelidir. Kullanılmayan gereksiz kesmeler ise devre dışı bırakılmalıdır.




Diğer fonksiyonel modüllerin başlatılması: Kullanılması gereken MCU'nun tüm çevresel fonksiyon modülleri için, proje uygulamasının gereksinimlerine göre ilgili ayarlar yapılmalıdır. Örneğin, UART iletişimi için Baud Hızı, veri uzunluğu, doğrulama yöntemi ve Durdurma Biti uzunluğu ayarlanmalıdır. Programlayıcı Zamanlayıcı için ise saat kaynağı, frekans bölme sayısı ve Yeniden Yükleme Verisi ayarlanmalıdır.




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. Ana program döngüsü gövdesi: Çoğu mikrodenetleyici uzun süre sürekli çalışır, bu nedenle ana program gövdeleri temel olarak bir döngü şeklinde tasarlanmıştır. Birden fazla çalışma moduna sahip uygulamalar için, durum bayrakları aracılığıyla dönüştürülen birden fazla döngü gövdesi olabilir. Ana program gövdesi için genellikle aşağıdaki modüller düzenlenir:




Hesaplama programları: Hesaplama programları genellikle zaman alıcıdır, bu nedenle özellikle çarpma ve bölme işlemleri olmak üzere, bu tür programların herhangi bir kesinti sırasında işlenmesine kesinlikle karşıyız.




Gerçek zamanlı gereksinimleri düşük veya hiç olmayan programların işlenmesi;
 




Ekran iletim programı: esas olarak harici LED ve LCD sürücülerine sahip uygulamalar için.




3. Kesme işleyici: Kesme programı, esas olarak dışarıdan gelen ani sinyallerin tespiti, düğme algılama ve işleme, zamanlama sayımı, LED ekran taraması vb. gibi yüksek gerçek zamanlı gereksinimlere sahip görevleri ve olayları işlemek için kullanılır.




Genel olarak, kesme programı kodunu olabildiğince özlü ve kısa tutmalıdır. Gerçek zamanlı olarak işlenmesi gerekmeyen fonksiyonlar için, kesmede tetikleme bayrağı ayarlanabilir ve ardından ana program belirli işlemleri gerçekleştirir. Bu, özellikle tüm kesmelere zamanında yanıt vermesi gereken düşük güç tüketimli, düşük hızlı mikrodenetleyiciler için çok önemlidir.




4. Farklı görev birimlerinin düzenlenmesi için, farklı mikrodenetleyiciler farklı işlem yöntemlerine sahiptir:




Örneğin, düşük hızlı, düşük güç tüketimli MCU (Fosc=32768Hz) uygulamaları için, bu tür projelerin el tipi cihazlar olduğu ve sıradan LCD ekranlar kullandığı göz önüne alındığında, tuş basmalarına ve ekran tepkisine verilen yanıtın yüksek gerçek zamanlı performans gerektirdiği için, tuş basmalarını işlemek ve veri görüntülemek için genellikle zamanlı kesintiler kullanılır; Fosc>1MHz uygulamaları gibi yüksek hızlı MCU'lar için ise, MCU'nun bu sırada ana program döngüsü gövdesini yürütmek için yeterli zamanı olduğundan, yalnızca ilgili kesintilerde çeşitli tetikleme bayraklarını ayarlayabilir ve tüm görevleri ana program gövdesinde yürütülmek üzere yerleştirebilir.




5. Mikrodenetleyici programlamasında özellikle dikkat edilmesi gereken bir nokta şudur:

Aynı değişkenin veya verinin aynı anda kesme ve ana program gövdelerinde erişilmesini veya ayarlanmasını önlemek gereklidir. Etkili bir önleme yöntemi, bu tür verilerin işlenmesini bir modülde düzenlemek ve tetikleme bayrağına bakarak veriler üzerinde ilgili işlemlerin yapılıp yapılmayacağına karar vermektir; diğer program gövdelerinde (özellikle kesmelerde), yalnızca verilerin işlenmesi gereken yerlerde tetikleme bayrakları ayarlanır. --Bu, veri yürütmesinin öngörülebilir ve benzersiz olmasını sağlar.




Yedi   Engineer's summary of microcontroller programming  




1. Develop a good habit of summarizing. Summarizing is not only a summary of your own learning, but also a review and deepening of the learning process. It can also avoid making mistakes the second time.


2. Bir program yazmadan önce, öncelikle projeyi iyice anlamanız, farkında olmanız ve genel bir çerçeve oluşturmanız gerekir. Nasıl bir düzenleme yapılacağını ve en mantıklı düzenlemenin ne olduğunu dikkatlice düşünmek çok önemlidir. Hangi modülün önce yapılacağını, bu modülün belirli adımlarını, her fonksiyonun nasıl adlandırılacağını, diğer modüllerle bağlantısını vb. analiz etmek gerekir. Bir kağıt parçası alıp önemli süreçleri not almak iyi bir fikirdir.


3. For modular programming in C language, you must first divide each module, program module by module, determine a sequence, follow the sequence, and then write the next module after the module is successful. For header files, write the module's header file after the module is written.


4. Uyarılar göründüğünde bunları görmezden gelmeyin. Bu, programda mantıksız bir şey olduğu anlamına gelir. Kaynağı bulup bir çözüm bulmanız gerekir. Kaynak ararken spesifik olun. Bu alanda bilgi için internette arama yapabilir veya başkalarından tavsiye isteyebilirsiniz. Örneğin, başka bir projedeki ana fonksiyon aslında bu projeye eklenmiş olabilir. Aslında aynı fonksiyon adları tekrarlanıyor olabilir. Deneysel olayları analiz etmenin ve adım adım ilerlemenin de nedenleri vardır. Port tanımlanırken yanlış arayüz seçilmiş olabilir. Bazen, gerçekten çözemiyorsanız ara verip düşünmek iyidir. Ne kadar basit olursa olsun, hatalar olabileceği için dikkat etmelisiniz.   
In the development of microcontroller applications, problems such as code usage efficiency, anti-interference performance and reliability of microcontrollers are still troubled. Now we summarize several basic skills that should be mastered in the development of microcontroller.        
 
  sekiz
  Mikrokontrolcü geliştirme becerileri  
1. Programlardaki hataları nasıl azaltabiliriz?
Program hatalarını azaltmaya gelince, öncelikle sistem çalışması sırasında dikkate alınması gereken aşağıdaki aralık dışı yönetim parametrelerini göz önünde bulundurmalısınız.  
 
  • Fiziksel parametreler: Bu parametreler esas olarak sistemin giriş parametreleridir ve uyarıcı parametreleri, veri toplama işlemi sırasındaki işletim parametreleri ve işlemin sonundaki sonuç parametrelerini içerir.
  • Kaynak parametreleri: Bu parametreler esas olarak sistemdeki devrelerin, aygıtların ve fonksiyonel birimlerin kaynaklarıdır; örneğin bellek kapasitesi, depolama birimi uzunluğu ve istifleme derinliği.
  • Uygulama parametreleri: Bu uygulama parametreleri genellikle bazı mikrodenetleyicilerin ve fonksiyonel birimlerin uygulama koşulları olarak ortaya çıkar. Proses parametreleri: Sistem çalışması sırasında düzenli bir şekilde değişen parametreleri ifade eder.

2. C dili programlama kodunun verimliliğini nasıl artırabiliriz?
Mikrokontrolcü programlamasında C dilinin kullanımı, mikrokontrolcülerin geliştirilmesi ve uygulanmasında kaçınılmaz bir trenddir. C dilinde programlama yaparken maksimum verimliliğe ulaşmak istiyorsanız, kullandığınız C derleyicisini iyi tanımanız en iyisidir. Öncelikle, her bir C dili derlemesine karşılık gelen assembly dili ifadelerinin satır sayısını test edin, böylece verimliliği net bir şekilde anlayabilirsiniz. Gelecekte programlama yaparken, en yüksek derleme verimliliğine sahip ifadeyi kullanın. Her C derleyicisinin belirli farklılıkları olacaktır, bu nedenle derleme verimliliği de farklı olacaktır. Gömülü sistemler için mükemmel bir C derleyicisinin kod uzunluğu ve yürütme süresi, assembly dilinde yazılmış aynı fonksiyona göre yalnızca %5-20 daha uzundur.  
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
Parazit oluşumunu önlemenin en etkili yolu, parazit kaynağını ortadan kaldırmak ve parazit yolunu engellemektir; ancak bunu yapmak genellikle zordur, bu nedenle yalnızca mikrodenetleyicinin parazit önleme yeteneğinin yeterince güçlü olup olmadığını görebiliriz. Donanım sistemlerinin parazit önleme yeteneğini geliştirirken, esnek tasarımı, donanım kaynaklarından tasarruf sağlaması ve yüksek güvenilirliği nedeniyle yazılım tabanlı parazit önleme giderek daha fazla ilgi görmektedir.  
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.  
Genellikle mikrodenetleyicilerde sıfırlamanın nedenini belirlemek için kullanılabilecek bazı bayrak kayıtları bulunur; ayrıca, bazı bayrakları kendiniz de RAM'e gömebilirsiniz. Program her sıfırlandığında, bu bayraklara bakarak farklı sıfırlama nedenleri belirlenebilir; ayrıca farklı bayraklara bağlı olarak ilgili programa doğrudan atlayabilirsiniz. Bu, programın sürekli çalışmasını sağlar ve kullanıcı programı kullanırken sıfırlandığını fark etmez.  
4. Mikrodenetleyici sisteminin güvenilirliği nasıl test edilir?
When a microcontroller system design is completed, there will be different test items and methods for different microcontroller system products, but some must be tested:
 
  • Test the completeness of the microcontroller software function
  • Power on and power off test
  • Yaşlanma testi
  • ESD ve EFT gibi testler

Bazen, insan kullanımı sırasında meydana gelebilecek hasarı da simüle edebiliriz. Örneğin, antistatik özelliğini test etmek için mikrodenetleyici sisteminin temas noktasını kasıtlı olarak insan vücudu veya giysi kumaşıyla ovabiliriz. Elektromanyetik girişime karşı direncini test etmek için mikrodenetleyici sistemine yakın bir yerde yüksek güçlü bir elektrikli matkap kullanabiliriz.


Özetle, tek çipli mikrobilgisayar, bilgisayar geliştirme ve uygulamalarının önemli bir yönü haline gelmiştir. Tek çipli mikrobilgisayarın uygulamasının önemli yanı, geleneksel kontrol sistemi tasarım fikirlerini ve tasarım yöntemlerini temelden değiştirmesidir.


Most of the functions that must be implemented by analog circuits or digital circuits in the past can now be implemented through software methods using microcontrollers. This kind of control technology in which software replaces hardware is also called micro-control technology, which is a revolution in traditional control technology.  
In addition, during the development and application process, we must master skills and improve efficiency so that it can be used for a wider range of purposes.        
        Dokuz
Çip çalışma özeti
       
The operations on the chip are mainly operations on the registers in the chip. The registers in the chip have their own unique addresses mapped on the memory, which is the operation on the corresponding address. When looking at the chip, first look at the timing diagram, then understand the corresponding registers, understand how they operate, define the required ports (which can be identified by the program), and write write operation procedures and read operation procedures.


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


Çipleri bir veri yolu üzerinden bağlarken, öncelikle veri yolunun protokolünü anlamanız gerekir. I2C veri yoluna bağlı çip, esas olarak bu veri yolu üzerinden diğer çipleri kontrol eder.


1. Nokta matrisindeki 74hc595 diyotlarından biri sütun seçimi için, diğer ikisi ise renk seçimi için kullanılır. Nokta matrisi, bir diyot koleksiyonuna eşdeğerdir.


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.


Selection of timer working mode: The high four bits set the timer T1, and the low four bits set T0. Then the last two digits of each mode set the working mode. When setting two timers, be careful to use or (|). When using interrupts, pay attention to clearing the ones that should be cleared after entering the interrupt.


2. Seri port alıcı-verici: Baud hızını ayarlamak için genellikle Mod 2 (otomatik başlangıç ​​değerini yeniden yükleme) kullanılır. Farklı cihazların farklı veri işleme kapasiteleri olduğundan, baud hızının ayarlanması esas olarak düşük hızlı cihazlarla iletişimi sağlamak içindir. Kesme bayrağı biti yazılım tarafından temizlenmelidir. Seri port kesmesi ayarlanırken, gönderme veya alma işleminden kaynaklanan kesmelerden hangisi olursa olsun, kesme fonksiyonuna girilebilir, bu nedenle kesme fonksiyonunun ayarlanmasına dikkat edilmelidir. (Genellikle ana bilgisayar veya yardımcı bilgisayar olarak kendi sezgilerinize göre bir fonksiyon ayarlanır.)


Eğer veri göndermek için kesme (interrupt) kullanıyorsanız, ilk kez kesmeye nasıl gireceğinizi bulmanız gerekir; yani önce bir kez göndermeniz, ardından kesmeye girebilirsiniz. Bir seferde yalnızca bir bayt gönderilebilir ve bir sonraki bit ancak TI ayarlandıktan sonra gönderilebilir.


3. Pcf8591ad conversion has four channels of input. When reading pcf8591, which channel is selected, the voltage input by that channel is read. The converted data is stored in the chip and then read out. When reading, first write the address of the chip, then write the sub-address of the device (0x40|channel number), and then the read data.


4. Veri dönüştürme işlemi, öncelikle cihaz adresini çipe yazmak, ardından alt adresi (0x40) yazmak ve son olarak dönüştürülecek dijital miktarı yazmaktır. Cihaz adresi çip bilgisi bu şekilde girilir.


5. LCD ekran için, veriler yazılıp görüntülendikten sonra sürekli yenileme yapılmadan aynı şekilde görüntülenecektir. Değiştirmek isterseniz, yalnızca yeniden girmeniz gerekir.


6. DS1302 saat çipi için, veri okuma işleminde ilk veri sekizinci saat darbesinin düşen kenarında okunurken, veri yazma işleminde ise sonraki çıktı için hazırlık yapılır. Programın yazma yöntemine ve dönüş değerinin konumuna dikkat edin.


7. Öncelikle DS1302'de kaydı belirtin ve ardından ona veri yazın. Çip üzerindeki veri kaydı adresi gösterir. (Yazma koruma programını hala tam olarak anlamıyorum. Her zaman yazma işlemi olmuyor mu? Yazma koruması neden hala açık?)


(Önceki kahramana göre, başlatma zamanından sonra bir bayrak ayarlayabilirsiniz. Bu bayrak varsa, başlatma zamanına gerek yoktur. Ancak, güç kapatıldığında, MCU'nun RAM'i bu bayrağı kaydedemez, bu nedenle bayrağı kaydetmek ve güç açıldıktan sonra okumak için DS1302'nin RAM'ini kullanabilirsiniz. Ben de bir acemiyim ve yakın zamanda DS1302 kullanmayı planlıyorum. Bunun doğru olup olmadığını bilmiyorum ve henüz uygulamadım. Lütfen daha fazla bilgi paylaşın.)


8. Daha sonra unutmanız ihtimaline karşı başlatma ayarlarını not almak en iyisidir. Okuma veya yazma sırasında en düşük bitin mi yoksa en yüksek bitin mi önce işlendiğine dikkat edin; bu, zamanlama diyagramına göre değerlendirilebilir.


9. Kızılötesi alıcı-verici, alım sırasında iki düşen kenar arasındaki süreye göre yüksek seviye mi yoksa düşük seviye mi olduğunu belirler. Bir program yazarken, önce zamanı belirlemek için bir zamanlayıcı kullanın, kaydedin ve ardından ikiliye dönüştürün (bu programın nasıl yazılacağı hakkında daha fazla bilgi edinin, çok faydalı olacaktır).


10. Step motor: Esas olarak anahtarlama için kullanılır. Step motorun torku hız arttıkça azalır. Ağırlıklı olarak takım tezgahlarında işlenen parçaların otomatik beslenmesinde kullanılır. Ayrıca daha yüksek hassasiyet gerektiren kontrol yerlerinde de kullanılabilir.


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. Çin karakterlerine genel bakış:
Çince karakterleri bir monitörde veya yazıcıda görüntülemek için, Çince karakterler grafik sembollere göre nokta matrisine tasarlanır ve karşılık gelen nokta matris kodu (glif kodu) elde edilir.


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.


Kamera içi kod


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.


Çince karakter yazı tipleri, ulusal standart kod sırasına göre düzenlenir ve ikili dosyalar şeklinde bellekte saklanır; bu da Çince karakter yazı tipi kütüphanesi, Çince karakter glif kütüphanesi veya Çince karakter kütüphanesi olarak adlandırılır.


Two encoding methods, see header file


GB1616.h//------------------ Çince karakter yazı tipi veri yapısı tanımı ------------------------//structtypFNT_GB16 // Çince karakter yazı tipi veri yapısı {unsignedcharIndex[3]; // Çince karakter dahili kod indeksi unsignedchar Msk[32];// nokta matrisi kod verisi }; /////////////////////////////////////////////////////////////////////////////////// Çince karakter yazı tipi tablosu//// Çince karakter kütüphanesi: Song Hanedanlığı 16 nokta, yatay olarak sol yüksek bit modülü, veri düzeni: soldan sağa, yukarıdan aşağıya///////////////////////////////////////////////////////////////////////////////////conststructtypFNT_GB16 codeGB_16[]= //veri tablo{/*---------------------------------------------------------------------------------;kaynak dosya/metin :Xu;genişlik×yükseklik (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] ifadesi, codeGB_16 adlı typFNT_GB16 yapısının bir dizisi olduğunu gösterir. codeGB_16[k], dizinin k+1. üyesidir. index, typFNT_GB16 yapısının bir üyesidir, bu nedenle codeGB_16[k].Index ile referans verilebilir. Aynı zamanda, index bir dizi olduğundan, index[0] ile de referans verilebilir. Eğer ((codeGB_16[k].Index[0]==c[0])&&(codeGB_16[k].Index[1]==c[1])) ise, && mantıksal VE operatörüdür; bu, && sembolünün her iki tarafındaki değerlerin doğru olduğu anlamına gelir. Sadece &&'nin değeri doğrudur, yani true && true = true. Bu cümle şu anlama gelir: codeGB_16[k].Index[0]==c[0] ve codeGB_16[k].Index[1]==c[1] aynı anda kurulmuştur. Eğer aşağıdaki ifade yürütülürse, codeGB_16[] bir yapı dizisidir ve codeGB_16[k].Index[0], yapı dizisinin K. yapısının indeks üyesinin 0. eleman değerini ifade eder.  
      13. 12864 LCD:

Her bir ekran noktası ikili bir sayıya karşılık gelir; 1 açık, 0 kapalı anlamına gelir. Bu nokta matris bilgilerini depolayan RAM'e ekran veri belleği denir. Belirli bir grafiği veya Çince karakteri görüntülemek, ilgili nokta matris bilgilerini ilgili depolama birimine yazmak anlamına gelir.  
The address counter (AC) of the graphics RAM will only automatically increment the horizontal address (X axis) by one. When the horizontal address = 0FH, it will be reset to 00H. However, it will not automatically increment the vertical address with a carry. Therefore, when multiple data are written continuously, the program needs to determine whether the vertical address needs to be reset.


14. Drawing RAM (GDRAM)

The drawing display RAM provides 128×8 bytes of memory space. When changing the drawing RAM, first write the horizontal and vertical coordinate values ​​continuously, and then write two bytes of data to the drawing RAM. The address counter (AC) will automatically increase the horizontal address (X address) by one. When the horizontal address is 0XFH, it will be reset to 00H; the vertical address will not be automatically incremented by 1. The drawing display must be turned off during writing to drawing RAM,

 
[cpp] view plain copy//Çince karakterleri görüntüle voiddispString (uchar X, Y,uchar *msg)//Hangi satır X ve hangi sütun Y'dir. msg Çince karakterlerdir {if(X==0) write_data(*msg++); //Çince karakterleri görüntüle }}/////////////////////////////////// ///////////////// ///////////////// Görüntüyü görüntüle voiddisppicture(uchar code *adder){ uint i,j;//*******Ekranın üst yarısındaki içeriği görüntüle ayarları for(i=0;i<32;i++)//Ekranın üst yarısındaki 32 sütun adresi { write_com(0x80 + i);//Dikey adresi VERTICALADD olarak ayarla write_com(0x80);//Yatay adresi HORIZONTAL ADD olarak ayarla for(j=0;j<16;j++) { write_data(*adder); adder++; }}//************Ekranın alt yarısında içerik ayarlarını görüntüle for(i=0;i<32;i++) //{ write_com(0x80 + i); //Dikey adresi ayarla VERTICALADD write_com(0x88); //Yatay adresi ayarla HORIZONTALADDfor(j=0;j<16;j++){write_data(*adder);adder++;} }}
 
C dilinde, tanımlanmış bir değişken için otomatik olarak alan ayrılır ve adresi değişkenin adıdır. Bu ad aracılığıyla bellekteki verilere erişilebilir ve hesaplama yoluyla yeni veriler elde edilebilir. Ancak, assembly dilinde programcının depolama alanını tanımlaması ve hesaplama için verileri akümülatöre göndermesi gerekir. Her adım programcının müdahalesini gerektirir. C dilinde bu işlemler derleyici tarafından tamamlanır.




15. Bazı faydalı sorular ve cevaplar

①. How is the memory allocation of variables carried out in microcontroller C language? Could it be that the compiler intelligently adds allocation and recycling code during the compilation process? The key point is that the program I made, how can I ensure that it does not have memory overflow errors? If I'm doing a recursive operation, then the memory requirements are difficult to calculate by myself.




②. Mikrodenetleyici C dilinin değişken tanımlamasında kısıtlamalar olacak mı? Örneğin, kayan noktalı verilerin çarpma ve bölme işlemleri assembly diliyle yazılıyor ve kod oldukça karmaşık. Doğrudan C dilinde yazılırsa çok basit olmaz mı?




③. Mikrodenetleyicinin C diliyle oluşturduğu hex dosyasında, komut ve veri ROM'unun adres dağılımı derleyici tarafından otomatik olarak atanır mı? Kullanıcılar bunu atayabilir mi?




Cevap 1: C dilinde yazılmış bir mikrodenetleyici programı önce bir program (c51.exe gibi görünüyor) tarafından derlenir. Derleme tamamlandıktan sonra, değişkenlerin depolama alanı boyutu düzenlenir, ancak belirli adres henüz tahsis edilmemiştir (adres boştadır). Ardından, başka bir program (a51.exe gibi görünüyor) bağlanır. Bağlantıdan sonra, belirli adres belirlenir.  
Çok fazla değişken varsa, derleyici veri bölümünün çok büyük olduğunu belirten bir uyarı verecektir. Bellek taşması hatası olmaması için en önemli husus, yığın taşmasının olup olmadığıdır ve bu da deneyime bağlıdır.




Mikrokontrolcülerin C dili genellikle özyinelemeyi yasaklar ve özyinelemeli işlemlerden genellikle kaçınılır. Sonuçta, mikrokontrolcüler PC değildir ve bu durum hızı etkileyecektir. Özyinelemeli işlem yapmak istiyorsanız, DSP çipi kullanmak daha uygun olur. Kısacası, uygun çipi seçebilmeniz gerekir.




Cevap 2: Değişkenin boyutu (basamak sayısı) genellikle çip akümülatöründeki basamak sayısıyla aynıdır. Örneğin, 51 genellikle 8 bit kullanır çünkü 8 bitlik bir mikrodenetleyicidir.

Mikrokontrolcü bit değişkenleri tanımlayabilir, ancak bit dizileri tanımlayamaz. C dilinde yazmak basit görünse de aslında en büyük kod miktarını üretir. Kontrol için kullanılan mikrokontrolcü neredeyse hiç kayan nokta işlemi kullanmaz; bu da sadece yavaş değil, aynı zamanda zahmetli ve yer kaplayıcıdır. Eğer bir DSP çipi ise, uygun bir donanım yapısına sahip olması çok daha iyi olur.




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.



Şirket telefon numarası: +86-0755-83044319
Faks: +86-0755-83975897
E-posta: 1615456225@qq.com
QQ: 3518641314 Yönetici Li

QQ: 332496225 Yönetici Qiu

Adres: Shenzhen, Longhua Yeni Bölgesi, Minzhi Caddesi No. 1079, Zhantao Teknoloji Binası, C Binası, Oda 809

whatsapp

WhatsApp

Whatsapp:+8618073002950