Читать книги » Книги » Компьютеры и Интернет » Программирование » Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С

Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С

Читать книгу Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С, Стивен Барретт . Жанр: Программирование.
Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
Название: Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
ISBN: -
Год: -
Дата добавления: 3 июль 2019
Количество просмотров: 162
(18+) Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних просмотр данного контента СТРОГО ЗАПРЕЩЕН! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту для удаления материала.
Читать онлайн

Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С читать книгу онлайн

Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - читать онлайн , автор Стивен Барретт
В книге последовательно рассматриваются все этапы создания встраиваемых систем на микроконтроллерах с применением современных технологий проектирования. Задумав эту книгу, авторы поставили перед собой задачу научить читателя искусству создания реальных устройств управления на однокристальных микроконтроллерах. Издание содержит материал, охватывающий все вопросы проектирования, включает множество заданий для самостоятельной работы, примеры программирования, примеры аппаратных решений и эксперименты по исследованию работы различных подсистем микроконтроллеров. Данная книга является прекрасным учебным пособием для студентов старших курсов технических университетов, которые предполагают связать свою профессиональную деятельность с проектированием и внедрением встраиваемых микропроцессорных систем. Книга также будет полезна разработчикам радиоэлектронной аппаратуры на микроконтроллерах.
Перейти на страницу:

    delay();

    PORTB=0x00; // включает красные светодиоды индикатора

    break;

   case 0xFB: //PA2 Окружность

    PORTB = 0x04; // подсвечивает светодиод порта PORTB

    delay();

    PORTB=0x00; //включает красные светодиоды индикатора

    break;

   case 0xFD: //PA1 Синусоида

    PORTB = 0x02; // подсвечивает светодиод порта PORTB

    delay();

    PORTB=0x00; // включает красные светодиоды индикатора

    break;

   case 0xFE: //PA0 Остановка

    PORTB = 0x01; // подсвечивает светодиод порта PORTB

    position_laser(0x00,0x00);

    shutter(close);

    delay();

    PORTB=0x00; // включает красные светодиоды индикатора

    go = 0;

    break;

   case 0xFF:

    break;

   default:

    ; //все остальные случаи

   }//конец switch(new_PORTA)

   old_PORTA = new_PORTA;

  }//конец if(new_PORTA ! = old_PORTA)

 }//конец while(go)

}//конец main

//********************************************************************

// initialize_ports: производится конфигурация портов в качестве

//входных/выходных

//********************************************************************

void initialize_ports(void)

{

DDRA=0x00; //установить PORTA в качестве входного порта

DDRB=0xFF; //установить PORTB в качестве выходного порта

PORTB=0x00; //включить красные светодиоды индикатора

DDRS=0xFF; //установить PORTT в качестве выходного порта

DDRP=0xFF; //установить PORTP в качестве выходного порта

}

//********************************************************************

/// /shutter(int action) : открытие и закрытие затвора

//********************************************************************

void shutter(int action) {

 if (action == open) PORTP = 0x01;

 if (action == close) PORTP = 0x00;

}

//********************************************************************

//position_laser(unsigned char x_pos, unsigned char y_pos): посылает

//сигнал управления для каналов X и Y гальванометра из портов PORTS

//и PORTT соответственно.

//********************************************************************

void position_laser(char x_pos,char y_pos) {

 PORTS = x_pos;

 PORTT = y_pos;

}

//********************************************************************

//delay(void): создает задержку

//********************************************************************

void delay(void) {

 int j;

 for(j=0x0000; j<0x1000; j=j+0x01) {

  asm("nop");

 }

}

//********************************************************************

7.2.7. Испытания устройства

До подсоединения компонентов системы к МК 68HC12, мы должны полностью проверить схему. В главе 5 мы рассматривали методики проверки, позволяющие моделировать входы системы переключателями, а выходы светодиодами. Наше устройство уже содержит переключатели и светодиоды для такой проверки. Однако, как мы проверим аналоговые сигналы? Имеется два метода, позволяющих легко проверить связь друг с другом сигналов на каналах X и Y:

1) использование перьевого X-Y графопостроителя,

2) использование классической контрольно-измерительной методики, связанной с получением так называемых фигур Лиссажу.

