Как MCU управляет ЖК-экраном и соображениями дизайна

2023-07-17

Классификация и применение однокристального микрокомпьютера
По типу памяти микроконтроллеры можно разделить на два типа без встроенного ПЗУ и с встроенным ПЗУ. Чипы без встроенного ПЗУ должны быть подключены к внешнему СППЗУ (обычно 8031); Микросхемы со встроенным ПЗУ далее подразделяются на встроенное СППЗУ (обычно 87C51), ПЗУ с маской внутри кристалла (обычно 87C51), микросхема 8051), встроенную флэш-память (типичный чип - 89C51) и другие типы.
По назначению его можно разделить на общего и специального назначения; В зависимости от ширины шины данных и длины байтов данных, которые могут быть обработаны за один раз, его можно разделить на 8, 16 и 32-битные микроконтроллеры.
В настоящее время внутренний рынок приложений MCU наиболее широко используется в области бытовой электроники, за ним следуют промышленная сфера и рынок автомобильной электроники. Бытовая электроника включает, среди прочего, бытовую технику, телевизоры, игровые приставки, аудио- и видеосистемы. Промышленные области включают умный дом, автоматизацию, медицинские приложения, а также производство и распределение новой энергии. Автомобильная отрасль включает в себя автомобильную трансмиссию, системы управления безопасностью и т. д.
Компания Shenzhen Hongjia Technology Co., Ltd. специализируется на исследованиях и разработках, производстве и продаже ЖК-экранов с диагональю 1,14-10,1 дюйма и сенсорных экранов, которые можно настраивать, а также обеспечивает поддержку дисплеев MCU, включая интерфейс SPI, интерфейс MCU, интерфейс RGB, Интерфейс MIPI и т. д. Существует множество размеров и моделей. Также могут быть предоставлены соответствующие резистивный сенсорный экран и емкостный сенсорный экран.
Основная функция однокристального микрокомпьютера

Для большинства микроконтроллеров следующие функции являются наиболее распространенными и основными. Для разных MCU описание может быть разным, но по сути они одинаковы:

