Програмування цифрового автомату

Автор: Пользователь скрыл имя, 17 Марта 2013 в 22:08, курсовая работа

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

Дана курсова робота виконується з метою більш поглибленого вивчення дисципліни «Мікроконтролери у вимірювальній техніці», набуття навичок самостійного вирішення поставлених задач, більш детального вивчення принципу роботи MCS-51 стенду EV8031, та вдосконалення знань, набутих під час виконання лабораторних робіт.
В курсовій роботі використовуються такі теоретичні відомості, як відомості про вбудований у стенд ЦАП, а також принцип роботи цифрового автомату, необхідні для кращого розуміння поставленої задачі та розроблення шляхів її реалізації на базі MCS-51 стенду EV8031; відомості про апаратні та програмні можливості використовуваного стенду EV8031 та мікроконтролера MCS-51.
В курсовій роботі використовується програмне середовище Keil uVision3.

Содержание

Вступ………………………………………………………………………….4
1. Теоретична частина:
1.1. Загальні відомості про цифро-аналоговий перетворювач……...…5
1.2. Мікроконтролер 8051…………………………………………….…..8
1.2.1. Програмна архітектура МК 8051……………………………..…..8
1.2.2. Структура внутрішньої пам’яті…………………………….....…10
1.2.3. Система переривань…………………………………….…….….15
1.3. Цифровий автомат…………………………………………….……..21
1.3.1. Що являє собою цифровий автомат……………………….....….21
1.3.2. Структурна схема цифрового автомату…………………..…......23
1.3.3. Синтез цифрового автомату……………………………..…..…..25
2. Практична частина:
2.1. Алгоритм програми для реалізації цифрового автомата………….26
2.2. Алгоритм для підпрограми обробки переривань…………………..28
2.3. Текст програми з коментарями…………………………………......29
Висновки………………………………………………………………...….33

Работа содержит 1 файл

КУРСОВА.doc

— 626.50 Кб (Скачать)

Аналіз і синтез комбінаційних  схем заснований на використанні певного  елементного базису. Також і будь-який складний автомат містить певний елементарний автоматний базис. Складний автомат, що має m станів, містить k автоматів  з меншим числом станів. Найпростіший автомат може мати лише два граничні стани. Такий автомат можна прийняти за елементарний базовий автомат. Всі елементарні автомати розрізняються по організації їх входів, тобто за їх реакцій на вхідні дії.

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

Базисний склад елементарних автоматів додатково розширюється числом входів і набором видів вхідних впливів.

Базисний автоматний набір може бути сформований різними  способами, але зазвичай роль базисного  набору виконують тригери типу SR, JK, D.Регістрові схеми представляють  собою набори з n елементарних автоматів, які мають 2n станів і не містять взагалі або містять найпростіші міжрозрядні зв'язки.

Обчислювальні пристрої виконують дискретні перетворення над числами певної розрядності  і певного обсягу, тому цифрові  автомати мають кінцеве число  станів і відносяться до класу кінцевих автоматів.Вся вхідна і вихідна інформація автоматів - двійково-закодована.Автомати бувають синхронні і асинхронні. Асинхронні автомати безпосередньо реагують на будь-яку зміна вхідного впливу; в результаті зміни їх станів (після впливів) порушуються всі ланцюжки взаємодії між елементарними автоматами. Тому синтез асинхронних автоматів через можливість виникнення гонок, змагань і помилкових перемикань досить ускладнений. З метою виключення подібних явищ і спрощення синтезу в обчислювальних пристроях використовуються в основному синхронні елементарні автомати, що містять входи синхронізації. З їх допомогою жорстко встановлюється послідовність взаємодії елементарних автоматів, і вибираються тільки ті лінії зв'язку, які повинні забезпечувати їх взаємозв'язок у певні тактові проміжки часу.

1.3.2 СТРУКТУРНА СХЕМА ЦИФРОВОГО АВТОМАТА

Типова структурна схема  керуючого автомата з «жорсткою» логікою показана на рис. 12. До складу схеми входять регістр кода операції, що є частиною регістра команд, лічильник тактів, дешифратор тактів і дешифратор кода операції, а також логічні схеми утворення керуючих функціональних сигналів.


 

 

 

 

 

 

 

 

 

 

 

 

Рис.12. Структурна схема цифрового автомата

На лічильник тактів поступають сигнали від блоку  синхросигналів, і лічильник з кожним сигналом міняє свій стан. Стани лічильника представляють собою номери тактів, що змінюються від 1 до n.

