Построение компьютерной системы на микроконтроллере
Разработка компьютерной системы для считывания данных по последовательному порту и вывода обработанной информации на LCD индикатор. Выбор и обоснование режимов работы узлов микроконтроллера. Проектирование программного обеспечения микропроцессора.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 14.10.2010 |
Размер файла | 380,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Содержание
Введение
1. Анализ поставленной задачи
1.1 Обоснование достаточности аппаратных средств и программных ресурсов
1.2 Доопределение набора аппаратных средств и программных ресурсов
1.3 Распределение функций устройства между узлами микроконтроллера
1.4 Выбор и обоснование режимов работы узлов микроконтроллера
2. Проектирование принципиальной схемы устройства
2.1 Схема включения микроконтроллера
2.2 Формирование тактовых импульсов
2.3 Организация сброса
2.4 Схемы входных и выходных устройств
2.5 Схема источника напряжения питания
3. Проектирование программного обеспечения микропроцессора
3.1 Проектирование модуля инициализации микроконтроллера
3.2 Проектирование процедур обработки прерываний
3.3 Проектирование процедур обработки информации
3.4 Проектирование процедур вывода информации
3.5 Проектирование процедуры Main()
4. Листинг программы
Заключение
Введение
В настоящее время встроенные компьютерные системы получают все большее распространение из-за их высокого качества и надежности, а так же простоты обработки информации.
В ходе курсового проекта необходимо разработать КС которая будет считывать данные по последовательному порту и выводить обработанную информацию на LCD индикатор.
По техническому заданию на курсовой проект КС должна быть построена на микроконтроллере MSP430.
Микроконтроллеры MSP430 - это 16-разрядные микроконтроллеры RISC-архитектуры, с развитой периферией и сверхнизким энергопотреблением Микроконтроллеры семейства MSP430 содержат 16-разрядное RISC CPU, периферийные модули и гибкую систему тактирования, соединенные через фон-Неймановскую общую адресную шину (MAB) памяти и шину памяти данных (MDB). Объединяя современное CPU с отображаемыми в памяти аналоговыми и цифровыми периферийными устройствами, семейство MSP430 предлагает решения для приложений со смешанными сигналами.
1. Анализ поставленной задачи.
Темой курсового проекта является "Удаленное устройство индикации".
Рассмотрим общую структурную схему, приведенную на рисунке 1.
Рисунок 1 - Структурная схема устройства.
В качестве микроконтроллера выберем MSP430F135.
MSP430F135 имеет память программ 16 Кбайт + 256 байт, ОЗУ 512 байт. Максимальное количество контактов ввода/вывода 48. Данная конфигурация позволяет строить малопотребляющие и высокоэффективные приложения.
У предложенного микроконтроллера достаточное число контактов ввода/вывода и памяти программ и данных.
На рисунке 2 приведен MSP430F135.
Рисунок 2 - MSP430F135
Характеристики MSP430F135:
- 12-разрядный АЦП с внутренним источником опорного напряжения,
- устройством выборки-хранения,
- режимом автоматической последовательной оцифровки данных
- компаратор для сравнения аналоговых сигналов
- 16-разрядный таймер с тремя регистрами захвата/сравнения
- Последовательный коммуникационный интерфейс (USART) с программной настройкой режима: асинхронный - UART или синхронный - SPI
- Внутрисхемный программатор с последовательной передачей данных
- Защита программного кода
- Последовательное программирование ( JTAG )
На рисунке 3 приведена внутренняя структура MSP430F135
Рисунок 3 - Внутренняя структура MSP430F135
2. Проектирование принципиальной схемы устройства
Схема включения микропроцессора
Микроконтроллер MSP430F135 содержит 6 регистров ввода/вывода. Задействуем Port 1 и Port 2 управления светодиодным индикатором. Port 4 служит для считывания данных с датчика Холла.
На рисунке 4 приведена структурная схема включения микроконтроллера.
Рисунок 4 - Структурная схема включения микроконтроллера
Формирование тактовых импульсов
Источником тактовых импульсов в микроконтроллере MSP430F135 может быть:
– внутренний переменный резистор
– внешний резистор
– Керамический резонатор
– 32 kHz кварцевый резонатор
– высокочастотный кварцевый резонатор
– внешний источник тактовых импульсов
В данном разрабатываемом устройстве наиболее предпочтительным режимом работы генератора является применение внешнего кварцевого резонатора подключаемого к контактам XIN и XOUT Это стабильный генератор с точной выдержкой временных интервалов тактовой частоты которая необходима для делителя USART интерфейса.
На рисунке 5 приведена схема тактирования.
Рисунок 5 - Схема тактирования.
Схема сброса
На рисунке 6 приведена аппаратная схема сброса по включению питания. Данная схема необходима для первичной инициализации аппаратуры микроконтроллера.
Рисунок 6 - Аппаратная схема сброса по включению питания
Схемы входных и выходных устройств
Прием данных осуществляется по последовательному RS-232 интерфейсу. Для его нормального функционировании и обеспечения совместимости с уровнями используем микросхему интерфейса MAX232. Схема включения MAX 232 приведена на рисунке 7.
Рисунок 7 - Схема включения MAX 232
ЖКИ подключен к микроконтроллеру MSP430F135 с помощью 8-ми разрядной шиной.
Рисунок 8 - Схема подключения ЖКИ.
Алфавитно-цифровые ЖКИ - модули представляют собой недорогое и удобное решение, позволяющее сэкономить время и ресурсы при разработке новых изделий, при этом обеспечивают отображение большого объема информации при хорошей различимости и низком энергопотреблении. Возможность оснащения ЖКИ - модулей задней подсветкой позволяет эксплуатировать их в условиях с пониженной или нулевой освещенностью, а исполнение с расширенным диапазоном температур (-20°С...+70°С) в сложных эксплуатационных условиях, в том числе в переносной, полевой и даже, иногда, в бортовой аппаратуре.
В соответствии с временной диаграммой в исходном состоянии сигнал Е = 0, сигнал R/W = 0, значение сигнала RS - произвольное, шина данных DBO...DB7 в состоянии высокого импеданса (НI). Такое состояние управляющих сигналов (E и R/W) должно поддерживаться все время в промежутках между операциями обмена с ЖКИ-модулем. Шина данных в эти моменты в принципе свободна, и может использоваться в мультиплексном режиме для каких-либо других целей, например, для сканирования матрицы клавиатуры. Естественно, необходимо позаботиться об исключении конфликтов на шине данных в момент совершения операций обмена с ЖКИ-модулем.
Последовательности действий, которые необходимо выполнять управляющей системе при совершении операций записи и чтения для 8-ми разрядной шины приведены соответственно в таблицах 1, 2. Для нормальной работы ЖКИ необходимо сформировать временные диаграммы приведенные на рисунках 9 и 10
Таблица 1. Операции записи для 8-ми разрядной шины
1. Установить значение линии RS 2. Вывести значение байта данных на линии шины DB0...DB7 3. Установить линию Е = 1 4. Установить линию У = 0 5. Установить линии шины DB0...DB7 = HI |
Таблица 2. Операции чтения для 8-ми разрядной шины
1. Установить значение линии RS 2. Установить линию R/W = 1 3. Установить линию Е = 1 4. Считать значение байта данных с линий шины DB0...DB7 5. Установить линию Е = 0 6. Установить линию R/W = 0 |
Рисунок 9 - Временная диаграмма операции записи
Рисунок 10 - Временная диаграмма операции чтения
Схема стабилизатора напряжения
Стабилизатор напряжения построен на микросхеме LM7805. Данная микросхема является линейным стабилизатором напряжения. Напряжение стабилизации 5V. На рисунке 11 приведена схема включения стабилизатора.
Рисунок 11 - Схема подключения стабилизатора к микроконтроллеру.
3. Проектирование программного обеспечения микропроцессора
3.1 Проектирование модуля инициализации микроконтроллера
Для инициализации данного устройства необходимо выделить память для глобальных переменных, и провести инициализацию портов, таймеров и последовательного интерфейса.
3.2 Проектирование процедур обработки прерываний
Данное устройство не требует написания программы с обработкой прерываний. В связи с тем что по заданию необходима очень маленькая скорость обмена по RS232 и быстродействии LCD индикатора и контроллера достаточно для уверенного приема данных.
3.3 Проектирование процедур обработки информации
В микроконтроллер встроен последовательный коммуникационный интерфейс (USART) который обеспечивает совместимость по формату кадра с интерфейсом RS232. Согласование уровней описано выше.
3.4 Проектирование процедур вывода информации
Вывод данных производится на LCD индикатор. Управление индикатором осуществляется по трем сигнальным и восьми информационным линиям связи. Индикация заключается в записи кодов символов в соответствующие ячейки памяти LCD индикатора.
3.5 Проектирование процедуры Main()
Процедура Main это главная процедура программы с которой начинается выполнение. В данной процедуре необходимо вызвать процедуру инициализации, а затем необходимо перейти в бесконечный цикл опроса датчика, измерения и дешифрации величин, отображение данных выполняется по прерываниям таймера. На рисунке 12 приведен общий алгоритм работы устройства.
Рисунок 12 - Общий алгоритм работы устройства
4. Листинг программы
#include <msp430F135.h>
void vLCD_Silence(void);/*Состояние выводов "по умолчанию"*/
void vLCD_Init(void);/*Инициализация дисплея*/
void vLCD_Clear();/*Очистка дисплея*/
void vLCD_RetLeft();/*Перемещение курсора в левую позицию*/
void vLCD_EntryModeSet(char ID,char SH);/*Установка направления сдвига курсора
(ID=0/1 - влево/вправо) и разрешение сдвига дисплея (SH=1) при записи в DDRAM*/
void vLCD_OnOff(char D,char CB);/*Включает модуль (D=1) и выбирает тип курсора (см. даташит)*/
void vLCD_CurDispShift(char SC,char RL);/*Выполнияет сдвиг дисплея или курсора
(SC=0/1 - курсор/дисплей, RL=0/1 - влево/вправо)*/
void vLCD_FuncSet(char DL,char _N,char _F);/*Устанавливает разрядность интерфейса
(DL=0/1 - 4/8 бита), режим развертки строк (_N=0/1 - одна строка/две строки)
и размер символа (_F=0/1 - 5х8/5х10)*/
void vLCD_SetAddr(char ADD);/*Установка адреса для последующих операций и выбор области DDRAM*/
void vLCD_WriteData(char DATA);/*Запись данных в активную область*/
void vLCD_Delay(char a);/*Задержка на 0/1 - 40 мкс/1.95 мс */
/*Команды(0)/Данные(1)*/
void vRS(char set)
{
if(set)
P3OUT|=0x80;
else
P3OUT&=~0x80;
}
/*Синхронизация*/
void vEN(char set)
{
if(set)
P3OUT|=0x40;
else
P3OUT&=~0x40;
_NOP();
}
/*Запись в индикатор
RS - команды(0)/данные(1); Data - тело команды/данных*/
void vLCD_Write(char RS, char Data)
{
vRS(RS);
_NOP();
//_NOP();
P1OUT&=Data|0x0f;//Запись старшей тетрады.
vEN(1);
_NOP();
//_NOP();
vEN(0);
_NOP();
//_NOP();
P1OUT&=~0xf0;
P1OUT|=(Data<<4)&~0x0f;//Запись младшей тетрады.
_NOP();
//_NOP();
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();
}
Заключение
В данном курсовом проекте было разработано удаленное устройство индикации.
Использование внешнего кварцевого генератора обеспечивает высокую стабильность работы последовательного коммуникационного интерфейса (USART).
В ходе проектирования устройства были рассмотрены основные принципы построения устройств на микроконтроллерах MSP430 от Texas Instruments. А так же изучены аппаратные возможности данных микроконтроллеров.
Научились по описаниям работы или временным диаграммам функционирования устройств составлять алгоритмы тех или иных блоков программ.
В целом по разработанному курсовому проекту можно заметить, что использование микроконтроллеров MSP430 позволяет строить недорогие и производительные микроконтроллерные системы не использую внешнее периферийное оборудование (аналоговый компаратор, аппаратный тайме и др.).
Подобные документы
Разработка компьютерной системы для работы в дизайн-студии. Требования к компонентам компьютерной системы для использования ее в качестве дизайн-студии. Выбор процессора с учетом его производительности. Выбор материнской платы. Видеокарта и ее параметры.
реферат [1,3 M], добавлен 03.01.2009Типы оборудования, относящиеся к компьютерной технике. Состав системного блока и периферийные устройства. Классификация программного обеспечения. Требования, предъявляемые к системам управления базами данных. Задачи и этапы проектирования баз данных.
контрольная работа [4,1 M], добавлен 18.02.2014Выбор среды передачи данных согласно количеству рабочих мест. Математические расчеты и подтверждающие их результаты имитационного моделирования компьютерной сети. Выбор программного обеспечения и сетевого оборудования для модернизации компьютерной сети.
презентация [3,9 M], добавлен 17.12.2014Понятие электронных курсов. Описание программных и языковых средств разработки. Технология создания компьютерной обучающей системы, пакета вопросов в редакторе Excel. Разработка интерфейса ЭС. Организация диалога пользователя с экспертной системой.
дипломная работа [10,8 M], добавлен 20.06.2014Разработка программного обеспечения для автоматизации доступа, обработки, вывода информации об услугах автосервиса и его клиентах с использованием языка программирования С# и MySQL. Проектирование интерфейсов системы. Схема алгоритма работы программы.
курсовая работа [665,6 K], добавлен 02.04.2015Разработка алгоритма работы. Выбор и обоснование структурной схемы. Разработка функциональной схемы блока ввода и блока вывода. Проектирование принципиальной схемы блока ввода и блока вывода, расчет элементов. Разработка программного обеспечения.
курсовая работа [1,7 M], добавлен 25.12.2011Изучение архитектуры микроконтроллера AT89C52 фирмы Atmel. Разработка проектной схемы вывода рисунков на графический ЖК-индикатор на основе микроконтроллера. Составление программы по обработке и выводу на жидкокристаллический дисплей данных с LPT порта.
курсовая работа [76,1 K], добавлен 23.12.2012Проектирование устройства для приема 8-разрядного параллельного кода данных из микропроцессорной системы по локальной компьютерной шине ISA и их передачи во внешнее устройство по последовательному интерфейсу с заданной скоростью и анализом готовности.
контрольная работа [185,6 K], добавлен 19.11.2010Проектирование многопользовательской информационной системы для автоматизации работы диспетчера отдела грузоперевозок. Выбор среды программирования. Разработка программного обеспечения, таблиц базы данных АСОИ. Построение диаграмм классов и деятельности.
курсовая работа [298,1 K], добавлен 03.06.2014Разработка проекта и построение локальной компьютерной сети для предприятия OОO "ИнтерКом". Описание структурной схемы сети и организация её магистральной подсистемы. Определение порядка архивации данных в системы и расчет стоимости компьютерной сети.
курсовая работа [3,2 M], добавлен 24.09.2014