Разработка цифрового устройства

Функциональная схема разрабатываемого контроллера автоматизированной платформы. Изучение построения принципиальной схемы устройства. Выбор управляющего контроллера и элементов принципиальной схемы. Изучение алгоритма функционирования данной программы.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид курсовая работа
Язык русский
Дата добавления 26.12.2012
Размер файла 326,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Оглавление

Техническое задание

Введение

1. Разработка функциональной схемы

2. Разработка принципиальной схемы

2.1 Выбор управляющего микроконтроллера

2.2 Выбор данных и элементов

2.3 Описание принципиальной схемы

3. Разработка программы управления

3.1. Работа с I2C

3.2 Интерфейс 1-Wire

Заключение

Литература

Техническое задание

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

Управление контроллером ведётся через трехклавишную клавиатуру:

1. Power - включение/выключение робота.

2. Движение правого колеса.

3. Движение левого колеса.

С помощью ЖКИ отображается состояние и позиция робота.

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

Для контроля состояния батареи и своевременной зарядки предусматривается датчик напряжения.

В качестве элементов управления имеются два двигателя:

1. Двигатель правого колеса.

2. Двигатель левого колеса.

После подключения к базе робот производит зарядку своего аккумулятора до момента пока не сработает датчик зарядки. В момент поступления команд от управляющего компьютера или нажатия на кнопку запуска робот начинает двигаться по белой по линии по заданному алгоритму.

Наталкиваясь на препятствия, робот должен попробовать выполнить объезд препятствия траекторию, чтобы выйти на свободное место, при этом препятствие отмечается на собственном плане. Так продолжает двигаться пока не пройдет весь путь.

Введение

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

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

Задание автономная платформа поставленное в рамках данной работы, рассматривает интересные аспекты схемотехники и робототехники, а также предполагает интересное решение проблем управления движением и обхода препятствий.

1. Функциональная схема

Функциональная схема разрабатываемого контроллера автоматизированной платформы представлена на рис.1.

Рис.1 - Функциональная схема контроллера:

Устройство состоит из следующих функциональных блоков:

ДП(1-4) - датчики препятствия, срабатывающие при столкновении платформы с препятствием.

ДБЛ - световой детектор белой линии для контроля движения.

ИП - инфракрасный порт для обмена информацией с ЭВМ.

БК - блок клавиатуры для ручного управления платформой.

ЖКИ - индикатор для отображения состояния системы.

БУД 1-3 блоки управления двигателями 1-3.

ФПЗУ - флешь ПЗУ для хранения маршрута.