1. TImer (таймер): Хотя существует множество типов TImer, их можно разделить на две категории: один — TImer с фиксированным временным интервалом, то есть время устанавливается системой, и пользовательская программа не может управляться. Для выбора пользовательских программ предусмотрено только несколько фиксированных интервалов времени, например 32 Гц, 16 Гц, 8 Гц и т. д. Этот тип таймера более распространен в 4-битных микроконтроллерах, поэтому его можно использовать для реализации связанных функций, таких как часы и синхронизация. .
Другой тип — Programmable Timer (программируемый таймер). Как следует из названия, время таймера этого типа может контролироваться программой пользователя. К методам управления относятся: выбор источника тактовой частоты, выбор деления частоты (Prescale) и установка заводского номера и т. д. Некоторые микроконтроллеры имеют все три одновременно, а другие могут иметь один или два из них. Этот тип приложения таймера очень гибок, и фактическое использование также постоянно меняется. Одним из наиболее распространенных применений является его использование для реализации ШИМ-выхода.
Поскольку источник синхронизации можно выбирать свободно, такие таймеры обычно комбинируются со счетчиками событий.
2. Порты ввода-вывода. Любой микроконтроллер имеет определенное количество портов ввода-вывода. Без портов ввода-вывода MCU потеряет канал связи с внешним миром. По конфигурации порта ввода-вывода его можно разделить на следующие типы:
Чистый входной или чистый выходной порт: этот тип порта ввода-вывода определяется аппаратной конструкцией MCU. Он может быть только вводом или выводом и не может быть установлен программным обеспечением в режиме реального времени.
Прямое чтение и запись портов ввода-вывода: например, порты ввода-вывода MCS-51 относятся к этому типу портов ввода-вывода. При выполнении инструкции чтения порта ввода-вывода это порт ввода; при выполнении инструкции порта ввода-вывода записи он автоматически становится выходным портом.
Программирование программы для установки направления ввода и вывода: ввод или вывод этого типа порта ввода-вывода задаются программой в соответствии с фактическими потребностями, приложение является относительно гибким, и могут быть реализованы некоторые приложения уровня шины, такие как I2C. шина, различные ЖК-дисплеи, шина управления светодиодными драйверами и т. д.
При использовании порта ввода-вывода необходимо иметь в виду важный момент: для входного порта должен быть четкий сигнал уровня, чтобы гарантировать, что он не может быть плавающим (это может быть достигнуто путем добавления подтягивающего или подтягивающего напряжения). понижающий резистор); для выходного порта - его выход. Уровень состояния должен учитывать его внешнее соединение, и следует гарантировать, что в режиме ожидания или статическом состоянии нет источника тока или приемника.
3. Внешнее прерывание. Внешнее прерывание также является основной функцией большинства микроконтроллеров. Обычно он используется для запуска сигналов в реальном времени, выборки данных и определения состояния. Существует несколько типов прерываний: триггер по нарастающему фронту, триггер по заднему фронту и триггер по уровню. Внешние прерывания обычно реализуются через входные порты. Если это порт ввода-вывода, функция прерывания будет включена только тогда, когда она установлена ​​на вход; если это выходной порт, функция внешнего прерывания будет автоматически отключена (есть некоторые исключения в серии ATiny ATMEL, выходной порт также может запускать функцию прерывания). Применение внешнего прерывания выглядит следующим образом:
Обнаружение внешних триггерных сигналов: один основан на требованиях реального времени, таких как управление кремниевыми управляемыми выпрямителями, обнаружение импульсных сигналов и т. д., а другой — на необходимости энергосбережения.
Измерение частоты сигнала: Чтобы гарантировать, что сигнал не будет пропущен, идеальным выбором является внешнее прерывание.
Декодирование данных: в области приложений дистанционного управления, чтобы снизить стоимость разработки, часто необходимо использовать программное обеспечение для декодирования различных закодированных данных, таких как декодирование манчестерского и ШИМ-кодирования.
Key detection and system wake-up: For an MCU that enters the Sleep state, it generally needs to be woken up through an external interrupt. The most basic form is a key, and the level change is generated by the action of the key.
4. Интерфейс связи. Интерфейс связи, предоставляемый MCU, обычно включает в себя интерфейс SPI, UART, интерфейс I2C и т. д., которые описаны следующим образом:
Интерфейс SPI: этот тип интерфейса является основным методом связи, предоставляемым большинством микроконтроллеров. Передача данных контролируется синхронными часами. Сигналы включают в себя: SDI (вход последовательных данных), SDO (выход последовательных данных), SCLK (последовательный тактовый сигнал) и сигнал готовности; в некоторых случаях сигнал готовности может отсутствовать; этот тип интерфейса может работать в режиме ведущего или ведомого. Популярная поговорка заключается в том, чтобы увидеть, кто обеспечивает тактовый сигнал, сторона, которая обеспечивает тактовый сигнал, является ведущим, а противоположная сторона - ведомым.
UART (универсальный асинхронный прием-передача): это самый простой интерфейс асинхронной передачи. Его сигнальные линии — это только Rx и Tx. Базовый формат данных: стартовый бит + бит данных (7 бит/8 бит) + бит четности (четный, нечетный или нет) + стоповый бит (1–2 бита). Время, затраченное на передачу одного бита данных, называется Baud Speed ​​(скорость передачи данных).
Для большинства микроконтроллеров длина битов данных, метод проверки данных (проверка нечетности, проверка четности или отсутствие проверки), длина стопового бита (стоповый бит) и скорость передачи данных могут быть гибко установлены посредством программирования. Конечно. Наиболее часто используемый способ интерфейса этого типа — связь с последовательным портом ПК.
Интерфейс I2C: I2C — это протокол передачи данных, разработанный Philips, который также реализуется двумя сигналами: SDAT (последовательный ввод и вывод данных) и SCLK (последовательный тактовый сигнал). Его самым большим преимуществом является то, что к этой шине можно подключить несколько устройств, которые можно идентифицировать и получить к ним доступ через адреса; Одним из самых больших преимуществ шины I2C является то, что очень удобно использовать программное обеспечение для ее реализации через порт ввода-вывода, а скорость передачи данных полностью контролируется SCLK. Управление может быть быстрым или медленным, в отличие от интерфейса UART. , который имеет строгие требования к скорости.
5. Сторожевой таймер (сторожевой таймер): Сторожевой таймер также является базовой конфигурацией большинства микроконтроллеров (некоторые 4-битные микроконтроллеры могут не иметь этой функции), и большинство сторожевых таймеров микроконтроллеров могут только разрешать программам сбрасывать их и не могут их сбрасывать. Он закрыт (некоторые из них устанавливаются при записи программы, например микроконтроллеры серии Microchip PIC), а некоторые микроконтроллеры определяют, следует ли открывать его определенным образом, например серия Samsung KS57, пока программа обращается к регистру сторожевого таймера. , автоматически включается и не может быть снова выключен. Вообще говоря, время сброса сторожевого таймера может быть установлено программой. Самым основным применением Watchdog является обеспечение возможности самовосстановления микроконтроллера в случае сбоя из-за непредвиденных сбоев.

