Проектирование программного обеспечения микропроцессора

Автор работы: Пользователь скрыл имя, 03 Апреля 2013 в 12:42, курсовая работа

Описание работы

В настоящее время встроенные компьютерные системы получают все большее распространение из-за их высокого качества и надежности, а так же простоты обработки информации.
Микроконтроллеры MSP430 - это 16-разрядные микроконтроллеры RISC-архитектуры, с развитой периферией и сверхнизким энергопотреблением Микроконтроллеры семейства MSP430 содержат 16-разрядное RISC CPU, периферийные модули и гибкую систему тактирования, соединенные через фон-Неймановскую общую адресную шину (MAB) памяти и шину памяти данных (MDB). Объединяя современное CPU с отображаемыми в памяти аналоговыми и цифровыми периферийными устройствами, семейство MSP430 предлагает решения для приложений со смешанными сигналами.

Содержание работы

Введение 3
1. Известные семейства 4
2. Удаленное устройство индикации. 5
2.1 Характеристики MSP430F135: 6
3. Проектирование принципиальной схемы устройства 7
3.1 Схема включения микропроцессора 7
3.2. Формирование тактовых импульсов 7
3.3 Схема сброса 8
3.4 Схемы входных и выходных устройств 9
3.4 Схема стабилизатора напряжения 12
4. Проектирование программного обеспечения микропроцессора 13
4.1 Проектирование модуля инициализации микроконтроллера 13
4.2 Проектирование процедур обработки прерываний 13
4.3 Проектирование процедур обработки информации 13
4.4 Проектирование процедур вывода информации 13
4.5 Проектирование процедуры Main() 14
5. Листинг программы 15
6. Примеры роботов с микроконтроллерами 23
Заключение 26
Список использованных источников 27

Файлы: 1 файл

ТАНЯ.doc

— 562.50 Кб (Скачать файл)

vEN(1);

_NOP();

//_NOP();

vEN(0);

_NOP();

//_NOP();

P1OUT|=0xf0;//Устанавливает на выводах состояние "по умолчанию".

_NOP();

//_NOP();

}

/*Состояние выводов  "по умолчанию"*/

void vLCD_Silence(void)

{

vEN(0);

vRS(0);

P1OUT=0xf0;

}

/*Инициализация дисплея*/

void vLCD_Init(void)

{

for(char i=0;i<21;i++)

vLCD_Delay(1);//задержка на 40 мс.

vRS(0);

_NOP();

P1OUT&=0x30|0x0f;//Запись старшей тетрады.

vEN(1);

_NOP();

vEN(0);

_NOP();

P1OUT|=0xf0;//Устанавливает на выводах состояние "по умолчанию".

_NOP();

for(char i=0;i<3;i++)

vLCD_Delay(1);//задержка на 4.1 мс.

vLCD_FuncSet(0,0,0);//4-х разрядная шина, развертка 1 строк, символ 5х8.

vLCD_FuncSet(0,1,0);//4-х разрядная шина, развертка 1 строк, символ 5х8.

vLCD_OnOff(1,0);//Вкл. модуля, выкл. курсора.

vLCD_Clear();//Очистка DDRAM.

vLCD_EntryModeSet(1,0);//Сдвиг курсора вправо, сдвиг дисплея запрещен.

}

/*Очистка дисплея*/

void vLCD_Clear()

{

vLCD_Write(0,0x01);

vLCD_Delay(1);

}

/*Перемещение курсора  в левую позицию*/

void vLCD_RetLeft()

{

vLCD_Write(0,0x02);

vLCD_Delay(1);

}

/*Установка направления  сдвига курсора (ID=0/1 - влево/вправо)

и разрешение сдвига дисплея (SH=1) при записи в DDRAM*/

void vLCD_EntryModeSet(char ID,char SH)

{

char Data=0x04+(ID<<1)+SH;

vLCD_Write(0,Data);

vLCD_Delay(0);

}

/*Включает модуль (D=1) и выбирает тип курсора (см. даташит)*/

void vLCD_OnOff(char D,char CB)

{

char Data=0x08+(D<<2)+CB;

vLCD_Write(0,Data);

vLCD_Delay(0);

}

/*Выполнияет сдвиг  дисплея или курсора (SC=0/1 - курсор/дисплей,

RL=0/1 - влево/вправо)*/

void vLCD_CurDispShift(char SC,char RL)

{

char Data=0x10+(SC<<3)+(RL<<2);

vLCD_Write(0,Data);

vLCD_Delay(1);

}

/*Устанавливает разрядность  интерфейса (DL=0/1 - 4/8 бита), режим развертки bстрок (N=0/1 - одна строка/две строки) и размер символа (F=0/1 - 5х8/5х10)*/

void vLCD_FuncSet(char DL,char _N,char _F)

{

char Data=0x20+(DL<<4)+(_N<<3)+(_F<<2);

vLCD_Write(0,Data);

vLCD_Delay(0);

}

