3. Проектування програмного забезпечення мікропроцесора

Розробку програми для мікроконтролеру варто почати з алгорітму його функціонування. Програма повинна послідовно виконувати наступні задачі:

-  ініціалізувати необхідні у схемі вузли;

-  знімати результати перетворення АЦП;

-  перетворювати данні з АЦП;

-  видавати оброблені данні на РКІ;


3.1 Проектування процедури ініціалізації апаратури мікропроцесора

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

- порти вводу/виводу;

- таймер-лічильник 0;

- АЦП;

- РКІ;

Функція налаштування портів, АЦП та таймеру:

void init_mega (void)

{

DDRC = 0xFF; // порт С на вивід

DDRB = 0xFF; // порт В на вивід

DDRD = 0xFF; // порт D на вивід

ACSR = 0x80; // вимкнення компаратору

ADMUX = ADC_VREF_TYPE; // зовнішнє джерело опорної напруги, вхід АЦП – порт А, вхід 0

ADCSRA = 0xEE; // АЦП – вкл, почати перетворення, режим переривання від Т/Л0, дозвіл переривання від АЦП

SFIOR = 0x80; // переривання по переповненню Т/Л0

#asm("cli") // заборона усіх переривань

TIMSK |= (1 << TOIE0); // дозвіл переривань від Т/Л0

TCNT0=Tmr0_Reload; // завантаження початкового значення

TCCR0=PrescalerTmr0; // обрання частоти тактового сигналу

}


Функція налаштування роботи РКІ

void lcd_init (void)

Ця функція використана із стандартного include – файлу LCD.h компілятору. Її повне описання можна переглянути у компіляторі. Вона налаштовує РКІ на режим роботи з 4 лініями даних, без включення курсору, відображення символів ввімкнено, режим роботи з двома строками. Керуюча послідовність:

_lcd_init_write(0x30);

_long_delay();

_lcd_init_write(0x30);

_long_delay();

_lcd_init_write(0x30);

_long_delay();

_lcd_init_write(0x20);

_long_delay();

_lcd_write_data(0x28);

_long_delay();

_lcd_write_data(0x04);

_long_delay();

_lcd_write_data(0x85);

_long_delay();

3.2 Проектування процедур обробки переривань

Обробка процедури переривань досить проста:

- переривання від Т/Л0

interrupt [TIM0_OVF] void TIMER0_OVF_interrupt(void)

{

TCNT0=Tmr0_Reload; // перезавантаження Т/Л0

TMR0Flag = 1; // встановлення флагу переривання Т/Л0

SETBIT(ADCSRA,6); // запуск АЦП

}

-  переривання від АЦП

interrupt [ADC_INT] void adc_isr(void)

{

ADCFlag = 1; // встановлення флагу переривання АЦП

}

3.3 Проектування процедур вводу інформації

Процедура вводу інформації полягає у об’яві змінної та присвоєнні їй значення 16 бітного регістру доступу до АЦП ADCW.

int A;

A = ADCW;

3.4 Проектування процедур виводу інформації

Вивід інформації полягає у виводі даних після обробки на РКІ. Ця процедура виконується за допомогою функцій, які входять до бібліотеки LCD.lib та файлу LCD.h

lcd_gotoxy(2,0); //Встановлення адреси знакомісця на 2 позицію у першій строці

lcd_putsf("Current, A:"); //Вивід строки

lcd_gotoxy(5,1); // Встановлення адреси знакомісця на 5 позицію у другій строці

lcd_putchar(a1 + 0x30); // Вивід першої значущої цифри результату із зміщенням

lcd_gotoxy(6,1); // Встановлення адреси знакомісця на 6 позицію у другій строці

lcd_putchar(0x2C); // Вивід символу коми

lcd_gotoxy(7,1); // Встановлення адреси знакомісця на 7 позицію у другій строці

lcd_putchar(a2 + 0x30); // Вивід другої значущої цифри результату із зміщенням

lcd_gotoxy(8,1); // Встановлення адреси знакомісця на 8 позицію у другій строці

lcd_putchar(a3 + 0x30); // Вивід третьої значущої цифри результату із зміщенням

3.5 Проектування процедури перетворення інформації

Для виводу інформації на дисплей її необхідно обробити. АЦП має 10 розрядів, тобто він може перетворювати вимірювану величину з кроком 1/1023*Uref. Для простоти перетворень задамось, що максимальне значення нашої змінної яка буде зберігати значення після перетворення буде дорівнювати 2048. Таким чином ми отримуємо формулу для перетворення:

Current = 2 * ADC

Current = ((long)2 * (long)A;

Максимальне значення АЦП – 1023 буде відповідати значенню 2048 нашої змінної.

Тепер нам необхідно перекодувати значення змінної Current до BCD формату. Це можна реалізувати за допомогою функцій:


a1 = a/1000;

a2 = (a - (a1 * 1000))/100;

a3 = (a - (a1 * 1000) - (a2 * 100))/10;

a4 = (a -(a1 * 1000) - (a2 * 100) - (a3 * 10));

де а – вхідна змінна типу int;

а1 – тисячі;

а2 – сотні;

а3 – десятки;

а4 – залишок;


Информация о работе «Система вимірника струмів»
Раздел: Коммуникации и связь
Количество знаков с пробелами: 20027
Количество таблиц: 0
Количество изображений: 15

Похожие работы

Скачать
41792
1
5

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

Скачать
90637
12
4

... ) Вимірник відстані до місця пошкодження кабелю (ЦР0200, Щ4120) Амперметри, вольтметри (аналогові, кутові) Тестер (ЭА 0300-3, ЭВ 0300-3)   Аналіз техніко - економічних показників роботи підприємства. ВАТ Уманський завод "Мегомметр" здійснює облік готової продукції за фактичною собівартістю. Реалізація продукції (робіт, послуг) і її виручка враховується при формуванні фінансових результатів ...

Скачать
11711
1
1

... приладів. 2. РОЗРАХУНКОВА ЧАСТИНА 2.1 Вихідні данні Ном. варіанту Тип приладу Струм, мкА Внутр. R, Ом Диод R1, Ом R2, Ом 25 М592М 250 600 Д9Б 800 11 2.2 Завдання Виконати синтез багатомежового електровимірювального приладу, призначеного для виміру: -  постійної напруги на межах 3; 6; 15; 60; 150; 300 В; -  постійного струму на межах 0.06; 0.6; 6; 60; 600 мА; -  змі ...

Скачать
31848
1
0

... і питання і ідеальні відповіді на них зведені в таблицю 1. Пункти в таблиці 1 і в древі рішення нерозривно зв'язані і є засланнями один на одного. Висновок: Урок креативного типу, заснований на методі евристичних питань, розглянуті в даному дидактичному проекті, на мою думку, неоднозначні. З одного боку вони дозволяють розвинути у учнів розвивати творчий підхід до рішення будь-якого питання, у ...

0 комментариев


Наверх