Дешифратор тактів формує на t-му виході одиничний сигнал при 1-му стані лічильника тактів, тобто  під час j-го такту.

Дешифратор кода операції виробляє одиничний сигнал на j-му виході, якщо використовується j-а команда.

Логічні схеми утворення  керуючих функціональних сигналів для  кожної команди збуджують формувачі  функціональних сигналів для виконання  потрібних в даному тракті мікрооперацій.

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

Серйозним недоліком  розглянутої схеми є однакове число трактів для всіх команд. Це потребує вирівнювання числа тактів виконання команд по найбільш «довгій» команді, що веде до непродуктивних витрат часу. Щоб усунути цей недолік, схеми будують з використанням декількох лічильників трактів.

Схема формування тактових сигналів (датчик тактових сигналів) може будуватися на основі використання регістра зсуву, за яким рухається одна 1 (регістр з «біжить одиницею»), що не вимагає використання дешифратора.

Побудова керуючих автоматів  з «жорсткою» логікою формалізується на основі інтерпретації мікропрограм, наприклад, на мові мікрооперацій або  у вигляді графа. За мікропрограмі будується відповідний керуючий автомат типу Мура або Милі.

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

 

1.3.3 СИНТЕЗ ЦИФРОВОГО АВТОМАТА

У мікрокоманд Y можна  об'єднати керуючі сигнали y, під  дією яких виконуються мікрооперації  в різних не пов'язаних між собою  блоках, а також керуючі сигнали y послідовність формування яких в процесі виконання алгоритму не змінюється. Алгоритм функціонування цифрового автомата представлений на рис. 13.


 

 

 

 

 

 

 

 

 

 

 

Рис.13. Алгоритм функціонування цифрового автомата в мікрокомандах

Мікрокоманда Y1 включає  керуючі сигнали y1, y2, y3.

Мікрокоманда Y2 включає  керуючий сигнал y4.

Мікрокоманда Y3 включає  керуючі сигнали y5, y6.

Мікрокоманда Y4 включає  керуючий сигнал y7.

Виконаємо розмітку алгоритму, при якій символами a0 позначимо початок і кінець алгоритму, символами a1, a2, a3, a4, позначимо операторні блоки.

Символи a0, a1, a2, a3, a4 відповідають станам цифрового автомата.

 

 

  1. Практична частина
    1. Алгоритм програми для реалізації цифрового автомата:

Для реалізації поставленої  задачі за допомогою мікроконтролера 8051 в середовищі Keil uVision3, необхідно виконати наступну послідовність дій:

  1. Виконуємо підключення спеціальних регістрів reg51.h для Keil;
  2. Визначаємо вказівники на індикатори, адресу молодших бітів ЦАПа і адреси для відправки команди включення плати розширення;
  3. Об’являємо змінні;
  4. У головній підпрограмі описуємо локальні змінні;
  5. Здаємо час протягом  якого буде тривати кожен заданий  сигнал;
  6. Присвоюємо змінній k значення g,приведеним за алгоритмом двійково-десяткового коду;
  7. Запускаємо таймер;
  8. Налаштовуємо амплітуду прямокутного сигналу ;
  9. Початок основної підпрограми: підключаємо плату  розширення, задаємо потрібні нам значення регістрів управління перериваннями та таймерами,задаємо сигнал у вигляді пили і у вигляді синусоїди.
  10. У безкінечному  циклі протягом 12 секунд виводимо пилкоподібний  сигнал,коли проходить 12 секунд,автоматично йде прямокутний  сигнал протягом 9 секунд,якщо була натиснута  кнопка, сигнал зміниться на синусоїдальний  і  буде тривати 6 секунд, якщо не була  натиснута  кнопка,то ЦАП вимикається на 7 секунд.

 

 

 

 

 

 

 

 

 

 

 

2.2 Алгоритми для підпрограм обробки переривань:

 

Переривання  INT0 

 

 

 

 

2.3 Текст програми з коментарями:

#include <reg51.h>

Підключення бібліотеки з описом регістрів МК 8051.

unsigned char xdata *DAC=0x8000;

unsigned char xdata *PRT=0x8003;

unsigned char xdata *HI=0xA000;

unsigned char xdata *LI=0xB000;

Об’явлення вказівника для роботи ЦАП, вказівника з іменем PRT для увімкнення паралельного приймача-передавача, що забезпечує роботу із платою розширення стенду, на якій розміщено ЦАП та вказівників на статичні індикатори.

bit FI0=0, PFI0;

unsigned char N=15, sig2[15]=0, sig1[15]=0, i, A=250;

