Контроллер управления роботизированной платформой на радио канале

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 28.12.2012
Размер файла 540,6 K

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

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

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

Оглавление

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

Введение

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

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

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

2.2 Выбор электронных элементов

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

3.1 Описание общего алгоритма функционирования

3.2 Описание алгоритма и основных модулей программы

Заключение

Литература

Приложения

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

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

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

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

контроллер управление роботизированная платформа

Введение

Развитие микроэлектроники и широкое применение ее изделий в промышленном производстве, в устройствах и системах управления самыми разнообразными объектами и процессами является в настоящее время одним из основных направлений научно-технического прогресса.

Использование микроэлектронных средств в изделиях промышленного и культурно-бытового назначения приводит не только к повышению технико-экономических показателей изделия и многократно сроки разработки и отодвинуть сроки «морального старения» изделий, но придает им принципиально новые потребительские качества.

За последние годы микроэлектроники бурное развитие получило направление, связанное с выпуском однокристальных микроконтроллеров (ОМК), которые предназначены для «интеллектуализации» оборудования различного назначения. ОМК представляет собой приборы, конструктивно выполненные в виде БИС, и включающие в себя все составные части «голой» микроЭВМ: микропроцессор, память программы, память данных, также программированные интерфейсные схемы для связи с внешней средой. Использование микроконтроллеров в системах управления обеспечивает достижение исключительно высоких показателей эффективности при столь низкой стоимости, что микроконтроллерам , видимо нет разумной альтернативной базы для построения управляющих и регулирующих систем. К настоящему времени более двух третей мирового рынка микропроцессорных средств составляют именно ОМК.

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

Системы управления роботизированной платформы

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

Рис.1.1 Функциональная схема управляющего контроллера.

Блоки датчиков:

ДЛ1 - левый датчик линии. Предназначен для определения нахождения платформы на линии.

ДЛ2 - правый датчик линии. Предназначен для определения нахождения платформы на линии.

ДП1 - датчик препятствия 1. Предназначен для определения препятствия.

ДП2 - датчик препятствия 2. Предназначен для определения препятствия.

Блок клавиатуры - клавиатура предназначена для управления устройством. Нажатая клавиша обрабатывается микроконтроллером , который выполняет необходимые действия. Клавиатура состоит из 4 кнопок: «START/PAUSE», «SET», «+», «-». Кнопка «START/ PAUSE» приводит роботизированную платформу в движение, либо останавливает ее . Кнопка «Set» позволяет изменить траекторию движения платформы. Кнопка «+» и «-» позволяет изменить траекторию движения платформы.

ЖКИ - дисплей - для отображения текстовой и цифровой информации на плату контроллера устанавливается активный ЖКИ - дисплей, имеющий две строки.

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

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

БРС - блок радио связи. Предназначен для ручного управления роботизированной платформой

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

Принципиальная схема состоит из следующих компонентов.

Входные датчики, обеспечивают позиционное обнаружение препятствий. Для позиционирования робота, используется специальная разметка - белая линия, указывающая траекторию движения. Отслеживание линии производится двумя датчиками, в которых светоизлучающие диоды VD1 и VD3 с различной интенсивностью отражаются на обычном полу и белой линии. Белая линия по своим свойствам сильнее отражает свет. Отраженный свет, попадая на фотодиод, открывает его до определенного уровня. Уровень срабатывания настраивается резистивными элементами на входе элемента И-НЕ и устанавливаются для самой бледной линии (для самой загрязненной).Логические элементы работают по схеме компараторов в определенном уровне сигнала, который поступает со светодиода. Второй элемент И-НЕ служит буфером и конвертором, который обеспечивает преобразование логики. Т.о. в первом датчике используются два элемента микросхемы DD1 (К561ЛА7).

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

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

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

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

- наличие достаточного количества портов ввода-вывода. К микроконтроллеру необходимо подключить клавиатуру, семисегментный дисплей, схемы управления нагревателями и термодатчики.

- наличие программного пакета для написания и отладки программы микроконтроллера .

- достаточная изученность микроконтроллера.

Для реализации МПС были выбраны 3 контроллера: МК AT89C52, AVR Atmega8 и PIC16F628. Для выполнения выбора подробнее рассмотрим каждый из контроллеров.

