Спеціалізована управляюча ЕОМ

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 20.11.2011
Размер файла 46,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

ЗМІСТ

ПЕРЕЛІК СКОРОЧЕНЬ ТА УМОВНИХ ПОЗНАЧЕНЬ

ВСТУП

1 ВИБІР І ОБГРУНТУВАННЯ СТРУКТУРНОЇ СХЕМИ

1.1 Мікропроцесорний блок

1.2 Блок введення аналогових даних

1.3 Блок виведення аналогових даних

1.4 Блок введення-виведення дискретних даних

1.5 Блок відображення інформації

2 ПРОЕКТУВАННЯ І ОПИС ПРИНЦИПОВОЇ ЕЛЕКТРИЧНОЇ СХЕМИ ПРИСТРОЮ

3 ОПИС РОЗРОБЛЕНОГО ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ

ДОДАТОК А Пристрій збору, обробки та відображення інформації

Схема електрична принципова

ДОДАТОК Б Пристрій збору, обробки та відображення інформації

Блок-схема алгоритму

ДОДАТОК В Пристрій збору, обробки та відображення інформації

Лістинг програми

ПЕРЕЛІК СКОРОЧЕНЬ ТА УМОВНИХ ПОЗНАЧЕНЬ

АЦП - аналого-цифровий перетворювач

БВАД - блок виведення аналогових даних

БВВАД - блок введення аналогових даних

БВВДД ? блок введення дискретних даних

БВДД - блок виведення дискретних даних

БВІ - блок відображення інформації

ВІС - велика інтегральна схема

ДОН - джерело опорної напруги

ЕОМ - електронно-обчислювальна машина

МКБ - мікроконтролерний блок

ОЗП - оперативно запам'ятовуючий пристрій

ПЗП - постійний запам'ятовуючий пристрій

ЦАП - цифро-аналоговий перетворювач

ВСТУП

Мікроконтролером називається спеціалізована управляюча ЕОМ для роботи в локальних і розподілених системах управління в реальному часі у відповідності з фіксованим набором робочих програм, які розміщуються в ПЗП

У даний час відбувається «зближення» структур звичайних мікроконтролерів і цифрових сигнальних процесорів (DSP - Digital Signal Processors). Так, у звичайні мікроконтролери інтегрують модулі швидких АЦП, модулі швидкісної арифметики і т.п., а DSP оснащують додатковими можливостями, характерними для керуючих мікроконтролерів, наприклад, розширюють периферію, додають «бітові» команди для роботи з портами і т.п. Іншими словами, мікроконтролер «народжується» ще раз, але в новій якості - на основі DSP.

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

1 ВИБІР І ОБГРУНТУВАННЯ СТРУКТУРНОЇ СХЕМИ, ЩО ПРОЕКТУЄТЬСЯ

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

Для управління процесом перетворення даних і необхідних обчислень до складу проектованого пристрою повинен в обов'язковому порядку входити мікропроцесорний (мікроконтролерний) блок (МБ).

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

1.1 Мікропроцесорний блок

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

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

Найдоступніші та найдешевші на вітчизняному ринку виявилися АVR-мікроконтролери, які володіють необхідною функціональністю і ресурсами для розв'язання поставленої задачі [1,9].

AVR ? найширша виробнича лінія серед інших флеш-мікроконтролерів корпорації Atmel. Atmel представила перший 8-розрядний флеш-мікроконтролер в 1993 році і з тих пір безперервно удосконалює технологію. Прогрес даної технології спостерігався в зниженні питомого енергоспоживання (мА/МГц), розширення діапазону живлячої напруги (до 1.8 В) для продовження ресурсу батарейних систем, збільшенні швидкодії до 20 млн. операцій в секунду, вбудовуванням реально-часових емуляторів і відладчиків, реалізації функції самопрограмування, вдосконаленні і розширенні кількості периферійних модулів, вбудовуванні спеціалізованих пристроїв (радіочастотний передавач, USB-контролер, драйвер РКІ, програмована логіка, контролер DVD, пристрої захисту даних) і ін.

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

Іншою особливістю AVR-микроконтролерів, яка сприяла їх популяризації, це використання RISC-архітектури, яка характеризуються потужним набором інструкцій, більшість яких виконуються за один машинний цикл. Це означає, що при рівній частоті тактового генератора вони забезпечують продуктивність в 12 (6) разів більше продуктивності попередніх мікроконтроллерів на основі CISC-архитектури (наприклад, MCS51). З іншого боку, в рамках одного застосування із заданою швидкодією, AVR-мікроконтролер може тактуватися в 12 (6) разів меншою тактовою частотою, забезпечуючи рівну швидкодію, але при цьому споживаючи набагато меншу потужність. Таким чином, AVR-мікроконтролери представляють ширші можливості по оптимізації продуктивність/енерго-споживання, що особливо важливе при розробці додатків з батарейним живленням.

Мікроконтролери забезпечують продуктивність до 20 млн. операцій в секунду і підтримують флэш-память програм різної ємності: 1… 256 кбайт. AVR-архітектура оптимізована під мову високого рівня Сі, а більшість представників сімейства megaAVR містять 8-канальний 10-розрядний АЦП, а також сумісний з IEEE 1149.1 інтерфейс JTAG або debugWIRE для вбудованої відладки. Крім того, всі мікроконтролери megaAVR з флеш-пам'ятю ємністю 16 кбайт і більш можуть програмуватися через інтерфейс JTAG.

Для реалізації заданого пристрою збору, обробки та відображення інформації обираємо AVR-мікроконтролер ATmega8535. З його вбудованої периферії передбачається використати порти вводу/виводу I/O , таймери-лічильники T/C0,Т/С1, аналого-цифровий перетворювач ADC та модуль послідовного інтерфейсу SPI.

програмований ключ доступу до програм та пам'яті даних.

Периферія ATmega8535:

? два 8-бітових таймера / лічильника з програмованим переддільником і режимом порівняння;

? один 16-бітний таймер / лічильник з програмованим переддільником, режимом порівняння та захоплення;

? лічильник реального часу з програмованим генератором;

? чотири ШІМ генератора;

? 8 канальний, 10 - бітний АЦП, 8 простих уніполярних входи;

? байт орієнтований двопровідний інтерфейс TWI (I2C);

? програмований послідовний USART;