Микропроцессор робота выполняет прием через ИП инфракрасный приемник параметров маршрута (направлений поворота на прохождение перекрестков. Далее он по команде компьютера или нажатию кнопки пользователем начинает движение, придерживаясь линии нарисованной на полу. В контрольных точках через установленные инфракрасные приемопередатчики он оповещает о своем состоянии и получает дополнительные команды. При столкновении с препятствием включается процедура обхода и поиска линии. При достижении конечной точки и доставке детали он переходит в режим ожидания новых команд. Во время выполнения работы контроллер получает от датчиков столкновения информацию о препятствиях и после анализа информации от датчиков процессор подаёт команды для предотвращение столкновения на драйверы движения. Клавишами микропроцессору мы задаем режим пауза или движение и скорость.

2. Разработка принципиальной схемы устройства

2.1 Выбор управляющего контроллера

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

Для выбора контроллера я решил провести анализ след серий микроконтроллеров широко представленных на рынке и используемых в аналогичных устройствах: AVR, PIC, MK-51.

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

AVR (ATmega8)

PIC (16F628)

MK-51 (AT89C52)

ПЗУ (память программ)

8 Кб

2 Кб

8 Кб

Таймеры/счетчики

2(8 разрядов)

1(16 разрядов)

1(8 разрядов)

3(16 разрядов)

Число портов ввода/вывода

23

13

32

Питание

4,5-5,5

3,0-5,5

4,0-5,5

Архитектура

RISC

RISC

CISC

Тактовая частота

16МГц

10МГц

24МГц

Память данных

128 байт

68 байт

256 байт

Стоимость

400 руб.

75 руб.

60 руб.

AVR-микроконтроллер фирмы Атмел - это 8-разрядные RISC микроконтроллер для встраиваемых приложений. Они привлекают внимание наилучшим соотношением показателей быстродействие/энергопотребление, удобными режимами программирования, доступностью программно-аппаратных средств поддержки и широкой номенклатурой выпускаемых кристаллов. Микроконтроллеры обычно поставляются со стертыми встроенными FLASH и EEPROM блоками памяти (содержимое всех ячеек = $FF), готовыми к программированию.

Улучшенная RISC (enhanced RISC) архитектура AVR-микроконтроллеров объединяет в себе комплекс решений, направленных на повышение быстродействия микропроцессорного ядра AVR. Арифметико-логическое устройство (ALU), в котором выполняются все вычислительные операции, имеет доступ к 32-м оперативным регистрам, объединенным в регистровый файл. Выборка содержимого регистров, выполнение операции и запись результата обратно в регистровый файл выполняются за один машинный цикл. Для сравнения полезно вспомнить, что большинство встраиваемых микроконтроллеров имеют только один такой регистр, непосредственно доступный ALU, - аккумулятор, что требует включения в программу дополнительных команд его загрузки и считывания.

Альтернативой может быть контроллер другой серии, например PIC 16С745. PIC16C745 - это 8-pазpядные микроконтроллеры с RISC архитектурой, производимые фирмой Microchip Technology. Это семейство микроконтроллеров отличается низким энергопотреблением и высокой скоростью. Микроконтроллеры имеют встроенное ЭППЗУ программы, ОЗУ данных и выпускаются в 18 и 28 выводных корпусах.

Высокая скорость выполнения команд в PIC достигается за счет использования двухшинной Гарвардской архитектуры вместо традиционной одношинной Фон-неймановской. Гарвардская архитектура основывается на наборе регистров с разделенными шинами и адресным пространством для команд и для данных. Набор регистров означает, что все программные объекты, такие как порты ввода/вывода, ячейки памяти и таймер, представляют собой физически реализоваенные аппаратные регистры.

Память данных (ОЗУ) для PIC16CXX имеет разрядность 8 бит, память программ (ППЗУ) имеет разрядность 12 бит для PIC16C5X и 14 бит для PIC16CXX. Использование Гарвардской архитектуры позволяет достичь высокой скорости выполнения битовых, байтовых и регистровых операций. Коме того, Гарвадская архитектура допускает конвейерное выполнение инструкций, когда одновременно выполняется текущая инструкция и считывается следующая. В традиционной же Фон-неймановской архитектуре команды и данные передаются через одну разделяемую или мультиплексируемую шину, тем самым ограничивая возможности конвейеризации.

Третий известный и доступный мне вариант это серия 51 контроллеров. Помимо того что эта серия имеет большое количество разновидностей и МК семейства МК-51 используют гарвардскую архитектуру: память программ (ПЗУ) и память данных (ОЗУ) имеют раздельное адресное пространство. И, как следствие, для обращения к ячейкам памяти разного типа должны быть использованы разные типы команд, но в определенных условиях эта технология является плюсом.

Другое достоинство использование CISK архитектуры, что позволяет упростить программу за счет поддержки команд умножения и деления. Максимальный размер адресного пространства для каждого типа памяти составляет 64 Кбайт.

Однако непосредственно на кристалле МК 8051 АН располагаются только 4 Кбайт ПЗУ и 128 или 256 байт регистрового ОЗУ. МК семейства MCS-51 имеют открытую архитектуру, т.е. позволяют подключать внешнюю память, что реализовано аппаратно. МК-51 имеет четыре 8-разрядных параллельных порта ввода/вывода и два 16-разрядных программируемых таймера. Рассматривая все вышеперечисленные микроконтроллеры и учитывая все необходимые параметры для разрабатываемого устройства, я остановил свой выбор на серии МК-51. Мой выбор основывается в первых, на наиболее доступной цене при достаточности портов, памяти и функций, во вторых архитектура данного контролера мной изучена в курсе лабораторных работ и поэтому более доступна для разработки курсовой работы. А также важно, что у меня имеются средства программирования (язык PLM) и средво моделирования элементов программы - лабораторный стенд на ADUC812.

Окончательно мной выбран AT89C52 имеющий четыре восьми разрядных порта, три таймера встроенный последовательный канал, но при этом имеющий небольшую цену 70р.

Возможность аппаратной поддержки подключения ОЗУ позволяет использовать его для хранения карты помещения, отмечая пройденный маршрут в массиве расположенном в памяти.

Использование встроенного канала последовательной передачи данных позволяет подключить инфракрасный приемник и легко обеспечит связь робота и компьютера.

2.2 Выбор элементов принципиальной схемы

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

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

В случае движения по линии транзистор находиться в открытом состоянии и обеспечивает передачу на порт контроллера 0, как только отраженный сигнал ослабевает, в момент схода платформы с направляющей линии транзистор закрывается и на входе контроллера появляется 1. Такое простое решение позволяет обеспечить считывание линии даже на немного загрязненных полах.

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

Для определения того в каком состоянии находиться аккумулятор было решено создать детектор уровня заряда контролирующий достижение максимального уровня заряда и минимального уровня заряда. Данный датчик было решено реализовать на DD1 К561ЛА7 КМОП логическом элементе И-НЕ реализована схема сравнивающих компараторов, которая позволяет порогово контролировать зарядку аккумулятора. Цепочка R1, R2 рассчитана на напряжение 10В сигнализирующее о почти полном разряде аккумулятора, Цепочка R3,R4 используется для контроля заряжен аккумулятор полностью до 14В или нет.

Для отслеживания белой линии требуется контролировать уровень отраженного света и в данном случае достаточно порогового значения. В качестве аппаратной реализации достаточно использовать простейшую транзисторную оптопару, которая обеспечивает определение отраженного оптического сигнала излучаемого светодиодом.

Для хранения программы движения (куда на каком перекрестке ехать) используется DD3 24C1024 в которой храниться информация о платформы и все необходимые сведения по траектории движения.

AT24C1024 предоставляет 1 048 576 информации, организованный как 131 072 слова 8 битов каждый. Имеет двунаправленный Протокол Передачи Данных с частотой тактирования сигнала SCL -1 МГц.

Напряжение питания VCC= 2.7V to 5.5V Время записи цикла 5 ms.

Требуемый ток 5.0 mA. Фирма изготовитель гарантирует: 100 000 циклов перезаписи памяти и срок службы 40 лет.

Для управления двигателями решено использовать простейшие ключи на полевых транзисторах, так как для управления ими требуются малые токи 5-15мА, что позволяет их напрямую подключать к портам контроллера и при этом на них падает меньшее напряжение значит, они меньше нагреваются и меньше впустую теряется мощность аккумуляторов. В качестве таких транзисторов выбраны IRF840 имеющие встроенный защитный диод и ток коммутации до 25А, что более чем достаточно в нашем случае. Также было рассмотрено использование готовых модулей управления двигателями, к примеру, микросхема L293D преобразует управляющие сигналы малой мощности в токи, достаточные для управления моторами. Такое устройство называют драйвером двигателей.

L293D содержит сразу два драйвера для управления электродвигателями небольшой мощности (четыре независимых канала, объединенных в две пары). Имеет две пары входов для управляющих сигналов и две пары выходов для подключения электромоторов. Кроме того, у L293D есть два входа для включения каждого из драйверов. Эти входы используются для управления скоростью вращения электромоторов с помощью широтно модулированного сигнала (ШИМ).Характеристики микросхемы L293D.

· напряжение питания двигателей (Vs) - 4,5...36V

· напряжение питания микросхемы (Vss) - 5V

· допустимый ток нагрузки - 600mA (на каждый канал)

· пиковый (максимальный) ток на выходе - 1,2A (на каждый канал)

· логический "0" входного напряжения - до 1,5V

· логическая "1" входного напряжения - 2,3...7V

· скорость переключений до 5 kHz

· защита от перегрева

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

Для обмена с компьютером было решено использовать инфракрасный канал связи приемопередатчики, подключенные к компьютеру могут располагаться в узловых точках маршрута. При этом можно рассматривать такую возможность как удобное средство обмена информацией с платформой для загрузки маршрута и проверки ее позиции. Использование радиоканала при высоком уровне радиопомех в промышленном цеху не позволяет обеспечить надежного контакта компьютера с платформой. Для обеспечения реализации данного узла было решено использовать готовый модуль с усилителями, компараторами и инфракрасными излучателями и приемником, в качестве которого был выбран MAX 3120 для альтернативы были рассмотрены также модули HSDL 3600 и TFDS6500E, но эти модули, имеющие более высокие параметры по дальности имеют более высокую цену (в два и три раза больше) поэтому был выбран модуль MAX3120 который полностью удовлетворяет нашим требованиям. Альтернативой может служить разделенный примепередатчик с использованием интегрального приемника на микросхемах серии TSOP.

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

3. Разработка программы

3.1 Алгоритм функционирования программы

Основная цель обеспечить выполнение шагов программы записанных в ПЗУ. Дополнительной целью является обмениваться информацией с главным-управляющим компьютером, который передает команды или программу движения робота, которая записывается также во флеш ПЗУ. Важно выделить структуру записываемого блока данных и каждое поле. Длину пройденного пути и направление поворота.

Если робот теряет линию он корректирует движение ускоряя или замедляя правое или левое колесо.

Если обнаруживает препятствие должен развернутся и сделать поворот выполнить отыскание белой линии и по ней вернуться до конкретного предшествующей развилки.

Также он должен сообщить на базу об обнаружении препятствия на пути.

На перекрестках расположены И.К передатчики, которые передают код позиции робота и его состояние (примерно пройденное расстояние шаг и время), зная его главный ПК, отправляет его нужном пути. При включении робота зарядку контролирует кредл. Он определяет, что прошла зарядка и сообщает роботу, что можно двигаться. Если кредл обнаруживает что аккумулятор разряжен он отправляет робота на базу.

Информации о текущем состоянии робота (пройденное расстояние, шаг и время, скорость) выводится на LCD. Пример надписи на ЖКИ:

1

3

:

0

0

П

р

а

с

-

0

0

1

0

м

Ш

А

г

1

С

к

о

р

о

С

т

ь

-

3.2 Работа с I2C

Специальные ситуации на шине отмечают сигналы START и STOP. Переход линии SDA из ВЫСОКОГО состояния в НИЗКОЕ, в то время как SCL находится в ВЫСОКОМ состоянии означает START.

Переход линии SDA из НИЗКОГО состояния в ВЫСОКОЕ при SCL в ВЫСОКОМ состоянии означает STOP.

Определение сигналов СТАРТ и СТОП устройствами, подключенными к шине достаточно легко, если в них встроены необходимые цепи. Однако микроконтроллеры без таковых цепей должны осуществлять считывание значения линии SDA как минимум дважды за период синхронизации для того, чтобы определить переход состояния.

Рисунок 3:

Каждый байт, передаваемый по линии SDA, должен состоять из 8 бит. Количество байт, передаваемых за один сеанс связи неограниченно. Каждый байт должен оканчиваться битом подтверждения.

Данные передаются, начиная с наиболее значащего бита.

Если приёмник не может принять еще один целый байт, пока он не выполнит какую-либо другую функцию (например, обслужит внутреннее прерывание), он может удерживать линию SCL в НИЗКОМ состоянии, переводя передатчик в состояние ожидания.

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

Рисунок 4 - Пересылка данных по шине I2C:

1. Сигнал СТАРТ

2. Старший разряд байта

3. Сигнал подтверждения от приёмника

4. Прием байта завершен. Прерывание внутри приемника

5. Синхролиния удерживается в низком состоянии, пока обслуживается прерывание

6. Сигнал подтверждения от приемника

7. Сигнал СТОП

Передатчик отпускает линию SDA в течение синхроимпульса подтверждения. Приёмник должен удерживать линию SDA в течение ВЫСОКОГО состояния синхроимпульса подтверждения в стабильно НИЗКОМ состоянии (рис. 5). Обычно, приёмник, который был адресован, обязан генерировать подтверждение после каждого принятого байта, исключая те случаи, когда посылка начинается с адреса CBUS.

В том случае, когда ведомый-приёмник не может подтвердить свой адрес, линия данных должна быть оставлена в ВЫСОКОМ состоянии. После этого ведущий может выдать сигнал СТОП для прерывания пересылки данных. Для этого ведомый не подтверждает следующий байт, оставляет линию данных в ВЫСОКОМ состоянии и ведущий генерирует сигнал СТОП.

Если в пересылке участвует ведущий-приёмник, то он должен сообщить об окончании передачи ведомому-передатчику путем не подтверждения последнего байта. Ведомый-передатчик должен освободить линию данных для того, чтобы позволить ведущему выдать сигнал СТОП или повторить сигнал СТАРТ.

Рисунок 5 - Подтверждение:

1. Данные, переданные передатчиком

2. Данные, переданные приёмником

3. SCL от ведущего

4. Сигнал СТАРТ

5. Синхроимпульс подтверждения

На уровне байта, если устройство может принимать байты данных с большой скоростью, но требует определенное время для сохранения принятого байта или подготовки к приему следующего, то оно может удерживать линию SCL в НИЗКОМ состоянии после приема и подтверждения байта, переводя, таким образом, передатчик в состояние ожидания.

На уровне битов, устройство, такое как микроконтроллер, без встроенных аппаратных цепей I2C или с ограниченными цепями может замедлить частоту синхроимпульсов путем продления их НИЗКОГО периода. Таким образом, скорость передачи любого ведущего адаптируется к скорости медленного устройства.

1. Сигнал СТАРТ

2. Адрес

3. Бит направления (R/W^)

4. Подтверждение

5. Данные

6. Сигнал СТОП

Рисунок 6 - Посылка данных:

автоматизированный платформа программа

Посылки данных происходят в формате, показанном на рис. 6. После сигнала СТАРТ посылается адрес ведомого. После 7 бит адреса следует бит направления данных (R/W^), “ноль” означает передачу (запись), а “единица” - прием (чтение). Пересылка данных всегда заканчивается сигналом СТОП, генерируемым ведущим. Однако если ведущий желает оставаться на шине дальше, он должен выдать повторный сигнал СТАРТ и затем адрес следующего устройства. При таком формате посылки возможны различные комбинации чтения/записи.

Возможные форматы:

Ведущий-передатчик передает ведомому-приёмнику. Направление пересылки данных не изменяется.

Ведущий читает ведомого немедленно после пересылки первого байта. В момент первого подтверждения ведущий-передатчик становится ведущим-приемником, и ведомый-приёмник становится ведомым-передатчиком.

Подтверждение, тем не менее, генерируется ведомым. Сигнал СТОП генерируется ведущим.

Комбинированный формат. При изменении направления пересылки данных повторяется сигнал СТАРТ и адрес ведомого, но бит направления данных инвертируется. Если ведущий-приёмник посылает повторный сигнал СТАРТ, он обязан предварительно послать сигнал неподтверждения.

Рисунок 7 - Ведущий-передатчик адресует ведомого-приемника 7-битным адресом. Направление пересылки не изменяется:

1. От ведущего к ведомому

2. От ведомого к ведущему

3. Адрес ведомого

4. Бит направления

5. Данные

6. Пересылаемые данные (n байт + подтверждение)

7. А - Подтверждение

Приложение

Рисунок - Схема устройства:

Приложение

Листинг программы:

#include<reg52.h>

#include<stdlib.h>

sbit right= P2^3;

sbit left = P2^4;

sbit back = P2^2;

sbit low = P2^1;

sbit normal = P2^0;

sbit line1 = P2^3;

sbit line2 =P2^4;

sbit scl = P3^6;

sbit sda = P3^7;

sbit e = P0^0;

sbit rs = P0^1;

sbit d1 =P0^2;

sbit d2 = P0^3;

sbit d3 = P0^4;

sbit k1 = P0^5;

sbit k2 = P0^6;

sbit k3 = P0^7;

unsigned char pp,s,sec,min,hour; //shethiki vremenii

unsigned char i,j,k,np,pp; // izmeren napr i zaradnii napr

unsigned char a[]=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);