МК ATmega8 имеет следующие отличительные особенности:

- 8ми-разрядный высокопроизводительный AVR микроконтроллер с малым потреблением RISC архитектура, Размещено на http://www.allbest.ru/

130 высокопроизводительных команд, большинство команд выполняется за один тактовый цикл - 32 8ми-разрядных рабочих регистра общего назначения.

Полностью статическая работа Приближающаяся к 16 MIPS (при тактовой частоте 16 МГц) производительность - Энергонезависимая память программ и данных - 8 Кбайт внутрисистемно программируемой Flash памяти (In-System Self-Programmable Flash) - Обеспечен режим одновременного чтения/записи 512 байт EEPROM - 1 Кбайт встроенной SRAM

Встроенная периферия Два 8-разрядных таймера/счетчика с отдельным предварительным делителем, один с режимом сравнения Один 16-разрядный таймер/счетчик с отдельным предварительным делителем и режимами захвата и сравнения Счетчик реального времени с отдельным генератором 6-канальный аналого-цифровой преобразователь (в корпусе PDIP) 4 канала с 10-разрядной точностью 2 канала с 8-разрядной точностью Байт-ориентированный 2-проводный последовательный интерфейс Программируемый последовательный USART Последовательный интерфейс SPI (ведущий/ведомый) Программируемый сторожевой таймер с отдельным встроенным генератором Встроенный аналоговый компаратор

Специальные микроконтроллерные функции Встроенный калиброванный RC-генератор Внутренние и внешние источники прерываний Выводы I/O и корпуса 23 программируемые линии ввода/вывода 28-выводной корпус PDIP, 32-выводной корпус TQFP и 32-выводной корпус MLF

Рабочие напряжения - 2,7 - 5,5 В (ATmega8L) 4,5 - 5,5 В (ATmega8)

Рабочая частота - 0 - 8 МГц (ATmega8L) 0 - 16 МГц (ATmega8)

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

Далее рассмотрим следующую серию МК PIC16F628 она имеет следующие основные особенности:

- RISC архитектуру и всего 35 простых для изучения инструкции;

- Все инструкции исполняются за один такт (400 нс);

- Скорость работы: тактовая частота до 10 МГц;

- Память программ 2K FLASH;

- Память данных ОЗУ (байт) 68

- 15 аппаратных регистров специального назначения

четыре источника прерывания:

- внешний вход RB0/INT

- переполнение таймера TMR0

- прерывание при изменении сигналов на линии порта B (PORTB<7:4>)

- по завершению записи данных в ЭСППЗУ (EEPROM)

- 8-разрядный таймер/счетчик;

- 8-разрядный программируемый предварительный делитель;

- 1000 циклов записи/стирания FLASH памяти программы.

Периферия:

- 13 линий ввода/вывода с индивидуальным контролем направления;

- Сильноточные схемы (до 25мА) для управления светодиодами.

Особенности микроконтроллера:

- Программирование на плате через последовательный порт (ICSPT)

- Таймер включения питания (PWRT) и таймер запуска генератора (OST)

Сброс по падению напряжения питания

Сторожевой таймер (WDT) с собственным встроенным RC-генератором для повышения надежности работы

Широкий рабочий диапазон напряжений питания - от 2,0В до 6,0В

Низкое потребление энергии:

- < 2 мА при 5,0 В, 4,0 МГц

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

Последним для рассмотрения был выбран МК 51 серии - AT89C52. По предварительной оценке по параметрам полностью подходит для выполнения поставленной задачи.

Отличительные особенности:

- Совместимость с серией MCS-51.

- 8 кБ флэш-памяти с внутрисхемным программированием (ISP) - Состойкость ПЗУ программ: 1000 циклов записи/стирания

- Рабочий диапазон питания от 4.75 до 5.25 В

- Полностью статическое функционирование : 0 …24 МГц

- Внутреннее ОЗУ размером 256 x 8

- 32 программируемые линии ввода-вывода

- Три 16-разрядных таймера-счетчика

- Восемь источников сигналов прерывания

- Программируемый последовательный канал UART

- Пассивний (idle) и стоповый (power down) режимы

- Промышленный (-40°С...85°C), коммерческий (0°C...70°C), диапазоны температур

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