? послідовний переферійний інтерфейс Master / Slave SPI;

? вбудований аналоговий компаратор;

? програмований сторожовий таймер Watchdog з генераторами, що перемикаються.

Спеціальні функції мікроконтролера:

? Reset при вмиканні і зниженні напруги живлення;

? зовнішні і внутрішні джерела переривань;

? внутрішній калібрований RC генератор ;

? шість режимів енергозбереження: Idle, придушення шуму АЦП, економічний, вимикання , очікування і розширений режим очікування.

Обираємо найбільш 40 - вивідний корпус PDIP.

Мікроконтролер має 32 програмованих входи-виходи. Робоча напруга живлення: від 2.7 в до 5.5 В для ATmega8535L і від 4.5 В до 5.5 В для ATmega8535. Робоча тактова частота: 0 - 8 МГц для ATmega8535L і 0-16 МГц для ATmega8535. Обираємо ATmega8535.

Такий мікроконтролер не потребує зовнішньої пам'яті програм чи зовнішньої оперативної пам'яті, а також має гарну швидкодію без зовнішнього резонатора, внутрішній тактовий RC-генератор забезпечує продуктивність до 8 мільйонів операцій в секунду.

1.2 Блок введення аналогових даних

Блок введення аналогових даних (БВАД) згідно з технічним завданям повинен забезпечувати періодичне перетворення вхідних аналогових сигналів в цифровий код і передачу його в мікропроцесорний блок.

Вказану задачу можна вирішити двома шляхами. Перший ? припускає використання Р-аналого-цифрових перетворювачів (Р - число аналогових сигналів). Другий - застосування одного аналого-цифрового перетворювача (АЦП), який послідовно перетворює вхідні аналогові сигнали в цифровий код.

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

Структура блоку введення аналогових даних і його інтерфейс залежать від кількох чинників: вид вхідної аналогової величини (напруга чи струм), тип давача (однофазний чи диференціальний), динамічний діапазон можливих значень цієї величини, тип АЦП і аналогового комутатора. У переважній більшості випадків вхідною величиною АЦП служить напруга в діапазоні 5 В…+5 В, максимум 10 В…+10 В. Якщо фактичний діапазон вхідної напруги від давача перевищує ці межі, необхідно використовувати дільник сигналу. У випадку вхідних сигналів малого рівня (менше 0,1 В… 1 В) з метою зменшення можливої похибки їх обробки доцільно застосувати попереднє підсилення сигналів точним підсилювачем з нормованим коефіцієнтом перетворення. У випадку подачі інформації від давача у вигляді диференціального сигналу слід передбачити його перетворення до однофазного сигналу за допомогою відповідних електричних схем.

При виборі АЦП необхідно виходити, в першу чергу з заданої максимально припустимої відносної похибки ? перетворення і необхідного періоду Т комутації. Число nАЦП розрядів АЦП, яке гарантує задану похибку ?, визначається співвідношенням:

nАЦП? - log2? = -3,33 lg?.

В нашому випадку ? =0,03, тоді

nАЦП ? - 3.33 lg0,008 = 6,98.

Приймаємо найближче більше ціле число nАЦП=8.

Далі визначаємо максимально допустимий час перетворення tпр в АЦП аналогового сигналу в цифровий код. В залежності від заданого періоду Т комутації, числа давачів Р він може бути оцінений величиною

Виходячи зі знайдених nАЦП і tпр, можна підібрати АЦП. Внутрішній АЦП мікроконтролера не достатній за швидкодією. Оскільки вхідний сигнал до 3 В, але АЦП має розрядність 8 біт, то для підтримки точності, можна не використовувати підсилення чи окрему опорну напругу. Нашим вимогам задовольнятиме АЦП від фірми Analog Devices AD7478 (рисунок 1.2.1) , який має наступні характеристики:

Встановлення сигналу логічного нуля на виводі !CS викликає активізацію мікросхеми та ініціює початок перетворення. Стан логічного нуля присутній на протязі передачі двох байт до мікроконтролера. Чотири перші та чотири останні біти не є інформаційними і повинні відкидатися. АЦП є підпорядкованим (slave) периферійним пристроєм протоколу SPI. Сигнал SDATA є цифровим виходом інтерфейсу SPI даного АЦП, а SCLK є тактовим входом для синхроімпульсів ведучого (master) пристрою, в даному випадку синхронізацію передачі виконує мікроконтролер, що є приймачем результату перетворення.

Після підбору АЦП слід перейти до вибору аналогового комутатора. Як комутатори доцільно використати мікросхеми того ж виробника і технології, які володіють електричною сумісністю.

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

В нашому випадку можна використати 16-ти канальний комутатор ADG706 від Analog Devices. Він теж підтримує однополярну напругу живлення 5 В, та аналоговий сигнал на кожному вході в межах напруги живлення аналогового комутатора. Час перемикання становить 40нс. Схема вмикання мікросхеми ADG706

Вивід дозволу перемикання входу (EN) зручно замкнути з виводом GND так як використовується єдина мікросхема аналогового комутатора і адресні лінії зв'язку з мікроконтролером не несуть додаткового функціонального призначення.

Внутрішній опір ключа комутатора у відкритому стані становить 0,5…2,5 Ом.

1.3 Блок виведення аналогових даних

Для виведення аналогових даних, що знаходяться в цифровому вигляді в пам'яті контролера, необхідно використати цифро-аналогове перетворення.

Більш гнучким варіантом є використання зовнішнього ЦАП. Найзручнішим варіантом зовнішнього ЦАП є мікросхеми з послідовним інтерфейсом SPI чи I2C. Досить недорогим і простим є швидкодіючий 8-ми бітовий ЦАП, який в якості зразкової напруги використовує напругу живлення.

Протокол I2C легко конфігурується та реалізовується програмно, тому можна в якості службових виводів протоколу І2С використати будь-які вільні виводи мікроконтролера, що дуже зручно, особливо в нашому випадку, коли вже зайнятий один апаратний SPI. Протокол SPI буває і програмний, проте він сильно навантажує мікроконтролер [4,5].

