Микропроцессорный модуль управления цифровой магнитолой
Описание функциональных блоков контроллера. Анализ серий микроконтроллеров представленных на рынке и используемых в цифровых магнитолах: AVR, PIC, MK-51. Микровыключатели К1-К6, их функции. Разработка функционирования программы, схема устройства.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 28.12.2012 |
Размер файла | 483,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
СОДЕРЖАНИЕ
Введение
Техническое задание
Функциональная схема
Выбор управляющего контроллера
Разработка функционирования программы
Заключение
Приложение 1
ПРИЛОЖЕНИЕ 2
Введение
Развитие микроэлектроники и широкое применение её изделий в промышленном производстве, в устройствах и системах управления самыми разнообразными объектами и процессами является в настоящее время одним из основных направлений научно-технического прогресса.
Использование микроэлектронных средств в изделиях производственного и культурно-бытового назначения приводит не только к повышению технико-экономических показателей изделия (стоимости, потребляемой мощности, габаритных размеров) и позволяет многократно сократить сроки разработки и отодвинуть сроки «морального старения» изделий, но придает им принципиально новые потребительские качества (расширенные функциональные возможности, модифицируемость, адаптивность и т.д.).
В связи с бурным развитием микроэлектроники стали появляться все более сложные и более функциональные микроконтроллеры. Микроконтроллеры известных фирм-производителей окружают нас везде: в лифте, в таксофонных аппаратах, автомобильных сигнализациях, музыкальных центрах, телевизорах, всевозможных играх и другой как бытовой, так и промышленной технике.
Техническое задание
В данном курсовом проекте поставлена задача разработать микропроцессорный модуль управления цифровой магнитолой, обеспечивающий полнофункциональное управление тюнером с автоматическим поиском станций по обнаружению максимума несущей и запоминание 4 станций. Модуль должен управлять громкостью, уровнем НЧ и ВЧ, а так же декой магнитофона, а именно, воспроизведение, перемотка, поиск предшествующей песни, поиск следующей песни и команду стоп. А так же электронно-управляемый по шине I2C тембр-блок.
В качестве устройства отображения по заданию определено
использование активного, матричного, двух строчного жидко кристаллического индикатора, размерностью 12x2, что позволяет нам наблюдать на его экране все необходимые информационные сообщения о режиме работы и параметрах устройства.
Для управления используются восемь клавиш, две клавиши работают как энкодер, клавиша включения режима магнитола, клавиша ВЧ, НЧ, громкость. А так же клавиша выключения звука «mute».
1 - перемотка влево, стоп, поиск предшествующей песни, воспроизведение, поиск следующей песни, смена направления, перемотка вправо;
2 - AM\FM, поиск следующей станции.
Функциональная схема
Размещено на http://www.allbest.ru/
Рис. 1
Описание функциональных блоков:
МП - микропроцессор;
БТ - блок тюнера;
ЦАП - цифровой аналоговый преобразователь;
КС - компоратор сигнала;
БК - блок клавиш;
ЖКИ - жидкокристаллический индикатор;
БКМ - блок коммутации;
БР-1,2,3 - буфер регистров.
Выбор управляющего контроллера
Перед тем как выбрать контроллер, я решил провести анализ след серий микроконтроллеров представленных на рынке и используемых в аналогичных устройствах: AVR, PIC, MK-51.
Обзор PIC
Альтернативой является PIC 16С745. Все команды данного контроллера состоят из одного слова (14 бит шириной) и исполняются за один цикл (200 нс при 20 МГц), кроме команд перехода, которые выполняются за два цикла (400 нс). Контроллер имеет прерывание, срабатывающее от четырех источников, и восьмиуровневый аппаратный стек. Высокая нагрузочная способность (25 мА макс. втекающий ток, 20 мА макс. вытекающий ток) линий ввода/вывода упрощают внешние драйверы и, тем самым, уменьшается общая стоимость системы. Имеется возможность работы с тремя таймерами и каналом I2C. Но при всем этом цена более высокая, чем у 52 контроллера. Так же недостатком является однократно программируемое ПЗУ, что требует покупки более дорогого отладочного кристалла.
Краткий обзор AVR
AVR ядро базируется на усовершенствованной RISC архитектуре, с регистровым файлом быстрого доступа, содержащим 32 регистра общего назначения, непосредственно связанных с арифметико-логическим устройством (ALU), и мощной системой команд. За один тактовый цикл из регистрового файла извлекаются два операнда, выполняется команда и результат записывается в регистр назначения. Такая высокоэффективная архитектура обеспечивает производительность почти в десять раз большую, чем стандартные CISC микроконтроллеры. Одним из основных минусов является отсутствие аппаратной возможности использования функции деления. Ее необходимо прописывать программно, что влечет к риску переполнения ПЗУ.
Обзор семейства МК51
МК семейства МК-51 используют гарвардскую архитектуру: память программ (ПЗУ) и память данных (ОЗУ) имеют раздельное адресное пространство. И, как следствие, для обращения к ячейкам памяти разного типа должны быть использованы разные типы команд. Максимальный размер адресного пространства для каждого типа памяти составляет 64 Кбайта. Однако непосредственно на кристалле МК 8051 АН располагаются только 4 Кбайта ПЗУ и 128 байт ОЗУ. МК семейства MCS-51 имеют открытую архитектуру, т.е. позволяют подключать внешнюю память. Поэтому при необходимости, как память программ, так и память данных могут быть увеличены посредством подключения дополнительных микросхем памяти. МК-51 имеет четыре 8-разрядных параллельных порта ввода/вывода и два 16-разрядных программируемых таймера. В отличии от 51 контроллеры 52 серии имеет больший объем ОЗУ, 3 таймера, возможность работы по шине I2C, что позволяет подключить внешнее ПЗУ и достаточное количество портов (4Ч8).
Свой выбор я остановил на контроллере семейства МК51 AT89C51. Потому что у этого контроллера наиболее доступная цена при достаточном количестве портов, памяти и функций; архитектура данного контролера изучена в курсе лабораторных работ.
Параметры AT89C51:
Память программ - 4 Кбайта
Память данных - 128 байт
Выводы ввода/вывода - 32
16 битовые таймеры счётчики - 2
Источники прерываний - 6
Биты защиты - 3
Разработка функционирования программы
Перед началом разработки алгоритма работы программы необходимо продумать назначение клавиш и индикацию на ЖКИ дисплее.
При включении устройства в сеть происходит автоматическое включение радио тюнера. Автоматический поиск станций продолжается до тех пор, пока не найдется активная радиостанция. Громкость по умолчанию 25% от мощности УЗЧ. Громкость звучания отображается как V и 15 - единиц громкости по шкале от 0-60.
Индикация на ЖКИ будет выглядеть следующим образом:
_ |
T |
U |
N |
E |
R |
_ |
A |
M |
_ |
_ |
_ |
|
V |
1 |
5 |
Рисунок 1 - Индикация на ЖКИ
Для регулировки громкости используем энкодер подключенный к выводам 3 и 4 буфера регистров БК-3.
Для перехода в режим авто магнитолы нажимаем клавишу 7, для возврата в режим радиоприемника нажимаем клавишу 8.
_ |
M |
A |
G |
N |
I |
T |
O |
L |
A |
_ |
_ |
|
P |
L |
A |
Y |
V |
1 |
5 |
Рисунок 2 - Индикация на ЖКИ
Для включения режима CD плеера нажимаем клавишу 13. Индикация на дисплее показана на рисунке 3.
_ |
C |
D |
- |
P |
L |
A |
E |
R |
_ |
_ |
_ |
|
S |
T |
O |
P |
V |
1 |
5 |
Рисунок 3 - Индикация на ЖКИ
Клавиши 14, 17, 18 имеют многофункциональное назначение. В режиме авто магнитолы и CD плеера - это клавиши перемотка назад, играть \ остановить, перемотка вперед. В режиме радио НЧ \ ВЧ, AM \ FM, Выкл звук (MUTE).
Для того чтобы выводить на экран данные я решил объявить массив и в дальнейшем в цикле выполнять вывод массива с определёнными задержками между передачей каждого элемента на ЖК - индикатор. Чтобы экономить память, процедура вывода использует автоматический переход на вторую строчку с заполнением невидимых позиций нулями. Поэтому первая строчка заполняет первые 12 символ, вторая - вторые 12 символ.
Для удобства использования, большую часть флагов я задал как битовые, но некоторые флаги, например, направление перемотки, как байт, чтобы младшими битами каждой тетрады идёт перемотка и её направление. Так как всё подключено через буферный регистр, я запоминаю их состояния, текущее и предшествующее, чтобы выполнить сравнения.
Большая часть процедур вынесена в обработчик прерываний. В обработчике прерывания таймера задал предделитель равный 10 мс, что соответствует 20 Гц переполнения. Для того чтобы выполнить функцию счётчика времени подсчитали секунды, минуты, часы в диапазоне 60,60,24.
Для того, чтобы определить состояние датчиков, в обработчике таймера выполняется проверка текущего значения сейчас и в предыдущем такте таймера. Частота опроса 10 раз в секунду вполне достаточна. Если срабатывает в начале первый потом второй датчик, то производится прибавление, в противном случае производится вычитание.
Микровыключатели К1-К6 выполняют следующие функции:
К1 - прижатие головки;
К2 - подмотка вправо;
К3 - подмотка влево;
К4 - перемотка вправо;
К5 - перемотка влево;
К6 - автостоп
Для восприятия нажатия клавиатуры сигнал со специального клавиатурного шифратора К155ИВ3 заведён на прерывание EX1, что позволяет просто считав код нажатой клавиши, определить какое нужно выполнить действие: клавиша 0/1 переключает режимы. Далее идёт основная процедура (тело программы). В начале выполняется инициализация таймеров-счётчиков, далее разрешаются все требуемые прерывания, запускаются таймеры-счётчики, устанавливается в нужное состояние порты контроллера. После чего программа переходить в бесконечный цикл обслуживания, при этом на индикатор в цикле выводится время. Если не установлен режим сна, выполняется отображение режима тюнера или магнитофона при этом во второй строчке отображается частота настройки или метраж и режим работы магнитофона. Здесь же выполняется дополнительный блок функций: автоматический поиск предыдущей/ следующей станции или перемотка на предыдущую следующую песню. В таком режиме система функционирует всё время. Приращение часов, минут или убавление их производится в режиме сна по контролю флага sleep. Таким образом, обеспечивается полное управление всеми функциями простого музыкального центра, включающего в себя тюнер, CD плеер и магнитофон.
Заключение
В процессе выполнения курсового проекта по предмету «Микропроцессорные системы» я научился проектировать музыкальный центр под управление микропроцессорной системы на платформе МК 51.
Научился писать программу в среде Kiel для программирования системы управления музыкальным центром.
Полученные знания по предмету, несомненно, пригодятся в моей будущей карьерной деятельности.
Приложение 1
Схема устройства
Приложение 2
Листинг программы
микроконтроллер магнитола программа
#include <REG52.H> /* special function register declarations */
#include <stdio.h> /* prototype declarations for I/O functions */
#ifdef MONITOR51 /* Debugging with Monitor-51 needs */
char code reserve [3] _at_ 0x23; /* space for serial interrupt if */
#endif /* Stop Exection with Serial Intr. */
unsigned char dacnastr; //uroven U dla nastroiki priemnika
sbit bolch_mench=P3^3;//upravlen tranzistorami
sbit FM=P0^6;
sbit am=P0^7;
sbit upravl=P0^2;
sbit sda=0;
sbit scl=0;
sbit rs=0;
sbit e=0;
unsigned char takt, uprbyte;
unsigned char key,keyold;
unsigned char regim; //
unsigned char reginmagnit; //
unsigned char param[]={10,0,0}; // gromk bass & trable
unsigned char bas; //
unsigned char treble; //
unsigned char regimplai;
unsigned char unastr; //stupen nastr
unsigned char pp,i,j,n;
unsigned char parametr;
unsigned char line;//input line CD Magn,Radio
unsigned char sot,sek,min,chas;
unsigned char lcd1[]={0,0,0,0,0,0,0,0,0,0,0,0};
unsigned char lcd2[]={0,0,0,0,0,0,0,0,0,0,0,0};
unsigned char cd[]={0x5F,0x43,0x44,0x2D,0x50,0x4C,0x41,0x45,0x52, 0x5F,0x5F,0x5F};
unsigned char tuner[]={0x5F,0x54,0x55,0x4E,0x45,0x52,0x5F,0x,0x,0x,0x,0x};
unsigned char mag[]={0x5F,0x4D,0x41,0x47,0x4E,0x49,0x54,0x4F,0x4C, 0x41,0x5F,0x5F};
void delay (void )//timeout na 5mks)
{
unsigned char k;
for(k=0;k<4;k++);
}
void i2c (void )//timeout na 5mks)
{
for (n=0;n<4;n++)//peredat 4 parametra
{
scl=1;delay();sda=0;//start puls
pp=0xc0;//koman write parametr
for(j=0;j<8;j++)
{scl=0;delay();pp=pp>>1;sda=CY;delay();scl=1;delay();delay();}
if (n<3)
{
pp=param[n];if(n==1)pp=pp|0xc0;if(n==2)pp=pp|0x80;
for(j=0;j<8;j++)
{scl=0;delay();pp=pp>>1;sda=CY;delay();scl=1;delay();delay();}
}
else
{pp=line|0xe0;//set input line
for(j=0;j<8;j++)
{scl=0;delay();pp=pp>>1;sda=CY;delay();scl=1;delay();delay();}}
}
}
void 0int0 (void) interrupt 0 using 1
{
key=P1;
if(keyold==0)&&(key==1)
{
keyold=key; param[parametr]++; if (param[parametr]>=61)param[parametr]=60;
lcd[10]=param[parametr]/10+0x30;lcd[11]=param[parametr]%10+0x30;
}
if(keyold==1)&&(key==0)
{keyold=key;param[parametr]--; if (param[parametr]<=1)param[parametr]=1;
lcd[10]=param[parametr]/10+0x30;lcd[11]=param[parametr]%10+0x30;
}
if(keyold!=2)&&(key==2){line=0;for(j=0;j<12;j++)lcd1[j]= cd[j];}//CD line
if(keyold!=3)&&(key==3){line=1;for(j=0;j<12;j++)lcd1[j]= tuner[j];}//Tuner
if(keyold!=4)&&(key==4){line=2;for(j=0;j<12;j++)lcd1[j]= mag[j];} //Magnitofon
if (line==2)
{if(keyold!=5)&&(key==5){upravl=0;P2=0x10; upravl=1;}//peremotka left
if(keyold!=6)&&(key==6){
regimplai++;if (regimplai==3) regimplai=0;//stop
if (regimplai==1){upravl=0;P2=0x03; upravl=1;lcd[9]=0x3e;}//proigratpravo
if (regimplai==2){upravl=0;P2=0x05; upravl=1;lcd[9]=0x3e;}//proigratlevo
if (regimplai==0){upravl=0;P2=0x00; upravl=1;lcd[9]=0x3e;}//proigratpravo
if(keyold!=7)&&(key==7){upravl=0;P2=0x20; upravl=1;}//peremotka rich
}
if (line==0)
{
if(keyold!=5)&&(key==5){parametr=2;}//vibor treble
if(keyold!=6)&&(key==6){parametr=1;}//vibor bass
if(keyold!=6)&&(key==6){parametr=0;}//vibor bass
}
if (line==1) //upravlen tuner +nastorika
{
if(keyold==0)&&(key==1)
{keyold=key; unastr++;while(bolch_mench){unastr++; if (unastr>=255)unastr=254;}} //verner nastraivaet tuner
if(keyold==1)&&(key==0)
{keyold=key;unastr--;while(bolch_mench){unast--; if (unastr<=1)unastr=1;}}
if(keyold!=5)&&(key==5) { fm=1;am=0;}}//nastr FM diapazona
if(keyold!=6)&&(key==6){fm=0;am=1;}//vibor AM diapasona
if(keyold!=6)&&(key==7){fm=1;am=1;}//vibor FM2s diapazona
}
i2c();//zapis v regulator ustanov parametr
}
void timer0int (void) interrupt 1 using 1
{TL0=0xff; //delid dla chastoti 10000 mks - 10ms
TH0=0xb8;
if(++sot==100)//prohla sek
{
if(++sek==60)
{
sek=0;
if(++min==60)
{
min=0;
if (++chas==24) chas=0;
}
lcd2[1]=chas/10+0x30;lcd2[2]=chas%10+0x30;lcd2[3]=0x3a;
lcd2[4]=min/10+0x30;lcd2[5]=min%10+0x30;lcd2[6]=0x3a;
lcd2[7]=sek/10+0x30;lcd2[8]=sek%10+0x30;
}
}
}
void main (void)
void main (void) {
unsigned char i,p;
bit n1,n2;
/*------------------------------------------------
Setup the serial port for 9600 baud at 11.0592MHz.
------------------------------------------------*/
#ifndef MONITOR51
SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */
TMOD |= 0x21; /* TMOD: timer 1, mode 2, 8-bit reload */
TH1 = 0xfd; /* TH1: reload value for 9600 baud @ 11.0592MHz */
TR1 = 1; /* TR1: timer 1 run */
TR0 = 1;
TI = 1; /* TI: set TI to send first char of UART */
TI = 0;//set obrabot prerivanii
ET0 = 1;
EA = 1;
#endif
pp=0;
while (1)//osnovnoi cikl raboti
{
//out data lcd
e=0;rs=0;rw=0;P2=1;e=1;delay();delay();delay();e=0;delay();delay();
for(j=0;j<12;j++)
{rs=1;rw=0;P2=lcd1[j];e=1;delay();delay();delay();e=0;delay();delay();} //out 1
for(j=0;j<28;j++)
{rs=1;rw=0;P2=0x20;e=1;delay();delay();delay();e=0;delay();delay();} //out ---- do end string
for(j=0;j<12;j++)
{rs=1;rw=0;P2=lcd1[j];e=1;delay();delay();delay();e=0;delay();delay();} //out 2 string
}
for(j=0;j<255;j++) delay();
}
Размещено на Allbest.ru
Подобные документы
Описание основных функциональных блоков системы и выбор элементной базы. Схема электрическая принципиальная. Описание программы, алгоритм функционирования. Проверка работоспособности, листинг, моделирование. Функции работы с индикатором. Опрос клавиатуры.
курсовая работа [2,4 M], добавлен 21.03.2016Применение однокристального микроконтроллера в адаптере параллельного обмена. Связь с внешними устройствами. Структурная схема устройства и ее описание. Назначение отдельных функциональных блоков. Разработка принципиальной схемы и программы устройства.
курсовая работа [303,0 K], добавлен 06.01.2009Разработка функциональной и принципиальной схемы. Выбор управляющего контроллера. Описание МК PIC16F626, МК AVR, МК 51. Выбор элементной базы. Разработка управляющей программы. Описание алгоритма работы программы. Схема устройства, листинг программы.
курсовая работа [492,9 K], добавлен 28.12.2012Разработка устройства управления двухконфорочной электроплитой на базе микроконтроллера, описание функциональных действий. Структурная схема аппаратной части. Проектирование программного обеспечения. Описание алгоритма работы системы и программы.
курсовая работа [709,3 K], добавлен 22.12.2010Описание и технические характеристики объекта управления. Описание алгоритма функционирования промышленного робота. Описание цифровых характеристик габаритов и зоны действия. Определение используемых ресурсов и параметров инициализации микроконтроллера.
курсовая работа [685,9 K], добавлен 02.02.2016Описание функциональной схемы интеллектуального контроллера. Сравнительная характеристика выбранных устройств. Параметры электронных элементов микроконтроллера. Схема подключения к управляющей системе. Общий алгоритм функционирования системы управления.
курсовая работа [757,2 K], добавлен 26.12.2012Разработка вычислительного устройства для умножения двоичных чисел с фиксированной запятой, без знака, представленных в прямом коде. Алгоритм операции, структурная схема АЛУ, диаграмма управляющих сигналов, функциональная схема устройства управления.
контрольная работа [180,2 K], добавлен 01.10.2014Описание функциональной схемы контроллера системы отопления, обеспечивающего многопозиционный контроль температуры и управление ветками отопления и котлом. Разработка принципиальной схемы. Обоснование выбора. Алгоритм работы устройства. Листинг программы.
курсовая работа [1,1 M], добавлен 26.12.2012Устройство и назначение однокристальных микроконтроллеров, сферы их применения. Разработка контроллера для управления домашней метеостанцией: расчет принципиальной схемы и характеристика ее элементов, выбор датчиков. Описание программы управления.
курсовая работа [280,3 K], добавлен 28.12.2012Выбор манипулятора-указателя, микропроцессора, интерфейса подключения к ПК. Обзор используемых команд. Проектирование функциональной и электрической принципиальной схемы контроллера трекбола. Разработка алгоритма и программы функционирования системы.
курсовая работа [453,3 K], добавлен 22.10.2012