Учитывая все вышесказанное окончательно было решено использовать контроллер 51 серии как наиболее доступный и подходящий по параметрам.

2.2 Выбор электронных элементов

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

Улавливая отраженный свет, мы определяем тип поверхности, находящейся под датчиком. Для изготовления датчика границы мы используем фототранзистор и яркий светодиод. На приведенном рисунке изображена конструкция датчика. Светодиод и фототранзистор направлены в сторону исследуемой поверхности. Расстояние до поверхности зависит от силы свечения светодиода и чувствительности фототранзистора. Обычно оптимальное расстояние равно 1-1,5 см. Использование фототранзистора обусловлено тем, что скорость его срабатывания высока и достаточна даже при очень быстром движении робота. Фоторезисторы имеют невысокую скорость срабатывания, и ее может быть недостаточно при высокой скорости движения робота. Схема датчика очень проста, состоит непосредственно из фототранзистора, светодиода и ограничивающих резисторов. При срабатывании фототранзистора на выходе формируется сигнал низкого уровня, который и подается на один из свободных входов микроконтроллера.

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

3) Шаговый электродвигатель - это электромеханическое устройство, преобразующее сигнал управления в угловое перемещение ротора с фиксацией его в заданном положении. Современные шаговые двигатели являются, по сути, синхронными двигателями без пусковой обмотки на роторе, что объясняется частотным пуском шагового двигателя. Последовательная активация обмоток двигателя вызывает дискретные угловые перемещения (шаги) ротора. Отличительная особенность шаговых двигателей - это возможность осуществлять позиционирование без датчика обратной связи по положению.

Преимущества шаговых двигателей по сравнению с синхронными двигателями, является:

· Экономичная цена шаговых двигателей, в среднем в 1,5-2 раза ниже синхронных аналогов;

· Более высокий момент в удержании и на низких оборотах при одинаковой массе;

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

Недостатки шаговых двигателей:

· Падение момента на больших скоростях;

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

На рис.1 показана последовательность импульсов в точках A,B,C,D. Импульсы должны быть одинаковые, но сдвинутые по фазе на четверть периода. На рис.2 показан один из этих импульсов в увеличенном масштабе, а также форма напряжения на соответствующей обмотке двигателя. Участок 1 кривой должен быть более - менее ровным и напряжение там не должно превышать 1-2В. Участок 2 может быть более сложной формы, при вращении двигателя на нем появляются дополнительные выбросы и провалы, но для всех четырех обмоток форма кривой должна быть примерно одинаковой.

4) Использование ЖКИ индикатора необходимо для отображения режима работы платформы, а также информацию о пройденном пути. Данный ЖКИ включен по 8-ми проводной схеме. RS используется для передачи команды сброса и установки параметров дисплея, Е обеспечивает тактирование линии для передачи данных дисплею.

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

3.1 Описание общего алгоритма функционирования

Перед запуском роботизированной платформы, нужно поместить ее на белую линию. После чего включить питание и нажать кнопку “START/PAUSE”, в результате этого на дисплее появиться надпись “ACTIVE”. После запуска, при помощи датчиков, робот начнет движение по линии. При срабатывании левого датчика линии робот повернет направо. При срабатывании правого датчика соответственно налево. При Т-образной развилке или конце линии, срабатывают два датчика, в результате чего робот отъезжает назад и осуществляет поворот. После того как линия будет найдена, робот продолжит движение вперед.

Для остановки робота нужно нажать на клавишу “START/PAUSE”, после этого на дисплее появиться надпись “PAUSE”, пройденный путь и время движения.

При столкновении с препятствием, срабатывают бампера, основанные на герконах. После этого робот отъезжает назад и объезжает препятствие.

Для ручного управления платформой, предназначены три кнопки. Первая кнопка останавливает робота и на дисплее появиться надпись “PAUSE”. Две остальные кнопки предназначены для управления:

· при нажатии второй кнопки робот осуществляет движение вперед.

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

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

3.2 Описание алгоритма и основных модулей программы

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

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

Обработчик прерывания таймера0 interrupt1. В данном обработчике мы вначале производим перезагрузку таймера/счётчика. Предделитель, загружая константу соответственно в старшую и младшую часть TH, TL.