Программирование микроконтроллера
There is a big difference between the programming of MCU programs and the programming of PC programs. Although C-based MCU development tools are becoming more and more popular, for an efficient program code and a designer who likes to use assembly, assembly language Still the most concise and efficient programming language.

Можно сказать, что базовая структура программирования MCU примерно одинакова и обычно делится на три части: часть инициализации (это самая большая разница между программированием MCU и программированием на ПК), тело основного цикла программы и программа обработки прерываний, которые соответственно объяснил следующим образом:
1. Инициализация. При разработке всех программ MCU инициализация является самым основным и важным шагом, обычно включающим следующее:
Замаскируйте все прерывания и инициализируйте указатель стека: часть инициализации обычно не хочет, чтобы какие-либо прерывания происходили.
Clear the RAM area of the system and display Memory: Although sometimes it may not be completely necessary, from the perspective of reliability and consistency, especially to prevent accidental errors, it is recommended to develop good programming habits.
Инициализация порта ввода-вывода: в соответствии с требованиями проекта установите режим ввода и вывода соответствующего порта ввода-вывода. Для входного порта вам необходимо установить сопротивление подтягивания или понижения; для выходного порта необходимо установить его начальный уровень вывода, чтобы предотвратить ненужные ошибки.
Настройки прерываний: Для всех источников прерываний, которые необходимо использовать в проекте, они должны быть включены и установлены условия запуска прерываний, а для избыточных прерываний, которые не используются, их необходимо отключить.
Инициализация других функциональных модулей: для всех периферийных функциональных модулей MCU, которые необходимо использовать, необходимо выполнить соответствующие настройки в соответствии с требованиями приложения проекта, такие как связь UART, скорость передачи данных, длина данных, метод проверки и остановка. Необходимо установить бит, длину и т. д., а для таймера программатора вы должны установить источник синхронизации, деление частоты, перезагрузку данных и т. д.
Инициализация параметров: после завершения инициализации оборудования и ресурсов MCU следующим шагом является инициализация некоторых переменных и данных, используемых в программе. Инициализацию этой части необходимо проектировать в соответствии с конкретным проектом и общим устройством программы. Для некоторых приложений, которые используют EEPROM для сохранения сборных данных проекта, рекомендуется скопировать соответствующие данные в ОЗУ MCU во время инициализации, чтобы улучшить скорость доступа программы к данным и снизить энергопотребление системы (в принципе , доступ к внешней EEPROM приведет к увеличению энергопотребления блока питания).
2. Тело цикла основной программы. Большинство микроконтроллеров работают непрерывно в течение длительного времени, поэтому тело основного цикла в основном спроектировано циклическим образом. Для приложений с несколькими режимами работы может быть несколько тел цикла. Тело цикла преобразуется между собой с помощью флага состояния. В основном теле программы обычно располагаются следующие модули:
Программа вычислений: Программа вычислений обычно требует много времени, поэтому она категорически против любой обработки прерываний, особенно операций умножения и деления.
Обработка программ с низкими требованиями к реальному времени или без требований к реальному времени;