/*Установка адреса  для последующих операций и  выбор области DDRAM*/

void vLCD_SetAddr(char ADD)

{

ADD+=0x80;

vLCD_Write(0,ADD);

vLCD_Delay(0);

}

/*Запись данных в  активную область*/

void vLCD_WriteData(char DATA)

{

vLCD_Write(1,DATA);

vLCD_Delay(0);

}

/*Задержка на 0/1 - 40 мкс/1.95 мс */

void vLCD_Delay(char a)

{

IFG1&=~WDTIFG;//Сбросили очередной флаг прерывания...

//Запуск Собаки с  очисткой.

if(a)

WDTCTL=0x5A00 | 0x1f;//TMSEL,SSEL,WDIS.1,WDIS.0 - период 1.95 мс.

else

WDTCTL=0x5A00 | 0x1b;//TMSEL,WDIS.1,WDIS.0 0 - период 12.8 мкс.

char z=1;

if(!a)z=4;

for(char i=0;i<z;i++)

{

while(!(IFG1&WDTIFG))

_NOP();//пока нет прерывания от Собаки - висим.

IFG1&=~WDTIFG;//Сбросили очередной флаг прерывания...

}

//Остановка Собаки.

WDTCTL=0x5A00 | 0x93;//HOLD,TMSEL,WDIS.1,WDIS.0

}

/*Вывод строки c позиции line,column до конца строки. Если фактическая длинна строки больше, строка переписывается с начальной позиции.

Начало строки: line - номер строки сверху (0-3),

column - позиция первого символа в строке, string - строка символов*/

void vLCD_TransMassive(unsigned char line,unsigned char column,

unsigned char string[])

{

//Для корректной работы  следует установить следующий  режим:

//vLCD_EntryModeSet(1,0);//Сдвиг курсора вправо, сдвиг дисплея запрещен.

unsigned char ADD=line,ColumnCounter=column;

/*Вычисляем ардес в  DDRAM*/

switch(ADD)

{

case 3:

ADD=0x54;

break;

case 2:

ADD=0x14;

break;

case 1:

ADD=0x40;

case 0:

break;

default:

ADD=0x00;

}

if(column>19)

column=0;

ADD+=column;

vLCD_SetAddr(ADD);//Установка адреса.

for(char i=0;;i++)//Запись строки (бесконечный цикл).

{

if(string[i]=='\0')//Если обнаружен симовл конца строки - выход из цикла.

return;

else

{

vLCD_WriteData(string[i]);

if(++ColumnCounter>19)//Если достигнут физический конец строки,

{

vLCD_SetAddr(ADD);//продолжаем запись с начальной позиции.

ColumnCounter=column;

}

}

}

_NOP();

}

 

  1. Примеры роботов с микроконтроллерами

 

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

Разнообразные роботы, построенные на сходной элементной базе

Исследовательский робот  «Зенон», предназначенный 
для изучения моделей поведения

Исследовательский робот  «ПЛУТ-3» с антропоморфной системой управления манипулятором

Система управления робота «ПЛУТ-3»

 Исследовательский прототип шагающего шестиногого робота

 

 

Заключение

 

Использование внешнего кварцевого генератора обеспечивает высокую  стабильность работы последовательного коммуникационного интерфейса (USART).

В ходе проектирования устройства были рассмотрены основные принципы построения устройств на микроконтроллерах MSP430 от Texas Instruments. А так же изучены аппаратные возможности данных микроконтроллеров.

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

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

 

Список использованных источников

 

  1. Бродин В. Б., Калинин А. В. Системы на микроконтроллерах и БИС программируемой логики. — М.: ЭКОМ, 2002. — ISBN 5-7163-0089-8
  2. Жан М. Рабаи, Ананта Чандракасан, Боривож Николич. Цифровые интегральные схемы. Методология проектирования = Digital Integrated Circuits. — 2-е изд. — М.: Вильямс, 2007. — ISBN 0-13-090996-3
  3. Микушин А. Занимательно о микроконтроллерах. — М.: БХВ-Петербург, 2006. — ISBN 5-94157-571-8
  4. Новиков Ю. В., Скоробогатов П. К. Основы микропроцессорной техники. Курс лекций. — М.: Интернет-университет информационных технологий, 2003. — ISBN 5-7163-0089-8
  5. Фрунзе А. В. Микроконтроллеры? Это же просто! — М.: ООО «ИД СКИМЕН», 2002. — Т. 1. — ISBN 5-94929-002-X
  6. Фрунзе А. В. Микроконтроллеры? Это же просто! — М.: ООО «ИД СКИМЕН», 2002. — Т. 2. — ISBN 5-94929-003-8
  7. Фрунзе А. В. Микроконтроллеры? Это же просто! — М.: ООО «ИД СКИМЕН», 2003. — Т. 3. — ISBN 5-94929-003-7

 


Информация о работе Проектирование программного обеспечения микропроцессора