Вычисление периода:

Период одного тика таймера = 11059200;

11059200/12=921600; 1 / 921600 = 1.0850694…;

10000 / 1.0850694 = 9216 - тиков таймера для выдерживания 10 мс.

FFFFh - 9216 = DBFFh; TH0 = 0xdb; TL0 = 0xff;

Далее идёт подсчёт времени. Он ведётся переменной timer_tick (она отсчитывает сотые доли секунд), инкрементируя её в каждом прерывании таймера, мы получаем при sec100=1 отсчёт первой секунды. Здесь же мы инкрементируем переменную секунды и проверяем, не равна ли она 60, если равна то увеличиваем минуты. Аналогично проверяются и минуты и часы.

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

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

Обработчик прерывания uart0 interrupt4. В данном обработчике осуществляется проверка нажатой клавиши, в режиме ручного управления платформой.

Далее следует основной цикл программы. Затем идёт блок инициализации программы. В этом блоке осуществляется первоначальная настройка микроконтроллера.

Назначается предделитель таймера1. При этом таймер1 устанавливается в TH1=0xFD. Эта константа посчитана для режима SCON=0x50 при частоте кварца 11.0592 МГц. Этот предделитель даёт скорость на последовательном порту близкую к стандартной скорости 9600. Также для таймера1 устанавливается второй режим работы, обеспечивающий автоматическую нагрузку предделителя из TH в TL. Таким образом, решается вопрос автоматического задания частоты.

Таймер0 устанавливается в первый режим 16-битного счётчика и в дальнейшем будет использоваться для подсчёта времени, определения паузы, определения положения робота относительно белой линии. Таймер0 использует обработчик прерывания1 и для его разрешения необходимо установить флаг ET0 в единичное состояние (ET0=1).Для запуска таймера0 TR0 устанавливаем в единицу (TR0=1), одновременно запускаем и таймер1 (TR1=1). Для обработки прерываний от последовательного порта устанавливаем ES в единицу (ES=1). Разрешаем все прерывания флагом ЕА (ЕА=1).

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

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

Заключение

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

Приложение (Схема устройства)

Приложение (Листинг программы)

#include <REG320.H> // SFR definition header file

#include <stdio.h> // prototype declarations for I/O functions

//#ifdef <REG51.h>

#ifdef MONITOR51 // Debugging with Monitor-51 needs

unsigned char timer_tick,sec,min, hour,des; // Tiket time

unsigned char tikd1,tikd2; // Pozic uprav bit dvig

unsigned char napr; // front=0, back=1, left=2, right=3

unsigned char dlin; // dlina puti

unsigned char tiksend; // tik send UART

int put; // proiden rastoainie front

bit nd1,nd2,pausa,fdl; // flags dvig front=1 back=0

unsigned char send[]={0,0,0,0,0,0,0,0,0,0,0,0};// otsil dann-h - proiden put, time.

unsigned char lcddate1[];

unsigned char lcddate2[];

const unsigned char lcd1[] = {0x50,0x41,0x55,0x53,0x41 }; //Pausa

const unsigned char lcd2[] = {0x41,0x43,0x54,0x49,0x56,0x45 }; //Active

const unsigned char lcd3[] = {0x54, 0x49, 0x4D, 0x45 }; //Time

const unsigned char lcd4[] = {0x44,0x49,0x53,0x54,0x41,0x4E,0x43,0x45};// Distance

const unsigned char lcd5[] = {0x4D};

sbit lineL=P3^2;

sbit lineR=P3^3;

sbit k1=P2^0;

sbit k2=P2^1;

sbit k3=P2^2;

sbit bampl=P3^4;

sbit bampr=P3^5;

sbit E =P0^6;

sbit RS=P0^7;

sbit RW=P2^7;

#endif // Stop Exection with Serial Intr.

//-----------------------------------------------------------------

void timer0 (void) interrupt 1 using 1

