Программа микроконтроллера для управления ЖК-панелью на PCF2112P
18.04.2011 PIC, Контроллеры, Проекты Комментарии: 0 rhf-admin Метки: pic, ЖК, контроллер
Ниже приведён пример программы для управления самодельной ЖК-панелью на драйвере PCF2112P. Собственно говоря, всё управление нашей ЖК-панелью заключается в загрузке в микросхему драйвера нужных данных, чем и занимается микроконтроллер (PIC16F628A). Алгоритм передачи данных такой: после того, как на линии DLEN установится высокий уровень, микросхема по каждому заднему фронту тактового импульса начинает считывать состояние линии DATA …
Генератор прямоугольных импульсов на встроенном ШИМ модуле микроконтроллера PIC16F628A
Представленный ниже программируемый генератор прямоугольных импульсов реализован с помощью встроенного ШИМ модуля микроконтроллера PIC16F628A. Скважность и частота импульсов генератора загружаются с компьютера любой терминальной программой, умеющей работать в hex-режиме, причём загруженные данные можно сохранять в EEPROM контроллера, после чего генератор можно использовать автономно. Максимальная частота нашего генератора равна Fosc/4, а минимальный шаг по ширине импульса …
PIC-контроллеры
Портативное устройство копирования микросхем памяти серии 24Схх
Данное устройство предназначено для клонирования микросхем EEPROM серии 24Cxx (последовательный доступ, интерфейс I2C) в автономном режиме (то есть без наличия компьютера). Управление устройством осуществляется с помощью контроллера PIC12F629. Конструкция, в общем-то, довольно простая: управляющий контроллер, две кроватки для микросхем 24Схх (в одну вставляется микросхема «источник» — из которой копируются данные, в другую вставляется микросхема «приёмник» …
Программная реализация мастер-абонента шины I2C в режиме single-master (библиотека процедур для PIC)
В этой статье рассматривается пример реализации на микроконтроллере PIC мастер-абонента шины I2C в режиме single-master (когда микроконтроллер выступает в роли единственного мастер-абонента на шине). Для понимания механизма функционирования интерфейса I2C, рекомендую сначала ознакомиться с теорией. Если же с теорией вы уже разобрались, тогда можно приступать к практической реализации. Итак, рассматриваемый режим single-master является самым простейшим …
Управление биполярным шаговым двигателем. Часть 1. Теория. Схема с контроллером PIC12F629 и драйвером LB1838
Часть 1. Теория. Схема с PIC12F629 и драйвером LB1838 Часть 2. Схема с PIC12F629 и драйвером L293D Шаговые двигатели интересны тем, что позволяют повернуть вал на определённый угол. Соответственно, с их помощью можно повернуть вал и на определённое число оборотов, потому что N оборотов — это тоже определённый угол, равный 360*N, и, в том числе, …
Программирование микроконтроллеров PIC. Часть 5. Ассемблер. Организация циклов и ветвлений
В этой части мы рассмотрим, как организуются циклы и ветвления на ассемблере для микроконтроллеров PIC, какие для этого используются команды. Для начала давайте разберёмся, как организуются ветвления и что это такое. Ветвление — это такое место в программе, после которого в зависимости от какого либо условия может начать выполняться тот или иной код. То есть, …
Микроконтроллеры PIC для начинающих. Практика #1
Программирование микроконтроллеров PIC. Часть 4. Разработка рабочей части программы. Алгоритмы
Итак, наконец-то мы добрались до самого главного — разработки рабочей части программы, то есть до той части, которая, собственно, и будет решать поставленную задачу. С чего начинается разработка программы? Естественно, разработка любой программы начинается с постановки задачи. Иначе что делать-то, вообще? Задачу нужно формулировать как можно более детально, потому что правильно и полно поставленная задача …
Программирование микроконтроллеров PIC. Часть 3. Структура программы на ассемблере
Итак, давайте разберёмся, какую структуру имеет программа на языке ассемблер и для чего предназначены отдельные части программы. Для дальнейшего чтения неплохо иметь под рукой текст какой-нибудь программы и документацию на контроллер (либо распечатку, либо просто открыть их в соседних окошках), чтобы можно было в процессе чтения находить в тексте программы и в документации то, о …
Программирование микроконтроллеров PIC. Часть 2. Что такое контроллер и как с ним работать
Итак, вы прочитали предыдущую статью и установили MPLAB. Что дальше? Дальше давайте немного поговорим о том, что вообще представляет собой pic-контроллер, как он устроен и как с ним работать. Принципы построения у всех pic-контроллеров одинаковые и принципы работы со всеми контроллерами тоже одинаковы, но в этой статье в качестве конкретных примеров будут использоваться примеры для …
Программирование микроконтроллеров PIC. Часть 1. Необходимые инструменты и программы. Основы MPLAB
Итак, вы решили научиться программировать pic-контроллеры. Для начала поговорим о том, что вам для работы с этими контроллерами понадобится. Контроллер работает по определённой программе, которая должна как-то в него попасть. Обычно программу в машинных кодах, готовую для записи в контроллер, называют прошивкой. Следовательно нужно какое-то устройство, которое будет записывать (на сленге обычно говорят заливать или …
Источник: radiohlam.ru
Pic контроллер примеры программ
Индикатор включенной передачи АКПП на PIC16F628A предназначен для отображения текущей передачи автоматических коробок передач производства Крайслер серии 41, а также для отслеживания исправности цепей вентилятора радиатора и свечей накала дизельного двигателя.
Цифровой термоанемометр на PIC
Термоанемометрический цифровой датчик потока воздуха на PIC
Термоанемометрический датчик потока воздуха, представленный в статье, предназначен для контроля тяги в системе вентиляции квартиры или дома. Датчик построен на PIC микроконтроллере и двух цифровых датчиках температуры. Датчик позволяет не только определять наличие потока воздуха и примерно рассчитывать его скорость, но и определять направление потока.
PICDUINO — аналог Arduino Uno на PIС с RS-485
Эта плата создана для самодельщиков, которые хотят использовать различные шилды для Arduino UNO с PIC микроконтроллерами. В плате можно использовать любой 28-ми выводный PIC микроконтроллер в SO корпусе без кварца (со встроенным генератором).
Деликатная подсветка поворотов на PIC
Схема деликатной подсветки зоны поворота на PIC12F683 описана в данной статье. Эта схема позволяет включать дополнительную лампу (или одну из противотуманных фар) при повороте автомобиля, тем самым освещая зону поворота. В отличие от штатных устройств, получающих сигнал с датчика поворота руля, эта схема берет сигнал с лампы поворотника. С одной стороны, это даже лучше, ведь освещение поворота включается до начала самого поворота, что позволяет заранее увидеть возможное препятствие, а не тогда, когда автомобиль уже начал поворачивать.
Таймер для ламп ДРЛ на PIC
Предлагаемый таймер служит для управления лампой ДРЛ с учетом особенностей ее эксплуатации. Так, например, минимальное время включения лампы и паузы между включениями составляет 5 минут и обусловлено условиями испарения и конденсации ртути в колбе лампы. При несоблюдении этих условий ресурс лампы резко снижается. Данный таймер учитывает этот нюанс при цикличном включении.
Таймер позволяет задать задержку перед первым включением лампы, время включения лампы и время паузы между включениями, причем последние два параметра не могут быть меньше 5 минут. Таймер будет полезен для периодического включения ламп ДРЛ без внешней колбы в целях дезинфекции помещений.
Сканер шины i2c для PIC
Это диагностическая программа, которая ищет любое ведомое устройство на шине i2c и сообщает адрес для каждого найденного устройства. Эта программа полезна, если вы хотите убедиться, что ваш микроконтроллер действительно видит ведомое устройство, или убедиться в правильности адреса ведомого устройства. Данные выводятся через UART. Но программу можно изменить и для вывода на ЖКИ.
Даталоггер на PIC с SD-картой и 4х-канальным АЦП
Иногда требуется записывать значения каких-либо параметров на крату памяти для дальнейшего анализа на компьютере. Для этого существуют такие устройства, как даталоггеры. Предлагаемый даталоггер на PIC18 обладает следующими характеристиками:
-простой дизайн, доступный для повторения радиолюбителями
-запись данных на карту памяти SD в виде простых текстовых файлов
-4 12-битных канала АЦП
-прост в использовании и конфигурировании
-экономичный
-недорогой
Индикатор уровня звука на PIC
Время от времени появляются люди, пытающиеся собрать индикатор уровня звука. В «аналоговую» эру, это можно было сделать с помощью делителя напряжения и ряда компараторв или использовать специальные микросхемы, например LM3914, LM3915. В наше время эти микросхемы найти все труднее и труднее, или вам нужно большее разрешение, или другой выходной профиль. Что же делать?
Эмулятор работающего телевизора — имитатор присутствия на PIC.
Нижеприведенная схема служит для отпугивания воров от частного дома или квартиры путем имитации работающего телевизора и освещения. Данное устройство каждый вечер «включает свет» и «телевизор» в случайное время со случайной длительностью, также свет включается в случайное время среди ночи, и еще раз утром. В дежурном режиме устройство работает в качестве часов, обтражая время и дату на ЖКИ.
Подключение знакосинтезирующих ЖКИ к микроконтроллерам по шине i2c
Иногда количество выводов микроконтроллера ограничено и их не хватает для подключения знакосинтезирующего ЖКИ по обычной схеме, но в то же время в проекте присутсвуют устройства с шиной i2c. В таком случае будет удобно подключить индикатор также по этой шине. Для этого можно использовать расширитель порта PCF8574.
Источник: micpic.ru
Знакомство с семейством PIC
Наконец-то сегодня нашлось время познакомить вас с ещё одним семейством микроконтроллеров — это микроконтроллеры PIC.
Данные микроконтроллеры также являются очень известными, устанавливаются во многие устройства и давно уже снискали у радиолюбителей очень сильный интерес.
Разработчиком данного семейства является компания Microchip, которая также ялвяется очень известной и её продукция востребована по всему миру.
Изучение данной серии контроллеров является очень нелёгким вопросом, я этим заниматься начал уже давно, но нормально разобрался с линейкой только сейчас. Последнее время я немного ускорил процесс изучения микроконтроллеров PIC благодаря вашим просьбам в группах и чатах, на которые я не мог не откликнуться.
Также к тому, чтобы поделиться своими знаниями в области программирования данной линейки, меня подтолкнуло то, что я видел много блогов, уроков (в том числе и видео) очень хорошего качества по контроллерам PIC именно с использованием языка ассемблер. А вот на языке C уроков очень мало, что подчёркивает их востребованность.
Поэтому замечу, что программировать МК PIC мы будем именно на языке C. Какую мы выберем среду программирования и компилятор, мы решим чуть позже, а пока же в данном уроке нас ждёт краткое знакомство с самими контроллерами, с их архитектурой и их разновидностями.
Разновидностями контроллеров мы будем считать их деление по архитектуре. Примем за основу разрядность их ядра.
Например, те контроллеры AVR, с которыми мы до сих пор работаем, являются 8-битными, а контроллеры STM, которые мы изучаем — 32-битными.
Вот и контроллеры PIC также делятся по битности.
Первая линейка — это 8-битные контроллеры PIC. Наименование их моделей начинается с префикса PIC10/PIC12/PIC16.
Данная линейка также делится на 3 семейства.
1. BASELINE — данная архитектура присутствует у контроллеров PIC10. От более мощной серии она отличается количеством выводов (от 6 до 28), дешевизной.
2. MID-RANGE — данную архитектуру имеют ядра микроконтроллеров PIC12/PIC16. Количество выводов в данной серии увеличено (от 6 до 64), стоят они несколько дороже, зато имеют помимо 35 машинных инструкций, поддерживаемых серией BASELINE, ещё 14 дополнительных инструкций (оптимизированных под компилятор языка C). Также у данной серии производительность увеличена на 50%, они имеют более глубокий и улучшенный аппаратный стек, увеличенный объём памяти и некоторые прочие прелести, с которыми мы познакомимся в дальнейшем, так как, скорее всего, мы с данной серии и начнём процесс изучения программирования микроконтроллеров PIC.
3. 8-битовые микроконтроллеры PIC18 — это улучшенная серия контроллеров, здесь на борту много другой периферии, количество выводов от 18 до 100, производительность 16 MIPS, поддержка технологии NanoWatt, наличие программироуемого генератора.
Вторая линейка — это 16-битные контроллеры PIC. Они имеют префикс PIC24F и PIC24H. Это уже более мощные контроллеры. В отличие от первой линейки, машинная команда выполняется уже не за 4 такта генератора, а за 2. Также периферия еще более расширена по разновидностям шин, прямой доступ к памяти DMA (у PIC24H), расширенный набор инструкций. Также есть очень много других особенностей.
Третья линейка — это 32-битные контроллеры. Префикс у них уже PIC32. Частота тактирования таких контроллеров до 120 МГц, а у новой серии MZ — до 200 и даже выше. У меня, например, есть отладочная плата, на которой устрановлен контроллер PIC32MZ2048EFH064, у которого тактовая частота составляет 252 мегагерца. Также здесь ещё более увеличена производительность ядра.
Данное семейство построено на ядре MIPS32®, которое также кроме высокой производительности отличается ещё и низким потреблением энергии.
Вообщем, вот такие вот краткие характеристики существующих на данный момент контроллеров PIC. Если брать по наименованиям, то наименований очень много, на любой, как говорится, вкус.
Также, как и рассмотренные, а также рассматриваемые нами контроллеры AVR и STM32, контроллеры PIC работают приблизительно по той же схеме. Сочиняется программа, собирается в машинный код, понятный арифметическо-логическому устройству контроллера, загружается (прошивается или заливается) в контроллер и затем обеспечивает работу по определённому алгоритму. Основной интерфейс, используемый для прошивки данных контроллеров — это ICSP, предназначенный для внутрисхемного программирования. Подробнее с ним мы познакомимся, когда будем прошивать данные контроллеры.
Давайте немного разберёмся с организацией памяти в контроллерах PIC. Так как мы начнём изучение семейства PIC с более простых 8-битных (принцип от простого — к сложному ведь не отменял никто), то и организацию памяти мы посмотрим у данной серии.
Сначала посомтрим блок-схему контроллера на примере МК PIC16F84A (нажмите на картинку для увеличения изображения)
В левом верхнем углу сразу бросается в глаза модуль памяти FLASH, в которой обычно хранится программа контроллера (прошивка). А в правом верхнем углу мы видим память EEPROM, которая уже исользуется для хранения данных. Эти два вида памяти являются энергонезависимыми и после отклчения и сброса контроллера не стираются. Но данная память не является быстрой, поэтому код при старте программы распределяется уже в память RAM (ОЗУ), которая уже является быстродействующей и предназначена для функционирования контроллера при работе. Поэтому данную память мы уже рассмотрим несколько поподробнее.
Оперативная память контроллера PIC делится на память программ и память данных.
Вот так организована память программ у контроллера PIC16F84A
Микроконтроллеры данной серии имеют счётчик команд, способный адресовать 8К x 14 слов памяти программ и 14-разрядную шину данных памяти программ. Вся память программ разделена на 4 страницы по 2 килослов каждая (0000h-07FFh, 0800h-0FFFh, 1000h-17FFh, 1800h-1FFFh). Ну это общая информация, поэтому у тех контроллеров, у которых память небольшая перемещение между данными страницами приведёт к циклической адресации. Поэтому размер памяти того контроллера, который мы хотим программировать, мы обязаны знать твёрдо. В общем случае память программ состоит из счётчика команд, стека нескольких уровней, память для хранения векторов прерываний, а также внутренней памяти программ.
Также немного познакомимся с организации оперативной памяти, отведённой под хранение данных.
Память данных разделяется на регистры общего назначения и регистры специального назначения. Посмотрим, как организована память данных контроллера PIC16F84A
Регистры специального назначения (SFR) — это регистры, которые предназначены для хранения строго отведённых величин и имеют определённые имена. С ними мы будем знакомиться постепенно, когда будем писать какой-то исходный код, который будет широко их использовать.
Регистры общего назначения (GPR) — это ячейки памяти, которые имеют только адреса и предназначены они для хранения любых данных.
Также из приведённого выше рисунка мы видим, что у нашего контроллера память данных разделена на 2 страницы (или банка) переход между которыми осуществляется посредством установки определённых битов в регистре STATUS. Поэтому данный регистр присутствует в обеих банках и обратиться к нему мы можем в любой момент, чтобы сменить текущую страницу памяти.
Адресация может быть как прямая, так и косвенная или относительная, когда адрес отсчитывается относительно текущего адреса. С этим мы возможно не будем знакомиться, так как такая задача возникает у программистов, которые пишут программы на ассемблере.
Соответственно, у каждого контроллера кроме памяти существует много чего ещё интересного, в том числе порты ввода-вывода. Наши контроллеры PIC — также не исключение. Посмотрим назначение ножек контроллера PIC16F84A
У данного контроллера два порта — порт A и порт B. Из порта A наружу выведены 5 ножек — RA0-RA4, а из порта B — все 8 ножек RB0-RB7.
Также ножки портов могут иметь и другое назначение в зависимости от того, как мы их сконфигурируем. Наример ножка 6 или RB0 может в любой момент превратиться в ножку для захвата внешних прерываний, а ножка 3 или RA4 — стать ножкой для тактирования таймера от внешнего генератора.
Тактирование МК PIC также может осуществляться как от внешнего генератора, так и от кварцевого резонатора, от внутреннего резистора, а также существует ещё несколько вариантов, которые поддерживают не все контроллеры данного семейства. На практике как правило используется тактирование от кварцевого резонатора. Скорее всего, мы также последуем данной традиции в наших дальнейших занятиях.
Думаю, на этом мы закончим знакомство с контроллерами PIC. Знакомство получилось кратким, но на первое время нам и этого хватит за глаза. С более расшифрованной информацией мы столкнёмся, когда будем сочинять наши программы. Так что ждите следующих занятий, которые обещают быть очень интересными. Мы познакомимся сначала с установкой среды и компилятора, изучим, как с ними работать, какие тонкости программирования присутствуют в настройках различной периферии, а также в работе с ней.
Смотреть ВИДЕОУРОК (нажмите на картинку)
Источник: narodstream.ru