Виходячи з вище перелічених суджень, обираємо ЦАП AD5301(від фірми Analog Devices, що має I2С інтерфейс, розрядність 8 біт, час перетворення 10 мкс.

Мікроконтролер в цьому випадку буде ведучим, а ЦАП веденим пристроєм.

Згідно технічної документації адресний байт для AD5301 складається з ідентифікатору ЦАП (000110) , адреси чіпу(0/1), та режиму читання/запис (0/1).

Таким чином після формування умови “старт” мікроконтролер формує адресний байт 00011000. Далі передача старшого і молодшого байтів слова, де перші та останні чотири біти не є інформаційними, і умова “cтоп”.

1.4 Блок введення-виведення дискретних даних

Для введення-виведення дискретних даних використовуємо порти вводу-виводу мікроконтролера [9].

Кожен порт мікроконтролера складається з 8-ми виводів, через які мікроконтролер може здійснювати прийом і передачу цифрових сигналів. Завдання прямої передачі даних через будь-який контакт вводу/виводу може бути виконане програмно у будь-який момент часу.Вихідні буфери всіх портів, маючи симетричні характеристики навантажень, забезпечують високу навантажувальну здатність при будь-якому рівні сигналу. Навантажувальної здатності вистачає для безпосереднього управління світлодіодними індикаторами.

Вхідні буфери всіх виводів побудовані за схемою тригера Шмітта. Для всіх входів є можливість підключення внутрішнього підтягуючого резистора між входом і шиною живлення VCC.

Відмінною особливістю портів мікроконтролерів сімейства Mega (як і всіх мікроконтроллерів AVR) при використанні їх як цифрових портів вводу/виводу загального призначення є реалізація дійсної функціональності “читання/модифікація/запис”. Завдяки цьому можна виконувати операції над будь-яким виводом (за допомогою команд SBI і CBI), не впливаючи на інші виводи порту. Це відноситься до зміни режиму роботи контакту вводу/виводу, до зміни стану вихідного буфера (для виходів) і до зміни стану внутрішнього підтягуючого резистора (для входів).

Звернення до портів здійснюється через регістри вводу/виводу. Під кожен порт в адресному просторі вводу/виводу зарезервовано по 3 адреси, по яких розміщені наступні регістри: регістр даних порту PORTx, регістр напряму даних DDRx і регістр виводів порту PINx. Дійсні назви регістрів виходять підстановкою назви порту замість символа “х”. Відповідно, регістри порту А називаються PORTA, DDRA, PINA, порту В - PORTB, DDRB, PINB і так далі Оскільки за допомогою регістрів PINx здійснюється доступ до фізичних значень сигналів на виводах порту, вони доступні лише для читання, тоді як останні два регістри доступні і для читання, і для запису.

Кожному виводу порту відповідають три біти регістрів вводу/виводу: PORTxn (регістр PORTx), DDxn (регістр DDRx) і PINxn (регістр PINx). Дійсні назви бітів регістрів виходять підстановкою назви порту замість символу “х” і номера біта замість символу “n”. Порядковий номер виводу порту відповідає порядковому номеру біта регістрів цього порту. Тому, якщо розрядність порту менше восьми, в регістрах порту використовується відповідне число молодших бітів. Незадіяні старші біти регістрів доступні лише для читання завжди містять 0.

Біт DDxn регістра DDx визначає напрям передачі даних через контакт вводу/виводу Якщо цей біт встановлений в 1, то n-й вивод порту є виходом, якщо ж скинутий в 0 - входом.

Біт PORTxn регістра PORTx виконує подвійну функцію. Якщо вивід функціонує як вихід (DDxn= 1), то цей біт визначає стан виводу порту. Якщо біт встановлений в 1, на виводі встановлюється напруга високого рівня.

Якщо біт скинутий в 0, на виводі встановлюється напруга низького рівня. Якщо ж вивід функціонує як вхід (DDxn = 0), то біт РОRТхn визначає стан внутрішнього підтягуючого резистора для даного виводу. При установці біта РОRТхn в 1 підтягуючий резистор підключається між виводом мікроконтролера і лінією живлення .

Взагалі кажучи, управління підтягуючими резисторами у всіх мікроконтролерах сімейства здійснюється на двох рівнях. Загальне управління (для всіх виводів портів) здійснюється бітом PUD регістра спеціальних функцій SFIOR або регістра управління мікроконтролера MCUCR (залежно від моделі). Якщо біт PUD скинутий в 0 (початковий стан), то стан підтягуючих резисторів визначатиметься станом бітів РОRТхп для кожного входу порту. Якщо ж біт PUD встановлений в 1, що підтягуючі резистори відключаються від всіх виводів ікроконтролера.

При перемиканні виводу між третім станом (DDxn = 0, PORTxn = 0) і станом високого рівня відбувається перехід через один з проміжних станів: або включається підтягуючий резистор (DDxn = 0, PORTxn = 1), або вихід перемикається в стан низького рівня (DDxn = 1, PORTxn = 0). Найбільш використовуваним є, як правило, перший варіант, оскільки для високоімпедансних систем байдуже, яким чином формується високий рівень. Якщо в якому-небудь випадку це не підходить, користувач може відключити підтягуючі резистори від всіх портів установкою біта PUD в 1.Аналогічна ситуація виникає і при перемиканні між станом з включеним підтягуючим резистором (DDxn = 0, РОКТхп = 1) і станом низького рівня (DDxn = 1, PORTxn = 0). В цьому випадку проміжним станом є або стан високоімпедансу (DDxn = 0, PORTxn = 0), або стан високого рівня (DDxn = 1, РОRТхn = 1).

Стан виводу мікроконтролера (незалежно від установок біта DDxn) може бути отримане шляхом читання біта PINxn регістра PINx При цьому слід пам'ятати, що між дійсною зміною сигналу на виводі і зміною біта PINxn існує затримка.

Ця затримка вноситься вузлом синхронізації. Значення сигналу на виводі мікроконтролера фіксується тригером-клямкою при низькому рівні тактового сигналу і переписується потім в біт PINxn за наростаючим фронтом тактового сигналу. Відповідно, величина затримки може складати від 0,5 до 1,5 періодів системного тактового. З цієї ж причини між операціями зміни і повторного читання станів виводу необхідно вставляти команду NOP

. Оскільки команда OUT встановлює сигнал «SYNC LATCH» в 1 за позитивним фронтом тактового сигналу, затримка в цьому випадку дорівнює одному періоду тактового сигналу.

1.5 Блок відображення інформації

Останніми роками отримали розповсюдження пристрої цифрової індикації з розширеними функціональними можливостями. Можна відзначити, наприклад, багаторозрядні символьні та графічні пристрої виведення з вбудованим спеціалізованим контролером. Подібні пристрої реалізують необхідні часові діаграми сигналів, логіку обміну командами і даними та інші функції у форматі, прозорому для програміста або розробника мікроконтролерної техніки. Для передачі даних знаходять застосування як паралельний (по 4 або 8 бітів), так і послідовний інтерфейс. До числа популярних пристроїв цифрової індикації відносяться рідкокристалічні індикатори з вбудованими контролерами, які випускаються багатьма фірмами, серед яких Bolymin, Hamlin, Crystalloid, Varitronix, Microtips. До складу подібних індикаторів входить мікроконтролер типу HD44780, або сумісні з ним вироби фірм Hitachi, Epson, Toshiba, Philips, Sunlike та інших. Подібний контролер виконує функції управління точками (сегментами) індикатора, реалізує часові діаграми сигналів на електродах індикатора, виконує інтерфейсні функції по прийому даних з мікроконтролера. Подібний індикатор - це невелика (розміром в кілька сантиметрів) друкована плата, на якій змонтований рідкокристалічний індикатор, контролер та інші компоненти.

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

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

Тому обираємо недорогий однорядковий 16-символьний рідкокристалічний дисплей BC1601B від фірми Sunlike.

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

Три виводи LCD призначені для подачі напруги живлення (VSS, VDD) і напруги зміщення (V0), яке управляє контрастністю дисплея.

Узагальнена структурна схема LCD

Виводи DB0 ... DB7 використовуються для організації мультиплексованих шини «команди / дані». На виводи RS, R/W, Е мікроконтроллер AVR виставляє керуючі сигнали. За допомогою сигналу на лінії RS мікроконтроллер повідомляє контролеру LCD про те, що саме передається по шині: команда або дані. Якщо RS = 0, адресується регістр команд, якщо RS = 1 ? регістр даних.

Дані через регістр даних, в залежності від поточного режиму, можуть міститися (або прочитуватися) в відеопам'ять (DDRAM) або в ОЗУ знакогенератора (CGRAM) за поточним адресою.

Інформація, яка потрапляє в регістр команд, інтерпретується пристроєм виконання команд як керуюча послідовність. Прочитання регістра команд повертає в семи молодших бітах поточне значення лічильника адреси (АС), а в старшому розряді - прапор зайнятості (BE).

Сигнал на лініі Е є стробом, що супроводжує сигнали на шині «команди / дані». Запис інформації в LCD відбувається по спаду цього сигналу.

Потенціал на керуючому виводі R/W задає напрямок передачі даних: запис в RAM LCD (R/W = 0) або зчитування звідти (R/W = 1).

Для випадку, коли мікроконтролер має обмежену кількість ліній вводу/виводу, передбачений другий варіант підключення LCD з використанням 4-бітної шини «команди / дані». При цьому кожен байт даних передається по лініях DB4 ... DB7 послідовно двома тетрадами, починаючи зі старшої.

Контролер LCD після прийому байта команди або байт даних вимагає деякого часу для обробки отриманої інформації, протягом якого мікроконтроллер AVR не повинен виконувати нові передачі [4].

Для того щоб визначити, коли контролер LCD закінчить свої внутрішні операції, мікроконтроллер AVR може опитувати BUSY-прапор (прапор зайнятості ? BE), що скинув тільки тоді, коли контролер LCD звільниться. Другий, більш простий спосіб полягає в тому, що керуючий мікроконтролер, знаючи, скільки часу потрібно LCD на обробку тієї або іншої команди, просто виконує тимчасову затримку після кожної передачі інформації.

Відеопам'ять (DDRAM), що має загальний обсяг 80 байт, призначена для зберігання кодів символів, що відображаються на LCD. Відеопам'ять організована у два рядки по 40 символів у кожному. Ця прив'язка є жорсткою і не підлягає зміні, іншими словами, незалежно від того, скільки реальних рядків буде мати кожен конкретний LCD-модуль, скажімо, 80x1 або 20x4, адресація відеопам'яті завжди проводиться як до двох рядків по 40 символів.

Крім DDRAM, контролер LCD містить ще один блок пам'яті ? знакогенератор. Його «прошивка», тобто відповідність кодів зображенню символів, зазвичай є в документації LCD.

З допустимих для розміщення в DDRAM кодів символи з кодами 0x00 ... 0x07 (і їх дублікати з кодами 0x08 ... 0x0F) мають спеціальне призначення - можливість перепрограмовання символів, графічне зображення яких може призначити сам користувач, помістивши відповідну інформацію в області CGRAM. Для програмування доступні 8 символів для перепрограмування в режимі з матрицею 5x7 пікселів. Для кожного з восьми символів,що перепрограмуються, у CGRAM відводиться по 8 комірок пам'яті, кожна з яких відповідає одному рядку точок у зображенні символу.

Для символу 0 (код символу 0x00) адреси комірок пам'яті - 0x00 ... 0x07, для символу 1 (код символу 0x01) адреси комірок пам'яті - 0x08 ... 0x0F і т. д. Таким чином, частина знакогенератора, що перепрограмовується, містить 64 байти пам'яті (8x8).

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

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

На дисплей необхідно виводити цифрове значення результату функції над аналоговими сигналами протягом регульованого періоду 0,1…10 с.

Регулювання періоду будемо виконувати змінним резистором, що регулює напругу на вході внутрішньо АЦП мікроконтролера. Змінний резистор буде задавачем інтервалу індикації (оновлення) відображуваних значень. Результати перетворення внутрішнього АЦП будуть масштабуватися та порівнюватися з інтервалом часу, що відраховує мікроконтролер за допомогою лічильника кількості переривань таймера-лічильника Т/С0 за переповненням. Тому розглянемо роботу внутрішнього АЦП та таймера лічильника T/C0. [9]

Модуль 10-бітового АЦП послідовного наближення входить до складу практично всіх моделей сімейства, за винятком ATmega8515x і ATmegal62x. Основні параметри цього АЦП наступні:

- абсолютна похибка: ±2 LSB1;

- інтегральна нелінійність: ±0.5 LSB;

- швидкодія: до 15 тис. вибірок/с.

На вході модуля АЦП є 8-канальний (у моделях ATmega640x/1280x/2560x - 16-канальний) аналоговий мультиплексор, що надає в розпорядження користувача 8 (16) каналів з несиметричними входами. Крім того, в моделях ATmega8x, що випускаються в корпусі DIP, доступно лише 6 каналів з восьми.

У більшості моделей входи АЦП можуть об'єднуватися попарно для формування різного числа каналів з диференціальним входом. При цьому в деяких каналах є можливість 10- і 200-кратного попереднього посилення вхідного сигналу. При коефіцієнтах посилення 1х і 10х дійсна роздільна здатність АЦП по цих каналах складає 8 біт, а при коефіцієнті посилення 200х - 7 біт.

Як джерело опорної напруги для АЦП може використовуватися як напруга живлення мікроконтролера, так і внутрішнє або зовнішнє джерело опорної напруги.

Модуль АЦП може працювати в двох режимах:

- режим одиночного перетворення, коли запуск кожного перетворення ініціюється користувачем;

- режим безперервного перетворення, коли запуск перетворень виконується безперервно через певні інтервали часу.

Узагальнена структурна схема модуля АЦП приведена на рисунку 1.5.5. У моделях ATmega8x і ATmega48x/88x/168x елементи, виділені на малюнку сірим кольором, і пов'язані з ними сигнали відсутні, а неінвертуючий вхід компаратора вибірки-зберігання підключений безпосередньо до виходу мультиплексора (показано пунктиром).

Для дозволу роботи АЦП необхідно записати логічну одиницю в біт ADEN регістра ADCSR, а для вимкнення - відповідно логічний 0. Якщо АЦП буде вимкнений під час циклу перетворення, то перетворення завершене не буде (у регістрі даних АЦП залишаться результат попереднього перетворення).

У моделях ATmega8x і ATmegal28x режим роботи АЦП визначається станом біта ADFR. Якщо він встановлений в 1, АЦП працює в режимі безперервного перетворення. У цьому режимі запуск кожного наступного перетворення здійснюється автоматично після закінчення поточного. Якщо ж біт ADFR скинутий в 0, АЦП працює в режимі одиночного перетворення і запуск кожного перетворення здійснюється по команді користувача.

У всіх моделях, окрім ATmega8x і ATmegal28x, запуск АЦП можливий не лише по команді користувача, але і по перериванню від деяких периферійних пристроїв, що є у складі мікроконтролера. Для вибору режиму роботи в цих моделях використовується біт ADATE регістра ADCSRA і біти ADTDS2:0 регістра SFIOR або ADCSRB.

Якщо біт ADATE скинутий в 0, АЦП працює в режимі одиночного перетворення. Якщо ж біт ADTAE встановлений в 1, функціонування АЦП визначається вмістом бітів ADTS2:0.

Запуск кожного перетворення в режимі одиночного перетворення, а також запуск першого перетворення в режимі безперервного перетворення здійснюється установкою в 1 біта ADSC регістра ADCSRA (ADCSR).

Запуск перетворення по перериванню здійснюється при установці в 1 прапора вибраного переривання. Біт ADSC регістра ADCSRA при цьому апаратно встановлюється в 1. Запуск перетворення в цих режимах також може бути здійснено установкою біта ADSC регістра ADCSRA в 1.

У режимах одиночного і безперервного перетворень цикл перетворення починається по першому наростаючому фронту тактового сигналу після установки біта ADSC. Якщо використовується запуск по перериванню, то цикл перетворення починається по першому наростаючому фронту тактового сигналу після установки прапора вибраного переривання. Причому у момент установки цього прапора здійснюється скидання переддільника модуля АЦП. Тим самим забезпечується фіксована затримка між генерацією запиту на переривання і початком циклу перетворення. Перетворення запускається при установці відповідного прапора, тобто навіть якщо само переривання заборонене.

Тривалість циклу складає 13 тактів при використанні несиметричного входу і 13 або 14 тактів при використанні диференціального входу (різні значення пов'язані з роботою схеми синхронізації); вибірка і запам'ятовування вхідного сигналу здійснюється протягом перших 1.5 і 2.5 тактів відповідно. Через 13 (14) тактів перетворення завершується, біт ADSC апаратно скидається в 0 (у режимі одиночного перетворення), і результат перетворення зберігається в регістрі даних АЦП. Одночасно встановлюється прапор переривання ADIF регістра ADCSR і генерується запит на переривання. Як і прапори останніх переривань, прапор ADIF скидається апаратно при запуску підпрограми обробки переривання від АЦП або програмно, записом в нього логічної 1. Дозвіл переривання здійснюється установкою в 1 біта ADIE регістра ADCSR при встановленому прапорі I регістра SREG.

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

(до збереження результату поточного перетворення). Проте реально цикл перетворення почнеться не раніше чим через один такт після закінчення поточного перетворення.

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

Окремо слід сказати про використання режиму запуску по перериванню спільно з диференціальними каналами. В цьому випадку АЦП необхідно вимикати між перетвореннями, аби уникнути некоректних вимірів, пов'язаних з невизначеністю моменту скидання переддільника АЦП. В результаті вимикання і вмикання АЦП між перетвореннями виконуватимуться лише «довгі» перетворення, результати яких завжди будуть коректними.

Для формування тактової частоти модуля АЦП в ньому є окремий переддільник. Коефіцієнт ділення переддільника і відповідно тривалість перетворення визначаються станом бітів ADPS2...ADPS0 регістра ADCSRA/ADCSR .

Найбільша точність перетворення досягається, якщо тактова частота модуля АЦП знаходиться в діапазоні 50...200 кГц. Відповідно, коефіцієнт ділення переддільника рекомендується вибирати таким, аби тактова частота модуля АЦП знаходилася у вказаному діапазоні. Якщо ж точності перетворення менше 10 бітів достатні, можна використовувати вищу частоту, збільшуючи тим самим частоту вибірки.

Залежно від моделі виводи мікроконтролера, підключені, до входу АЦП, визначаються станом бітів MUX3:0, MUX4:0 або MUX5:0 (MUX5 - в ADCSRB, MUX4...MUX0 - в ADMUX). Для каналів з диференціальним входом вказані біти визначають також коефіцієнт попереднього посилення вхідного сигналу.

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

Стан бітів MUX5...MUX0 можна змінити у будь-який момент, проте якщо це буде зроблено під час циклу перетворення, то зміна каналу станеться лише після завершення перетворення. Завдяки цьому в режимі безперервного перетворення можна легко здійснювати послідовне перетворення сигналів декількох каналів. Окремо слід сказати про канали з диференціальним входом. Після зміни таких каналів перший вимір слід робити не раніше ніж через 125 мкс після вибору каналу. Вказаний час потрібний для встановлення значення коефіцієнта посилення передпідсилювача. Відповідно, значення, виміряні до закінчення цього терміну, не можуть вважатися достовірними. Крім того, при перемиканні на канал із змінним коефіцієнтом посилення результат першого перетворення може мати знижену точність із-за часу встановлення автоматичної схеми корекції зсуву. Тому краще вважати результат першого перетворення некоректним.

Як вже було відмічено, в модулі АЦП можуть використовуватися різні джерела опорної напруги (ДОН). Вибір конкретного джерела опорної напруги здійснюється за допомогою бітів REFS1:REFS0 регістра ADMUX.

Оскільки внутрішній ДОН з'єднується з виводом AREF мікроконтролера, при його використанні до вивду AREF бажано підключити зовнішній фільтруючий конденсатор, для підвищення перешкодозахищеності. Крім того, при використанні каналу з диференціальним входом перший вимір після зміни джерела опорної напруги слід виконувати не раніше ніж через 125 мкс. Вказаний час потрібний для встановлення значення коефіцієнта посилення передпідсилювача.

Після завершення перетворення (при установці в 1 прапора ADIF регістра ADCSR) його результат зберігається в регістрі даних АЦП. Оскільки АЦП 10-бітовий, цей регістр фізично розміщений в двох регістрах вводу/виводу ADCH:ADCL, доступних лише для читання. Ці регістри розташовані по адресах $05:$04 ($25:$24) у моделях ATmega8535x, ATmega8x/16x/32x/64x/128x і ($79:$78) в останніх моделях. При вмиканні мікроконтролера в регістрі даних АЦП міститься значення $0000.

За замовчуванням результат перетворення вирівнюється вправо (старші 6 бітів регістра ADCH - незначущі). Проте він може вирівнюватися і вліво (молодші 6 бітів регістра ADCL - незначущі). Для управління вирівнюванням результату перетворення служить біт ADLAR регістра ADMUX. Якщо цей біт встановлений в 1, результат перетворення вирівнюється по лівій межі 16-бітового слова, якщо скинутий в 0 - по правій межі.

Звернення до регістрів ADCH і ADCL для здобуття результату перетворення повинне виконуватися в певній послідовності: спочатку необхідно прочитати регістр ADCL, а потім ADCH. Ця вимога пов'язана з тим, що після звернення до регістра ADCL процесор блокує доступ до регістрів даних з боку АЦП до тих пір, поки не буде прочитаний регістр ADCH. Завдяки цьому можна бути впевненим, що при читанні регістрів в них знаходитимуться складові одного і того ж результату. Відповідно, якщо чергове перетворення завершиться до звернення до регістра ADCH, результат перетворення буде втрачений. З іншого боку, якщо результат перетворення вирівнюється вліво і досить 8-бітової точності, то для здобуття результату можна прочитати лише вміст регістра ADCH.

Результат перетворення представляється в цьому випадку в додатковому коді, а його значення лежить в діапазоні від $200 (-512) до $ IFF (+512).

Восьмибітовий таймер/лічильник Т/С0 присутній у всіх моделях мікроконтролерів сімейства Mega.

Таймер/лічильник Т/С0 в моделі at8535x може використовуватися для відліку часових інтервалів або як лічильник зовнішніх подій , а також як одноканальний генератор 8-бітового ШІМ-сигнала. Структурна схема таймера Т/С0 з datasheet приведена на рисунку 1.5.5.

У старих моделях для дозволу/заборони переривань від таймерів/лічильників використовувалися від одного до двох регістрів вводу/виводу. У нових моделях число таких регістрів (3...6) дорівнює числу лічильників в конкретній моделі. Так сама ситуація і з регістрами, що містять прапори переривань.

Для дозволу якого-небудь переривання від таймера/лічильника необхідно встановити в 1 відповідний біт регістру TIMSK /ETIMSK і, зрозуміло, прапор I регістра SREG. При настанні якої-небудь події відповідний прапор регістра TIFR/ETIFR встановлюється в 1. При запуску підпрограми обробки переривання він апаратно скидається в 0. Будь-який прапор може бути також скинутий програмно, записом в нього логічної 1-ці.

Блоки переддільників призначені для формування тактових сигналів таймерів/лічильників clkT0, clkT1, clkT2. До складу кожного блоку входять власне 10-бітовий переддільник, вихідний мультиплексор (селектор тактового сигналу), а для таймерів, що мають можливість роботи в асинхронному режимі, - ще й вхідний мультиплексор вихідного тактового сигналу.

Слід мати на увазі, що всі таймери/лічильники кожної моделі сімейства, що не мають асинхронного режиму роботи, використовують один і той же 10-бітовий передільник. При цьому управління тактовим сигналом кожного таймера/лічильника здійснюється.

Окрім управління тактовим сигналом таймера/лічильника, всі мікроконтролери сімейства дозволяють здійснювати скидання переддільників, а окремі моделі дозволяють також здійснювати їх зупинку. Для цього використовується регістр спеціальних функцій SFIOR.

Для скидання переддільників таймерів/лічильників використовуються біти PSRх (PSRSYNC/PSRASY) регістра. При записі в ці біти логічної 1 переддільники відповідних таймерів/лічильників переводяться у вихідний стан. Біти скидаються в 0 апаратно після виконання операції скидання.

Один переддільник, як правило, використовується декількома таймерами/лічильниками, і відповідно скидання переддільника вплине на всі таймери/лічильники, які його використовують.

Зупинка всіх переддільників мікроконтролера здійснюється записом логічної 1 в біт TSM регістра SFIOR. Подальший запуск переддільників здійснюється записом в біт TSM логічного 0. Вказана функція може використовуватися, зокрема, для синхронізації таймерів/лічильників. Після установки біта TSM і бітів PSRx (PSRSYNC/PSRASY) відповідні таймери/лічильники зупиняються і можуть бути проініціалізовані необхідними значеннями. Після скидання біта TSM біти PSRx (PSRSYNC/PSRASY) апаратно скидаються і всі таймери/лічильники починають працювати одночасно.

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

Проте, аби гарантувати виявлення фронтів зовнішнього сигналу у всьому діапазоні можливих змін частоти і шпаруватості тактового сигналу мікроконтролера (із-за розкиду параметрів елементів тактового генератора), рекомендується, аби частота зовнішнього сигналу була менша, ніж fclk_i/o/2,5.

Також слід розуміти, що із-за вхідного каскаду відбувається тимчасова затримка між зміною стану виводу і оновленням рахункового регістра таймера/лічильника. Величина затримки складає від 2,5 до 3,5 тактів.

Рахунковий регістр таймера/лічильника TCNTn входить до складу основного блоку модуля ? блоку реверсивного лічильника. Залежно від режиму роботи модуля вміст рахункового регістра скидається, інкрементується або декрементується по кожному імпульсу тактового сигналу таймера/лічильника clkT0.

Незалежно від того, присутній тактовий сигнал чи ні, регістр доступний у будь-який момент часу як для читання, так і для запису.

Проте будь-яка операція запису в рахунковий регістр блокує роботу блоку порівняння на час одного періоду тактового сигналу таймера/лічильника. Після подачі напруги живлення в регістрі TCNTn знаходиться нульове значення.

Досягши таймером/лічильником максимального або мінімального значення (конкретний варіант залежить від його режиму роботи) встановлюється прапор TOVn в регістрі прапорів TIFR. Дозвіл переривання здійснюється установкою в 1 біта Т01Еn регістра маски TIMSK. Зрозуміло, прапор I регістра SREG також має бути встановлений в 1.

Регістри TCCRn призначені для управління модулем таймера/лічильника.

Формування тактового сигналу таймера/лічильника clkT0 здійснюється блоком переддільника. Як тактовий сигнал clkT0 таймерів/лічильників, що не мають асинхронного режиму, може використовуватися: системний тактовий сигнал (clkT0 = clkI/О); масштабований системний тактовий сигнал (clkT0= clkI/О/n); зовнішній сигнал, що поступає на вхід Т0 мікроконтроллера (clkT0= с1kEXT).

Тактовий сигнал таймерів/лічильників з асинхронним режимом може формуватися або з системного тактового сигналу clkI/О (clkT0 = clkI/О/n), або в асинхронному режимі з сигналу від додаткового кварцового резонатора (с1кТ0 = с1кТ0SСn).

Перемикання між синхронним і асинхронним режимами роботи здійснюється за допомогою біта AS0 регістра ASSR.

Вибір джерела тактового сигналу, а також запуск і зупинка таймерів/лічильників здійснюються за допомогою бітів CS02...CS00 регістрів управління таймером TCCRn.

Режим роботи таймера/лічильника Т0 визначається станом бітів WGMn2: WGMn0 регістра TCCRn .

Режим Normal -це найбільш простий режим роботи таймерів/лічильників. А в таймері/лічильнику Т/С0 моделі ATmega8x це взагалі єдиний режим. У режимі Normal рахунковий регістр функціонує як звичайний лічильник, що підсумовує. По кожному імпульсу тактового сигналу clkTn здійснюється інкрементування рахункового регістру. Під час переходу через значення $FF виникає переповнювання, і рахунок продовжується із значення $00. У тому ж такті сигналу с1kТn, в якому обнуляється регістр TCNTn, прапор переривання по переповнюванню TOVn встановлюється в логічну одиницю.

Решта режимів роботи залишена поза увагою, так як не має необхідності їх використання для розв'язання поставлених завдань.

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

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

мікроконтролер блок інформація комутатор

2 ПРОЕКТУВАННЯ І ОПИС ПРИНЦИПОВОЇ ЕЛЕКТРИЧНОЇ СХЕМИ ПРИСТРОЮ ТА РОЗРОБЛЕНОГО ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ

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

Схема електрична принципова і відповідний перелік елементів приведений в додатку А.

Основним компонентом схеми є мікроконтролер ATmega8535, що не підтримує режиму живлення від напруги 2,7 В [9].

Максимальний постійний струм живлення мікроконтролера може досягати 200 мА і залежить від параметрів системної синхронізації і режимів задіяної переферії. Навантажувальна здатність окремого виводу порту мікроконтролера не перевищує 40 мА, а сумарний струм всіх ліній вводу-виводу не повинен перевищувати 400 мА. Номінальний струм лінії порту вводу-виводу становить 20 мА. Максимальний вхідний струм утічки становить 8 мкА.

Мікроконтролер виконує опитування аналогових входів контролера і для цього використано АЦП AD7478 та 16-канальний аналоговий комутатор AD706.

Мікроконтролер зчитує дані АЦП по протоколу SPI. Перед кожним зчитуванням виконується перемикання аналогового комутатора для почергового під'єднання одного з 12 аналогових входів до входу АЦП. Цикл опитування становить 1000мкс. Після циклу зчитування виконується цикл обробки.

АЦП має час перетворення 19мкс, живиться від напруги 2.7-5,5 В, споживає до 9 мВт [10].

Аналоговий комутатор при одно полярному живленні живиться від напруги 1,8-5,5В, і комутує вхідну напругу в межах, що не перевищує напругу живлення. Опір каналу становить 4 Ом. Час перемикання становить 40нс. Адресні і керуючі входи узгоджені з TTL/CMOS рівнями.

Змінний резистор R1 має опір 20 кОм, що цілком відповідає рекомендованому відповідно технічної документації мікроконтролера, він задає значення періоду індикації рідкокристалічного індикатору, одне з крайніх положень відповідає 0,1 с , в інше крайнє положення відповідає 10 с.

Зчитування напруги зі змінного резистора виконується внутрішнім АЦП мікроконтролера, який в якості опорної напруги використовує вивід AVCC. Вивід АVCC з'єднаний з напругою живленя схеми. Вивід AREF має безпосередній гальванічний зв'язок з модулем АЦП. Це прямий шлях до наводок і завад, дія яких відразу позначиться на вихідних показах АЦП. Саме тому між виводами AREF і GND рекомендується ставити шунтуючий керамічний конденсатор С4 ємністю в 0,1 мкФ.

Чотири молодші біти порту D налаштовані на високоомні входи і здатні сприймати зовнішні дискретні логічні сигнали рівня TTL. Ці сигнали обробляться за заданою функціональною залежністю, а результат виводиться на виводи PD6, PD7, налаштований на вихід. Вихідний дискретний сигнал відповідає TTL рівню.

Для відображення середнього за період індикації значення вихідного аналогового сигналу використовують рідкокристалічний дисплей ВC1601B, що живиться від напруги 5В, споживає до 3мА. Вивід V0 замкнений з GND для отримання максимального контрасту. Підсвітка індикатору відбувається за допомогою виводів A(анод) та К(катод) від напруги живлення схеми 5 В.

Рідкокристалічний індикатор працює в режимі 4 бітного обміну для економії виводів мікроконтролера.

Керуючі сигнали, та шина даних високоомні і сумісні з ТТL-рівнем, даний LCD зручний для використання в мікроконтролерних додатках.

Для формування вихідного аналогового сигналу застосовано зовнішній ЦАП AD5301, що отримує від мікроконтролера 8-бітове значення аналогового сигналу по протоколу I2C. В мікроконтролері застосований програмний І2С інтерфейс, котрий обробляється в фоновій програмі мікроконтролера.

Даний ЦАП споживає до 120 мкА, опорною напругою виступає напруга живлення схеми 5 В. Логічні входи AD5301 споживають струм до 1 мкА. Адресний вивід мікросхеми А0 замкнений на спільну шину живлення “?”, для адресації пристрою на шині з номером нуль. Час установлення вихідного значення ЦАП становить 8 мкс. Вихід АЦП за напругою має опір 1 Ом і струм короткого замикання до 20-50 мА [10].

2.1 Опис розробленого програмного забезпечення

Блок-схема алгоритму функціонування програми мікроконтролера для вирішення поставленої задачі приведена в додатку Б, а її відповідна реалізація на високорівневій мові С (компілятор CodeVisionAVR) в додатку В [3,5].

Основна програма містить ініціалізацію периферії (порти вводу-виводу, АЦП, модуль SPI, таймер-лічильник T/C) , ініціалізація змінних.

Далі глобально дозволяємо переривання та установлюємо відповідний біт маски в логічну одиницю для дозволу переривань за переповненням таймера-лічильника T/C0.

Після цього розпочинається безкінечний цикл фонової програми, в якому відбувається зчитування масиву аналогових сигналів з АЦП по протоколу SPI, розрахунок на їх основі відповідної функціональної залежності для визначення вихідного аналогового сигналу. Далі відбувається передача обчисленого значення по протоколу I2С для перетворення в ЦАП. На час передачі по програмному протоколу I2C забороняються переривання, для коректної передачі.

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

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

Фонову програму може переривати виклик обробника переривання за вектором переривання за переповненням 8-розрядного таймера-лічильника Т/С0, котрий працює з частотою, що обумовлена переддільником 1024 і частотою системної синхронізації 4МГц. Тобто переривання стається кожні 256?1024/4000000 = 65 536 мкс.

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

Наступний блок обробника переривань розраховує усереднене за період індикації значення вихідного сигналу і виводить це значення на рідкокристалічний дисплей. Одночасно обнуляємо суму, що накопичувала за даний період аналогові сигнали та змінну, що зберігала кількість членів суми, для переходу до відліку нового інтервалу індикації. Разом з даними змінними обнуляємо і лічильник часових інтервалів. Оскільки значення завдання змінюється від деякої мінімальної до деякої максимальної величини, то можна регулювати час індикації. Межі зміни задання інтервалу індикації відповідають інтервалу 0,1-10 с.


Подобные документы

  • Вибір конфігурації контролера і схем підключення. Розроблення прикладного програмного забезпечення для реалізації алгоритму керування. Самодіагностика та індикація несправностей. Обробка цифрової інформації. Розрахунок надійності системи керування.

    курсовая работа [1,1 M], добавлен 25.08.2014

  • Розробка програмного забезпечення для управління транспортними платформами на базі програмованого логічного контролера S7-300 в Simatic STEP-7. Аналіз програмного забезпечення, розрахунок показників його надійності. Опис алгоритму функціонування системи.

    дипломная работа [2,1 M], добавлен 17.05.2012

  • Аналіз системи збору первинної інформації та розробка структури керуючої ЕОМ АСУ ТП. Розробка апаратного забезпечення інформаційних каналів, структури програмного забезпечення. Алгоритми системного програмного забезпечення. Опис програмних модулів.

    дипломная работа [1,9 M], добавлен 19.08.2012

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

    курсовая работа [710,9 K], добавлен 12.03.2010

  • Розробка компонентів програмного забезпечення системи збору даних про хід технологічного процесу. Опис програмного забезпечення: сервера, що приймає дані про хід технологічного процесу, КОМ для його імітування, робочої станції для відображення даних.

    курсовая работа [1,3 M], добавлен 20.11.2010

  • Проектування і реалізація навчального програмного продукту "Побудова геометричних фігур". Використання C++ Builder 6 у якості програмного середовища для реалізації даної навчальної програми. Інструкція з використання розробленого програмного забезпечення.

    курсовая работа [2,2 M], добавлен 05.05.2014

  • Загальний опис алгоритмів головної програми та процедур запису і зчитування повідомлень на рівні блок-схем, детальний опис розробленої програми на рівні програмного коду. Характеристика процедури відображення стану регістрів. Опис екранних форм програми.

    курсовая работа [552,5 K], добавлен 09.06.2010

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

    дипломная работа [1,0 M], добавлен 02.09.2014

  • Проблеми розробки компонентного програмного забезпечення автоматизованих систем управління. Сучасні компонентні технології обробки інформації. Аналіз вибраного середовища проектування програмного забезпечення: мова програмування PHP та Apache HTTP-сервер.

    дипломная работа [2,8 M], добавлен 11.05.2012

  • Огляд засобів створення програмного забезпечення сучасних мікроконтролерів. Аналіз методів та налаштувань контролерів. Засоби генерації коду налаштувань. Детальний опис розробки програми генератора налаштувань ядра Cortex M4 та методики її тестування.

    курсовая работа [1,3 M], добавлен 20.05.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.