Программа передачи дисплея: в основном для приложений с внешним светодиодом и драйвером ЖК-дисплея.
3. Программа обработки прерываний. Программа прерываний в основном используется для обработки задач и событий с высокими требованиями в реальном времени, таких как обнаружение внешних внезапных сигналов, обнаружение и обработка ключей, подсчет времени, сканирование светодиодного дисплея и т. д.
В общем, программа обработки прерываний должна иметь как можно более лаконичный и короткий код. Для функций, которые не нужно обрабатывать в реальном времени, можно установить флаг триггера в прерывании, и тогда основная программа выполнит конкретную транзакцию — это очень важно. Особенно для маломощных, тихоходных микроконтроллеров необходимо обеспечить своевременную реакцию на все прерывания.
4. Для организации разных тел задач разные MCU имеют разные методы обработки:
Например, для низкоскоростных приложений микроконтроллеров с низким энергопотреблением (Fosc=32768 Гц), учитывая, что все такие проекты представляют собой портативные устройства и используют обычные ЖК-дисплеи, реакция на кнопки и дисплеи требует высокой производительности в реальном времени, поэтому обычно используются прерывания по времени. используются для обработки действий кнопок и отображения данных; а для высокоскоростных микроконтроллеров, таких как приложения Fosc>1 МГц, поскольку в это время у микроконтроллера достаточно времени для выполнения основного тела цикла программы, его можно прервать только в соответствующем разделе. Установите различные триггерные флаги и поместите все задачи в основном теле программы для выполнения.
5. При программировании MCU есть еще один момент, требующий особого внимания:

Чтобы предотвратить одновременный доступ или установку одной и той же переменной или данных в прерывании и основном теле программы. Эффективный профилактический метод состоит в том, чтобы организовать обработку таких данных в модуле и определить, следует ли выполнять соответствующую операцию с данными, путем оценки триггерного флага; в то время как в других телах программы (в основном прерываниях) данные, которые необходимо обработать, место обработки устанавливает только флаг срабатывания. - Это гарантирует, что выполнение данных будет предсказуемым и уникальным.

Навыки разработки микроконтроллеров

1. Как уменьшить количество ошибок в программе
Чтобы уменьшить количество ошибок в программе, вам следует сначала рассмотреть следующие параметры управления выходом за пределы диапазона, которые следует учитывать во время работы системы.
Физические параметры: эти параметры в основном являются входными параметрами системы, включая параметры возбуждения, рабочие параметры во время сбора и обработки, а также параметры результата в конце обработки.

Параметры ресурса. Эти параметры в основном представляют собой ресурсы схем, устройств и функциональных блоков в системе, такие как емкость памяти, длина запоминающего устройства и глубина стека.
Параметры приложения. Эти параметры приложения часто представляют условия применения некоторых однокристальных микрокомпьютеров и функциональных блоков. Параметры процесса: относятся к параметрам, которые упорядоченно изменяются во время работы системы.


2. Как повысить эффективность программного кода на языке C
Использование языка C для разработки программы однокристального микрокомпьютера является неизбежной тенденцией в разработке и применении однокристальных микрокомпьютеров. Если вы хотите добиться максимальной эффективности при программировании на C, лучше всего быть знакомым с используемым вами компилятором C. Сначала проверьте количество строк операторов на языке ассемблера, соответствующее каждому скомпилированному языку C, чтобы вы могли четко определить эффективность. При программировании в будущем используйте оператор с наибольшей эффективностью компиляции. Каждый компилятор C будет иметь определенные различия, поэтому эффективность компиляции также будет разной. Длина кода и время выполнения превосходного компилятора C для встроенной системы всего на 5-20% больше, чем тот же уровень функций, написанный на языке ассемблера.

Для сложных проектов с ограниченным временем разработки можно использовать язык C, но предпосылка состоит в том, что вы хорошо знакомы с языком C и компилятором C системы MCU и обращаете особое внимание на типы данных и алгоритмы, которые использует система компилятора C. могу поддержать. Хотя язык C является наиболее распространенным языком высокого уровня, системы компиляции языка C у разных производителей микроконтроллеров различаются, особенно в работе некоторых специальных функциональных модулей. Так что если вы не понимаете эти особенности, возникнет масса проблем при отладке, что приведет к более низкой эффективности выполнения, чем на языке ассемблера.

3. Как решить проблему защиты от помех однокристального микрокомпьютера. Самый эффективный способ предотвратить помехи — удалить источник помех и отрезать путь помех, но зачастую это сложно сделать, поэтому это зависит только от достаточно ли сильна защита от помех однокристального микрокомпьютера. Улучшая защиту от помех аппаратной системы, программная защита от помех отличается гибкой конструкцией,
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. By using this site, you agree to our use of cookies. Privacy Policy