При первой методике, выходной аналоговый сигнал, формируемый X-каналом ЦАП, переключается с X-канала гальванометра на X-канал перьевого X-Y графопостроителя, а сигнал с Y-канала гальванометра на Y-канал на графопостроителя. Сигнал управления затвором может быть подан на драйвер пера графопостроителя, смещающийся вверх и вниз. Необходим плоттер со специальными характеристиками, чтобы определить, требуется ли схема интерфейса между ТТЛ совместимым сигналом для управления затвором от 68HC12 и управления движением пера вверх и вниз. После подключения микроконтроллера 68HC12 к графопостроителю, каждое из изображений может быть полностью проверено.

Вторая методика испытаний использует классический метод фигур Лиссажу. Чтобы получить фигуры Лиссажу, выходные сигналы с X-канала и Y-канала ЦАП подаются на соответствующие каналы осциллографа.

После подключения 68HC12 к осциллографу, каждое из изображений также может быть полностью проверено. Дополнительную информация о фигурах Лиссажу можно найти в [2].

7.2.8. Заключительные испытания системы управления

После полной проверки программного обеспечения, оно может быть испытано совместно с устройством управления лазером. Реальные устройства описываются в литературе, выпускаемой изготовителями оптических устройств и в учебниках, посвященных оптическим блокам [3, 8].

7.3. Цифровой вольтметр 

7.3.1. Описание проекта 

Для этого проекта мы должны разработать цифровой вольтметр (ЦВ), способный измерять входной аналоговый сигнал в диапазоне от +10 до –10 В. Измеряемое напряжение, отображается на ЖК дисплее, число знакомест которого позволяет отображать числа от 0 до 100.

Диапазон входных измеряемых напряжений для модуля аналого-цифрового преобразования ATD МК 68HC12 составляет 0…5 В. Чтобы измерить входное напряжение в более широком диапазоне, необходим внешний интерфейс. Поэтому мы преобразуем входной сигнал ±10 В в сигнал, лежащий в диапазоне от 0 до 5 В. 

7.3.2. Системы 68HC12 используемые в проекте 

Для реализации проекта мы должны будем использовать следующие модули в составе МК 68HC12, внешние устройства и программы управления:

• Модуль ATD в составе МК 68HC12;

• Символьный ЖК индикатор;

• Интерфейс преобразователя диапазона входного сигнала;

• Алгоритм преобразования измеряемого напряжения в ASCII код для отображения на ЖК индикаторе.

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

7.3.3. Расчет интерфейса модуля ATD

В разделе 5.9 мы описали, как подключить аналоговое устройство ввода данных к МК 68HC12, использовав методику расчета интерфейса преобразователя. Мы можем применить этот материал для разработки устройства, изменяющего диапазон входного напряжения от исходного ±10 В до диапазона от 0 до 5 В, совместимого с подсистемой аналого-цифрового преобразования для 68HC12.

Структурная схема согласующего устройства приводится на рис. 7.13. Это устройство должно сформировать напряжение 5 В на входе АЦП микроконтроллера, когда на вход вольтметра подается 10 В, и 0 В на входе АЦП при напряжении в –10 В на входе вольтметра. Чтобы выполнить такое преобразование, входной сигнал должен быть умножен на масштабирующий коэффициент, и, кроме того, должно быть создано напряжение смещения. В нашей схеме операцию масштабирования выполняет блок K, и его выходной сигнал суммируется с сигналом смещения B.

Рис. 7.13. К расчету согласующего устройства

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

V2max = V2min * K + B

V1max = V1min * K + B

Нетрудно установить, что V1min = –10 В, а V2min = + 10 В, в то время как V1max = 0 В, и V2max = 5 В. Подставим эти значения в нашу систему уравнений:

5 = 10 * K + В

0 = (–10) * K + В

В результате решения системы получим масштабный множитель K = 0.25, и напряжение смещения B = 2.5 В. Cоздадим схему на ОУ с коэффициентом передачи 0.25, и добавим напряжение смещения в 2.5 В.

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

7.3.4. Структура программы и блок-схема алгоритма

Мы приводили структуру программы и блок-схему алгоритма для каждого из рассматриваемых проектов. Для этого проекта мы оставляем разработку структуры и блок схемы читателю в качестве домашней работы (задание 17).

7.3.5. Программа управления

/********************************************************************/

/* Имя файла: voltmeter2.с                                          */

/* Это программа для реализации простого вольтметра на базе АЦП,    */

/* встроенного в МК HC12. Приведенный программный код выполняет     */

/*одно преобразование и затем программа может вручную               */

/* перезапускаться пользователем для измерения другого напряжения   */

/********************************************************************/

#include <912b32.h>

Перейти на страницу:
Комментарии (0)