unsigned char adresh,adresl;

unsigned char const gkiini[]={8,0x3C,0x76,0x6,0x1};

unsigned char gki1[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

unsigned char gki2[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

unsigned char const;

int shim1,shim2,fin, sot, stepin,stepout, nl, nr, fprepastv;

bit rwi2c;//flag read write for I2C

bit fbase,fstart,fp,fi2c;

void delay (char count)

{for(int i=0;i<count;i++);}//timeout 5mks* count

void send (void)interrupt 4 using 2;//obmen for base

{ if (RI)

{ if!(fin>0)

{if (SBUF==0x55){ fbase=1;SBUF=np;stepout=1;}

else if (SBUF==0xff){ fstart=1;SBUF=np;stepout=1;}

else if (SBUF==0x00){ fstart=0;SBUF=np;stepout=1;}

else if (SBUF==0x77){ fin=1;SBUF=np;}

else if (++fin>1){a[fin]=SBUF;if (fin==34)fin=0; fi2c=1;}// read paket fl save blok i2c

if (TI)

{ if (++stapout==2){SBUF=nl;}

else if (++stapout==3){SBUF=nl>>8;}

else if (++stapout==4){SBUF=nr;}

else if (++stapout==5){SBUF=nr>>8;}

else if (++stapout==6){SBUF=fprepastv;}

else if (++stapout==7){SBUF=fprepastv>>8;}

else stapout=0;

void I2C(unsigned char adrh,adrl)

sda=1; scl=1; sda=0; sda=0; scl=0;scl=0;//start obmena

pp=0xa0; //indeks flach pzu

if (rwi2c) pp=pp+1;//set reginm read

for(i=0;i<8;i++)

{ scl=0;pp=pp>>1; sda=CY;scl=1;scl=1;scl=1;}

sda=1;

while(sda) // read ACK

{ scl=0;scl=0;scl=0;scl=1;scl=1;scl=1;} pp=adrh;

for(i=0;i<8;i++)

{ scl=0;pp=pp>>1; sda=CY;scl=1;scl=1;scl=1;}

sda=1;

while(sda) // read ACK

{ scl=0;scl=0;scl=0;scl=1;scl=1;scl=1;}

pp=adrl;adresl=adresl+8; if (CY) adresh++;//avtoinkrement adresa

for(i=0;i<8;i++)

{ scl=0;pp=pp>>1; sda=CY;scl=1;scl=1;scl=1;}

sda=1;

while(sda) // read ACK

{ scl=0;scl=0;scl=0;scl=1;scl=1;scl=1;}

if (rwi2c)

for(j=0;j<32;j++) //regim read

{ pp=0; for(i=0;i<8;i++)

{ scl=0;scl=0;scl=0;scl=1;CY=sda;pp=pp>>1;scl=1;}

while(sda) // write ACK

{ scl=0;sda=0;scl=0;scl=1;scl=1;scl=1;scl=0;}

else { for(j=0;j<32;j++)

{ pp=dat[j];

for(i=0;i<8;i++)

{ scl=0;pp=pp>>1; sda=CY;scl=1;scl=1;scl=1;}

sda=1;

while(sda) // read ACK

{ scl=0;scl=0;scl=0;scl=1;scl=1;scl=1;}

void int0l (void) interrupt 1 using 2 /*Function interrupt timer0*/

{if (fp) {nl++;} else (nl-)}

void int1r (void) interrupt 1 using 2 /*Function interrupt timer0*/

{{if (fp) {nl++;} else (nl-)}}

void timer0 (void) interrupt 1 using 2 /*Function interrupt timer0*/

TH0=0xf8;TL0=0x2f; /*set timer0=63535 , 1000 perepolnenii*/

if (++sot==1000)

{sot=0;gki1[6]=sek/10+0x30;gk1[7]=sek%10+0x30;

if (++sek==60)

{sek=0;gki1[3]=min/10+0x30;gki1[4]=min%10+0x30;gki1[5]=0x3a;

if (++min==60)

{ min=0;

if(++chas==24){chas=0;gki1[0]=chas/10+0x30;gki[1]=chas%10+0x30;gki[2]=0x3a;}

// dvijenie po beloi linii

if (sot<shim1) {d1=1 ;}

else d1=0;

if (sot<shim2) d2=1;

else {d2=0;}

if (Line1) {shim1++;shim2-;} //kontrol in datch line

if (Line2) {shim1-;shim2++;}//

if (!line1)&&(!line2) ( shim1=shim2=sot;)//выровнять скорость двигателей

if (sot<5) { e=0;rs=0;P1=gkiini[sot];e=1; } //out LCD ini

else if (sot<5) { e=0;rs=0;P1=gkii1[sot-5];e=1; } //out LCD ini

else if (sot<45) { e=0;rs=1;P1=0x20;e=1; } //perehod na vtoruy stroku

else if (sot<61) { e=0;rs=1;P1=gki2[sot-45];e=1; }

else if(sot==999){ e=0;rs=0;P1=1;e=1; } //cls LCD

//skan key

if(!k1) fstart=~fstart;

if(!k2){d1=1;} //ruchnoe upravlenie

if(!k3){d2=1;}

void ini (void)

{sekl=0; /*time 1s*/

min=0;

chas=0;

SCON=0x50h; // regim 8 bit dannix s sinchro po T1

TH1=0xFD;//for 11.0592 -- 9600bit/sek

TMOD=0x21; /*1 regim*/

ET0=1; /*enable interrupt timer0*/

PT0=0; /*priority = 0*/

EA=1; /*enable interrupt*/

TR0=1; /*start timet0*/

TR1=1;

EX1=1;

EX2=1;

P1=0xFF;//for read key

void main (void)

ini()

// blok INI

while (1)/// base cikl rabot

if (fi2c) {rwi2c=0;i2c(a[0],a[1]);}

if (fstart){

if !(right)//razvorot latformi vlevo

{d1=1;d2=0;delay(255);

while (line1) {d1=1;d2=0;}//povorot na 190

while (line2) {d1=1;d2=1;}fprepastv=nr;}//prodvigen na line

else if !(left)//razvorot latformi pravo

{d1=0;d2=1;delay(255);

while (line2) {d1=0;d2=1;}//povorot na 190

while (line1) {d1=1;d2=1;}fp=0;fprepastv=nl;}//prodvigen na line while(!(line1)&&(!line2));//dvig

if(fp){rwi2c=1; i2c(adresh,adresl);

if a[0]==0x0f;

{{d1=1;d2=0;delay(255);nl=0;nr=0;

while (line1) {d1=1;d2=0;}//povorot na 90

while (line2) {d1=1;d2=1;}fprepastv=nr;}//prodvigen na line }

}else

if (a[0]==0xf0)

{d1=0;d2=1;delay(255);

while (line2) {d1=0;d2=1;nl=0;nr=0;}//povorot na 90

while (line1) {d1=1;d2=1;}fp=0;fprepastv=nl;}//prodvigen na line

gki2[0]='l';gki2[1]=nl/10000+0x30;

gki2[2]=nl%10000/1000+0x30;

gki2[3]=nl%10000%1000/100+0x30;

gki2[4]=nl%10000%1000%100/10+0x30;

gki2[5]=nl%10000%1000%100%10+0x30;

gki2[7]='r';

gki2[8]=nr/10000+0x30;

gki2[9]=nr%10000/1000+0x30;

gki2[10]=nr%10000%1000/100+0x30;

gki2[11]=nr%10000%1000%100/10+0x30;

gki2[12]=nr%10000%1000%100%10+0x30;

Размещено на Allbest.ru

...

Подобные документы

  • Описание функциональной схемы цифрового устройства для реализации микроопераций. Выбор элементной базы для построения принципиальной электрической схемы цифрового устройства. Разработка и описание алгоритма умножения, сложения, логической операции.

    курсовая работа [684,0 K], добавлен 28.05.2013

  • Разработка и обоснование структурной схемы цифрового корректирующего фильтра. Обоснование общего алгоритма его функционирования. Оценка быстродействияустройства. Отладка разработанной программы. Составление принципиальной схемы устройства и ее описание.

    курсовая работа [774,7 K], добавлен 03.12.2010

  • Разработка алгоритма функционирования устройства. Разработка и отладка рабочей программы на языке команд микропроцессора. Составление и описание электрической принципиальной схемы. Расчет АЧХ устройства для заданных и реальных значений коэффициентов.

    курсовая работа [313,9 K], добавлен 28.11.2010

  • Разработка контроллера управления цифровой частью системы, перечень выполняемых команд. Описание алгоритма работы устройства, его структурная организация. Синтез принципиальной электрической схемы, особенности аппаратных затрат и потребляемой мощности.

    курсовая работа [318,8 K], добавлен 14.06.2011

  • Разработка принципиальной схемы и описание работы контроллера клавиатуры/дисплея КР580ВД79. Схема сопряжения микроконтроллера с фотоимпульсным датчиком. Расчет потребляемого тока от источника питания. Блок-схема программы вывода информации на индикацию.

    курсовая работа [736,9 K], добавлен 18.02.2011

  • Разработка и описание алгоритма функционирования устройства, отладка рабочей программы на языке команд микропроцессора. Обоснование аппаратной части устройства. Составление электрической принципиальной схемы устройства, расчет быстродействия устройства.

    курсовая работа [50,2 K], добавлен 03.12.2010

  • Описание узлов 16 разрядного счетчика и изучение принципов работы его элементов. Обзор общих сведений о триггерах. Разработка принципиальной схемы проектируемого устройства с использованием моделей компьютерной программы Electron ics Workbench 5.12.

    контрольная работа [1,1 M], добавлен 25.05.2014

  • Разработка общего алгоритма и функционирования цифрового фильтра. Составление и описание электрической принципиальной схемы устройства, расчет его быстродействия. Листинг программного модуля вычисления выходного отсчета. Оценка устойчивости устройства.

    курсовая работа [236,2 K], добавлен 03.12.2010

  • Электрическая принципиальная схема устройства автоматической тренировки аккумулятора. Выбор элементной базы. Разработка схемы электрической принципиальной. Размещение компонентов на печатной плате. Разработка алгоритма программы микроконтроллера.

    дипломная работа [670,2 K], добавлен 20.10.2013

  • В работе на базе PIC-контроллера реализуется цифровой секундомер. Выбор технических требований к устройству, к питанию. Разработка структурной схемы, принципиальной электрической схемы, алгоритма работы управляющей программы, управляющей программы.

    курсовая работа [427,1 K], добавлен 20.06.2008

  • Выбор формата данных. Разработка алгоритма и графа макрооперации. Разработка функциональной электрической схемы и её особенности. Выбор элементной базы. Разработка принципиальной схемы. Микропроцессорная реализация устройства на языке Ассемблер.

    курсовая работа [955,0 K], добавлен 04.05.2014

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

    курсовая работа [1,8 M], добавлен 16.08.2012

  • Разработка общего алгоритма функционирования цифрового фильтра нижних частот. Разработка и отладка программы на языке команд микропроцессора, составление и описание электрической принципиальной схемы устройства. Быстродействие и устойчивость фильтра.

    курсовая работа [860,6 K], добавлен 28.11.2010

  • Разработка общего алгоритма функционирования цифрового фазового звена. Расчет аппаратной части устройства и написание программы на языке микропроцессора. Составление принципиальной схемы блока. Порядок расчета амплитудно-частотной характеристики фильтра.

    курсовая работа [197,8 K], добавлен 03.12.2010

  • Понятие и классификация, типы широкополосных приемных устройств, их структура и функциональные особенности. Разработка и описание, элементы структурной, функциональной и принципиальной схемы устройства, особенности его конструктивного исполнения.

    дипломная работа [2,8 M], добавлен 11.02.2013

  • Проектирование универсального цифрового контроллера, его функции, возможности и недостатки. Разработка структурной схемы устройства. Расчет элементов печатных плат. Компоновочный расчет устройства. Стоимостная оценка затрат, эргономичность устройства.

    дипломная работа [1,5 M], добавлен 29.06.2010

  • Разработка блок-схемы и программы работы микропроцессорного устройства для контроля и индикации параметров, изменяющихся по случайному закону 8-разрядного двоичного кода. Разработка принципиальной схемы функционирования устройства в среде САПР P-CAD.

    курсовая работа [709,6 K], добавлен 24.05.2015

  • Разработка структурной схемы устройства. Изучение принципиальной электрической схемы устройства с описанием назначения каждого элемента. Характеристика программного обеспечения: секции деклараций, инициализации микропроцессора и основного цикла.

    курсовая работа [260,3 K], добавлен 14.11.2017

  • Сравнительный анализ существующих решений и разработка функциональной схемы устройства. Выбор и обоснование технологических элементов, а также их статический расчет. Анализ принципиальной схемы проектируемого цифрового измерителя, функции компонентов.

    курсовая работа [966,6 K], добавлен 16.09.2017

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

    курсовая работа [1,2 M], добавлен 14.07.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.