unsigned int t=0, t1=0, t2=0;

Об’явлення змінних та масивів

void inter0() interrupt 0

Заголовок підпрограми-функції  обробки переривання INT0

{ FI0=1; }

Надання значення змінній FI0

void taimer0() interrupt 1

Початок функції, що має  викликатися при перериванні від таймера лічильника 0.

{ bit f;

unsigned char j, k, s1, m1, g;

Об’явлення змінних                                                                                                    

TR0=0;

Зупинка таймера 

TH0=0x0F;

TL0=0xFC;

Завантаження початкових значень, що реалізують часову затримку у 0,1 с

t++;

g=t;

Присвоєння значенню g заданого часу

if (t>=120)

{t1++;g=t1;

if (t1>=90)

{t2++; g=t2;  }}

Задання проміжків часу для кожного сигналу

j++;

if(j==10)

{k=g/10;s1=k/10; m1=k%10;k=(s1<<4)+m1;

Присвоєння змінній k значення g, переведеного за алгоритмом в двійково-десятковий код

*LI=k; j=0; }

Виведення значення k (секунд) на індикатор 

TR0=1;

Запуск таймера

 

if (A==250)

{f=1;}

if (A==50)

{f=0;}

if (f==1)

{A=A-10;}

if (f==0)

{A=A+10; }}

 

Підпрограма для плавної зміни амплітуди від мінімуму до максимуму та навпаки з використанням флага для прямокутного сигналу

void main ()

Початок основної програми

{ unsigned char dt;

Об’явлення змінної dt

float temp =0.6;

Виділення цілої частини

*PRT=0x80;

Підключення плати розширення

IE=0x83;

дозвіл переривань

TMOD=0x01;

включення таймерів та задання  іх режимів роботи

TH0=0x0F;

TL0=0xFC;

Завантаження початкових значень, що реалізують часову затримку у 0,1 с

TR0=1;

Запуск таймера

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

{ sig1[0]=0;

sig1[1]=2;

sig1[2]=4;

sig1[3]=8;

sig1[4]=16;

sig1[5]=32;

sig1[6]=64;

sig1[7]=126;

sig1[8]=148;

sig1[9]=170;

sig1[10]=192;

sig1[11]=210;

sig1[12]=220;

sig1[13]=225;

sig1[14]=0;

}

 Присвоєння елементам масиву значень, що відповідають окремим точкам пилкоподібного сигналу, який має виводитися на ЦАП.

while(1)

Початок нескінченного  циклу

{if (t<100)

{*HI=0x01;

Виведення на індикатор  одиниці

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

{*DAC=sig1[i]; }  

Циклічне поелементне  виведення пилкоподібного сигналу на ЦАП. 

PFI0=FI0; }        

if ((t1<90)&&(t>=120))

Задання умов для виведення наступного сигналу

{*HI=0x02;

Виведення на індикатор  двійки

dt=N/2;

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

{if(i<dt)

{*DAC=0;}

if(i>=dt)

{*DAC=A;}} }}     

Циклічне поелементне  виведення прямокутного сигналу на ЦАП

if ((PFI0==1)&&(t>=120)&&(t1>=90))

Задання умов для виведення наступного сигналу

{if (t2<60)

{*HI=0x03;

Виведення на індикатор  двійки

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

{*DAC=sig1[i]; }}    

Циклічне поелементне  виведення пилкоподібного сигналу на ЦАП. 

if(t2>=60)

{t2=0; t=0; t1=0;

Занулення часових змінних

PFI0=0;} } 

if ((PFI0==0)&&(t>=120)&&(t1>=90))

Задання умов для виведення наступного сигналу

{if (t2<70)

{*HI=0x03;

Виведення на індикатор  трійки    

{t2=0;t=0;t1=0;}} }}

Занулення часових змінних


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Висновок

Під час виконання  курсового проекту ми детальніше ознайомились з будовою, функціями, властивостями, організацією пам’яті, системою переривань та принципами роботи мікроконтролера 8051, набули навичок розроблення програм мовою СІ, що реалізують поставлену задачу розробки цифрового автомату сигналів прямокутної та синусоїдальної форми, навчилися самостійно складати алгоритми і тексти програм для їх дослідження в середовищі Keil uVision3.

В результаті поставлена задача виконана: за допомогою  MCS-51 стенду EV8031 ми змогли побачити виведення на осцилограф необхідних сигналів, зміну їх типу при викликанні переривання INT0 .

 


Информация о работе Програмування цифрового автомату