Мікроконтролерна система з рідкокристалічним індикатором для управління комп’ютером
Переваги, недоліки, принципи побудови та функціонування рідкокристалічних індикаторів; типові схеми їх взаємодії з мікроконтролерами. Розробка друкованої плати та системи з використанням рідкокристалічного індикатора; розрахунок параметрів АЦП та ЦАП.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 29.01.2013 |
Размер файла | 1,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Міністерство освіти і науки України
Національний технічний університет України
Київський політехнічний інститут
Факультет електроніки
Кафедра електронних приладів та пристроїв
КУРСОВИЙ ПРОЕКТ
З дисципліни: «Мікропроцесорна техніка»
Тема:
Мікроконтролерна система з рідкокристалічним індикатором для управління комп'ютером
Виконав: Танчин С.М.
Студент групи ЗДЕ-91
Керівник проекту
доц. Михайлов С.Р.
Київ-2013
ЗМІСТ
ТЕХНІЧНЕ ЗАВДАННЯ
ВСТУП
1. РОЗРОБКА МІКРОКОНТРОЛЛЕРНОЇ СИСТЕМИ З ВИКОРИСТАННЯМ РІДКОКРИСТАЛІЧНОГО ІНДИКАТОРА
1.1 Опис пристрою та його застосування
1.2 Рідкокристалічний модуль HD44780
1.2.2 Підключення РКІ модуля
1.2.3 Програмування і керування
1.3 Інтерфейс РКІ з AVR- мікроконтролером
1.4 Програмування виводу інформації на РКІ
1.5 Принцип роботи схеми РКІ панелі
1.5.1 Керування світло діодами
1.5.2 Приєднання сторожового таймера
1.5.3 Кнопки й перемикачі
1.5.4 Схема скидання
1.5.5 Тестування РК-панелі
1.6 Драйвери для мікроконтролера та лістинг програми роботи РКІ
1.7 Розробка друкованої плати системи
1.8 Розрахунки параметрів АЦП та ЦАП
ВИСНОВКИ
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ
Додаток 1: Друкована плата
Додаток 2: Схема електрична принципова
ТЕХНІЧНЕ ЗАВДАННЯ
1. Розглянути переваги, недоліки, принципи побудови та функціонування рідкокристалічних індикаторів. Розглянути типові схеми взаємодії мікроконтролерів та індикаторів. Основну увагу зосередити на принципах функціонування та конструкціях HD44780 і AVR мікроконтролера.
2. Розробити мікроконтролерну систему з рідкокристалічним індикатором для керування комп'ютером без застосування клавіатури або монітора.
2.1 Проаналізувати принцип роботи схеми РКІ панелі.
2.2 Встановити необхідні драйвери та бібліотеки для програмованих компонентів схеми.
2.3 Написати лістинг програми роботи РКІ панелі на мові програмування С++.
3. Розробити друковану плату системи.
4. Провести розрахунок параметрів АЦП та ЦАП.
5. Розробити схему електричну принципову.
6. Використати елементи схеми з такими параметрами:
Напруга живлення VCC = +5 В
РКІ панель типу HD44780, 4х або 8ми розрядна шина, 2*20 символів
· частота роботи контролера - 270 кГц
· час виконання запису даних в RAM та читання із RAM = 37 мкс.
Мікроконтролер Atmel AT90S4433:
· Flash 4 кбайт
· EEPROM 256 байт
· SRAM 128 байт
· діапазон напруг ( V = 4.0-6.0 В), COM порт RS232:
· швидкість передачі = 9600 біт/сек
· максимальна відстань передачі - до 15 м
ВСТУП
В останні роки в зв'язку з автоматизацією процесів виробництва і керування, розвитком електронно-обчислювальної техніки і розробкою систем автоматизації дослідницьких і технологічних робіт широке поширення одержали різноманітні пристрої відображення інформації. Якщо інформація що створюється передається електронними засобами, то вона відтворюється за допомогою засобів відображення інформації, що є електронним перекладачем і дозволяє приймати закодовану електронними сигналами інформацію.
Відповідно до тверджень фахівців до 80% інформації від навколишнього світу надходить до людини за допомогою зору. В усіх системах, де потрібно представити інформацію у формі, зручної для візуального сприйняття людиною, застосовуються засоби відображення інформації (ЗВІ). Однією з основних частин ЗВІ є індикатор - електронний прилад для перетворення електричних сигналів у просторовий розподіл яскравості (контрасту). Усе це говорить про важливу роль і масове поширення засобів відображення інформації в тому числі на основі рідкокристалічних (РК) дисплеїв.
Також в наш час спостерігається масове наповнення ринку різноманітною автоматизованою апаратурою широкого призначення і різної складності від пластикової платіжної картки до холодильника, автомобіля і найскладніших установок. Це стало можливим завдяки мікроконтролерам (МК).
З метою полегшення керування комп'ютером і розроблюється дана система. Вона може ефективно використовуватись, наприклад, в серверних кімнатах, що дає можливість керувати сервером навіть з іншої кімнати. Даний прилад дає змогу забезпечення автоматичної роботи серверних кімнат і навіть автоматично перезавантажувати систему при необхідності.
1. Розробка мікроконтролерної системи з використанням рідкокристалічного індикатора
1.1 Опис пристрою та його застосування
У даному розділі розглядається розробка схеми РК - панелі для керування комп'ютером без застосування клавіатури або монітора. Вона побудована на РК- дисплеї Hitachi HD44780 та AT90S4433 AVR 8-Bit RISC мікроконтролері фірми Atmel. Обоє цих компонента є дуже розповсюдженими й недорогими. Панель керування містить у собі сторожовий таймер для адміністрування комп'ютера й дві кнопки для здійснення діалогу з користувачем. Також існує можливість встановлення IP-адреси, маски підмережі, адреси шлюзу, зупинки системи, читання статистики, а також можливо зробити практично все, що завгодно, оскільки майже вся логіка реалізована на мові Perl і може бути перепрограмована. Панель з'єднується із комп'ютером послідовним зв'язком через порт RS232.
Дана конструкція має додаткові кнопки для взаємодії з користувачем і містить апаратний сторожовий таймер для адміністрування комп'ютера. До того ж схема надає йому аналоговий канал уведення. В даній роботі він не використовується, але є можливість приєднати до нього, наприклад, датчик температури.
Одним із застосувань даного пристрою є використання його як панелі керування сервером. Панель дозволяє встановити IP-адресу, адрес шлюзу й маску підмережі. Вона також дозволяє зупинку сервер, навіть не перебуваючи в серверній кімнаті.
1.2 Рідкокристалічний модуль HD44780
Для індикації інформації в даній схемі використовується РКІ модуль HD44780 фірми Hitachi. Він фактично є промисловим стандартом і широко застосовується при виробництві алфавітно-цифрових РКІ-модулей. Аналоги цього чи контролера сумісні з ним по інтерфейсі і командній мові мікросхеми, випускають безліч фірм, серед яких: Epson, Toshіba, Sanyo, Samsung, Phіlіps. Ще більше число фірм випускають РКІ-модули на базі даних контролерів. Ці модулі можна зустріти в найрізноманітніших пристроях: вимірювальних приладах, медичному устаткуванні, промисловому і технологічному устаткуванні, офісній техніці - принтерах, телефонах, факсових і копіювальних апаратах.
Контролер HD44780 потенційно може керувати 2-мя рядками по 40 символів у кожній (для модулів з 4-мя рядками по 40 символів використовуються два однотипних контролери), при матриці символу 5 х 7 крапок. Він також підтримує символи з матрицею 5 х 10 крапок, але в останні роки РКІ-модулі з такою матрицею практично не зустрічаються, тому можна вважати, що фактично бувають тільки символи 5 х 7 крапок.
Існує кілька різних більш-менш стандартних форматів РКІ-модулів (символів х рядків): 8 х 2, 16 х 1, 16 х 2, 16 х 4, 20 х 1, 20 х 2, 20 х 4, 24 х 2, 40 х 2, 40 х 4. Зустрічаються і менш розповсюджені формати: 8 х 1, 12 х 2, 32 х 2 і ін., - принципових обмежень на комбінації і кількість відображуваних символів контролер не накладає - модуль може мати будь-яку кількість символів від 1 до 80, хоча в деяких комбінаціях програмна адресація символів може виявитися не дуже зручною.
У рамках одного формату можуть вироблятися РКІ-модулі декількох конструктивів, що відрізняються як габаритами РКІ (і, як наслідок, розмірами символів), так і розмірами плати і посадки. Наприклад, фірма Powertіp пропонує алфавітно-цифрові РКІ-модулі 11-ти форматів (від 8 х 2 до 40 х 4) у 37-ми різних конструктивах, 16 х 1 у 6-ти, а модулі формату 16 х 2 у 11-ти.
Вивчаючи каталоги різних фірм-виробників РКІ-модулів, можна переконатися, що одні формати і конструктиви є власними розробками і не виявляють аналогів у номенклатурі інших фірм, інші є фактичними стандартами і виробляються більшістю виробників. Як приклад можна назвати РКІ-модуль формату 24 х 2, іменований PC2402-A у Powertіp, ED24200 у EDT, DMC-24227 у Optrex, SC2402A у Bolymіn, MDLS-24265 у Varіtronіx, PVC240202 у Pіcvue і ін., усі ці модулі мають однакові конструктивні розміри і є взаємозамінними.
1.2.2 Підключення РКІ модуля
Для з'єднання РКІ-модуля з керуючою системою використовується рівнобіжна синхронна шина, що нараховує 8 чи 4 (вибирається програмно) ліній даних DB0...DB7, лінію вибору операції R/W, лінію вибору регістра RS і лінію стробування/синхронізації Е. Крім ліній керуючої шини маються дві лінії для подачі напруги харчування 5 В - GND і VCC, і лінія для подачі напруги живлення драйвера РКІ - V0.
Зазначені вище назви ліній шини є стандартними, але існує безліч різних варіантів розташування контактів у кожного конкретного конструктиву РКІ модуля. Насправді, єдиним реально стандартним варіантом розташування контактів є дворядне 14-ти контактне поле, розташоване вертикально в лівій частині модуля, а також співпадаюче в йому дворядне 16-ти контактне поле, що містить додаткову пару контактів з підключеними до неї виводами живлення підсвічування.
Рис. 1.1 Подача живлення на РКІ-модуль
На початковому етапі необхідно подати живлення на РКІ-модуль і домогтися від нього ознак працездатності. Схема включення модуля, розрахованого на стандартний діапазон температур, показана на рис. 2.1а. Підстроювальний резистор R1 дозволяє плавно міняти напругу живлення драйвера РКІ, що приводить до зміни кута повороту рідких кристалів. Цим резистором можна відрегулювати фактичну контрастність при деякому переважному куті спостереження (нагору або вниз). Включення в дану схему РКІ модуля, розрахованого на розширений діапазон температур, не приведе до успіху, тому що через особливості застосовуваних у них РК-матеріалів, ці РКІ вимагають підвищеної напруги живлення й при живленні напругою 5 В зображення або буде відсутній зовсім, або буде слабкоконтрастними. Для подолання ситуації необхідно подати на вивід V0 негативна напруга (напруга на РКІ визначається різницею VCC й V0), що становить у граничному випадку - 5 В. Якщо в схемі відсутнє джерело негативної напруги, то не становить труднощів зібрати найпростіший перетворювач, наприклад, за схемою на рис. 1.1б.
Для активізації РКІ модуля подається напруга живлення й покручується движок резистора R1 (рис. 2.1). Після закінчення циклу внутрішньої ініціалізації модуль включається в режим розгорнення одного верхнього рядка. При зміні напруги на виводі V0 сегменти цього рядка повинні міняти свій стан від прозорого до непрозорого, що є свідченням правильного підключення живлення модуля й працездатності контролера й драйверів РКІ. Потрібно встановите перемикач у таке положення, при якому зображення сегментів у верхньому рядку ледь проступає на основному тлі РКІ. Тепер РКІ-модуль готовий до прийому й відображення інформації. Після того, як ви доможетеся відображення на індикаторі якого-небудь тексту, то зможете більш точно відрегулювати зображення відповідно до необхідної контрастності й необхідним кутом спостереження.
Для з'єднання модуля з керуючою системою можна вибрати один із двох варіантів: по 8-ми або 4-х розрядній шині. У першому випадку буде потрібно 11 сигнальних ліній, у другому - тільки 7. Сам процес обміну також може бути організований подвійно. Можна підключити РКІ-модуль до системної шини (якщо така є) і виконати обмін у синхронному режимі з максимальною швидкістю. Цьому широко розповсюдженому в минулі роки способу властиво ряд недоліків. По-перше, більшість сучасних пристроїв виконується із застосуванням однокристальних мікро-ЕОМ без використання додаткової зовнішньої пам'яті і, як наслідок, системна шина в цих пристроїв просто відсутня. По-друге, у сучасних системах підвищеної складності й продуктивності, у яких є присутнім додаткова пам'ять й, природно, системна шина, швидкість операцій на шині перебуває за межами можливостей контролера HD44780 (2 Мгц при живленні 5 У и 1 Мгц при 3 У). Це може зажадати введення додаткових схем зі швидкістю роботи шини при виконанні операцій обміну із РКІ модулем. По-третє, підключення до системної шини в більшості випадків зажадає вводити схеми дешифрації й формування сигналів Е и R/W, що знову приведе до додаткових витрат. Все сказане вище не означає, що варіант із підключенням до шини принципово неефективний. У якійсь конкретній системі цей спосіб, навпаки, може бути самим оптимальним. Крім того, деякі сучасні процесори, наприклад, сімейство МС68НС12, має убудовані засоби для формування сигналів вибірки (CS), з можливістю програмно визначити швидкість обміну з кожним конкретним пристроєм.
Інший варіант - дуже простий шлях - обмін із РКІ модулем виконується чисто програмними засобами, через порти вводу-виводу управляючої мікро-еом. Надалі буде сконцентрована увага саме на цьому варіанті, тому що він дозволяє розглянути загальний випадок, абстрагуючись від конкретної системи.
На рис. 2.2а наведена схема підключення РКІ модуля з 8-ми розрядною шиною до деякої абстрактного мікро-еом XYZ. Ця мікро-ЕОМ містить два порти: 8-ми розрядний двонаправлений РА0...РА7, до якого підключена шина DB0...DB7 РКІ модуля, і 3-х розрядний РВ0...РВ2, до якого підключені лінії керуючих сигналів: E, RS,R/W. На рис. 17б можна бачити схему підключення РКІ модуля до цій же мікро-ЕОМ в 4-х розрядному режимі. Для обміну в 4-х розрядному режимі використається старша тетрада шини даних - DB4...DB7.
Рис. 1.2 Підключення до керуючої системи
Відповідно до тимчасової діаграми (рис. 1.3,1.4) у вихідному стані сигнал Е = 0, сигнал R/W = 0, значення сигналу RS - довільне, шина даних DBO...DB7 у стані високого імпедансу (НI). Такий стан керуючих сигналів (E й R/W) повинен підтримуватися увесь час у проміжках між операціями обміну із РКІ модулем. Шина даних у ці моменти в принципі вільна, і може використатися в мультиплексному режимі для яких-небудь інших цілей, наприклад, для сканування матриці клавіатури. Природно, необхідно подбати про виключення конфліктів на шині даних у момент здійснення операцій обміну із РКІ-модулем.
Послідовності дій, які необхідно виконувати керуючій системі при здійсненні операцій запису й читання для 8-ми й 4-х розрядної шини наведені відповідно в табл. 1.1-1.4
Таблиця 1.1
Операції запису для 8-ми розрядної шини
1. Встановити значення лінії RS2. Вивести значення байта даних на лінії шини DB0...DB73. Установити лінію Е = 14. Установити лінію У = 05. Установити лінії шини DB0...DB7 = HI |
Таблиця 1.2
Операції читання для 8-ми розрядної шини
1. Установити значення лінії RS2. Установити лінію R/W = 13. Установити лінію Е = 14. Уважати значення байта даних з ліній шини DB0...DB75. Установити лінію Е = 06. Установити лінію R/W = 0 |
Таблиця 1.3
Операція запису для 4-х розрядної шини
7. Установити значення лінії RS8. Вивести значення старшої тетради байта даних на лінії шини DB4...DB79. Установити лінію Е = 110. Установити лінію Е = 011. Вивести значення молодшої тетради байта даних на лінії шини DB4...DB712. Установити лінію Е = 113. Установити лінію Е = 014. Установити лінії шини DB4...DB7 = HI |
Таблиця 1.4
Операція читання для 4-х розрядної шини
15. Установити значення лінії RS16. Установити лінію R/W = 117. Установити лінію Е = 118. Уважати значення старшої тетради байта даних з ліній шини DB4...DB719. Установити лінію Е = 020. Установити лінію Е = 121. Уважати значення молодшої тетради байта даних з ліній шини DB4...DB722. Установити лінію Е = 023. Установити лінію R/W= 0 |
Наведені в табл. 1.1-1.4 операції мають на увазі, що час виконання кожного кроку становить не менше 250 нс. При використанні сучасних швидкодіючих мікро-ЕОМ ця умова може бути легко порушена, тому необхідно ретельно контролювати мінімальні значення часових інтервалів, щоб вони завжди перебували в області припустимих значень, зазначених у таблиці 1.5, 1.6 і при необхідності вводити затримки.
Рис. 1.3 Часова діаграма операції запису
Рис. 1.4 Часова діаграма операції читання
Таблиця 1.5
Значення тимчасових характеристик. Операція запису
Параметр |
Позначення |
Мін. |
Макс. |
Одиниця |
|
Період сигналу Е |
tcyc |
500 |
- |
нс |
|
Позитивний напівперіод сигналу Е |
PWEH |
230 |
- |
нс |
|
Фронт/спад сигналу Е |
tEr, tEf |
- |
20 |
нс |
|
Встановлення адреси |
tAS |
40 |
- |
нс |
|
Утримання адреси |
tAH |
10 |
- |
нс |
|
Встановлення даних |
tDSW |
80 |
- |
нс |
|
Утримання даних |
tDSW |
10 |
- |
нс |
Таблиця 1.6
Значення тимчасових характеристик. Операція читання
Параметр |
Позначення |
Мін. |
Макс. |
Одиниця |
|
Період сигналу Е |
tcyc |
500 |
- |
нс |
|
Позитивний напівперіод сигналу Е |
PWEH |
230 |
- |
нс |
|
Фронт/спад сигналу Е |
tEr, tEf |
- |
20 |
нс |
|
Встановлення адреси |
tAS |
40 |
- |
нс |
|
Утримання адреси |
tAH |
10 |
- |
нс |
|
Встановлення даних |
tDSW |
- |
160 |
нс |
|
Утримання даних |
tDSW |
5 |
- |
нс |
Описані вище операції запису/читання байта є базовими для здійснення обміну із РКІ-модулем. Реалізація цих двох операцій - єдине, що відрізняє процес обміну по 8-ми розрядній шині від обміну по 4-х розрядній шині. На основі цих двох операцій, реалізованих програмно (коли модуль підключений до портів мікро-ЕОМ), або апаратно (коли модуль підключений до системної шини), будуються всі види операцій програмування й керування.
1.1.3 Програмування й керування
Перед початком розгляду принципів керування РКІ-модулем, звернемося до внутрішньої структури контролера HD44780, щоб зрозуміти основні принципи побудови РКІ-модулей на його основі. Ця інформація дозволить зрозуміти способи організації модулів різних форматів з погляду програмної моделі, а також мотивації конструкторів РКІ-модулей.
Спрощена структурна схема контролера наведена на рис. 1.5. Можна відразу виділити основні елементи з якими доводиться взаємодіяти при програмному керуванні: регістр даних (DR), регістр команд (IR), відеопам'ять (DDRAM), ОЗП знакогенератора (CGRAM), лічильник адреси пам'яті (АС), прапор зайнятості контролера.
Рис. 1.5 Спрощена структурна схема контролера HD44780
Інші елементи не є об'єктом прямої взаємодії з керуючою програмою - вони беруть участь у процесі регенерації зображення на РКІ: знакогенератор, формувач курсору, зсувові регістри й драйвери (нагадуємо, що наведена схема - спрощена, і багато що не важливо для одержання загальної картини проміжні елементи на ній опущені).
Керування контролером ведеться за допомогою інтерфейсу керуючої системи. Основними об'єктами взаємодії є регістри DR й IR. Вибір адресуємого регістра виробляється лінією RS, якщо RS = 0 - адресується регістр команд (IR), якщо RS = 1 - регістр даних (DR).
Дані через регістр DR, залежно від поточного режиму, можуть поміщуватися (або прочитуватися) у відеопам'ять (DDRAM) або в ОЗП знакогенератора (CGRAM) по поточній адресі, що вказує лічильником адреси (АС). Інформація, що попадає в регістр IR, інтерпретується пристроєм виконання команд як керуюча послідовність. Прочитання регістра IR повертає в 7-ми молодших розрядах поточне значення лічильника АС, а в старшому розряді прапор зайнятості (BF).
Відеопам'ять, що має загальний обсяг 80 байтів, призначена для зберігання кодів символів, відображуваних на РКІ. Відеопам'ять організована у два рядки по 40 символів у кожній. Ця прив'язка є твердою й не підлягає зміні. Інакше кажучи, незалежно від того, скільки реальних рядків буде мати кожен конкретний РКІ-модуль, скажемо, 80 х 1 або 20 х 4, адресація відеопам'яті завжди виробляється як до двох рядків по 40 символів.
Будучи пристроєм з динамічною індикацією, контролер циклічно робить відновлення інформації на РКІ. Сам РКІ організований як матриця, що складається залежно від режиму роботи з 8-ми (один рядок символів 5 х 7 крапок), 11-ти (один рядок символів 5 х 10 крапок) або 16-ти (два рядки символів 5 х 7 крапок) рядків по 200 сегментів (коли рядок нараховує 40 символів) у кожній. Власний драйвер контролера HD44780 має тільки 40 виходів (SEG1...SEG40) і самостійно може підтримувати тільки 8-ми символьні РКІ. Це означає, що РКІ-модулі форматів до 8 х 2 реалізовані на одній єдиній мікросхемі HD44780, модулі, що мають більшу кількість символів, містять додаткові мікросхеми драйверів, наприклад, HD44100, кожна з яких додатково надає керування ще 40-ка сегментами.
Особливими є РКІ-модулі формату 16 х 1. Вони також реалізовані за допомогою однієї єдиної мікросхеми HD44780, але однин 16-ти символьний рядок у них фактично складений із двох 8-ми символьних. І хоча це ускладнює програмне керування, адже рядок виявляється логічно розірваний посередині, проте, економічно це виправдано, тому що дозволило створити РКІ-модуль, що містить усього одну мікросхему. Інший варіант просторової адресації зустрічається в 4-х рядкових модулях. Через проблеми розведення струмоведучих доріжок, перший і другий рядки цих модулів є такими як звичайно, третя ж є продовженням першого рядка, а четверта - другого.
У контролера HD44780 існує набір внутрішніх прапорів, що визначають режими роботи різних елементів контролера (таблиця 1.7). У таблиці 11 наведені значення керуючих прапорів безпосередньо після подачі на РКІ-модуль напруги живлення. Перевизначення значень прапорів виробляється спеціальними командами, записуваними в регістр IR, при цьому комбінації старших бітів визначають групу прапорів або команду, а молодші містять властиво прапори.
Таблиця 1.7
Прапори, що управляють роботою контролера HD44780
I/D: |
режим зсуву лічильника адреси АС, 0 - зменшення, 1 - збільшення. |
|
S: |
прапор режиму зсуву вмісту екрана. 0 - зрушення екрана не виробляється, 1 - після запису в DDRAM чергового коду екран зрушується в напрямку, обумовленим прапором I/D: 0 - вправо, 1 - уліво. При зрушенні не виробляється зміна вмісту DDRAM. змінюються тільки внутрішні покажчики розташування видимого початку рядка в DDRAM. |
|
S/C: |
прапор-команда, що робить разом із прапором R/L операцію зрушення вмісту екрана (так само, як й у попередньому випадку, без змін в DDRAM) або курсору. Визначає об'єкт зсуву: 0 - зрушується курсор, 1 - зрушується екран. |
|
R/L: |
прапор-команда, що робить разом із прапором S/C операцію зрушення екрана або курсору. Уточнює напрямок зрушення: 0 - уліво, 1 - вправо. |
|
D/L: |
прапор, що визначає ширину шини даних: 0 - 4 розряди, 1 - 8 розрядів. |
|
N: |
режим розгорнення зображення на РКІ: 0 - один рядок, 1 - два рядки |
|
F: |
розмір матриці символів: 0 - 5 х 8 крапок, 1 - 5 х 10 крапок. |
|
D: |
наявність зображення: 0 - виключено, 1 - включено |
|
С: |
курсор у вигляді підкреслювання: 0 - виключений, 1 - включений |
|
В: |
курсор у вигляді мерехтливого знакомісця: 0 - виключений, 1 - включений. |
Значення керуючих прапорів після подачі живлення Таблиця 1.8
I/D = 1: |
режим збільшення лічильника на 1 |
|
S = 0: |
без зрушення зображення |
|
D/L = 1: |
8-ми розрядна шина даних |
|
N = 0: |
режим розгорнення одного рядка |
|
F = 0: |
символи з матрицею 5 х 8 крапок |
|
D = 0: |
відображення виключене |
|
З = 0: |
курсор у вигляді підкресника виключений |
|
В = 0: |
курсор у вигляді мерехтливого знакомісця виключений |
Список керуючих комбінацій бітів регістра IR і виконувані ними команди наведені в таблиці 12. Так як на момент включення РКІ-модуль нічого не відображає (прапор D = 0), то для того, щоб вивести який-небудь текст необхідно, як мінімум, включити відображення, установивши прапор D = 1. От приклад широко розповсюдженої послідовності для ініціалізації РКІ-модуля: $38, $OC, $06 (знак "$" перед числом указує на шістнадцятирічна підстава). $38 установлює режим відображення 2-х рядків з матрицею 5 х 8 крапок і роботу з 8-ми розрядною шиною даних; $OC включає відображення на екрані РКІ-модуля, без відображення курсорів; $06 установлює режим автоматичного переміщення курсору праворуч після виводу кожного символу.
Таблиця 1.8
Керуючі комбінації бітів регістра IR
D7 D6 D5 D4 D3 D2 D1 D0 |
Призначення |
|
0 0 0 0 0 0 0 1 |
Очищення екрана, АС = 0, адресація АС на DDRAM |
|
0 0 0 0 0 0 1 - |
АС = 0, адресація на DDRAM, скинуті зрушення, початок рядка адресується на початку DDRAM |
|
0 0 0 0 0 1 I/D S |
Вибирається напрямок зрушення курсору або екрана |
|
0 0 0 0 1 D C B |
Вибирається режим відображення |
|
0 0 0 1 S/C R/L - - |
Команда зрушення курсору/екрана |
|
0 0 1 DL N F - - |
Визначення параметрів розгорнення й ширини шини даних |
|
0 1 AG AG AG AG AG AG |
Присвоєння лічильнику АС адреси в області CGRAM |
|
1 AD AD AD AD AD AD AD |
Присвоєння лічильнику АС адреси в області DDRAM |
Контролер HD44780 підтримує як операції запису так й операції читання. Читання регістра DR приводить до завантаження вмісту DDRAM або CGRAM, залежно від поточного режиму, при цьому курсор зміщається на одну позицію, як і при записі. Читання регістра IR повертає 8 значущих розрядів, причому в 7-ми молодших утримується поточне значення лічильника АС (7 розрядів, якщо адресується DDRAM, і 6 - якщо CGRAM), а в старшому - прапор зайнятості BF. Цей прапор має значення 1 коли контролер зайнятий й 0 - коли вільний. Необхідно враховувати, що більшість операцій, виконуваних контролером, забирають значний час, близько 40 мкс, а час виконання деяких доходить до одиниць мілісекунд, тому цикл очікування зняття прапора BF повинен обов'язково бути присутнім у програмах драйвера РКІ-модуля й передувати здійсненню будь-якої операції (природно, крім операції перевірки прапора BF).
Таблиця 1.9
Таблиця кодів символів контролера Epson, набір "Russian"
Із припустимих для розміщення в DDRAM кодів символи з кодами $00...$07 (і їхній дублікат з кодами $08...$0F) мають спеціальне призначення - це пере обумовлені символи, графічне зображення яких може призначити сам споживач, розмістивши відповідну інформацію в області CGRAM. Для програмування доступні 8 переобумовлених символів у режимі з матрицею 5 х 7 крапок й 4 з матрицею 5 х 10 (у режимі 5 х 10 переобумовлені символи адресуються кодами DDRAM через один: $00, $02, $04, $06). Для кодування матриці використаються горизонтально "покладені" байти, п'ять молодших бітів яких несуть інформацію про малюнок (причому 1 означає, що сегмент буде включений), 4-й розряд кожного з 8-ми (або 11-ти в режимі 5 х 10) байтів матриці визначає ліву колонку символу, а 0-й - праву. Старші три біти не використаються, так само як і старші п'ять байтів, що становлять повну область матриці символу (16 байтів) у режимі 5 х 10 (зверніть увагу, що матриця програмувальних символів допускає використання повної висоти рядка (8 рядків для режиму 5 х 7 й 11 рядків для режиму 5 х 10), тобто можна розміщати крапки в області курсору, що підкреслює).
Щоб визначити власний символ необхідно встановити лічильник АС на адресу початку матриці необхідного символу в CGRAM - $00, $08, $10 і т.д. ($00, $10, $20 для режиму 5 х 10 крапок) - зробити перезапис всіх байтів матриці, починаючи з верхнього рядка. Після цього, записавши в DDRAM код запрограмованого символу: $00, $01, $02 ($00, $02, $04 для режиму 5 х 10 крапок), на екрані у відповідному місці буде відображатися відповідний символ.
1.3 Інтерфейс РКІ з AVR-мікроконтролером
На рис. 2.6. і рис. 2.8. наведені дві можливі схеми сполучення РКІ й AVR-мікроконтролера. У першій схемі (рис. 1.6) РКІ підключається до AVR як блок зовнішньої пам'яті даних.
Вузол формування сигналу E тут виконаний так само, як і на фірмових платах STK200, STK300 і використовується сигнал запису WR AVR-мікроконтролера й старший розряд адреси A15. Таким чином, інформація на індикатор надходить при виконанні AVR-мікроконтролером команди запису даних у зовнішню пам'ять із будь-якою адресою, що має A15=1.
На рис. 1.7. представлена часова діаграма запису даних у зовнішню пам'ять AVR-мікроконтролера.
Рис. 1.6 Включення РКІ як блоку зовнішньої пам'яті
Порівнюючи її з діаграмою сигналів запису даних у контролер РКІ, не важко помітити, що сигнали E й WR мають різну полярність. Розрізняються також часові співвідношення цих сигналів із сигналами на шині даних. Тому вузол формування сигналу E на рис. 23 має додатковий інвертор і ланцюжок, що диференціює, що укорочує імпульс запису.
В якості сигналу вибору регістра RS у розглянутій схемі використається ще один розряд адреси - A14. Таким чином, операції запису в контролер РКІ команд або даних відрізняються між собою тільки адресою. Наприклад, дані можна записувати за адресою $C000, а команди - за адресою $8000.
Вивід R/W РКІ в пропонованій схемі безпосередньо приєднаний до лінії "земля", тим самим задається єдино можливий напрямок передачі інформації від AVR-мікроконтролера на РКІ. При цьому втрата можливості опитувати BUSY-прапор і зчитувати дані із блоків пам'яті контролера РКІ окупається економією одного керуючого виводу AVR.
Розглянута схема вимагає мінімальних програмних витрат на обслуговування РКІ, але, мабуть, годиться тільки для AT90S4414, AT90S8515 й megaAVR, які допускають підключення зовнішньої пам'яті.
На рис. 1.5 зображена схема підключення РКІ, яку можна використати для AVR-мікроконтролерів, не спроможних до підключення зовнішньої пам'яті даних. У цій схемі керуючі сигнали E й RS формуються програмно на звичайних лініях уведення/виводу AVR. У наведеному прикладі шина даних складається з 4 розрядів. Кожен байт даних при цьому, як згадувалося вище, передається за дві послідовні посилки, починаючи зі старшої тетради.
Рис. 1.7 Запис даних у зовнішню пам'ять AVR-мікроконтролера
Рис. 1.8 Підключення РКІ за допомогою 6 цифрових виводів
1.4 Програмування виводу інформації на РКІ
Драйвером якого-небудь апаратного вузла називають набір підпрограм, які враховують всі апаратні особливості схеми включення цього вузла й максимально полегшують роботу з ним головній програмі.
Найпростішими складовими "цеглинками" драйвера РКІ можуть бути підпрограми, перераховані в таблиці 14.Перші дві з них ("icom_XXXX" й "idat_XXXX") для виводу в контролер індикатора байта команди й байта даних реалізують розглянуті раніше тимчасові діаграми обміну сигналами між контролером індикатора й AVR-мікроконтролером. Побудова цих підпрограм цілком залежить від схеми включення індикатора.
Таблиця 1.10
Базові підпрограми виводу інформації на РКІ
Призначення підпрограми (пп) |
Назва пп для схеми на рис. 23 |
Назва пп для схеми на рис. 24 |
|
Вивід байта-команди в контролер РКІ |
icom_8515 |
icom_2313 |
|
Вивід байта даних у контролер РКІ |
idat_8515 |
idat_2313 |
|
Ініціалізація РКІ |
initlcd_8515 |
initlcd_2313 |
Підпрограма ініціалізації контролера РКІ"initlcd_XXX", посилаючи в індикатор послідовність команд за допомогою підпрограми "icom_XXXX", задає режим роботи РКІ. Ця підпрограма надалі при програмуванні реального завдання може доповнюватися залежними від цього завдання фрагментами. Наприклад, у підпрограмі ініціалізації зручно виконати вивід постійного (не змінюваного в усі час роботи програми) тексту на дисплей. Тут же ми будемо задавати початкові значення керуючим биткам (прапорами), за допомогою яких драйвер РКІ буде обмінюватися статусною інформацією з головною програмою.
Для того, щоб краще зрозуміти роботу перерахованих підпрограм, розглянемо програму "runstr" виводу на РКІ рядка, що біжить. У цій програмі показано, як, перепрограмуючи початкові осередки знакогенератора, можна за допомогою не русифікованого РКІ виводити на дисплей російські букви. Зверніть увагу на те, що виведений текст зберігається в flash-пам'яті програм у вигляді таблиці. При добуванні даних із цієї таблиці покажчик адреси доводиться множити на 2. Це відбувається через те, що пам'ять програм, у якій розміщається таблиця виведених символів, має 16-розрядні осередки, у кожній з яких зберігається по двох ASCII-коду даних. Задаючи початкову адресу таблиці за допомогою директиви.org, ми задаємо адресу 16-розрядного осередку. Але для команди LPM добування байта даних з пам'яті програм потрібно задати адреса байта, що, мабуть, у два рази більше адреси слова.
В програмі "runstr" тривалість затримок між виводами на індикатор задає сам процесор, підраховуючи кількість холостих операцій. При цьому ніякої корисної роботи процесор не виконує. Зрозуміло, що якщо єдиною метою програми є організація рядка, що біжить, те використовуваний у програмі "runstr" спосіб завдання програмних затримок є цілком прийнятним.
Розглянемо тепер випадок, коли AVR-мікроконтролер призначений для керування яким-небудь об'єктом, а РКІ використається для відображення контрольованого параметра, наприклад, частоти, кількості імпульсів і т.п. У такому реальному завданні програмне забезпечення завжди будується з використанням системи переривань AVR-мікроконтролера. І в цьому випадку вести відлік тимчасових інтервалів у головній програмі стає неможливим, тому що не відомо, коли і які відбувалися переривання й скільки на їхнє обслуговування треба було часу. Тому в подібних випадках підрахунок тимчасових інтервалів покладають на таймер. А процесор при цьому звільняється для рішення більше інтелектуальних завдань.
Схема взаємодії головної програми й окремих програмних модулів, що обслуговують РКІ по перериванню від таймера, зображена на рис. 8.
Функцією основної програми "main", так само як і раніше, є завдання режиму роботи РКІ в ініціалізуючої частини програми. Під час ініціалізації, коли переривання ще не дозволені, можна скористатися розглянутими вище підпрограмами затримки.
В основному циклі головної програми завданням процесора є одержання чергового відліку й збереження цього відліку в проміжному буфері РКІ"ind_buf", що організується в RAM. Збереження відліку в RAM відбувається приблизно в 100 разів швидше, ніж його вивід на індикатор, тому що при цьому головній програмі не потрібно чекати після запису кожного байта. мікроконтролер рідкокристалічний індикатор плата
Підпрограма "tim0_lcd", яку можна вважати основною частиною драйвера РКІ, викликається по перериванню від таймера 0 з тимчасовим інтервалом, достатнім для обробки інформації усередині контролера РКІ(у наведеному прикладі близько 64 мкс). Завданням підпрограми "tim0_lcd" є вивід у РКІ чергового байта даних з буфера "ind_buf".
Рис. 1.9 Взаємодія головної програми й драйвера РКІ, що працює по перериванню
Таким чином, головна програма "main" швидко поміщає результат у буфер, а підпрограма обробки переривання "tim0_lcd" у міру готовності РКІ байт за байтом виводить результат з буфера на індикатор.
Варто мати на увазі, що при використанні переривань й організації взаємодії програм через буфер даних, у системі виникають трохи (у нашому випадку два) паралельних асинхронних процеси: головна програма працює у своєму ритмі, що залежить від конкретного завдання, а періодичність підпрограми обслуговування переривання визначається швидкодією РКІ.
Через асинхронності програми можлива ситуація, коли обидві програми одночасно почнуть звертатися до буфера "ind_buf". Наприклад, після того, як на індикатор виведена тільки частина результату, головна програма може обновити дані в буфері. І тоді наступні байти, виведені на індикатор, будуть ставитися вже до нового відліку, що, звичайно, буде неприпустимою помилкою.
Для того, щоб таких ситуацій не виникало, необхідно вирішити завдання взаємовиключного доступу програм до проміжного буфера. Для рішення цього завдання використають спеціальні біти керування, які називають семафорами або прапорами. У розглянутій програмі як такий прапор обраний біт PB.0 і прийнято, що якщо PB.0=0, те відкритий доступ до буфера для головної програми; якщо PB.0=1, те відкритий доступ до буфера для підпрограми обслуговування переривання. У найперший раз прапор установлюється при ініціалізації, дозволяючи доступ до буфера головній програмі, а потім кожна програма, завершивши роботу з буфером, перемикає прапор у протилежний стан.
1.5 Принцип роботи схеми РКІ панелі
В AT90S4433 є 3 порти: PB, PC й PD. PC,які можуть використатися в якості аналогового або цифрового порту уведення. Всі порти можуть використатися як цифрові входи й виходи. Цим управляє програма через DDR (Data direction register) (Регістр напрямку даних). В якості цифрових використовуються контакти, крім 23 (0 або 5 V). Max232 - це перетворювач рівня напруги. Інтерфейс RS232 використає +-10V, а Max232 перетворить її в 0-5V.
На контакті 1 (контакт скидання) AT90S4433 знаходиться «монітор живлення». Вона підтримує низький рівень на скиданні (активний), коли живлення недостатньо, щоб захистити процесор від виконання невірних операцій або виходу з ладу. Це може відбутися за кілька мілісекунд під час включення або вимикання. Схема забезпечує коректний запуск програми на мікроконтролері. Діод D2 потрібен для того щоб при перемиканні реле не зруйнувати мікроконтролер. Коли перемикається реле, котушка генерує дуже високу напругу. Ця напруга має полярність, протилежну до живлячої напруги котушки. Тому діод включений паралельно котушці реле в такій же полярності.
Дві кнопки, приєднані через коннектор, позначені схематично як "Цифрові кнопки". При натисканні вони замикають PD3 або PD6 на землю.
1.5.1 Керування світлодіодами
Керування світлодіодами - найпростішому, що може зустрітися при виготовленні схем на мікроконтролерах. Як відомо, світлодіоди споживають досить маленький струм - залежно від типу світлодіода цей струм може становити від 3 до 20 мА. Робоча напруга світлодів становить приблизно від 1,5 до 4 В.
Так струм, що мікроконтролери сімейства AVR можуть віддавати при напрузі «логічний нуль» на вихідній лінії, може досягати 20 мА, можна управляти світлодіодом просто підключивши його до вихідної лінії порту послідовно з обмежуючий струм резистором. Другий вивід цього ланцюжка варто приєднати до позитивної лінії живлення.
Варто звернути увагу на те, що підключати треба саме в такий спосіб - при напрузі «логічна одиниця» мікроконтролер може віддавати набагато менший струм. А виходить, його не можна буде застосувати для керування світлодіодом прямо. Управляти світлодіодом гранично просто: тому що один його вивід підключений до позитивного проведення живлення, для того, щоб він став світитися (тобто спадання напруги на ньому стало достатнім для запалювання), потрібно сформувати на другому виводі ланцюжка зі світлодіодом напруга низького рівня «О». Говорячи простіше, для того, щоб запалити світлодіод, треба записати у вихідний порт значення «О». Щоб погасити - записати «1». На рис. 1.10 зображена проста схема із двома світлодіодами.
1.5.2 Приєднання сторожового таймера
За замовчуванням сторожовий таймер відключений. Його можна включити командою w=1 й установити тайм-аут командою s=x, де x - це величина між 1 й 255.
Рис. 1.10 Найпростіша схема для керування двома світлодіодами
Наприклад, s=10 установить тайм-аут сторожового таймера на 10*16sec=160sec. Програма-драйвер повинна періодично встановлювати тайм-аут, щоб уникнути спрацьовування сторожового таймера. Якщо сервер раптом заблокується(«підвисне»), то драйвер не буде більше встановлювати тайм-аут, після цього спрацює сторожовий таймер.
Сторожовий таймер сконструйований так, що він спрацьовує лише один раз. Це зроблено, щоб уникнути повторного спрацьовування під час перевірки файлової системи, що може піти після перезавантаження. Коли сервер знову включиться, драйвер знову дозволить таймеру працювати. Щоб фізично приєднати сторожовий таймер, потрібно паралельно із кнопкою скидання комп'ютера включити реле від сторожового таймера.
Реле - це пристрій, у якому при досягненні певного значення вхідної величини х вихідна величина у змінюється стрибкоподібно і приймає кінцеве число значень. Для живлення обмотки реле потрібен струм, що перевищує 20 мА, тому прямо підключати до мікроконтролера його не можна. Для керування реле, можна застосовувати найпростіший підсилювач - транзисторний ключ. На рис. 28 показаний приклад схеми з реле. Зверніть увагу на наявність діода, підключеного паралельно обмотці реле - він потрібний для захисту схеми від ЕРС самоіндукції, що з'являється в процесі комутації обмотки.
Зовсім аналогічно можна включати не реле, а яке-небудь інше навантаження, наприклад, лампу накалювання й т.д.
У випадку, якщо необхідно управляти більшим числом реле, або інших потужних навантажень, зручно застосовувати мікросхеми ULN2003 або ULN2803. Ці мікросхеми містять відповідно, 7 й 8 транзисторних ключів на складених транзисторах (схема Дарлінгтона).
Рис. 1.11 Використання реле
1.5.3 Кнопки й перемикачі
Перевіряти стан кнопок або вимикачів досить просто. Досить приєднати, наприклад, кнопку одним виводом до загальної шини, а іншим - до вхідної лінії порту уведення/виводу, настроєної для роботу в режимі читання. Також ця лінія повинна бути з'єднана через резистор опором приблизно 4,7... 100 кОм із проведенням «+» живлення. При більшому опорі менше сумарний споживаний струм.
а) Ідеальний контакт
б) Реальний контакт
Рис. 1.11 Явище «дребежання контактів»
При розімкнутих контактах, на відповідному виводі мікроконтролера буде «1», при замиканні контактів - «0».
Всі механічні вимикачі мають недолік - при роботі з ними спостерігається так зване дребежання контактів, при якому при натисканні на кнопку відбувається багато замикань і розмикань контактів через те, що вони як правило, пружинять. Тривалість періоду дребежання залежить від якості контактів і звичайно становить від 10 до 100 мс. Боротися із цим ефектом простіше програмним способом. На рис. 1.11. показані графіки, що ілюструють дребежання контактів, а на рис. 1.12 наведена найпростіша схема із кнопкою.
Рис. 1.12 Підключення кнопки до мікроконтролера
1.5.4 Схема скидання
Використається для затримки запуску мікроконтролера при включенні живлення, що потрібно для його правильного запуску, а також для ручного перезапуску мікроконтролера натисканням на кнопку. Найпростіша схема ланцюга скидання показана на рис. 2.14.
Якщо в схемі використовується убудована електрично перепрограмувальна пам'ять даних мікроконтролера, варто використати зовнішню схему, що втримує вивід Reset на низькому рівні доти, поки напруга не здійметься до необхідного для нормальної роботи мікроконтролера рівня. Ця схема повинна працювати як при збільшенні напруги (тобто рівень на виводі Reset стане високим тільки після досягнення напругою живлення потрібного рівня), так і при зниженні напруги живлення нижче припустимого рівня. Така схема звичайно називається «монітор живлення». На рис. 1.13. показана схема одного з варіантів підключення «монітор живлення».
D1 AT90S2313-8P1
Рис. 1.13 Схема підключення «монітора живлення»
Рис. 1.14 Найпростіша схема скидання
1.5.5 Тестування РК-панелі
РК- панель створена для роботи від внутрішнього джерела живлення 5V комп'ютера (червоний дріт=5V, чорний дріт=земля). Проте їх ніколи не потрібно з'єднувати в перший раз із комп'ютерним джерелом живлення. Джерело живлення комп'ютера дуже потужне, тому комп'ютер і плата можуть згоріти, якщо допуститися цієї помилки. Тому процедура тестування із зовнішнім стабілізованим й обмеженим по струмі джерелом живлення просто не обхідна.
Після цього програма записується в ПЗП,і на екрані з'явиться рядок бігучий рядок. Тепер приєднується інтерфейс RS232:
MAX232 контакт 14 до CTS (DB-9 контакт 8) MAX232 контакт 7 до RXD (DB-9 контакт 2) MAX232 контакт 13 до TXD (DB-9 контакт 3)Також приєднується DTR, DSR й CD (DB-9 контакти 4, 6 й 1)
Для використання послідовного порту, потрібно ініціалізувати його програмою ttydevinit.
1.6 Драйвери для мікроконтролера та лістинг програми роботи РКІ
Для забезпечення роботи РКІ панелі потрібно встановити необхідні драйвери та бібліотеки для програмованих компонентів схеми.
· lcd.c, lcd.h, lcd_hw.h: Це загальна бібліотека AVR LCD. Вона базується на роботі Peter Fleury (http://jump.to/fleury). Ця версія злегка модифікована і є більше гнучкою. Вона дозволяє приєднати РК-дисплей до будь-якого контакту мікроконтролера, необхідно лише перемінити значення у файлі lcd_hw.h.
· avr-util.c, avr-util.h: функції для одержання різних затримок за часом.
· uart.c, uart.h: Це бібліотека для інтерфейсу RS232. Вона використає апаратні переривання. Як тільки від комп'ютера приходить символ, виконується функція SIGNAL(SIG_UART_RECV), і дані копіюються із прийомного буфера в буфер рядків. Командна мова для нашої РК-панели побудований так, що кожна команда закінчується символом нового рядка. Коли буде знайдений символ нового рядка, установлюється прапор (uart_rx_linecomplete), а дані стають доступними. Це також означає, що потрібно посилати команди дисплею як найшвидше, а чекати якийсь час (мілісекунду) після кожного рядка. Кожна команда підтверджується результатом, ok, або err (при помилці). Керуюча програма perl може використати результат як селектор для посилання наступної команди.
· analog.c, analog.h: Код аналого-цифрового перетворювача. Він також управляється перериваннями. Коли запускається окреме перетворення аналог-код, програма чекає переривання SIG_ADC, щоб уважати результат з регістра ADC.
· hardwarewd.c, hardwarewd.h: Це сторожовий таймер. Використовується внутрішній дільник (ділимо на 1024), щоб управляти таймером. Таймер - це 16-бітний регістр, від якого ми віднімаємо 8-бітну змінну до переповнення. Для кварцу 4MHz ми будемо відраховувати нашу змінну близько 16 секунд. Програма на perl визначає, що комп'ютер працює, періодично встановлюючи змінну назад у максимальне значення. Якщо вона не може цього зробити (наприклад, комп'ютер завис), то змінна постійно зменшує своє значення, а коли вона досягне 0, реле перемкнеться й викличе апаратне перезавантаження нашого сервера.
· linuxlcdpanel.c: Це основна програма. Вона безупинно перевіряє наявність команд від інтерфейсу RS232 і натискання кнопок.
Тепер перейдемо до написання програми. Для контроля індикатора напишемо програму із декількома ключовими функціями роботи з РКІ: lcd_dat(unsigned char x) - для запису даних х, lcd_com(unsigned char x) - для запису команди х, lcd_init(void) - для початкової ініціалізації індикатора:
#include <avr/io.h> //бібліотека вводу/виводу
#define RS 2 //RS=PD2 - сигнал управління РКІ
#define E 3 //E=PD3 - сигнал управління РКІ
#define TIME 10 //Константа часової затримки для РКІ
//Частота тактування МК - 4Мгц
//Програма формування затримки
void pause (unsigned int a)
{ unsigned int i;
for (i=a;i>0;i--);
}
//Програма передачі команд в РКІ
void lcd_com (unsigned char lcd)
{ unsigned char temp;
temp=(lcd&~(1<<RS))|(1<<E);//RS=0 - це команда
PORTD=temp; //Виводимо на portD старшу тетраду команди, сигнали
RS, E
asm("nop"); //Невелика затримка в 1 такт МК, для стабілізації
PORTD=temp&~(1<<E); //Сигнал запису команди
temp=((lcd*16)&~(1<<RS))|(1<<E);//RS=0 - это команда
PORTD=temp; //Виводимо на portD молодшу тетраду команды, сигналы
RS, E
asm("nop"); //Найбільша затримка в 1 такт МК, для стабілізації
PORTD=temp&~(1<<E); //Сигнал запису команди
pause (10*TIME); //Пауза для виконання команди
}
//Програма запису даних в РКІ
void lcd_dat (unsigned char lcd)
{ unsigned char temp;
temp=(lcd|(1<<RS))|(1<<E);//RS=1 - це данні
PORTD=temp; //Виводимо на portD старшу тетраду asm("nop");
//Невелика затримка в 1 такт МК, для стабілізації
PORTD=temp&~(1<<E); //Сигнал запису даних
temp=((lcd*16)|(1<<RS))|(1<<E);//RS=1 - це данні
PORTD=temp; //Виводимо на portD молодшу тетраду даних, сигнали
RS, E
asm("nop"); //Невелика затримка в 1 такт МК, для стабілізації
PORTD=temp&~(1<<E); //Сигнал запису даних
pause(TIME); //Пауза для вивода даних
}
//Программа ініціалізації РКІ
void lcd_init (void)
{
lcd_com(0x2c);//4-провідний інтерфейс, 5x8 розмір символа
pause(100*TIME);
lcd_com(0x0c);//Показати зображення, курсор не показувати
pause(100*TIME);
lcd_com(0x01);//Очистити DDRAM и установити курсор на 0x00
pause (100*TIME);
}
//Основна програма
int main(void)
{
DDRD=0xfc;//Ініціалізація portD
PORTD=0x00;
pause(1000);//Затримка, щоб РКІ встиг включитися
lcd_init();//Ініціалізація РКІ
lcd_dat('w'); //Вивід
lcd_dat('w');
lcd_dat('w');
lcd_dat('.');
lcd_dat('a');
lcd_dat('v');
lcd_dat('r');
lcd_dat('l');
lcd_dat('a');
lcd_dat('b');
lcd_dat('.');
lcd_dat('c');
lcd_dat('o');
lcd_dat('m');
lcd_com(0xc0);//Ставимо курсор на початок 2-го рядка РКІ
lcd_dat('I');//Записуємо
lcd_dat('t');
lcd_dat('"');
lcd_dat('s');
lcd_dat(' ');
lcd_dat('s');
lcd_dat('o');
lcd_dat(' ');
lcd_dat('e');
lcd_dat('a');
lcd_dat('s');
lcd_dat('y');
while(1)//безкінечний цикл
;
return 1;
}
Для латині і цифр ASCII коди співпадають з зашитими в знакогенератор РКІ, відтак дозволено використовувати lcd_dat(`A'). Можно зробити свою бібліотеку для роботи з РКІ, виділивши функції lcd_dat(unsigned char x), lcd_com(unsigned char x), lcd_init(void) в окремий модуль LCD.h и підключати його за необхідністю.
· Ця процедура дуже економить час, варто тільки один раз написати потрібні функції, а потім весь час їх тільки використовувати. Також варто підмітити, что незручно виводити довгу фразу по одній літері, для цього необхідно нашу строку виведення помістити в массив із unsigned char і виводити за допомогою цикла:
· int main(void)
· { unsigned char data [14]= {'w','w','w','.','a','v','r','l','a','b','.','c','o','m'};
· unsigned char i;
· DDRD=0xfc;//Ініціалізація portD
· PORTD=0x00;
· pause(1000); //Затримка, щоб РКІ встиг включитися
· lcd_init();//Ініціалізація РКІ
· for (i=0;i<14;i++)//Вивід запису політерно
· lcd_dat(data[i]);
1.7 Розробка друкованої плати системи
Розробка і виготовлення друкованої плати проводиться на основі ОСТ 4 ГО 054. 043 та ОСТ 4 ГО 054. 058. У відповідності з ними існують наступні методи виготовлення: комбінований (позитивний та негативний), хімічний, металізація наскрізних отворів для виготовлення багатошарових друкованих плат.
Виходячи з особливостей електричної схеми, елементної бази та конструктивних характеристик друкованих плат, що виготовляються різноманітними методами, обираємо комбінований позитивний метод виготовлення друкованих плат.
При розробці друкованої плати слід врахувати наступні рекомендації:
живлячі провідники та „земля" повинні мати мінімальний опір та довжину
„сигнальні" провідники повинні мати мінімальну довжину, де вони проходять паралельно
Розроблена друкована плата приводиться в додатку 3. Зовнішній вигляд системи приведено на рис. 1.15.В ході розробки друкованої плати використовувалась програма PCAD.
Рис. 1.15 Зовнішній вигляд системи
1.8 Розрахунки параметрів АЦП та ЦАП
Обробка інформації в мікроконтролерних системах відбувається тільки в цифровій формі. Проте природно всі фізичні процеси проходять тільки в аналоговій формі. Тому для обробки аналогових сигналів потрібно використовувати аналогово-цифрове (АЦП) та цифро-аналогове перетворення (ЦАП).В мікроконтролерах AVR є вбудовані мікросхеми виконуючі ці функції. Часто параметри вхідного сигналу сильно впливають на ефективність роботи мікроконтролера. Розрахуємо основні параметри цих перетворень при заданих параметрах сигналу.
Вихідні дані:
· середня потужність сигналу P=1.4 Вт;
· коефіцієнт амплітуди Ka=6.5;
Подобные документы
Сутність, види та методи виготовлення друкованих плат. Розробка варіантів струмопровідного рисунку плати. Визначення геометричних параметрів плати та вибір оптимального варіанту для розробки її робочого креслення. Використання графічної системи "Компас".
курсовая работа [589,6 K], добавлен 09.01.2014Вибір і обґрунтування кількості шарів, основних розмірів і товщини плати. Розрахунок мінімального і максимального діаметра вікна фотошаблона, який використовується для її виготовлення хімічним способом. Розміщення радіотехнічних монтажних елементів.
курсовая работа [560,5 K], добавлен 19.08.2014Теоретичний аналіз існуючих технологій гібридних інтегральних мікросхем, особливості їх конструювання, позначення параметрів, вибір матеріалів, переваги і недоліки, технології виробництва. Розробка комутаційної схеми, розрахунок елементів мікросхеми.
курсовая работа [1004,7 K], добавлен 18.09.2010Розробка, коригування електричної схеми. Обґрунтування вибору елементної бази. Вибір пасивних елементів. Проектування друкованої плати. Вибір матеріалу основи друкованого монтажу і провідникового матеріалу. Вибір електричного приєднання друкованої плати.
курсовая работа [3,1 M], добавлен 01.10.2014Вибір і розрахунок підсилювача потужності звукової частоти: розробка схеми, параметри мікросхеми. Вибір схеми стабілізованого джерела живлення. Розрахунок компенсаційного стабілізатора, випрямляча, силового трансформатора, радіаторів, друкованої плати.
курсовая работа [105,9 K], добавлен 29.01.2014Складання логічної схеми алгоритмів при проектуванні системи управління агрегатом, формування мікрокоманд, що включають логічні та функціональні оператори. Розробка структурної та принципової схеми системи управління, її конструктивне оформлення.
курсовая работа [1,0 M], добавлен 28.09.2011Аналіз електричної схеми мікшера. Опис функціональної, структурної та електричної принципіальної схеми пристрою. Розробка та обґрунтування конструкції пристрою. Розрахунок віброміцності та удароміцності друкованої плати. Аналіз технологічності пристрою.
дипломная работа [2,3 M], добавлен 12.12.2010Призначення і склад акустичної системи, її електрична принципова схема, принцип дії і умови експлуатації. Розробка додаткових технічних вимог до конструкції ЕА. Конструктивно-технологічний розрахунок друкованої плати та трасування друкованого монтажу.
дипломная работа [1,7 M], добавлен 05.07.2010Аналіз схеми електричної принципової та елементної бази напівпровідникового сенсора температури. Вибір характерного блоку схеми для моделювання. Розробка друкованої плати. Розрахунок діаметру монтажних отворів, контактних площадок і ширини провідників.
курсовая работа [910,7 K], добавлен 09.06.2013Розробка мікропроцесорної системи управління роботом з контролем переміщення на базі мікроконтролера AT89C51. Розробка і опис структурної схеми мікропроцесорної системи. Відстань між світлодіодом і фототранзистором. Розробка алгоритмів програми.
курсовая работа [2,3 M], добавлен 13.04.2013