Перейти к содержанию

mazzi

Members
  • Постов

    1 762
  • Зарегистрирован

  • Посещение

  • Победитель дней

    70

Записи блога, опубликованные mazzi

  1. mazzi
    Наступил момент, когда я добавил в свою схему микросхему аппаратных часиков с календарём, будильником и батарейкой,
    которая избавит нас от необходимости устанавливать время после случайного пропадания питания. Это наверное не последнее
    изменение схемы. Далее планирую добавлять управление внешними нагрузками по расписанию или что-то ещё в таком роде.
    Если у вас есть идеи, то предлагайте, обсудим.
    В данный момент схема выглядит так.

    Теперь буду собирать и писать программу. Следите за обновлениями поста. Приветствую советы, критику, пожелания, предложения. Всем удачи! )))
     
    UPD 26 января 2021г.ВТ.
    Изменил немного схему и перезалил её. Добавил резистор R20 и кинул провод между выводом 7 часов и выводом 11 микросхемы U3. По этому проводу получаю меандр 1Гц от часов.
    Внешне всё выглядит вот так.

    Посмотреть часы в работе можно по ссылке https://youtu.be/945Qz2ButoI
    Прошивка для текущей версии здесь  akyn6.hex
    Дальше буду добавлять будильник, а затем одно или несколько реле для управления нагрузками по расписанию. Память программ микроконтроллера израсходована
    чуть более половины, буду заполнять до упора. Не исключаю возможности добавления ещё одного микроконтроллера.
    Приглашаю всех желающих присоединяться к обсуждению моей игрушки. Предложившему интересную идею подарю прошитый микроконтроллер.))) Всем добра!
  2. mazzi
    В прежней публикации я завершил программу и довёл устройство до рабочего состояния, в результате почти все выводы были уже заняты и подключать дополнительные устройства было некуда. Теперь решил изменив схему увеличить возможности моего детища. На первом этапе добавив два регистра я освободил 4 вывода микроконтроллера к которым планирую подключить I2C часы и другие устройства. К двум другим (возможно) подключу внешний канал.
    Схема на данном этапе выглядит так.

    Теперь соберу схему и переделаю программу под эту схему. Продолжение следует. Следите за обновлениями.
     
    UPD 20 января 2021г.
    Поразмыслив некоторое время я решил ещё немного изменить схему добавив ещё две микросхемы, что дало более совершенную схему. Теперь помимо четырех кнопок у нас
    зарезервированы 4 дискретных входа и 4 дискретных выхода которые мы сможем задействовать позже для управления устройствами, например по расписанию. Теперь приступаю к сборке.
    Новый вариант схемы ниже. Всем добра. Следите за обновлениями.

     
     
    UPD 23 января 2021 г.СБ.
    Дособирал я новую схему и переписал программу для неё. На фотографии ниже внешний вид на монтажке.

     
    Короткое видео демонстрация работы устройства. Теперь это у меня уже пятая версия.https://youtu.be/V4XyRPzm1OM
    Видео и фотография получились боком. Лень переделывать, пусть остается так.
    Всех желающих приглашаю к обсуждению, критике, советам и предложениям. ))) Всем добра.
  3. mazzi
    Для того, чтобы иметь возможность управлять часами достаточно одной кнопки и варьируя количество нажатий, длительность нажатий можно реализовать любые функции. Однако такой способ даёт неочевидный интерфейс. Поэтому я решил пойти по более простому пути и добавить ещё две кнопки получив таким образом простоту управления. Назначение кнопок предполагаю такое:
    1. Переключение настроек по порядку по кругу в таком порядке - десятки часов, единицы часов, десятки минут, единицы минут, десятки секунд, единицы секунд, отображение времени.
    2. Увеличение значения текущей настройки кроме режима отображения времени.
    3. Уменьшение значения текущей настройки кроме режима отображения времени.
    При таком построении управления часами можно легко добавить новые настройки в первый пункт. Это может быть например включение или выключение нагрузки по времени или что-то ещё. Можете предлагать свои варианты.)))
    А вот изменённая схема с дополнительными кнопками.

    Пока пусть будет такая схема. Далее возможны изменения.
    Пишите свои пожелания, предложения, критику. Если ваше предложение мне понравится, то добавлю в проект, или сделаю новый.
    Позже выложу в этот пост программу и видео работы. Следите за обновлениями!
    UPD. 18 января 2021г. ПН. Дописал программу для данной схемы. Часы работают с указанным выше функционалом кроме настройки секунд, которую не стал делать, поскольку я их не отображаю.
    Схема в формате PCAD2006, прошивка и исходник на Си в архиве pr_89c2051_v3.zip  Видео демонстрация работы здесь.
    Главный недостаток данной схемы в том, что при выключении питания часы сбиваются и при возобновлении питания стартуют с полудня. Дабы устранить данный недостаток я решил в очередной
    раз дополнить схему теперь уже дополнительной микросхемой реального времени с интерфейсом SPI или I2C снабжённую батарейкой. Смотрите продолжение в моём блоге.
  4. mazzi
    Развивая схему в стиле "акын", без конкретной цели, просто ради развлечения, я добавил четырёхразрядный семисегментный индикатор, в результате получилась вот такая схема.

    Транзисторы использовал первые попавшиеся под руку - это КТ502. По схеме, видно что свободных выводов практически не осталось и что-либо ещё добавить на схему проблематично. Но мы
    отыщем средства! ))) А пока будем делать часики.
    Написал программу часов, посмотреть видео можно здесь. Сейчас часики работают как секундомер, часы не выводятся, хотя и идут, но завтра наверное сделаю и это.
    Для желающих поиграться, выкладываю исходник на СИ. pr_89c2051_v2.zip
    Всем добра. Если хотите поучаствовать советом, добрым словом или делом, присоединяйтесь. )))
    UPD. Добавил переключение режимов отображения. Часы-минуты и минуты-секунды.
  5. mazzi
    Попал мне в руки программатор поддерживающий массу различных микроконтроллеров, в том числе и Атмелевские 51. Решил написать несколько статей для начинающих.
    Схему решил развивать в процессе в стиле акын - что придумалось то и сделаем.
    Итак, сначала нужно сделать базовую обвязку - это цепи сброса и тактирования, а также выведем светодиод для того, чтобы можно было убедиться, что схема работает.

     
    Затем собрал это всё на  макетной плате.
     

     
    Затем написал программу для проверки работоспособности схемы, заставил помигать светодиодом.

     
    Подал питание и светодиодик замигал, что подтвердило работоспособность программатора. Посмотреть работу можно по ссылке  https://youtu.be/4VtdcGRhxKY
    Далее предполагаю усложнить схему для получения чего то полезного. Пишите ваши предложения, что нам соорудить на базе этого контроллера.
     
     
    11 декабря 2020г. Продолжение.
    Появилась свободная минутка и я продолжил играться с этой простенькой схемой. На первой схеме не было конденсаторов по 33пФ в обвязке кварцевого резонатора,
    сейчас я их добавил. Без них схема вполне работоспособна, но лучше их поставить, с ними схема должна работать стабильнее. Ещё я добавил кнопку на всякий случай.
    Вот новая схема:

    Теперь наша программа использует прерывание от таймера Т1 которое происходит каждую миллисекунду. Благодаря этому мы можем теперь моргать
    лампочкой с большей точностью. При отпущенной кнопке мы моргаем с частотой 1Гц, а с нажатой 2Гц.
    В архиве прилагаю исходники и откомпилированный HEX-файл. Так же приглашаю всех желающих обсудить, посоветовать, предложить что-то своё.
    Если мне понравится ваше предложение, добавлю в проект. Всем Добра.
    pr1_2.zip
  6. mazzi
    Я собрал на монтажке вот такую конструкцию. Слева внизу красненькие ключи подключены ко входам логического контроллера и подтянуты резисторными сборками к +5 вольт. Пи замыкании ключика, на вход подаётся логический ноль, при размыкании - логическая единица. Выходы подключены к светодиодам. Если на выходе логический ноль, то зажигается красный светодиод, если же логическая единица, то зажигается зелёный светодиод.
    Зелёная плата слева внизу фотографии - это преобразователь USB-UART собранный на микросхеме CP2102. В данный момент я отключил RS-485 и ползуюсь этой платкой для связи с компом и заодно запитал всё от USB.
    Я уже писал, что использую для обмена программу гипертерминал, которую перенёс из операционной системы WindowsXP, поскольку в WIN7 она отсутствует. Далее показываю, как я настроил его для корректной работы с ПЛК.

    Даём имя соединению. Я выбрал такое, потому, что у меня обмен происходит по соединению COM14. Жмём OK.

    Далее выбираем наш порт и жмём Ок.
     

    Выбираем настройки показанные на рисунке и жмём "Применить", затем ОК.
     
    Теперь гипертерминал запустился, но это ещё не всё. Выбираем из  меню Файл - Свойства, как на рисунке ниже.

     
    Попадаем на страничку свойств. Выбираем вкладку "Параметры" делаем настройки как на картинке и далее нажимаем кнопку "Параметры ASCII".

     
    Далее ставим галочки как на рисунке ниже и настройка выполнена.

    Нажимаем ОК во всех открытых окошках и теперь перед нами чистое окно гипертерминала.
    Теперь мы можем вести диалог с ПЛК при помощи команд.
    Команда "D" позволяет выводить на экран гипертерминала содержимое памяти схемы ПЛК в 16-ричном коде. В данный момент в памяти присутствует схема генератора и несколько делителей-двоичных счётчиков. Вводим команду   D0000,007F   и нажимаем Enter. Результат на картинке ниже.

    К сожалению у меня по независящим от меня причинам пока нет графической среды разработки для данного ПЛК, приходится всё делать в машинных кодах, благо последовательный интерфейс и гипертерминал позволяют это делать.
    Ниже видео рабты ПЛК с этой схемой.
     
    В следующей статье опишу работу с ПЛК более подробно. Пишите комментарии, отзывы.
    Голосуйте за мой блог и получите скидку на приобретение данного ПЛК. 
    В случае победы в конкурсе обещаю подарить трём самым активным участникам моей поддержки по 1 штуке ПЛК в виде микросхемы.
     
  7. mazzi
    В предыдущих записях блога я показал сам контроллер, теперь расскажу, как я его программирую.
    Поскольку контроллер работает как цифровая схема, то эту схему нужно записать в контроллер с помощью простых манипуляций.
    Для начала рисуем схему, которая будет выполняться в контроллере. Я обычно рисую на бумаге или в программе Logisim. Для иллюстрации давайте сделаем простейшую схему, которая будет генерировать высокую частоту.

    На схеме мы видим инвертор, затем буфер-повторитель, элемент 2-И и выход. Шестнадцатиричные числа - это номера проводов в схеме.
    Теперь немного о том, как устроена память контроллера.
    Физическое распределение памяти.
     *  0x0000  байт помещённый по этому адресу выводится на аппаратные выходы.  
     *  0x0001  этот байт содержит состояние аппаратных входов в момент считывания.
     *  0x0002  по этому адресу хранится количество проводов в схеме. 
     *  0x0003..0x0006 четыре байта для временных однобитных переменных. 
     *  0x0007  с этого адреса начинается область для хранения значений проводов. На каждый провод 2 бита. 
     *  Сразу за областью проводов начинается область логических элементов, он продолжается до конца памяти. В данном контроллере короткая память, последний адрес 0x00F7.
     
     Логическое распределение памяти.

     Поскольку обращение происходит к отдельным битам, то и адресация у них несколько другая.
     0x00..0xbf память проводов. Теоретически может занимать всё указанное пространство, но практически ограничивается реальным количеством проводов. Реально начинается с адреса 0x0007.
     
     0xc0..0xdf адреса 32 битов для хранения значений не обновляемых автоматически, как память проводов. Реально располагаются по адресам 0x0003..0x0006. Смотри выше.
     
    0xf8..0xff адреса 8 битов для ввода и вывода. Не смотря на то, что логические адреса для ввода и вывода совпадают, данные попадают в разные места памяти 0x0000 для вывода и 0x0001 для ввода. Смотри выше.
     
    Логические элементы.
    Логические элементы представлены в памяти в виде нескольких байт. Каждый элемент имеет свой уникальный код. Для нашей схемы мы будем использовать элемент 2-И - его код 0x01, элемент НЕ - его код 0x03 и элемент буфер, его код 0x06.
    Код для инвертора  0x03, 0xC0, 0xC0 - код инвертора, номер провода к которому присоединен вход, номер провода к которому присоединен выход инвертора.
    Код для повторителя  0x06, 0xC0, 0x00 - код повторителя, номер провода к которому присоединен вход, номер провода к которому присоединен выход повторителя.
    Код для 2-И  0x01, 0x00, 0xF9, 0xFF - код элемента 2-И, номер провода к которому присоединен 1-й вход, номер провода к которому присоединен 2-й вход, это аппаратный вход и номер провода к которому присоединен выход. Это аппаратный выход.
    Вся схема выглядит вот так  0x03, 0xC0, 0xC0, 0x06, 0xC0, 0x00, 0x01, 0x00, 0xF9, 0xFF, 0x00. 
    Последний байт - это терминальный элемент с кодом 0x00, он обозначает конец схемы.
    Логика работы схемы такова - инвертор генерирует импульсы благодаря обратной связи созданной соединением между входом и выходом. Эти импульсы через повторитель подаются на вход элемента И. Разрешающий сигнал подается от аппаратного входа на другой вход И. Таким образом меняя уровень на аппаратном входе мы управляем состоянием другого аппаратного выхода, на котором могут быть либо 0, либо импульсная последовательность.
    Записывать мы будем с помощью гипертерминала с помощью команды M000B - что значит записывать память с адреса 0x000B.
    После ввода каждого байта нажимаем Ентер и в терминале отображается следующий адрес и его значение, если нужно его изменить, то набираем его значение в виде двух символов, например 7F и далее Ентер. Если менять не нужно, просто жмем Ентер. Для завершения ввода вводим точку и жмем Ентер. Просмотреть введенное можно с помощью команды D.    D0000,001F - выдаст область памяти
    от 0 до 1F. 

    Вводить нужно все, начиная с самого начала, поскольку в начале конфигурация, о которой я расскажу в следующий раз.
     
    Снял видео о работе ПЛК с нашей программой. На видео видно, что при изменении состояния микропереключателя, с которого берется разрешающий сигнал для элемента 2-И появляется или исчезает генерация на самой левой паре светодиодов(красный-зеленый). Красный светится когда на выходе 0, зеленый_ когда на выходе 1. В момент генерации из-за высокой частоты переключения они светятся оба и зеленый и красный, в момент отсутствия генерации светится только один.
     
  8. mazzi
    Продолжение описания ПЛК.
    В данный момент я буду писать об использовании ПЛК в виде микросхемы, поскольку такой вариант дешевле и я способен сам добавить нужную периферию для нормального функционирования устройства. Схема по которой я первоначально собрал устройство привожу ниже.

    В схеме я использую внешний кварцевый генератор собранный на микросхеме 74HC04. Допустимо подключать кварцевый резонатор непосредственно к выводам X1..X2, но у меня не заработал такой вариант. Возможно кварц не такой и я не долго думая собрал генератор с которым всё уверенно зашевелилось. Номинальная тактовая частота ПЛК 16 мегагерц. Для "разгона" я пробовал использовать другие кварцы и работоспособность сохранялась до 24 мегагерц, правда при этом обмен по последовательному интерфейсу пропорционально меняет свою скорость и я отказался от этого трюка. Хотя для случая, когда уже программа отлажена, это наверное допустимо. Нужно будет пробовать.
    Как вы можете видеть, на схеме есть три вывода RxD, TxD и DIR. Они предназначены для обмена с компьютером последовательными данными на
    скорости 9600 бод, 8 бит, 1 стоповый, без контроля чётности. 
    RxD - вход для последовательных данных, TxD - выход для последовательных данных, DIR - направление передачи последовательных данных для работы в полудуплексном режиме, например при работе с RS-485. Уровни сигналов TTL. Я пробовал работать подключив непосредственно к последовательным линиям микросхему ADM485 что позволяет настраивать ПЛК управляя им по витой паре на расстоянии 1000 метров. Я считаю, что это весьма недурно для такой крошки. К тому же встроенный
    сторожевой таймер избавляет от необходимости выдвигаться в место расположения ПЛК в случае его зависания. Кстати, зависания ещё ни разу не наблюдал.
    Для обмена я использую стандартную программу Гипертерминал. Далее я проиллюстрирую сеанс работы с его помощью.
    Продолжение следует. Голосуйте за мой блог и получите скидку на приобретение данного ПЛК. 
    В случае победы в конкурсе обещаю подарить трём самым активным участникам моей поддержки по 1 штуке ПЛК в виде микросхемы.
  9. mazzi
    Решил я поучаствовать в конкурсе 2019 и под это дело решил запилить обзор простенького ПЛК для граждан желающих прикоснуться к умному дому за весьма небольшие деньги.
    Этот контроллер выпускается и продаётся пока что в двух вариантах:
    микросхема небольшая плата, похожая на Arduino. Пока что не густо, но проект активно развивается и возможно через некоторое время мы будем иметь более широкий ассортимент с более изощренным функционалом. Но уже на данный момент с помощью этого девайса можно лепить для домашней автоматики заковыристые штуковины.
    Подключив ПЛК к компьютеру через USB или COM порт в неё можно загрузить цифровую схемку которая тут же начнёт работать так, как вы её составили.
    На данный момент контроллер имеет 8 цифровых входов и 8 цифровых выходов и последовательный порт для связи с компьютером или устройством его заменяющим. 
    Подробности будут далее, смотрите продолжение в следующих статьях. Буду выкладывать картинки и тексты  с помощью которых любой ЧСП (Человек С Паяльником) сумеет соорудить себе полезную схемку, на радость себе и окружающим.
    Голосуйте на конкурсе за меня, друзья. Особо отличившимся организую скидку на приобретение девайса.
  10. mazzi
    Для дискретного управления мощностью нагревательных элементов была сделана вот такая вот штукенция.

    Проектировался данный девайс в течение года из-за катастрофической недостачи времени. После завершения работы ещё более месяца не было времени выложить устройство на всеобщее обозрение. 

     
    Это схема силовой части, блока питания и детектора нуля. Силовой симистор на схеме не показан. Он подключается к разъёму XP2. Я использовал 40 амперный симистор, можно другой поставить, если нужно. Симистор был установлен на радиатор, хотя для маленьких мощностей его можно и не ставить. 
    Как можно увидеть по схеме все силовые линии гальванически развязаны от схемы управления, во избежание всякого неприятного.

     
    Эта часть схемы содержит управляющий узел. Сердцем его является микроконтроллер AT89C2051. Органы управления - две кнопки "Больше" и "Меньше" для увеличения и уменьшения отдаваемой мощности в нагрузку. В качестве индикаторной шкалы использовал светодиоды.
     

    Печатная плата и схема были сделаны в среде PCAD2006.
    Для желающих повторить данную конструкцию выкладываю схему, печатку, PCAD.zip     и прошивку    Regulator.zip. 
    Буду рад вашим комментариям. Отвечу на все ваши вопросы.
  11. mazzi
    Наткнулся на схемку в сети AVR JTAG ICE и решил её повторить. Дабы не тратить время на изготовление печатной платы решил предварительно собрать сей девайс "на соплях", вернее на беспаечной плате.

    Вот так у меня это всё получилось. Залил прошивку из статьи собрал схему с процом который будет целевым, соединил всё с COM портом и начал пытаться запустить всё из под CVAVR. Не заработало. Тогда попробовал из под Atmel Studio 4 и у меня всё получилось.
    Следующим этапом решил попробовать будет ли это всё работать через USB. И оказалось, что да, работает вполне хорошо.
    Нужно ещё попробовать из под последней Atmel Studio, но пока не на чем. Мне она не нравится из-за своей громоздкости и поэтому я ей не пользуюсь. 
    Можно резюмировать, что схема по ссылке вполне пригодная, но использование её ограничено софтом. Для не слишком требовательных юзеров вполне годится.
    Буду рад любым комментариям, если что-то непонятно, спрашивайте, отвечу на ваши вопросы.
    Все материалы из вышеуказанной статьи выкладываю здесь, если кто захочет повторить, пожалуйста.   mc85_AVR-JTAG-ICE.zip
     
  12. mazzi
    Хочу сделать какую-нибудь интересную электронную штуку. Чтобы полезной была или интересной, или красивой.
    Но идей нет.  
    Дабы разрешить это противоречие, предлагаю всем желающим поучаствовать в следующей затее.
    А именно. Если у вас есть хорошая идея (в отличие от меня), то можете прислать её (идею) в виде текста в произвольном изложении.  
    Самая интересная(интереснЫЕ), на мой взгляд, будет воплощена в хард и софт(если нужно).
    Кроме того, авторы воплощённых идей будут прославлены навеки на страницах моего блога    , ну или отблагодарены материально.
    Вариантов наград может быть несколько. Например в виде готовой платы понравившегося изделия вместе с прошитым контроллером. Или набора деталей, или на крайний случай могу мобилку пополнить или вебманей подкинуть.
    В общем спешите, пока очередь не выстроилась!   
  13. mazzi
    Фирма STM объявила конкурс среди разработчиков. Для регистрации в конкурсе нужно зайти по ссылке заполнить форму, после чего можно дерзнуть в разработке супер-девайса. Добрые люди говорят, что всем зарегистрировавшимся высылают неплохую демо плату.

    Кроме того, трёх победителей ждут призы
    1. Мотоцикл Харлей
    2. некий байк( не знаю что, может велосипед? )
    3. 1000 евро.
    Желающие дерзнуть, вперёд!
  14. mazzi
    Идею и схему подбросил камрад Olaksyon. А он в свою очередь позаимствовал её из журнала Радио 2006№3.

    Схема таймера очень проста. Алгоритм работы сводится к следующему. Чтобы задать или изменить выдержку, достаточно подать на прибор питание при нажатой кнопке SB1 и отпустиь ее спустя нужное время. Максимальная длительность выдержки практически неограничена. Запомнив выдержку в энергонезависимой памяти, микроконтроллер будет повтарять её при каждом включении с ненажатой кнопкой.( цитата из статьи Радио2006 №3).
    Я написал программу, прошивку которой можно скачать t_s.zip.
    Время задержек хранится в EEPROM.
    Первые четыре байта определяют время включеня светодиода и реле после рабочей паузы. Можно изменить программатором.
    Следующие четыре байта определяют младшую часть 64-разрядного числа определяющего длительность рабочей паузы.
    Следующие четыре байта определяют старшую часть 64-разрядного числа определяющего длительность рабочей паузы.
    64-битная задержка настраивается кнопкой, но можно и программатором.
    Младшие разряды чисел располагаются по меньшим адресам. Т.е. если нужно записать число 0x11223344, в память нужно писать 0x44, 0x33, 0x22, 0x11.
    Фьюзы следует настраивать так, чтобы МК работал от встроенного генератора на частоте 8МГц.
    Интересно будет услышать отзывы повторивших данную конструкцию.
  15. mazzi
    Начинаем работать с Keil.  
    Для тех кто не знает. Keil - это среда разработки для микроконтроллеров MCS51 и ARM. Содержит в себе компилятор с ассемблера и Си. Содержит хороший симулятор, хороший текстовый редактор, хороший дебаггер. Поддерживает подключение отладочных плат для отладки в реальном устройстве. На время написания этого текста, лучшей среды для MCS51 я не встречал. На сайте производителя доступна демо версия с ограничением по размеру кода 2 килобайта.
    Итак, вашему вниманию представляю пошаговую инструкция для создания проекта от начала до конца.
    Запустим программу и выполним последовательность действий показанных на следующей картинке для создания нового проекта.  

    Затем в выпавшем диалоге наберём имя проекта( по английски ).

    Следующий диалог предложит выбрать микроконтроллер для разработки. Сначала выбираем производителя
       
    затем конкретный тип микроконтроллера.  
       
    Затем следующий диалог предлагает сгенерировать начальный код для обнуления памяти и инициализации стека. Советую согласиться.
      
    Ну вот теперь у нас есть проект. Теперь нужно развернуть дерево проекта кликнув по плюсику.
      
    Полностью развернув дерево проекта мы видим всего один ассемблерный файл STARTUP.A51.
      
    Добавим СИшный файл. Нажимаем CTRL+N и получаем новый файл.
      
    Затем File/Save As и указываем имя файла вместе с расширением! Например proba1.c Добавить файл к проекту можно кликнув по папке Source Group1 правой кнопкой и выбрав из выпадающего меню Add Files to Group 

    После чего в диалоговом окне следует выбрать наш файл proba1.c

    наш файл появился в дереве проектов

    Затем набираем текст программы, как на экране, сохраняем файл и нажав на кнопочку build, компилируем весь проект. На рисунке обведён отчёт о построении проекта без ошибок. 

    Отдельно показываю эту кнопочку build.

    Для изменения опций проекта сделаем следующее.
     
    Для правильной симуляции следует выбрать опции проекта, как на следующем рисунке.  Частоту кварца следует поставить такую, какая у вас в схеме.

    Для того, чтобы во время компиляции создавался HEX-файл(прошивка), выберите опции показанные на следующем рисунке.

    Полученную прошивку можно с помощью программатора "залить" в микроконтроллер.
    Источник: Начинаем Работать С 51-Ми Контроллерами
  16. mazzi
    Начинаем работать с Keil. Продолжение 1.
    В нашем проекте мы указывали целевой микроконтроллер, но это влияет только на симулятор. Поэтому мы должны сами прописать в исходнике, для какого МК мы будем писать. Для этого нужно дописать в начале программы:

    #include <at89lp2052.h>
    Эта строка приказывает препроцессору включить в текст вашей программы всё содержимое файла at89lp2052.h
    Если вдруг окажется, что у вас нет такого файла, то можете воспользоваться моим, я его присоединил к этому посту. В этом случае нужно разместить его в директории Keil , например как у меня
    C:\Keil\C51\INC\Atmel\
    Приведу полный текст программы для простейшей мигалки которая выкладывалась в одном из первых постов.

    /************************************************** -- -- -- пробная программа для переключения лампочек -- -- МК................AT89LP2052 -- -- кварц.............12МГц -- -- -- **************************************************/ #include <at89lp2052.h> // определяем выводы для управления лампами #define LED1 P1_0 #define LED2 P1_1 #define LED3 P1_2 // константа определяющая длительность одного такта #define SEK_1 0xffff // количество тактов световых эффектов #define MAX_FAZA 3 // объявляем глобальные переменные idata unsigned int t_1s=0; // переменная для выдержки паузы между переключениями idata unsigned char faza=0; // переменная определяет текущее состояние лампочек //-------------------------------------------- // основная функция программы //-------------------------------------------- void main ( void ) { while ( 1 ) { // бесконечный основной цикл программы if ( t_1s ) t_1s--; // уменьшаем переменную, пока она не равна нулю else { t_1s = SEK_1; // перезагружаем её if ( faza < MAX_FAZA ) faza++; else faza = 0; } // переключаем лампочки switch ( faza ) {// множественный выбор одного из действий case 0: LED1 = 1; LED2 = 1; LED3 = 1; break; case 1: LED1 = 0; LED2 = 1; LED3 = 1; break; case 2: LED1 = 1; LED2 = 0; LED3 = 1; break; case 3: LED1 = 1; LED2 = 1; LED3 = 0; break; } } }
    А на следующей картинке результат симуляции данной программы с использованием встроенного логического анализатора.

    Файл проекта во вложении. Так что можете потренироваться сами.
    at89lp2052.zip
    proba.zip
    Источник: Начинаем Работать С 51-Ми Контроллерами
  17. mazzi
    Очередное моё творение - простая схема для контроля ветрогенератора. Для измерения скорости оборотов вала генератора используется автомобильный датчик Холла. Используется стандартная схема включения через разъём XP4. Температура генератора измеряется с помощью датчика температуры DS18B20, который подключается к контроллеру через разъём XP3, по схеме с паразитным питанием.
    Связь с хостом(главным управляющим контроллером или компьютером) осуществляется через RS-485, разъём XP2.
    Питание и связь передаётся через две витые пары. Питание от 12 до 36 вольт постоянного тока.
    Прошивка прилагается. В следующий раз выложу схему хоста.
    Источник: Начинаем Работать С 51-Ми Контроллерами
  18. mazzi
    Вот ещё одна схема которую можно использовать для реальных проектов. Это четырёхразрядный семисегментный дисплей с динамической индикацией информации. Для связи с другими устройствами присутствует интерфейс RS-485. При работе на скорости 9600 бод модуль можно удалять от других на расстояние до 1200 метров.
    Как известно, RS-485 работает в полудуплексе, то есть модуль не может одновременно и принимать и передавать данные. Для переключения направления информации в канале используется вывод микроконтроллера P3.2. Для приёма подаём на него "0", для передачи "1".
    В данной схеме количество индикаторов может быть увеличено до 15 штук путём добавления дешифратора.
    Источник: Начинаем Работать С 51-Ми Контроллерами
  19. mazzi
    Друзья, у меня возникла необходимость разработать плату для изучения микроконтроллера начинающим. Понятное дело, что буду включать туда средства для возможности использования ресурсов МК. Вот только хотелось бы определиться какие свойства платы будут самыми востребованными? Если решитесь ответить в теме, то указывайте важные свойства в порядке убывания важности.
    По завершению проекта, схема и печатная плата будет опубликована, так, что учавствуйте, возможно ваши пожелания окажутся на плате.
  20. mazzi
    Поскольку я занимаюсь изготовлением различных устройств на заказ, то хочу предложить людям воспользовавшимися моими услугами сделать отзывы о моей работе в комментариях к этой записи.
  21. mazzi
    Сегодня завершился детский городской шахматный турнир. Мой сын занял второе место, получил в награду медаль, грамоту, 3-й детский разряд по шахматам и коробку конфет.
    Ну и конечно он очень рад победе! А вместе с ним и вся наша семья.
    Я конечно не смог удержаться и занёс это событие навеки в свой нетленный блог!
    Поздравляю, тебя, сынок с победой! Так держать!
  22. mazzi
    Из-за поломки сервера потерялась запись в моём блоге аналогичная этой. Восстанавливаю по памяти.
    Я часто делаю различные работы в единичном экземпляре. Иногда схема рисуется только карандашом на бумаге, затем собирается на колене. Потом пишется программа, отладка и на этом всё. Затем появляется новый проект и так далее.
    Хочу найти людей которым было бы интересно поучаствовать в проектах доводя всё до логического завершения, как положено. В качестве инструмента желательно  использовать PCAD2006. Если есть желание, но нет умения, помогу освоить этот инструмент.
    Приветствуется наличие ровных рук, светлой головы и большого желания.
×
×
  • Создать...