MCU là viết tắt của Microcontroller Unit (Bộ vi điều khiển). Từ này thường được biết đến như là vi máy tính đơn chip, nhằm mục đích giảm tần số và thông số kỹ thuật của CPU một cách phù hợp, đồng thời tích hợp các giao diện ngoại vi như bộ nhớ, bộ đếm, USB, chuyển đổi A/D, UART, PLC, DMA, và thậm chí cả mạch điều khiển LCD trên một chip duy nhất để tạo thành một máy tính cấp chip. Nó có thể thực hiện các tổ hợp điều khiển khác nhau cho các ứng dụng khác nhau, chẳng hạn như điện thoại di động, thiết bị ngoại vi máy tính, điều khiển từ xa, điện tử ô tô, động cơ bước công nghiệp và điều khiển cánh tay robot. Hình ảnh MCU có thể được thấy trong hình minh họa.
một
Tóm lược về lịch sử phát triển của vi điều khiển.
Lịch sử của vi điều khiển không dài, nhưng tốc độ phát triển rất nhanh. Việc sản xuất và phát triển của nó thường đồng bộ với việc sản xuất và phát triển của vi xử lý (CPU). Kể từ khi tập đoàn Intel của Hoa Kỳ lần đầu tiên cho ra mắt vi xử lý 4-bit vào năm 1971, sự phát triển của nó cho đến nay có thể được chia thành năm giai đoạn. Sau đây là phần giới thiệu về sự phát triển của vi điều khiển từ tập đoàn Intel.
1971 ~ 1976
The initial stage of the development of microcontrollers. In November 1971, Intel first designed the Intel 4004, a 4-bit microprocessor with an integration of 2,000 transistors/chip, equipped with RAM, ROM and shift register, forming the first MCS-4 microprocessor. Then it launched the 8-bit microprocessor Intel 8008, and other 8-bit microprocessors launched by other companies.
1976 ~ 1980
Vi điều khiển hiệu năng thấp. Điển hình là dòng MCS-48 do Intel ra mắt năm 1976, sử dụng cấu trúc nguyên khối tích hợp CPU 8-bit, giao diện I/O song song 8-bit, bộ đếm/định thời 8-bit, RAM và ROM trên một chip bán dẫn. Mặc dù phạm vi địa chỉ bị hạn chế (không quá 4 KB), không có I/O nối tiếp, dung lượng RAM và ROM nhỏ, và hệ thống ngắt tương đối đơn giản, nhưng chức năng của nó có thể đáp ứng nhu cầu điều khiển công nghiệp nói chung và các thiết bị, máy đo thông minh.
1980 ~ 1983
Giai đoạn vi điều khiển hiệu năng cao. Các vi điều khiển 8-bit hiệu năng cao ra mắt ở giai đoạn này thường có cổng nối tiếp, hệ thống xử lý ngắt đa cấp và nhiều bộ đếm/định thời 16-bit. Dung lượng RAM và ROM tích hợp trên chip được tăng lên, phạm vi định địa chỉ có thể đạt tới 64 KB. Một số chip còn có giao diện chuyển đổi A/D.
1983~late 1980s
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
Vi điều khiển đang phát triển lên một tầm cao mới về mọi khía cạnh tích hợp, chức năng, tốc độ, độ tin cậy và lĩnh vực ứng dụng.
hai
Classification and application of single chip microcomputer
Vi điều khiển (MCU) có thể được chia thành hai loại dựa trên loại bộ nhớ: loại không có ROM tích hợp và loại có ROM tích hợp. Đối với các chip không có ROM tích hợp, cần phải kết nối thêm EPROM ngoài trước khi sử dụng (thường là 8031); các chip có ROM tích hợp được chia thành loại EPROM tích hợp (chip điển hình là 87C51), loại ROM mặt nạ tích hợp (chip điển hình là 8051), loại Flash tích hợp (chip điển hình là 89C51) và các loại khác.
Theo mục đích sử dụng, nó có thể được chia thành loại đa năng và loại chuyên dụng; theo độ rộng của bus dữ liệu và độ dài của các byte dữ liệu có thể xử lý cùng một lúc, nó có thể được chia thành các MCU 8, 16 và 32 bit.
Hiện nay, thị trường ứng dụng MCU trong nước rộng lớn nhất là lĩnh vực điện tử tiêu dùng, tiếp theo là lĩnh vực công nghiệp và thị trường điện tử ô tô. Điện tử tiêu dùng bao gồm thiết bị gia dụng, tivi, máy chơi game, hệ thống âm thanh và video, v.v. Lĩnh vực công nghiệp bao gồm nhà thông minh, tự động hóa, ứng dụng y tế, và sản xuất và phân phối năng lượng mới. Lĩnh vực ô tô bao gồm hệ thống truyền động và hệ thống điều khiển an toàn ô tô.
số ba
Các chức năng cơ bản của vi điều khiển
Đối với hầu hết các vi điều khiển (MCU), các chức năng sau đây là phổ biến và cơ bản nhất. Đối với các MCU khác nhau, cách mô tả chúng có thể khác nhau, nhưng về cơ bản chúng giống nhau:
1. Bộ định thời (Timer): Mặc dù có nhiều loại bộ định thời, nhưng chúng có thể được tóm tắt thành hai loại: Loại thứ nhất là bộ định thời có khoảng thời gian cố định, nghĩa là thời gian định thời được hệ thống thiết lập và không thể điều khiển bởi chương trình người dùng. Hệ thống chỉ cung cấp một số khoảng thời gian cố định để chương trình người dùng lựa chọn, chẳng hạn như 32Hz, 16Hz, 8Hz, v.v. Loại bộ định thời này phổ biến hơn trong các MCU 4-bit, vì vậy nó có thể được sử dụng để thực hiện các chức năng như tạo xung nhịp, định thời và các chức năng liên quan khác.
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.
Vì nguồn xung nhịp có thể được lựa chọn tự do, loại bộ hẹn giờ này thường được kết hợp với bộ đếm sự kiện.
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:
Cổng chỉ có chức năng vào hoặc chỉ có chức năng ra: Loại cổng I/O này được xác định bởi thiết kế phần cứng của MCU. Nó chỉ có thể là cổng vào hoặc cổng ra, và phần mềm không thể được sử dụng để thiết lập thời gian thực.
Cổng IO đọc và ghi trực tiếp: Ví dụ, cổng IO của MCS-51 thuộc loại cổng IO này. Khi lệnh đọc cổng IO được thực thi, nó là một cổng đầu vào; khi lệnh ghi cổng IO được thực thi, nó tự động trở thành một cổng đầu ra.
Lập trình để thiết lập hướng vào và ra: Hướng vào hoặc ra của loại cổng IO này được thiết lập bởi chương trình theo nhu cầu thực tế. Ứng dụng này tương đối linh hoạt và có thể thực hiện một số ứng dụng ở cấp độ bus, chẳng hạn như bus I2C, các loại bus điều khiển LCD, LED, v.v.
For the use of IO ports, an important point that must be kept in mind is: for the input port, there must be a clear level signal to ensure that it cannot float (this can be achieved by adding a pull-up or pull-down resistor); for the output port, the output status level must consider its external connection conditions, and it should be ensured that there is no current pulling or sinking in the standby or static state.
3. Ngắt ngoài: Ngắt ngoài cũng là một chức năng cơ bản của hầu hết các MCU. Nó thường được sử dụng để kích hoạt tín hiệu theo thời gian thực, lấy mẫu dữ liệu và phát hiện trạng thái. Các phương pháp ngắt bao gồm kích hoạt cạnh lên, kích hoạt cạnh xuống và kích hoạt mức. Ngắt ngoài thường được thực hiện thông qua các cổng đầu vào. Nếu đó là cổng IO, chức năng ngắt của nó sẽ chỉ được bật khi nó được đặt ở chế độ đầu vào; nếu đó là cổng đầu ra, chức năng ngắt ngoài sẽ tự động tắt (có một số ngoại lệ trong dòng ATiny của ATMEL, có thể kích hoạt chức năng ngắt ngay cả khi nó là cổng đầu ra). Các ứng dụng của ngắt ngoài như sau:
Phát hiện tín hiệu kích hoạt bên ngoài: Một là dựa trên các yêu cầu thời gian thực, chẳng hạn như điều khiển thyristor, phát hiện các tín hiệu đột ngột, v.v., trong khi cái kia là nhu cầu tiết kiệm điện năng.
Measurement of signal frequency: In order to ensure that the signal is not missed, external interrupt is the ideal choice.
Giải mã dữ liệu: Trong lĩnh vực ứng dụng điều khiển từ xa, để giảm chi phí thiết kế, thường cần sử dụng phần mềm để giải mã các loại dữ liệu được mã hóa khác nhau, chẳng hạn như giải mã mã hóa Manchester và PWM.
Phát hiện phím và đánh thức hệ thống: Đối với các MCU chuyển sang trạng thái ngủ, chúng thường cần được đánh thức thông qua các ngắt bên ngoài. Hình thức cơ bản nhất là nhấn phím, tạo ra sự thay đổi mức thông qua hoạt động của phím.
4. Communication interface: The communication interface provided by MCU generally includes SPI interface, UART, I2C interface, etc., which are described as follows:
SPI interface: This type of interface is the most basic communication method provided by most MCUs. Its data transmission is controlled by a synchronous clock. The signals include: SDI (serial data input), SDO (serial data output), SCLK (serial clock) and Ready signal; in some cases, there may be no Ready signal; this type of interface can work in master mode or Slave mode. In popular terms, it depends on who provides the clock signal. The party providing the clock is the master, and the opposite party is the Slaver.
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.
Đối với hầu hết các MCU, độ dài bit dữ liệu, chế độ kiểm tra dữ liệu (kiểm tra lẻ, kiểm tra chẵn hoặc không kiểm tra), độ dài bit dừng và tốc độ Baud có thể được thiết lập linh hoạt thông qua lập trình. Phương pháp được sử dụng phổ biến nhất cho loại giao diện này là giao tiếp với cổng nối tiếp của máy tính cá nhân.
Giao diện I2C: I2C là một giao thức truyền dữ liệu được phát triển bởi Philips. Nó cũng được triển khai bằng cách sử dụng 2 tín hiệu: SDAT (đầu vào và đầu ra dữ liệu nối tiếp) và SCLK (xung nhịp nối tiếp). Lợi ích lớn nhất của nó là nhiều thiết bị có thể được kết nối với bus này và được nhận dạng và truy cập thông qua địa chỉ; một trong những lợi ích lớn nhất của bus I2C là rất thuận tiện khi sử dụng phần mềm để triển khai nó thông qua cổng IO. Tốc độ truyền dữ liệu của nó được điều khiển hoàn toàn bởi SCLK, có thể nhanh hoặc chậm, không giống như giao diện UART, có yêu cầu tốc độ nghiêm ngặt.
5. Bộ giám sát (Watchdog): Bộ giám sát cũng là một cấu hình cơ bản của hầu hết các MCU (một số MCU 4-bit có thể không có chức năng này). Bộ giám sát của hầu hết các MCU chỉ cho phép chương trình đặt lại chứ không cho phép tắt (một số được thiết lập khi chương trình được nạp vào, chẳng hạn như dòng MCU Microchip PIC), và một số MCU sử dụng một phương pháp cụ thể để quyết định có bật hay không, chẳng hạn như dòng KS57 của Samsung. Chỉ cần chương trình truy cập vào thanh ghi của bộ giám sát, nó sẽ tự động được bật và không thể tắt lại được. Nói chung, thời gian đặt lại của bộ giám sát có thể được thiết lập bằng lập trình. Ứng dụng cơ bản nhất của bộ giám sát là cung cấp khả năng tự phục hồi cho các MCU bị lỗi do các sự cố bất ngờ.
Bốn
Nhà sản xuất vi điều khiển hàng đầu toàn cầu
(Xếp hạng không theo thứ tự cụ thể nào, được sắp xếp theo các nhà sản xuất chính. Nếu có gì thiếu sót, vui lòng bổ sung vào phần bình luận)
Châu Âu và Mỹ
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): Hoa Kỳ, chủ yếu cung cấp các vi điều khiển 16-bit và 32-bit. Ứng dụng: điện tử ô tô, sử dụng công nghiệp, điều khiển động cơ, ô tô, tự động hóa tòa nhà, thiết bị gia dụng, giải trí gia đình, tự động hóa công nghiệp, chiếu sáng, Internet vạn vật, năng lượng thông minh, thiết bị điện tử di động, thiết bị ngoại vi máy tính.
3. Cypress+Spansion (Cypress + Spansion Semiconductor): Có trụ sở tại Hoa Kỳ, chủ yếu cung cấp các vi điều khiển 8-bit, 16-bit và 32-bit. Ứng dụng: điện tử ô tô, thiết bị gia dụng, y tế, điện tử tiêu dùng, truyền thông và viễn thông, công nghiệp, không dây.
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: Đức, chủ yếu cung cấp vi điều khiển 16-bit và 32-bit. Ứng dụng: điện tử ô tô, điện tử tiêu dùng, kỹ thuật, xe thương mại và nông nghiệp, xử lý dữ liệu, vận tải điện, ứng dụng công nghiệp, thiết bị y tế, thiết bị di động, điều khiển và truyền động động cơ, nguồn điện, cho xe máy, xe đạp điện và xe điện cỡ nhỏ, lưới điện thông minh, chiếu sáng, giải pháp hệ thống năng lượng mặt trời, giải pháp hệ thống năng lượng gió.
6. ST Microelectronics: Ý/Pháp, chủ yếu cung cấp vi điều khiển 32-bit. Ứng dụng: Đèn LED và chiếu sáng chung, giao thông vận tải, chăm sóc sức khỏe, hội tụ đa phương tiện, thiết bị gia dụng và dụng cụ điện, công nghệ tự động hóa tòa nhà, điều khiển động cơ, nguồn điện và bộ chuyển đổi điện, năng lượng và lưới điện thông minh, tự động hóa, cơ sở hạ tầng máy tính và truyền thông.
7. Qualcomm: Có trụ sở tại Hoa Kỳ, chủ yếu cung cấp vi điều khiển 16-bit và 32-bit. Ứng dụng: Điện thoại thông minh, máy tính bảng, modem không dây.
8. Texas Instruments: Hoa Kỳ, chủ yếu cung cấp vi điều khiển 16-bit và 32-bit. Phạm vi ứng dụng: điện tử ô tô, điện tử tiêu dùng, thiết bị y tế, thiết bị di động, truyền thông.
9. Maxim (Maxim): United States, mainly provides 32-bit MCU. Application scope: automotive electronics, consumer electronics, industrial applications, security.
Nhật Bản và Hàn Quốc
1. Renesas: Nhật Bản, chủ yếu cung cấp vi điều khiển 16-bit và 32-bit. Phạm vi ứng dụng: máy tính và thiết bị ngoại vi, điện tử tiêu dùng, điện tử y tế, điện tử ô tô, công nghiệp và truyền thông.
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: Hàn Quốc, chủ yếu cung cấp vi điều khiển 16-bit và 32-bit. Ứng dụng: điện tử ô tô, công nghiệp, điều khiển động cơ, ô tô, tự động hóa tòa nhà, thiết bị gia dụng, giải trí gia đình, tự động hóa công nghiệp, chiếu sáng, Internet vạn vật, năng lượng thông minh, thiết bị điện tử di động, thiết bị ngoại vi máy tính.
Khu vực Trung Quốc
Trung hoa đại lục
1. Sigma Microelectronics: Chủ yếu cung cấp vi điều khiển 32-bit, phạm vi ứng dụng: viễn thông, sản xuất, năng lượng, vận tải, điện lực, v.v.
2. Zhuhai Orbit: Chủ yếu cung cấp MCU 32-bit, phạm vi ứng dụng: hàng không vũ trụ: tàu vệ tinh, máy bay; điều khiển công nghiệp cao cấp: máy tính nhúng; điều khiển tàu thủy, điều khiển công nghiệp, thiết bị điện, giám sát môi trường.
3. Đổi mới của GigaDevice: Chủ yếu cung cấp MCU 32-bit, phạm vi ứng dụng: tự động hóa công nghiệp, giao diện người máy, điều khiển động cơ, giám sát an ninh, nhà thông minh, Internet vạn vật.
4. Shengsi Microelectronics: Mainly provides 8-bit and 32-bit MCUs. Application scope: small household appliances, consumer electronics, remote controls, mice, lithium batteries, digital products, automotive electronics, medical instruments and measurement, toys, industrial control, smart home and security and other fields.
5. Công ty Chipsea Technology: Chủ yếu cung cấp các vi điều khiển 16-bit và 32-bit. Phạm vi ứng dụng: thiết bị đo lường, Internet vạn vật, điện tử tiêu dùng, thiết bị gia dụng và điện tử ô tô.
6. Lianhua Integrated Circuit: Chủ yếu cung cấp các vi điều khiển 8-bit và 16-bit. Phạm vi ứng dụng: thiết bị điện tử tiêu dùng, thiết bị gia dụng, điều khiển công nghiệp, thiết bị truyền thông, điện tử ô tô và máy tính.
7. Zhuhai Jianrong: Chủ yếu cung cấp vi điều khiển 8-bit, phạm vi ứng dụng: thiết bị gia dụng, nguồn điện di động.
8. Công nghệ Actions: Chủ yếu cung cấp các vi điều khiển (MCU) từ 8-bit đến 32-bit, phạm vi ứng dụng: máy tính bảng, nhà thông minh, đa phương tiện, Bluetooth, âm thanh wifi.
9. Aisco Microelectronics: Chủ yếu cung cấp các vi điều khiển 8-bit và 16-bit. Phạm vi ứng dụng: chip tiêu dùng, chip truyền thông, chip thông tin và thiết bị gia dụng.
10. Huaxin Microelectronics: Mainly provides 8-bit and 4-bit MCUs. Applications: satellite receivers, mobile phone chargers, perpetual calendars, and all-in-one remote controls.
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: Chủ yếu cung cấp các vi điều khiển 14-bit, 15-bit và 16-bit. Phạm vi ứng dụng: điện tử tiêu dùng, điện tử ô tô, công nghiệp và thiết bị thông minh.
13. Beijing Ingenic: Chủ yếu cung cấp vi điều khiển 32-bit, phạm vi ứng dụng: thiết bị đeo được, Internet vạn vật, thiết bị gia dụng thông minh, ô tô, điện tử tiêu dùng, máy tính bảng.
14. China Microelectronics: Chủ yếu cung cấp vi điều khiển 8-bit. Ứng dụng: thiết bị gia dụng thông minh, điện tử ô tô, giám sát an ninh, chiếu sáng LED và cảnh quan, đồ chơi thông minh, nhà thông minh và điện tử tiêu dùng.
15. Công ty TNHH Mạch tích hợp Shenzhou Loongson: Chủ yếu cung cấp vi điều khiển 32-bit, phạm vi ứng dụng: giám sát điện năng, lưới điện thông minh, điều khiển số công nghiệp, Internet vạn vật, nhà thông minh, giám sát dữ liệu.
16. Ziguang Microelectronics: Chủ yếu cung cấp vi điều khiển 8-bit và 16-bit. Phạm vi ứng dụng: thiết bị gia dụng thông minh.
17. Times Minxin: Chủ yếu cung cấp MCU 32-bit, phạm vi ứng dụng: định vị ô tô, giám sát giao thông, giám sát tàu cá, mạng viễn thông điện lực.
18. China Resources Silicon Microelectronics (một công ty con của China Resources Microelectronics): chủ yếu cung cấp các vi điều khiển 8-bit và 16-bit. Phạm vi ứng dụng: thiết bị điện tử tiêu dùng, điều khiển công nghiệp và thiết bị gia dụng.
19. Công nghệ cốt lõi quốc gia: Chủ yếu cung cấp MCU 32-bit, phạm vi ứng dụng: lĩnh vực an ninh thông tin, lĩnh vực tự động hóa văn phòng, lĩnh vực mạng truyền thông, lĩnh vực an ninh thông tin.
20. Zhongtian Micro: Chủ yếu cung cấp vi điều khiển 32-bit. Ứng dụng: điện thoại thông minh, TV kỹ thuật số, đầu thu kỹ thuật số, thiết bị điện tử ô tô, GPS, máy đọc sách điện tử và máy in.
21. China Resources Microelectronics: Chủ yếu cung cấp các vi điều khiển 8-bit và 16-bit. Phạm vi ứng dụng: mạch điều khiển chung cho thiết bị gia dụng, điện tử tiêu dùng và điều khiển tự động hóa công nghiệp.
22. Zhongying Electronics: Chủ yếu cung cấp các vi điều khiển (MCU) 4-bit, 8-bit, 16-bit và 32-bit. Phạm vi ứng dụng: thiết bị gia dụng và động cơ.
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. Công nghệ Nuvoton: Chủ yếu cung cấp vi điều khiển 8-bit, phạm vi ứng dụng: chiếu sáng, Internet vạn vật, v.v.
25. Neusoft Carrier: Chủ yếu cung cấp các vi điều khiển 8-bit và 32-bit. Ứng dụng: thiết bị gia dụng, nhà thông minh, thiết bị đo lường, bộ điều khiển màn hình LCD, điều khiển công nghiệp, v.v.
26. Betley: Chủ yếu cung cấp vi điều khiển 32-bit, phạm vi ứng dụng: nhà thông minh, điều khiển công nghiệp và sản phẩm tiêu dùng.
27. Công ty Công nghệ Shengquan: Chủ yếu cung cấp vi điều khiển 8-bit, phạm vi ứng dụng: các tấm màn hình cỡ nhỏ và trung bình cho ngành ô tô, giáo dục, điều khiển công nghiệp, y tế, v.v.
28. Hangshun Chip: Chủ yếu cung cấp vi điều khiển 8-bit và 32-bit. Phạm vi ứng dụng: ô tô, Internet vạn vật, v.v.
29. Fudan Microelectronics: Mainly provides 16-bit and 32-bit MCUs. Applications: smart meters, smart door locks, etc.
30. Huada Semiconductor: Chủ yếu cung cấp các vi điều khiển 8-bit, 16-bit và 32-bit. Ứng dụng: điều khiển công nghiệp, sản xuất thông minh, cuộc sống thông minh và Internet vạn vật.
Đài Loan, trung quốc
1. Công ty Hongjing Technology: chủ yếu cung cấp vi điều khiển 32-bit. Phạm vi ứng dụng: truyền thông, điều khiển công nghiệp, thiết bị thông tin và thoại.
2. Holtek Semiconductor: chủ yếu cung cấp vi điều khiển 8-bit và 32-bit. Phạm vi ứng dụng: thiết bị điện tử tiêu dùng, chiếu sáng LED, v.v.
3. Công ty Lingyang Technology: chủ yếu cung cấp vi điều khiển 8-bit và 16-bit. Phạm vi ứng dụng: âm thanh và video gia đình.
4. Zhongying Electronics: chủ yếu cung cấp vi điều khiển 4-bit và 8-bit. Phạm vi ứng dụng: bộ sạc, nguồn điện di động, thiết bị gia dụng, điều khiển công nghiệp.
5. Songhan Technology: mainly provides 8-bit and 32-bit MCUs. Application scope: remote controls, smart chargers, large and small systems, electronic scales, ear thermometers, blood pressure monitors, tire pressure gauges, various measurement and health equipment.
6. Winbond Electronics: chủ yếu cung cấp các vi điều khiển 8-bit và 16-bit. Phạm vi ứng dụng: điện tử ô tô, điện tử công nghiệp, mạng, máy tính, điện tử tiêu dùng, Internet vạn vật.
7. Công nghệ tốc độ cao: chủ yếu cung cấp các vi điều khiển 4-bit, 8-bit và 51-bit. Phạm vi ứng dụng: điều khiển từ xa, thiết bị gia dụng nhỏ.
8. Youhua Microelectronics: chủ yếu cung cấp các vi điều khiển 4-bit và 8-bit. Phạm vi ứng dụng: sản phẩm mạch tích hợp ghi dữ liệu, thiết bị điện tử tiêu dùng, sản phẩm gia dụng.
9. Yingguang Technology Microcontroller: mainly provides 4-bit and 8-bit MCUs. Application scope: machinery, automation, home appliances, robots.
10. Elan Electronics: chủ yếu cung cấp vi điều khiển 8-bit và 16-bit. Phạm vi ứng dụng: thiết bị điện tử tiêu dùng, máy tính, điện thoại thông minh.
năm
Tips for learning microcontrollers
Các nguyên tắc và chức năng cơ bản của bất kỳ vi điều khiển nào đều tương tự nhau. Sự khác biệt duy nhất là cấu hình và số lượng các mô-đun chức năng ngoại vi, hệ thống lệnh, v.v.
Đối với các hệ thống lệnh, mặc dù chúng trông rất khác nhau về hình thức, nhưng thực chất chúng chỉ là những ký hiệu khác nhau. Ý nghĩa mà chúng đại diện, các chức năng cần thực hiện và các phương pháp định địa chỉ về cơ bản là tương tự nhau.
Để hiểu về vi điều khiển (MCU), trước tiên bạn cần biết về dung lượng ROM, dung lượng RAM, số lượng cổng I/O, số lượng bộ định thời và phương pháp định thời, các mô-đun chức năng ngoại vi (mạch ngoại vi) được cung cấp, nguồn ngắt, điện áp hoạt động và công suất tiêu thụ, v.v.
Sau khi hiểu rõ các tính năng của MCU, bước tiếp theo là so sánh chức năng của MCU đã chọn với các chức năng cần thiết cho việc phát triển dự án thực tế, và làm rõ những tài nguyên nào hiện đang cần thiết và những tài nguyên nào không được sử dụng trong dự án này.
Đối với các chức năng cần sử dụng trong dự án nhưng không được cung cấp bởi vi điều khiển (MCU) đã chọn, bạn cần hiểu rõ thông tin liên quan của MCU để có thể triển khai chúng bằng các phương pháp gián tiếp. Ví dụ, nếu dự án bạn đang phát triển cần giao tiếp với cổng COM của máy tính, và MCU đã chọn không cung cấp cổng UART, bạn có thể xem xét sử dụng ngắt ngoài để thực hiện điều đó.
Để có được các nguồn lực cần thiết cho việc phát triển dự án, bạn cần hiểu rõ và đọc kỹ hướng dẫn sử dụng*, trong khi đó bạn có thể bỏ qua hoặc xem lướt qua các mô-đun chức năng không cần thiết. Đối với việc học MCU, ứng dụng là chìa khóa và mục đích chính.
After clarifying the relevant functions of the MCU, you can start programming.
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.
Đừng dành quá nhiều thời gian để hiểu hệ thống lệnh. Hệ thống hướng dẫn chỉ là một ký hiệu mô tả logic. Bạn chỉ có thể xem các hướng dẫn liên quan theo logic của riêng mình và các yêu cầu logic của chương trình trong quá trình lập trình. Khi lập trình tiến bộ, bạn sẽ ngày càng thành thạo hệ thống hướng dẫn, và thậm chí có thể ghi nhớ nó một cách vô thức.
6
Lập trình vi điều khiển
Có sự khác biệt lớn giữa việc viết chương trình cho vi điều khiển (MCU) và viết chương trình cho máy tính cá nhân (PC). Mặc dù các công cụ phát triển MCU dựa trên ngôn ngữ C ngày càng phổ biến, nhưng đối với các nhà thiết kế muốn có mã chương trình hiệu quả và thích sử dụng ngôn ngữ hợp ngữ, thì ngôn ngữ hợp ngữ vẫn là ngôn ngữ lập trình ngắn gọn và hiệu quả nhất.
Đối với lập trình vi điều khiển (MCU), khung cơ bản có thể nói là tương tự nhau. Nó thường được chia thành ba phần: phần khởi tạo (đây là điểm khác biệt lớn nhất giữa lập trình MCU và PC), phần thân vòng lặp chương trình chính và phần xử lý ngắt. Mô tả chi tiết từng phần như sau:
1. Khởi tạo: Đối với việc thiết kế tất cả các chương trình MCU, khởi tạo là bước cơ bản và quan trọng nhất, thường bao gồm các bước sau:
Chặn tất cả các ngắt và khởi tạo con trỏ ngăn xếp: Phần khởi tạo thường không muốn bất kỳ ngắt nào xảy ra.
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.
Khởi tạo cổng I/O: Theo yêu cầu ứng dụng của dự án, hãy thiết lập chế độ đầu vào và đầu ra của cổng I/O tương ứng. Đối với cổng đầu vào, bạn cần thiết lập điện trở kéo lên hoặc kéo xuống; đối với cổng đầu ra, bạn phải thiết lập mức đầu ra ban đầu để tránh các lỗi không cần thiết.
Cài đặt ngắt: Đối với tất cả các nguồn ngắt cần sử dụng trong dự án, chúng phải được bật và điều kiện kích hoạt ngắt phải được thiết lập. Đối với các ngắt dư thừa không được sử dụng, chúng phải được tắt.
Khởi tạo các mô-đun chức năng khác: Đối với tất cả các mô-đun chức năng ngoại vi của MCU cần sử dụng, cần thực hiện các thiết lập tương ứng theo yêu cầu của ứng dụng dự án. Ví dụ, đối với giao tiếp UART, cần thiết lập tốc độ Baud, độ dài dữ liệu, phương pháp xác thực và độ dài bit dừng. Đối với bộ định thời lập trình, cần thiết lập nguồn xung nhịp, số phân chia tần số và dữ liệu tải lại.
Khởi tạo tham số: Sau khi hoàn tất quá trình khởi tạo phần cứng và tài nguyên của MCU, bước tiếp theo là khởi tạo một số biến và dữ liệu được sử dụng trong chương trình. Việc khởi tạo phần này cần được thiết kế theo dự án cụ thể và bố cục tổng thể của chương trình. Đối với một số ứng dụng sử dụng EEPROM để lưu trữ dữ liệu được lập trình sẵn của dự án, nên sao chép dữ liệu liên quan vào RAM của MCU trong quá trình khởi tạo để cải thiện tốc độ truy cập dữ liệu của chương trình và giảm mức tiêu thụ điện năng của hệ thống (về nguyên tắc, việc truy cập EEPROM bên ngoài sẽ làm tăng mức tiêu thụ điện năng của nguồn điện).
2. Thân vòng lặp chương trình chính: Hầu hết các MCU hoạt động liên tục trong thời gian dài, vì vậy thân vòng lặp chương trình chính của chúng về cơ bản được thiết kế theo dạng vòng lặp. Đối với các ứng dụng có nhiều chế độ hoạt động, có thể có nhiều thân vòng lặp, được chuyển đổi thông qua các cờ trạng thái. Đối với thân vòng lặp chương trình chính, các mô-đun sau thường được sắp xếp:
Các chương trình tính toán: Các chương trình tính toán thường tốn nhiều thời gian, vì vậy chúng tôi kiên quyết phản đối việc xử lý chúng trong bất kỳ ngắt nào, đặc biệt là các phép nhân và chia.
Processing programs with low or no real-time requirements;
Chương trình truyền tín hiệu hiển thị: chủ yếu dành cho các ứng dụng sử dụng trình điều khiển LED và LCD bên ngoài.
3. Trình xử lý ngắt: Chương trình xử lý ngắt chủ yếu được sử dụng để xử lý các tác vụ và sự kiện có yêu cầu thời gian thực cao, chẳng hạn như phát hiện tín hiệu đột ngột từ bên ngoài, phát hiện và xử lý các nút bấm, đếm thời gian, quét màn hình LED, v.v.
Nhìn chung, chương trình xử lý ngắt nên giữ mã càng ngắn gọn càng tốt. Đối với các chức năng không cần xử lý trong thời gian thực, có thể đặt cờ kích hoạt trong chương trình xử lý ngắt, sau đó chương trình chính sẽ thực hiện các giao dịch cụ thể. Điều này rất quan trọng, đặc biệt đối với các MCU công suất thấp, tốc độ thấp, cần đảm bảo phản hồi kịp thời cho tất cả các ngắt.
4. Đối với việc sắp xếp các khối tác vụ khác nhau, các MCU khác nhau có các phương pháp xử lý khác nhau:
Ví dụ, đối với các ứng dụng MCU tốc độ thấp, công suất thấp (Fosc=32768Hz), xét đến việc các dự án như vậy là thiết bị cầm tay và sử dụng màn hình LCD thông thường, phản hồi khi nhấn phím và hiển thị dữ liệu đòi hỏi hiệu năng thời gian thực cao, do đó, các ngắt theo thời gian thường được sử dụng để xử lý các thao tác nhấn phím và hiển thị dữ liệu; đối với các MCU tốc độ cao, chẳng hạn như các ứng dụng Fosc>1MHz, vì MCU có đủ thời gian để thực thi phần thân vòng lặp chương trình chính tại thời điểm này, nó chỉ cần thiết lập các cờ kích hoạt khác nhau trong các ngắt tương ứng và đưa tất cả các tác vụ trong phần thân chương trình chính vào thực thi.
5. Trong lập trình vi điều khiển (MCU), một điều cần đặc biệt chú ý là:
Cần phải ngăn chặn việc truy cập hoặc thiết lập cùng một biến hoặc dữ liệu trong thân chương trình chính và thân chương trình xử lý ngắt cùng một lúc. Một phương pháp ngăn chặn hiệu quả là sắp xếp việc xử lý dữ liệu đó trong một mô-đun, và xác định xem có nên thực hiện các thao tác liên quan đến dữ liệu hay không bằng cách đánh giá cờ kích hoạt; trong các thân chương trình khác (chủ yếu là ngắt), chỉ thiết lập cờ kích hoạt ở những nơi cần xử lý dữ liệu. Điều này đảm bảo việc thực thi dữ liệu có thể dự đoán được và là duy nhất.
XNUMX Engineer's summary of microcontroller programming
1. Hãy hình thành thói quen tóm tắt tốt. Tóm tắt không chỉ là tổng kết những gì bạn đã học mà còn là ôn tập và đào sâu kiến thức. Nó cũng giúp tránh mắc lỗi lần thứ hai.
2. Before writing a program, you must first have a familiar understanding of the project, be aware of it, and outline a general framework. It is very important to carefully consider how to lay out and what is the most reasonable layout. It is necessary to analyze which module to do first, the specific steps of this module, how to name each function, the connection with other modules, etc. It’s a good idea to get a piece of paper and jot down important processes.
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. Đừng bỏ qua các cảnh báo khi chúng xuất hiện. Điều đó có nghĩa là chắc chắn có điều gì đó không hợp lý trong chương trình. Bạn cần tìm ra nguồn gốc và tìm giải pháp. Hãy cụ thể khi tìm kiếm nguồn gốc. Bạn có thể tìm kiếm thông tin trên Internet về lĩnh vực này, hoặc hỏi ý kiến người khác. Ví dụ: hàm chính trong một dự án khác thực tế đã được thêm vào dự án này. Thực tế có các tên hàm trùng lặp. Cũng có lý do để phân tích hiện tượng thực nghiệm và tiến hành từng bước. Cũng có thể đã chọn sai giao diện khi định nghĩa cổng. Đôi khi, nên tạm dừng và suy nghĩ về nó nếu bạn thực sự không thể giải quyết được. Cho dù đơn giản đến đâu, bạn cũng nên chú ý đến nó, vì có thể có sai sót.
Trong quá trình phát triển các ứng dụng vi điều khiển, các vấn đề như hiệu quả sử dụng mã, khả năng chống nhiễu và độ tin cậy của vi điều khiển vẫn còn là những thách thức. Sau đây, chúng tôi sẽ tổng hợp một số kỹ năng cơ bản cần nắm vững trong quá trình phát triển vi điều khiển.
tám
Kỹ năng phát triển vi điều khiển
1. Làm thế nào để giảm thiểu lỗi trong chương trình?
Về cách giảm thiểu lỗi chương trình, trước tiên bạn nên xem xét các tham số quản lý nằm ngoài phạm vi cho phép sau đây cần được lưu ý trong quá trình vận hành hệ thống.
- Các thông số vật lý: Các thông số này chủ yếu là các thông số đầu vào của hệ thống, bao gồm các thông số kích thích, các thông số vận hành trong quá trình thu thập dữ liệu và các thông số kết quả sau khi xử lý.
- Các thông số tài nguyên: Các thông số này chủ yếu là tài nguyên của mạch điện, thiết bị và các đơn vị chức năng trong hệ thống, chẳng hạn như dung lượng bộ nhớ, chiều dài đơn vị lưu trữ và độ sâu xếp chồng.
- Tham số ứng dụng: Các tham số ứng dụng này thường xuất hiện dưới dạng điều kiện ứng dụng của một số vi điều khiển và các đơn vị chức năng. Tham số quy trình: đề cập đến các tham số thay đổi một cách có trật tự trong quá trình hoạt động của hệ thống.
2. Làm thế nào để nâng cao hiệu quả của mã lập trình ngôn ngữ C
Sử dụng ngôn ngữ C để lập trình vi điều khiển là xu hướng tất yếu trong sự phát triển và ứng dụng của vi điều khiển. Để đạt hiệu quả tối đa khi lập trình bằng C, tốt nhất là nên làm quen với trình biên dịch C đang sử dụng. Trước tiên, hãy kiểm tra số dòng mã hợp ngữ tương ứng với mỗi lần biên dịch bằng ngôn ngữ C, để bạn có thể hiểu rõ hiệu quả. Khi lập trình trong tương lai, hãy sử dụng câu lệnh có hiệu quả biên dịch cao nhất. Mỗi trình biên dịch C sẽ có những điểm khác biệt nhất định, do đó hiệu quả biên dịch cũng sẽ khác nhau. Độ dài mã và thời gian thực thi của một trình biên dịch C xuất sắc dành cho hệ thống nhúng chỉ dài hơn 5-20% so với cùng một hàm được viết bằng ngôn ngữ hợp ngữ.
Đối với các dự án phức tạp với thời gian phát triển eo hẹp, ngôn ngữ C có thể được sử dụng, nhưng điều kiện tiên quyết là bạn phải rất quen thuộc với ngôn ngữ C và trình biên dịch C của hệ thống MCU. Hãy đặc biệt chú ý đến các kiểu dữ liệu và thuật toán được hệ thống biên dịch C hỗ trợ. Mặc dù C là ngôn ngữ bậc cao phổ biến nhất, nhưng các nhà sản xuất MCU khác nhau lại có các hệ thống biên dịch C khác nhau, đặc biệt là trong hoạt động của một số module chức năng đặc biệt. Do đó, nếu bạn không hiểu rõ các đặc điểm này, sẽ gặp nhiều vấn đề trong quá trình gỡ lỗi, dẫn đến hiệu quả thực thi thấp hơn so với ngôn ngữ assembly.
3 How to solve the anti-interference problem of microcontroller
Cách hiệu quả nhất để ngăn chặn nhiễu là loại bỏ nguồn gây nhiễu và chặn đường dẫn nhiễu, nhưng điều này thường khó thực hiện, vì vậy chúng ta chỉ có thể xem liệu khả năng chống nhiễu của vi điều khiển có đủ mạnh hay không. Trong khi cải thiện khả năng chống nhiễu của các hệ thống phần cứng, chống nhiễu bằng phần mềm đang nhận được ngày càng nhiều sự chú ý vì thiết kế linh hoạt, tiết kiệm tài nguyên phần cứng và độ tin cậy cao.
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.
Thông thường, vi điều khiển sẽ có một số thanh ghi cờ có thể được sử dụng để xác định nguyên nhân khởi động lại; ngoài ra, bạn cũng có thể tự thêm một số cờ vào RAM. Mỗi khi chương trình được khởi động lại, các nguyên nhân khởi động lại khác nhau có thể được xác định bằng cách đánh giá các cờ này; bạn cũng có thể nhảy trực tiếp đến chương trình tương ứng dựa trên các cờ khác nhau. Điều này cho phép chương trình chạy liên tục và người dùng sẽ không nhận thấy rằng chương trình đã được khởi động lại khi sử dụng.
4. Làm thế nào để kiểm tra độ tin cậy của hệ thống vi điều khiển?
Khi thiết kế hệ thống vi điều khiển hoàn tất, sẽ có các hạng mục và phương pháp kiểm tra khác nhau cho các sản phẩm hệ thống vi điều khiển khác nhau, nhưng một số hạng mục bắt buộc phải được kiểm tra:
- Kiểm tra tính đầy đủ chức năng của phần mềm vi điều khiển.
- Kiểm tra bật nguồn và tắt nguồn
- Bài kiểm tra độ tuổi
- Các bài kiểm tra như ESD và EFT
Đôi khi, chúng ta cũng có thể mô phỏng những hư hỏng có thể xảy ra trong quá trình sử dụng của con người. Ví dụ, cố tình cọ xát cổng tiếp xúc của hệ thống vi điều khiển với cơ thể người hoặc vải quần áo để kiểm tra khả năng chống tĩnh điện. Sử dụng máy khoan điện công suất cao để làm việc gần hệ thống vi điều khiển nhằm kiểm tra khả năng chống nhiễu điện từ.
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.
Hầu hết các chức năng trước đây phải được thực hiện bằng mạch tương tự hoặc mạch kỹ thuật số giờ đây có thể được thực hiện thông qua các phương pháp phần mềm sử dụng vi điều khiển. Loại công nghệ điều khiển trong đó phần mềm thay thế phần cứng này còn được gọi là công nghệ vi điều khiển, đây là một cuộc cách mạng trong công nghệ điều khiển truyền thống.
Ngoài ra, trong quá trình phát triển và ứng dụng, chúng ta phải nắm vững kỹ năng và nâng cao hiệu quả để có thể sử dụng nó cho nhiều mục đích hơn.
Nine
Tóm tắt hoạt động của chip Các thao tác trên chip chủ yếu là các thao tác trên các thanh ghi trong chip. Các thanh ghi trong chip có địa chỉ riêng biệt được ánh xạ vào bộ nhớ, đó chính là thao tác trên địa chỉ tương ứng. Khi xem xét chip, trước tiên hãy xem sơ đồ thời gian, sau đó hiểu các thanh ghi tương ứng, hiểu cách chúng hoạt động, xác định các cổng cần thiết (có thể được xác định bởi chương trình), và viết các thủ tục thao tác ghi và thủ tục thao tác đọc.
How to write data into the chip, how to read data, and which port to input or read through (the most important thing).
When connecting chips through a bus, you must first understand the protocol of the bus. The chip connected to the I2C bus mainly controls the chip through this bus.
1. Một IC 74hc595 trong ma trận điểm ảnh được sử dụng để chọn cột, và hai IC còn lại được sử dụng để chọn màu. Ma trận điểm ảnh này tương đương với một tập hợp các điốt.
Chỉ khi một đầu được cấp điện áp cao và đầu kia được cấp điện áp thấp thì điốt mới sáng. Chỉ là khi một đầu được chọn điện áp khác nhau thì các màu đèn khác nhau sẽ sáng lên.
Lựa chọn chế độ hoạt động của bộ đếm thời gian: Bốn bit cao nhất thiết lập bộ đếm thời gian T1, và bốn bit thấp nhất thiết lập T0. Sau đó, hai chữ số cuối cùng của mỗi chế độ sẽ thiết lập chế độ hoạt động. Khi thiết lập hai bộ đếm thời gian, hãy cẩn thận khi sử dụng toán tử OR (|). Khi sử dụng ngắt, hãy chú ý xóa các biến cần được xóa sau khi vào ngắt.
2. Serial port transceiver: Mode 2 (automatic reload initial value) is generally used to set the baud rate. Because different devices have different data processing capabilities, setting the baud rate is mainly to take care of low-speed devices and communicate with each other. The interrupt flag bit must be cleared by software. When setting the serial port interrupt, no matter which one is generated by sending or receiving, it can enter the interrupt function, so pay attention to setting the interrupt function. (Self-feeling generally sets a function, as a host computer or a slave computer).
Nếu bạn sử dụng ngắt để gửi dữ liệu, bạn phải tìm cách vào chế độ ngắt lần đầu tiên, vì vậy bạn phải gửi dữ liệu một lần trước, sau đó mới có thể vào chế độ ngắt. Chỉ có thể gửi một byte mỗi lần và bit tiếp theo chỉ có thể được gửi sau khi chân TI được thiết lập.
3. Bộ chuyển đổi PCF8591AD có bốn kênh đầu vào. Khi đọc dữ liệu từ PCF8591, kênh nào được chọn sẽ được đọc điện áp đầu vào từ kênh đó. Dữ liệu đã chuyển đổi được lưu trữ trong chip và sau đó được đọc ra. Khi đọc, trước tiên ghi địa chỉ của chip, sau đó ghi địa chỉ phụ của thiết bị (0x40|số kênh), và sau đó là dữ liệu đọc.
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. Đối với màn hình LCD, sau khi dữ liệu được ghi và hiển thị, nó sẽ luôn hiển thị mà không cần làm mới liên tục. Nếu bạn muốn thay đổi, bạn chỉ có thể nhập lại dữ liệu.
6. Đối với chip tạo xung DS1302, khi đọc dữ liệu, dữ liệu đầu tiên được đọc ở cạnh xuống của xung nhịp thứ tám; khi ghi dữ liệu, dữ liệu đầu tiên được đọc và sau đó chuẩn bị cho lần xuất tiếp theo. Hãy chú ý đến phương pháp ghi chương trình và vị trí của giá trị trả về.
7. Trước tiên hãy chỉ định thanh ghi trong Ds1302, sau đó ghi dữ liệu vào đó. Thanh ghi trên dữ liệu chip cho biết địa chỉ. (Tôi vẫn chưa hiểu rõ chương trình bảo vệ ghi. Chẳng phải luôn có quá trình ghi sao? Tại sao chương trình bảo vệ ghi vẫn được bật?)
(Theo như người hướng dẫn trước đây đã nói, bạn có thể đặt một cờ sau thời gian khởi tạo. Nếu có cờ này, thì không cần phải khởi tạo thời gian nữa. Tuy nhiên, nếu nguồn điện bị tắt, RAM của MCU không thể lưu cờ này, vì vậy bạn có thể sử dụng RAM của DS1302 để lưu cờ và đọc lại sau khi bật nguồn. Tôi cũng là người mới bắt đầu và gần đây tôi dự định sử dụng DS1302. Tôi không biết liệu điều này có đúng hay không và tôi vẫn chưa thực hiện nó. Xin hãy chia sẻ thêm.)
8. It is best to write down the initialization in case you forget it later. Sometimes pay attention to whether the lowest bit or the highest bit is operated first when reading or writing, which can be judged according to the timing diagram.
9. Đối với bộ thu phát hồng ngoại, khi nhận tín hiệu, nó xác định xem đó là mức cao hay mức thấp dựa trên khoảng thời gian giữa hai cạnh xuống. Khi viết chương trình, trước tiên hãy sử dụng bộ định thời để xác định thời gian, lưu lại và sau đó chuyển đổi nó thành dạng nhị phân (đọc thêm về cách viết chương trình này, rất hữu ích).
10. Động cơ bước: Chủ yếu được sử dụng để chuyển mạch. Mô-men xoắn của động cơ bước giảm khi tốc độ tăng. Nó chủ yếu được sử dụng để cấp liệu tự động cho các chi tiết được gia công trên máy công cụ. Nó cũng có thể được sử dụng ở những vị trí điều khiển đòi hỏi độ chính xác cao hơn.
Động cơ bước là một thiết bị động cơ bước điều khiển vòng hở, chuyển đổi tín hiệu xung điện thành chuyển động góc hoặc chuyển động tuyến tính. Trong điều kiện không quá tải, tốc độ và vị trí dừng của động cơ chỉ phụ thuộc vào tần số và số xung của tín hiệu xung, và không bị ảnh hưởng bởi sự thay đổi tải. Khi bộ điều khiển động cơ bước nhận được tín hiệu xung, nó sẽ điều khiển động cơ bước quay theo hướng đã đặt với một góc cố định, được gọi là "góc bước". Quá trình quay diễn ra từng bước với một góc cố định. Chuyển động góc có thể được điều khiển bằng cách điều khiển số xung để đạt được vị trí chính xác; đồng thời, tốc độ và gia tốc quay của động cơ có thể được điều khiển bằng cách điều khiển tần số xung để đạt được điều chỉnh tốc độ.
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. Tổng quan về chữ Hán:
In order to output Chinese characters on a monitor or printer, the Chinese characters are designed into a dot matrix according to graphic symbols, and the corresponding dot matrix code (glyph code) is obtained.
Phương pháp mã hóa thống nhất được sử dụng để biểu diễn chữ Hán trong máy tính tạo thành một mã hóa chữ Hán gọi là mã nội bộ (chẳng hạn như mã chuẩn quốc gia), và mã nội bộ này là duy nhất (tương đương với số định danh của chữ Hán). Mã hóa chữ Hán được tạo ra để hỗ trợ nhập chữ Hán là mã nhập, tức là mã ngoại của chữ Hán. Mã nhập khác nhau tùy thuộc vào phương pháp mã hóa và rất đa dạng. Mã chữ Hán được tạo ra để hiển thị và in chữ Hán là mã ký tự. Máy tính tìm mã ký tự của chữ Hán trong thư viện mẫu phông chữ thông qua mã nội bộ của chữ Hán và thực hiện chuyển đổi.
Mã trong máy ảnh
Theo quy định của mã chuẩn quốc gia, mỗi chữ Hán có một mã nhị phân nhất định, nhưng mã này sẽ xung đột với mã ASCII khi được máy tính xử lý nội bộ. Để giải quyết vấn đề này, người ta cộng thêm 1 vào chữ số đầu tiên của mỗi byte trong mã chuẩn quốc gia. Vì mã ASCII chỉ sử dụng 7 bit, nên chữ số "1" ở vị trí đầu tiên có thể được dùng làm dấu hiệu để xác định mã chữ Hán. Khi máy tính xử lý mã có chữ số "1" ở vị trí đầu tiên, nó hiểu đó là thông tin chữ Hán, và khi xử lý mã có chữ số "0" ở vị trí đầu tiên, nó hiểu đó là mã ASCII. Mã chuẩn quốc gia (mã nội bộ) được xử lý theo cách này chính là mã nội bộ.
Nếu ta thay dấu "." của ký tự "口" này bằng "0", ta có thể thấy rõ mã ký tự của "口" như sau: 0000H 0004H 3FFAH 2004H 2004H 2004H 2004H 2004H 2004H 2004H 2004H 3FFAH 2004H 0000H 0000H. Khi máy tính muốn xuất ra ký tự "口", trước tiên nó sẽ tìm địa chỉ đầu tiên của thư viện phông chữ hiển thị, tính toán dựa trên mã nội bộ của "口", sau đó tìm mã ký tự của "口", và sau đó quét màn hình theo trình tự dựa trên mã ký tự (ở dạng nhị phân) thông qua sự điều khiển của bộ tạo ký tự. Tại vị trí có mã nhị phân là "0", ta quét vị trí có mã nhị phân là "0", và quét vị trí có mã nhị phân là "1" để làm nổi bật, từ đó thu được mẫu ký tự "口".
Các ký tự chữ Hán được sắp xếp theo thứ tự mã chuẩn quốc gia và được lưu trữ trong bộ nhớ dưới dạng các tệp nhị phân, tạo thành thư viện ký tự chữ Hán, còn được gọi là thư viện ký tự chữ Hán hoặc thư viện chữ Hán.
Có hai phương pháp mã hóa, xem tệp tiêu đề.
GB1616.h//------------------ Định nghĩa cấu trúc dữ liệu phông chữ tiếng Trung ------------------------//structtypFNT_GB16 //Cấu trúc dữ liệu phông chữ tiếng Trung {unsignedcharIndex[3]; //Chỉ số mã nội bộ của ký tự tiếng Trung unsignedchar Msk[32];//dữ liệu mã ma trận chấm }; ///////////////////////////////////////////////////////////////////////////////// Bảng phông chữ Hán//// Thư viện chữ Hán: Triều đại Tống 16 chấm, modulo ngang bit cao bên trái, sắp xếp dữ liệu: từ trái sang phải, từ trên xuống dưới//////////////////////////////////////////////////////////////////////////////////////conststructtypFNT_GB16 codeGB_16[]= //bảng dữ liệu{/*---------------------------------------------------------------------------------;tệp nguồn/văn bản :Xu;chiều rộng×chiều cao (pixel): 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, Cấu trúc này rất đơn giản: một là mã nội bộ, và một là chuỗi ma trận chấm. Thư viện ma trận chấm trước đây được đặt theo thứ tự của mã nội bộ, và không cần chỉ mục mã nội bộ. Nếu chỉ đặt một số ký tự tiếng Trung, thì cần chỉ mục mã nội bộ. (Ký tự tiếng Trung "Xu" ở phía trước là để tìm chuỗi ma trận chấm của từ khi xuất ra "Xu". Chuỗi ma trận chấm này do tôi tự viết. Khi hiển thị với 1602, vì chip đã có chuỗi ma trận chấm tiếng Anh trong bộ nhớ nên không cần phải viết lại.) Thông thường, hai byte là đủ cho mã nội bộ. Nếu bạn sử dụng thêm một byte, bạn chỉ cần thêm một số 0 ở cuối. Bằng cách này, chuỗi ký tự tiếng Trung có thể được đặt trực tiếp vào mã nội bộ ký tự tiếng Trung;
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: Mỗi điểm ảnh hiển thị tương ứng với một số nhị phân, 1 nghĩa là bật, 0 nghĩa là tắt. Bộ nhớ RAM lưu trữ thông tin ma trận điểm ảnh này được gọi là bộ nhớ dữ liệu hiển thị. Để hiển thị một hình ảnh hoặc ký tự tiếng Trung nhất định, cần ghi thông tin ma trận điểm ảnh tương ứng vào đơn vị lưu trữ tương ứng.
Bộ đếm địa chỉ (AC) của RAM đồ họa chỉ tự động tăng địa chỉ ngang (trục X) lên một. Khi địa chỉ ngang bằng 0FH, nó sẽ được đặt lại về 00H. Tuy nhiên, nó sẽ không tự động tăng địa chỉ dọc khi có bit nhớ. Do đó, khi ghi nhiều dữ liệu liên tục, chương trình cần xác định xem địa chỉ dọc có cần được đặt lại hay không.
14. Drawing RAM (GDRAM) Bộ nhớ RAM hiển thị bản vẽ cung cấp 128×8 byte dung lượng bộ nhớ. Khi thay đổi bộ nhớ RAM bản vẽ, trước tiên hãy ghi liên tục các giá trị tọa độ ngang và dọc, sau đó ghi hai byte dữ liệu vào bộ nhớ RAM bản vẽ. Bộ đếm địa chỉ (AC) sẽ tự động tăng địa chỉ ngang (địa chỉ X) lên một. Khi địa chỉ ngang là 0XFH, nó sẽ được đặt lại về 00H; địa chỉ dọc sẽ không tự động tăng lên 1. Màn hình hiển thị bản vẽ phải được tắt trong khi ghi vào bộ nhớ RAM bản vẽ.
[cpp] view plain copy//Hiển thị ký tự tiếng Trung voiddispString (uchar X, Y,uchar *msg)//X là hàng nào và Y là cột nào. msg là ký tự tiếng Trung {if(X==0) write_data(*msg++); //Hiển thị ký tự tiếng Trung }}////////////////////////////////// //////////////// ////////////////// Hiển thị hình ảnh voiddisppicture(uchar code *adder){ uint i,j;//*******Hiển thị nội dung nửa trên màn hình for(i=0;i<32;i++)//Địa chỉ cột 32 ở nửa trên màn hình { write_com(0x80 + i);//Đặt địa chỉ dọc VERTICALADD write_com(0x80);//Đặt địa chỉ ngang HORIZONTAL ADDfor(j=0;j<16;j++) { write_data(*adder); adder++; }}//************Cài đặt nội dung hiển thị ở nửa dưới màn hình cho(i=0;i<32;i++) //{ write_com(0x80 + i); //Đặt địa chỉ dọc VERTICALADD write_com(0x88); //Đặt địa chỉ ngang 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. Một số câu hỏi và câu trả lời hữu ích ①. Việc cấp phát bộ nhớ cho các biến trong ngôn ngữ C dành cho vi điều khiển được thực hiện như thế nào? Liệu trình biên dịch có tự động thêm mã cấp phát và tái sử dụng bộ nhớ trong quá trình biên dịch không? Điểm mấu chốt là chương trình tôi viết ra, làm thế nào để đảm bảo nó không bị lỗi tràn bộ nhớ? Nếu tôi thực hiện một phép toán đệ quy, thì việc tự tính toán yêu cầu bộ nhớ sẽ rất khó khăn.
2. Ngôn ngữ C dành cho vi điều khiển có bị hạn chế trong việc định nghĩa biến không? Ví dụ, các phép nhân và chia dữ liệu dấu phẩy động được viết bằng ngôn ngữ assembly, và mã khá phức tạp. Nếu viết trực tiếp bằng ngôn ngữ C, liệu nó có quá đơn giản không?
③. Trong tập tin hex được tạo ra bởi ngôn ngữ C của vi điều khiển, việc phân bổ địa chỉ cho ROM lệnh và ROM dữ liệu có được trình biên dịch tự động gán không? Người dùng có thể gán địa chỉ này không?
Câu trả lời 1: Một chương trình vi điều khiển được viết bằng ngôn ngữ C trước tiên được biên dịch bởi một chương trình (có vẻ là c51.exe). Sau khi quá trình biên dịch hoàn tất, kích thước không gian lưu trữ của các biến đã được sắp xếp, nhưng địa chỉ cụ thể vẫn chưa được phân bổ (địa chỉ là địa chỉ nổi). Tiếp theo, một chương trình khác (có vẻ là a51.exe) được kết nối. Sau khi kết nối, địa chỉ cụ thể được xác định.
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.
Câu trả lời 2: Kích thước của biến (số chữ số) thường bằng với số chữ số trong bộ tích lũy của chip. Ví dụ, 51 thường sử dụng 8 bit vì nó là vi điều khiển 8 bit.
Vi điều khiển có thể định nghĩa các biến bit, nhưng không thể định nghĩa mảng bit. Viết bằng ngôn ngữ C có vẻ đơn giản, nhưng thực tế lại tạo ra lượng mã lớn nhất. Vi điều khiển dùng để điều khiển hầu như không sử dụng các phép toán dấu phẩy động, điều này không chỉ chậm mà còn rắc rối và chiếm nhiều không gian. Nếu là chip DSP, sẽ tốt hơn nhiều nếu nó có cấu trúc phần cứng phù hợp.
Câu trả lời 3: Thông thường, nó được cấp phát tự động. Nó có thể được lập trình bằng sự kết hợp giữa ngôn ngữ C và ngôn ngữ hợp ngữ, hoặc có thể được biên dịch trực tuyến bằng Keil C. Việc trao đổi dữ liệu giữa chip và bên ngoài được thực hiện thông qua cổng.
Số điện thoại công ty: +86-0755-83044319
Số fax: +86-0755-83975897
Email: 1615456225@qq.com
QQ: 3518641314 Quản lý Li
QQ: 332496225 Quản lý Qiu
Địa chỉ: Phòng 809, Tòa nhà C, Tòa nhà Công nghệ Zhantao, Số 1079 Đại lộ Minzhi, Khu Longhua Mới, Thâm Quyến