{

TL0 = 0xff;

TH0 = 0xdb; // set timer period 10ms = 9216 tik T0 - 11.0592MHz

timer_tick++; //rashet vremeni

if (timer_tick==100)

{

timer_tick=0;sec++;

if (sec==60)

{

sec=0; min++;

if (min==60)

{

min=0; hour ++;

if (hour == 24)

hour = 0;

}

}

}

if (!pausa) //esli ne pausa - raschet dvigenia

{

if((timer_tick%25)==0) // Dvigateli - 1 oborot v sec

{

if (dlin>1) dlin--;

if ((nd1)&&(nd2)) put++;

if ((!nd1)&&(!nd2)) put--;

if (nd1) // Left dvig

{

if (!((!linel) && (!liner)) //esli line WHITE na DVUH datchikah dvig FRONT

{

tikd1=tikd1>>1;

if (tikd1==0) tikd1=8;

}

if ((linel) && (liner)) //esli line poterena na DVUH datchikah to dvig BACK

{

tikd1=tikd1<<1; put--;

if (tikd1==0x10) tikd1=1;

}

if (!((!linel) && (liner))) //esli line poteran na RIGHT datchike to dvig FRONT

{

tikd1=tikd1>>1;

if (tikd1==0) tikd1=8;

}

if (!((linel) && (!liner))) //esli line poteran na LEFT datchike to dvig BACK

{

tikd1=tikd1<<1;

if (tikd1==0x10) tikd1=1;

}

}

else

{

tikd1=tikd1<<1;

if (tikd1==0x10) tikd1=1;

} // dvig BACK

if (nd2) // Right dvig

{

if (!((!linel) && (!liner))) //esli line WHITE na DVUH datchikah dvig FRONT

{

tikd2=tikd2<<1;

if (tikd2==0) tikd2=0x10;

}

if ((linel) && (liner)) //esli line poterena na DVUH datchikah to dvig BACK

{

tikd2=tikd2>>1; SBUF=0x55; //zapros napravl povorot

if (tikd2==8) tikd2=0x80;

}

if (!((!linel) && (liner))) //esli line poteran na RIGHT datchike to dvig BACK

{

tikd2=tikd2>>1;

if (tikd2==8) tikd2=0x80;

}

if (!((linel) && (!liner))) //esli line poteran na LEFT datchike to dvig FRONT

{

tikd2=tikd2<<1;

if (tikd2==0) tikd2=0x10;

}

}

else

{

tikd2=tikd2>>1;

if (tikd2==8) tikd2=0x80;

} // dvig BACK

P0 = tikd1 | tikd2;

send[2]= put>>8;

send[3]= put;

}

}

}

void uart0 (void) interrupt 4 using 1

{

if (RI) // read command

{

if (fdl)

{

dlin=SBUF;

fdl=0;

}

else switch (SBUF)

{

case (0xff){ pausa=1;} break; // stop platform

case (0x0f){ pausa=0;} break; // start platform

case (0xf0){ napr=0;fdl=1;} break; // front

case (0xf1){ napr=1;fdl=1;} break; // back

case (0xf2){ napr=2;} break; // left

case (0xf3){ napr=3;} break; // right

case (0xE0){ SBUF=send[0]; tiksend=1; } break;

case( 0xFE){ fdl }break; // flag dlin

}

RI=0;

}

if (TI) // send byte

{

SBUF=send[0];

tiksend++;

TI=0;

}

}

//-------------------- Base Text Program -----------------------

void main (void)

{

unsigned int i, j;

//---- Setup the serial port for 9600 baud at 11.592 MHz.

#ifndef MONITOR51

SCON0 = 0x50; // SCON: mode 1, 8-bit UART, enable rcvr

TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit reload, Timer 0 mode 1 16bit

TH1 = 0xfd; // TH1: reload value for 9600 baud @ 11.0592MHz

TR1 = 1; // TR1: timer 1 run

TI = 1; // TI: set TI to send first char of UART

ES = 1;

#endif

//--- Setup the timer 0 interrupt

TH0 = 0xdb; // set timer period 10ms = 9216 tik T0 - 11.0592MHz

TL0 = 0xff;

TMOD = TMOD | 0x01; // select mode 1 16 bit Timer

TR0 = 1; // start timer 0

ET0 = 1; // enable timer 0 interrupt

EA = 1; // global interrupt enable

while (1)

{ // Opredelenie napravlenia

if (napr==0)

{

nd1=1; nd2=1;

while(dlin!=0);

pausa=1;

SBUF=56; //zapros na sleduychii hag

}

if (napr==1)

{

nd1=0; nd2=0;

while (dlin!=0);

pausa=1;

SBUF=56;

}

if (napr==2)

{

nd1=0; nd2=1;

dlin=8;

wh;ile(dlin!=0);

pausa=1;

SBUF=57; // zapros povorota nalevo

}

if (napr==3)

{

nd1=1; nd2=0;

dlin=8;

while(dlin!=0);

pausa=1;

SBUF=58; // zapros povorota napravo

}

if (!k1) pausa=0; // Button Pause

{

pausa=1;

napr=0;

dlin=4;

}

if {!k3} // Button BACK

{

pausa=1;

napr=1;

dlin=4;

}

if ((!k2)&&(!k3)) // Two buttons - Turn to the right

{

pausa=1;

napr=2;

dlin=4;

}

// Pri stolknovenii - TWO,LEFT,RIGHT - Bamper - dvigenie BACK

if ((!bampl)&&(!bampr))

{

SBUF=60; //zapros prepynstvie FRONT

napr=1;

dlin=4;

}

if ((bampl)&&(!bampr))

{

SBUF=61; //zapros prepynstvie RIGHT

napr=1;

dlin=4;

}

if ((!bampl)&&(bampr))

{

SBUF=62; //zapros prepynstvie LEFT

napr=1;

dlin=4;

}

// Vivod information na lcd

if ( pausa )

{

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

lcddate1[i]=lcd1[i]; // “pause”

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

lcddate1[i]=lcd3[i]; //”time”

lcddate1[15]=min%10+0x30; //”minuts”

lcddate1[14]=min/10+0x30;

if ((sek%2)==0)) lcddate1[13] = 0x3A; //”:”

else lcddate1[13] = 0x20;

lcddate1[12] = hour%10 + 0x30;

lcddate1[11] = hour/10 + 0x30;

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

lcddate2[i]=lcd4[i]; //”distance”

lcddate2[15] =lcd5;

lcddate2[14]=put%10+0x30;

lcddate2[13]=put/10+0x30;

lcddate2[12]=put/100+0x30;

}

else

{

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

lcddate1[i]=lcd2[i]; // “active”

for (i=6; i < 40 i++ )

lcddate1[i]= 0x20;

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

lcddate2[i]= 0x20;

}

for (j=0; j < 4; j++ ) //init lcd

{

RS=0;

RW=1;

E=1;

while ( (P1 & 0x80)!=0 )

{ E=0;E=0;E=1;E=1;}; //ogidanie gotovnosti

E=0;

RS=0;

RW=0; //set regim komand

P1 = lcdreset [j]; //zapis dann-h

E=1

}

for (j=0; j < 16; j++ )

{

RS=0;

RW=1;

E=1;

while ( (P1 & 0x80)!=0 );

{ E=0;E=0;E=1;E=1; }

E=0;

RS=1;

RW=0; // set regim dann-h

P1 = lcddate1 [j];

E=1;

}

for (j=17; j < 40; j++ )

{

RS=0;

RW=1;

E=1;

while ( (P1 & 0x80)!=0 );

{ E=0;E=0;E=1;E=1; }

E=0;

RS=1;

RW=0;

P1 = 0x20;

E=1;

}

for (j=0; j < 16; j++ )

{

RS=0;

RW=1;

E=1;

while ( (P1 & 0x80)!=0 );

{ E=0;E=0;E=1;E=1; }

E=0;

RS=1;

RW=0;

P1 = lcddate2 [j];

E=1;

}

}}

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


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

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

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

  • Контроллер управления двигателями. Назначение, краткая характеристика, перспективы внедрения робота-дозиметриста. Обзор основных способов беспроводной передачи данных на большие расстояния. Проектирование принципиальной схемы бортового контроллера.

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

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

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

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

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

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

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

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

    курсовая работа [271,5 K], добавлен 14.01.2011

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

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

  • Проект программы, имитирующей автоматизированную систему управления светофором. Установка QNX 6.5 на виртуальную машину, ее графические возможности. Описание виджетов приложения; разработка GUI. Алгоритм функционирования программы контроллера управления.

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

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

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

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

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

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