Міністерство освіти та науки України
Національний університет “Львівська політехніка”
Курсова робота
з курсу: “Мікропроцесорні системи”
тема: “Проектування мікрокомп’ютера”
Виконав: студент групи КСМ-4
Перевірив:
Львів – 2004
Зміст
TOC \o "1-3" \h \z \u
HYPERLINK \l "_Toc71906567" 1. Початкові дані на проектування PAGEREF _Toc71906567 \h 3
HYPERLINK \l "_Toc71906568" 2. Загальні відомості PAGEREF _Toc71906568 \h 4
HYPERLINK \l "_Toc71906569" 2.1 Основні технічні харакетристики мікроконтролера AT 80C5112: PAGEREF _Toc71906569 \h 5
HYPERLINK \l "_Toc71906570" 2.2 Внутрішня структура AT83C5112 PAGEREF _Toc71906570 \h 6
HYPERLINK \l "_Toc71906571" 3. Розробка схеми електричної функціональної PAGEREF _Toc71906571 \h 11
HYPERLINK \l "_Toc71906572" 3.1 Загальна схема мікрокомп'ютера PAGEREF _Toc71906572 \h 11
HYPERLINK \l "_Toc71906573" 3.2 Формування магістралі адрес PAGEREF _Toc71906573 \h 11
HYPERLINK \l "_Toc71906574" 4. Проектування принципової схеми мікрокомп'ютера PAGEREF _Toc71906574 \h 14
HYPERLINK \l "_Toc71906575" 4.1 Вузол синхронізації PAGEREF _Toc71906575 \h 14
HYPERLINK \l "_Toc71906576" 4.2 Вузол формування сигналу RESET PAGEREF _Toc71906576 \h 14
HYPERLINK \l "_Toc71906577" 4.3 Зовнішня пам'ять PAGEREF _Toc71906577 \h 15
HYPERLINK \l "_Toc71906578" 4.4 Вузли вводу/виводу PAGEREF _Toc71906578 \h 18
HYPERLINK \l "_Toc71906579" 5. Програма початкової ініціалізації PAGEREF _Toc71906579 \h 20
HYPERLINK \l "_Toc71906580" 5.1 Опис алгоритму PAGEREF _Toc71906580 \h 20
HYPERLINK \l "_Toc71906581" 5.2 Блок-схема алгоритму PAGEREF _Toc71906581 \h 21
HYPERLINK \l "_Toc71906582" 5.3 Текст програми ініціалізації PAGEREF _Toc71906582 \h 22
HYPERLINK \l "_Toc71906583" Висновок PAGEREF _Toc71906583 \h 30
HYPERLINK \l "_Toc71906584" Література PAGEREF _Toc71906584 \h 31
1. Початкові дані на проектування
1. Тип мiкропроцесора - ATMEL AT83C5112
2. Постiйна пам’ять
3. Оперативна пам’ять
4. Зовнішні периферійні пристрої
2. Загальні відомості
AT83C5112 – це високопродуктивна ROM (внутрішня постійна пам’ять) версія 8-ми бітного контролера стандарту 80C51. AT83C5112 підтримує всі стандарти серії 80С51: 256 байтний внутрішній ОЗП, 8Кб внутрішнього ПЗП, 8-ми ресурсна 4-х бітна система переривань, два таймера/лічильника. Джерела переривань - це внутрішня периферія (таймери і послідовний порт) і зовнішні виведення INT0, INT1.
Мікроконтролер AT83C5112 призначений для аналогових інтерфейсних засобів, тому він має 10-ти бітний 8-ми канальний АЦП і 5-ти канальний масив програмованих лічильників PCA.
В AT83C5112 вбудований більш вдосконалений сторожевий таймер Watchdog, послідовний порт UART з гнучким на лаштуванням роботи, який спрощує мультипроцесорне з’єднання, послідовна шина контролю SPI, підвищення обробки програмного коду в режимі Х2.
Зниження споживання живлення AT83C5112 до мінімального значення без втрати даних можливе завдяки повному статичному виконанню мікроконтролера.
AT83C5112 може працювати в 3 програмно-керованих режимах споживання живлення: Idle, Quiet, Power-down.
Завдяки додатковим функціям, які необхідні для обробки програм роботи з АЦП, швидкісного вводу/виводу AT83C5112 може використовуватись в промислових системах управління, в системах автономного управління роботехнічними засобами, в споживчих товарах та ін.
Система команд процесора MCS51ориентирована на розв'язання задач управління. В неї входять групи арифметико-логічних операцій, команд пересилки і команд управління.
Для промислового виробництва мікроконтролер AT83C5112 пропонується в 48/52 пінових корпусах.
2.1 Основні технічні харакетристики мікроконтролера AT 80C5112:
- 80C51 архитектура;
- портів вводу/виводу;
- два 16-ти бітних таймера/лічильника;
- 256 байт встроенного ОЗУ;
- 8Кб вбудованого ПЗП;
- Максимальна частота кристалу 40 МГц в стандартному режимі, 20 МГц в X2 режимі (40 МГц частота процесорного ядра);
- Пять портов: 32+2 дискретных входа/выхода;
- 5-канальный 16-битный программируемый массив счетчиков (РСА);
- Х2 здатність покращення швидкості (6 машинних циклів);
- 10-ти бітний 8-ми канальний аналогово-цифровий перетворювач;
- Асинхронний вхід скиду;
- Полнодуплексный универсальный асинхронный порт (UART), совместимый с 80C51;
- послідовна шина управління SPI
- Подвійна система синхронізації:
кристальний або керамічний осцилятор (33/40МГц);
внутрішній RS генератор;
- Система переривань:
8 ресурсних переривань;
4 переривання пріорітетних рівнів;
- Режим контролю живлення:
Пасивний режим (Idle);
Стоповий режим (Power-down);
Power-off Flag;
- Живлення: 2,7 – 5,5В
- Температурний режим: Індустріальний (-40...+85С);
- Корпус: LQFP48, PLCC52
2.2 Внутрішня структура AT83C5112
Мікропроцесорна архітектура С51 є стандартом "де-факто" в області вбудованих систем управління. Архітектура виявилася настільки вдалою, що за два десятиріччя розвитку вона не зазнала яких-небудь значних змін.
AT83C5112 – це висопродуктивний однокристальний 8-розрядний мікроконтролер серії 80С51 На рисунку 1 зображено архітектуру AT83C5112.
Рисунок 1 – Архітектура AT83C5112
AT83C5112 має високошвидкісну внутрішню центральну шину, через яку відбувається обмін інформацією усі основні блоки мікроконтролера: процесорне ядро С5112, внутрішня пам’ять, блок АЦП, блок портів вводу/виводу, послівний інтерфейсний порт (SPI), сторожевий таймер (WD).
Процесорне ядро С5112 є сумісним з ядром 8-бітних мікроконтролерів серії 80С51, наслідує всі риси цього стандарту.
Генератор тактових імпульсів забезпечує синхронізацію роботи всіх модулів мікроконтролера, а також виробляє тактові імпульси, які можуть бути згенеровані, як вбудованою системою автоналаштування фазової частоти (RC-генератор), так і за допомогою зовнішнього генератора. Частота синхронізуючої послідовності може змінюватися динамічно.
Порти вводу/виводу виконують під’єднання зовнішньої пам’яті та периферійних пристроїв. Вибір режимів роботи портів виконується за допомогою двох регістрів для кожного порту.
Послідовний інтерфейсний порт (SPI) яке дозволяє повно дуплексне синхронізоване послідовне з’єднання між мікроконтролерами і периферійними пристроями. За допомогою SPI можна з’єднати декілька пристроїв через одну шину, в якій один пристрій буде ведучим, а інші – ведомими.
Аналогово цифровий перетворювач побудований на основі мікросхеми 10-бітного аналогово цифрового перетворювача T98C51RB2/RC2. До АЦП можна під’єднати 8 зовнішніх аналогових пристроїв, які будуть комутуватися до АЦП через аналоговий мультиплексом. АЦП може виконувати перетворення в 3 режимах:
стандартне перетворення (7-8 біт);
точне перетворення (8-9 біт) ;
високої точності перетворення (10 біт).
Система переривань має вісім загальних векторів переривань: два зовнішніх вектора (INT0 та INT1), два вектора від таймера (timers 0, 1), вектори послідовного порту, PCA, SPI та АЦП. Кожен вектор може встановлюватись і скидатись за допомогою спеціального регістра Interrupt Enable. Цей регістр також містить біт загального виключення переривань. Вектори переривань можуть програмуватись на чотири рівня пріоритету – від 0 (найнижчого) до 3 (найвищого).
Сторожевий таймер Watchdog представлена як метод відновлення в ситуаціях, коли процесор може зациклитись („зависнути”) при обробці блока програми. WD складається з 14 бітного лічильника і регістру скиду. По замовчуванню, при скиді мікроконтролера WD виключений. Для включення потрібно записати в регістри WDTRST та SFR значення 01EH та 0E1H відповідно. Коли система WD включена, лічильник інкрементується кожен машинний цикл і не можливо програмно виключити WD окрім команди reset. При переповненні лічильника WD генерує зовнішній скид.
2.3 Функціональне призначення виводів AT83C5112
На рисунку 2 зображено умовно графічне зображення мікроконтролера AT83C5112 і його виводи, згруповані по належності до певних внутрішніх блоків.
Рисунок 2 – Умовне графічне зображення AT83C5112
3. Розробка схеми електричної функціональної
3.1 Загальна схема мікрокомп'ютера
АТ80С5112 завдяки високій інтеграції побудова мікрокомп'ютера на його основі не вимагає під'єднання великої кількості додаткових пристроїв. Тому основні вузли, які потрібно спроектувати в схемі, це: зовнішня постійна та змінна пам'ять, вузол синхронізації та вузол початкової установки, вузли вводу/виводу. Загальна структурна схема мікрокомп'ютера представлена на рисунку 3.
SHAPE \* MERGEFORMAT
АТ80С5112
Вузол синхронізації
Вузол початкової установки
ROM
RAM
Блок індикації та клавіатура
Послідовний інтерфейс
Рисунок 3 – Загальна структурна схема мікрокомп'ютера
3.2 Формування магістралі адрес
МА
Оскільки в АТ80С5112 лінії порт Р0 мультиплексовані для передачі молодшої частини адреси і передачі/приймання даних, то виникає необхідність використання регістру для проміжного зберігання молодшої частини адреси. Сигнал ALE визначає тип передачі: дані чи адреса.
SHAPE \* MERGEFORMAT Р2
Р0
ALE
8
8
8
16
RG
D
C
Q
Рисунок 4 – Схема формування магістралі адресу
3.3 Формування магістралі даних
В мікроконтролері АТ80С5112 дані які передаються до зовнішньої пам'яті, також як і молодша частина адреси, передаються через порт Р0. Але завдяки тому, що мікроконтролер має сигнал ALE, який визначає тип сигналів на виході Р0, а також завдяки сигналу PSEN, який визначає звертання до пам'яті програм чи пам'яті даних, відпадає необхідність формувати магістраль даних за допомогою шинних формувачів та інших схем проміжного зберігання даних. Подача даних на зовнішню пам'ять відбувається напряму з порту Р0. Це підвищує як швидкісні характеристики роботи мікро контролера з пам’яттю, так і надійність схеми в цілому.
SHAPE \* MERGEFORMAT Р2
Р0
PSEN
WR
RD
8
ROM
D
CS
RAM
D
WR
RD
CS
A15
Схема індикації
A15
Р1
3
Рисунок 5 – Формування магістралі даних
Як видно з рисунку 5, передача даних в схему індикації відбувається по магістралі даних завдяки тому, що вона знаходиться в адресному просторі пам'яті даних. Це означає, що передача даних проводиться за допомогою команд пересилки в пам'ять даних. Таке виконання спрощує написання програм, а також дозволяє використовувати вільні порти мікроконтролера за іншим призначенням, що суттєво розширює можливості проектованого мікрокомп'ютера, а відповідно і області його застосування. Контроль схемою індикації відбувається за допомогою ліній порту мікроконтролера Р1.
3.4 Формування зовнішніх пристроїв вводу/виводу
До зовнішніх пристроїв вводу/виводу проектованого мікрокомп'ютера відносяться схема індикації, блок клавіатури та послідовний інтерфейс RS232. На рисунку 6 зображена функціональна схема пристроїв вводу/виводу.
RG
D
Q
C
Блок семисегментних індикаторів
DC
Клавіатура
Перетворювач рівнів
RS232
P0
P2
P1
P3
TxD
RxD
TxDA
RxDA
8
8
8
8
8
4
3
Рисунок 6 – Формування зовнішніх пристроїв вводу/виводу
В мікрокомп'ютері використана динамічна світлодіодна індикація. Це означає, що в кожен момент включені сегменти тільки одного з восьми розрядів. Якщо зображення на індикаторі обновлювати приблизно 100 раз за секунду, то складеться враження неперервного свічення. Розряди індикатора почергово вибираються дешифратором, який управляється мікро контролером через порт Р1. Сегменти вибраного розряду засвічуються сигналами, які надходять з регістрі, який в свою чергу під'єднаний до порта Р0. Виходи дешифратора одночасно служать для сканування рядків клавіатури. Зчитування інформації з клавіатури відбувається через порт Р3. Для з'єднання проектованого мікрокомп'ютера з іншим комп'ютером служить послідовний порт RS232. Загальна функціональна схема мікрокомп'ютера представлена в графічній частині курсового проекту.
4. Проектування принципової схеми мікрокомп'ютера
4.1 Вузол синхронізації
В мікроконтролері АТ80С5112 XTAL1 і XTAL2 є входом і виходом, відповідно, інвертуючого підсилювача, який з використанням кварцового кристала або керамічного резонатора працює як вбудований генератор, як показано на рисунку 7.
INCLUDEPICTURE "htm/AVR/20000000.gif" \* MERGEFORMATINET
Рисунок 7 – Схема вузла синхронізації
Кварцовий кристал генератора таймера під'єднується безпосередньо до виведень XTAL1 і XTAL2. Додаткові зовнішні конденсатори не потрібні. Генератор оптимізований під часовий кварц з частотою 32,768 КГц. Зовнішній тактовий сигнал, який подається на ці виводи, поступає на підсилювач зі смугою пропускання 256 КГц.
Таким чином частота зовнішнього сигналу повинна знаходитися в діапазоні від 0 до 256 КГц.
4.2 Вузол формування сигналу RESET
При ввімкненні живлення мікро контролер АТ80С5112 виконує операцію початкового скидання автоматично, при чому посилає сигнал RESET всій системі. Така операція називається “power-on-reset” ”(POR), часова діаграма її виконання зображена на рисунку 8.
Рисунок 8 – Часова діаграма виконання сигналу початкового скидання
Затримка POR забезпечує достатній час, щоб дозволити ініціювати коректно всі складові частини процесора після ввімкнення живлення.
Reset
R1
C1
K1
Щоб реалізувати схему „ручного” скиду мікроконтролера потрібно під'єднати до входу Reset, як показано на рисунку 9, відповідний перемикач К1.
Рисунок 9 – схема „ручного” формування сигналу Reset
Для виконання скиду потрібно утримувати низький рівень на вході на протязі двох машинних циклів. Reset має найвищий пріоритет з усіх переривань і перериває будь-яку операцію, що виконується. Лічильник команд PC встановлюється в значення 0000H і вибірка команд відбувається з зовнішньої пам'яті програм за цією адресою.
4.3 Зовнішня пам'ять
Мікроконтролер АТ80С5112 працює з двома типами зовнішньої пам'яті – пам'ять програм та пам'ять даних. Завдяки використанню спеціальних виводів для визначення пам'яті PSEN, а також типу сигналів на шині ALE, відпадає необхідність в декодуванні адрес.
На рисунку 10 показана схема під’єднання зовнішньої постійної та оперативної пам’яті до мікроконтролера.
Програма початкової ініціалізації зберігається в постійній пам'яті. Тип мікросхеми постійної пам'яті, яка використана при проектуванні мікрокомп'ютера, - 27С512, вона має об'єм 64Кб, тобто покриває весь адресний простір, який може адресувати мікроконтролер.
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
ALE
PSEN
WR
RD
А0 RAM D0
А1 D1
А2 D2
А3 D3
А4 D4
А5 D5
А6 D6
А7 D7
А8
А9
А10
А11
А12
А13
А14
WE VDD
OE GND
CS
А0 ROM D0
А1 D1
А2 D2
А3 D3
А4 D4
А5 D5
А6 D6
А7 D7
А8
А9
А10
А11
А12
А13
А14
А15
CS VDD
OE GND
D0 RG Q0
D1 Q1
D2 Q2
D3 Q3
D4 Q4
D5 Q5
D6 Q6
D7 Q7
C
OE
D0
D1
D2
D3
D4
D5
D6
D7
A8
A9
A10
A11
A12
A13
A14
A15
ALE
PSEN
WR
RD
D0
D1
D2
D3
D4
D5
D6
D7
ALE
A0
A1
A2
A3
A4
A5
A6
A7
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
A15
PSEN
D0
D1
D2
D3
D4
D5
D6
D7
D0
D1
D2
D3
D4
D5
D6
D7
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
WR
RD
A15
Рисунок 10 – Схема під'єднання зовнішньої пам'яті до мікроконтролера
Об'єм пам'яті даних має 32Кб. Тип мікросхеми – 62256.
Часові діаграми роботи контролера з зовнішньою пам'яттю представлені на рисунку 11.
Рисунок 11.а – Часова діаграма циклу читання з пам'яті програм (ROM)
Рисунок 11.б – Часова діаграма циклу запису в пам'ять даних (RAM)
Рисунок 11.в – Часова діаграма циклу читання з пам'яті даних (RAM)
Таким чином мікрокомп'ютер проектується з 64Кб зовнішньої постійної пам'яті та 32Кб зовнішньої оперативної пам'яті.
Вибір мікросхеми постійної пам'яті відбувається за допомогою сигналу PSEN. Робочий діапазон адрес – 0000h…FFFFh.
Вибір мікросхеми оперативної пам'яті відбувається за допомогою адресної лінії А15. Робочий діапазон адрес – 0000h…7FFFh. Діапазон адрес 8000h…FFFFh використовується для роботи з блоком світлодіодної індикації.
4.4 Вузли вводу/виводу
Для зв'язку мікрокомп'ютера з іншими комп'ютерними системами використовується стандартний послідовний інтерфейс RS232. Схема утворення такого вузла приведена на рисунку 12.
Рисунок 12 – Схема послідовного інтерфейсу мікрокомп'ютера
Рисунок 13 - Часова діаграма роботи послідовного інтерфейсу
На рисунку 14 показана схема під'єднання клавіатури та блока індикації до мікрокомп'ютера.
Рисунок 14 – Схема під'єднання клавіатури та блоку індикації
Загальна схема електрична принципова мікрокомп'ютера представлена на кресленні в графічній частині курсового проекту.
5. Програма початкової ініціалізації
5.1 Опис алгоритму
Після включення мікрокомп'ютера або після надходження сигналу Reset вибірка першої команди виконується з пам'яті програм за адресою 0000h. Програма, з якою повинен працювати мікроконтролер, має два загальних блоки: перший – це ініціалізація основних вузлів мікроконтролера, другий – це керування роботою мікроконтролера.
В програмі ініціалізації першим кроком є ініціалізація функціональних регістрів та визначення режиму синхронізації мікроконтролера, на лаштування його робочої частоти. Другий крок програми – це налагодження обробника переривань, визначення пріоритетів векторів переривань, за якими будуть визначатися запити від послідовного порту, АЦП. Включення сторожевого таймера в є необов'язковим, але це підвищить надійність роботи системи. Тому в програму буде включений блок запуску сторожевого таймера. Він заключається в пересилці відповідних значень в регістри початкової ініціалізації сторожевого таймера. Для того, щоб з'єднувати проектований мікрокомп'ютер з іншими комп'ютерними системами, потрібно налаштувати послідовний порт на відповідний режим роботи, визначити швидкість передачі. При визначенні пріоритетів переривань потрібно вказати найвищий пріоритет для вектора переривання послідовного порту, тому що при приєднанні мікрокомп'ютера до іншої КС контроль над ним відбувався за допомогою ції КС. Останнім кроком програми ініціалізації є визначення роботи аналогово цифрового перетворювача, визначення його часових характеристик.
Програма керування роботою мікроконтролера бере на себе функції обробки переривань, які надходять від зовнішніх пристроїв, обробка опитування клавіатури та вивід інформації на семисегментні індикатори, керування передачею інформації через послідовний порт та керування роботою АЦП, запис отриманої інформації з АЦП в оперативну пам'ять для її подальшої обробки.
5.2 Блок-схема алгоритму
Початок
Ініціалізація функціональних регістрів
Вибір режим синхронізації
Ініціалізація індикатора
Ініціалізація та запуск сторожевого таймера
Налаштування послідовного порту UART
Налаштування АЦП
Блок обробки переривань
Опитування клавіатури
Вивід інформації на семи сегментний індикатор
Передача інформації через послідовний порт
Робота з АЦП
Кінець
5.3 Текст програми ініціалізації
P0 EQU 80H
P1 EQU 90H
P2 EQU 0A0H
P3 EQU 0B0H
PSW EQU 0D0H
ACC EQU 0E0H
B EQU 0F0H
SP EQU 81H
DPL EQU 82H
DPH EQU 83H
WARM EQU 30H
WARM1 EQU 55H
WARM2 EQU 0AAH
WARM3 EQU 33H
WARM4 EQU 0CCH
WARMBT EQU 0
INITD EQU 38H
CUROND EQU 0EH
CURHOME EQU 02H
DISPOFF EQU 08H
DISPON EQU 0CH
DISPCLR EQU 01H
L1STRT EQU 00
DPORT EQU P1
LCOUNT EQU 020
EOT EQU 04H
RCAP2H EQU 0CBH
RCAP2L EQU 0CAH
T2CON EQU 0C8H
PUBLIC __STKSTART
PUBLIC __EXIT
%DEFINE(HEAP) (0H)
%DEFINE(STACKLENGTH) (20H)
%DEFINE(RAMSIZE) (0FFH)
%DEFINE(XDATSTART) (0H)
%DEFINE(XDATEND) (0H)
%DEFINE(REGBANK) (0)
%DEFINE(VIRT_STACK) (400H)
%DEFINE(PROTECT) (NO)
?STACK SEGMENT IDATA
RSEG ?STACK
__STKSTLAB:
DS %STACKLENGTH
__STKSTART IDATA __STKSTLAB - 1
?HEAP SEGMENT XDATA
RSEG ?HEAP
__HEAPSTART:
DS %HEAP
__HEAPEND:
__HEAPLENGTH XDATA __HEAPEND - __HEAPSTART
CSEG AT 0H
LCALL __START
STARTUP SEGMENT CODE
RSEG STARTUP
__START:
CLR EA
MOV SP, #LOW(__STKSTART)
CLR A
MOV PSW, A
MOV R0, #08
__CLR_IDAT:
MOV @R0, A
INC R0
CJNE R0, #%RAMSIZE, __CLR_IDAT
__CLR_XDAT:
CLR A
MOVX @DPTR, A
INC DPTR
MOV A, DPL
CJNE A, #LOW(%XDATEND+1), __CLR_XDAT
MOV A, DPH
CJNE A, #HIGH(%XDATEND+1), __CLR_XDAT
MOV SP, #LOW(__STKSTART)
MOV P2, #00
MOV PSW, #(%REGBANK * 8)
USING %REGBANK
JMP _MAIN1
ORG 26H
_MAIN1: MOV R0,#WARM
CJNE @R0,#WARM1,_COLD
INC R0
CJNE @R0,#WARM2,_COLD
INC R0
CJNE @R0,#WARM3,_COLD
INC R0
CJNE @R0,#WARM4,_COLD
SETB WARMBT
JMP _INIT
_COLD: CLR WARMBT
MOV R0,#WARM
MOV @R0,#WARM1
INC R0
MOV @R0,#WARM2
INC R0
MOV @R0,#WARM3
INC R0
MOV @R0,#WARM4
_INIT:
;------------------------ Interrupt Vectors------------------------------------------------
ORG 0
AJMP Reset
ORG 03H
AJMP Int0
ORG 0BH
AJMP Timr0
ORG 13H
RETI
ORG 1BH
RETI
ORG 23H
RETI
ORG 0
AJMP Reset
ORG 0BH
AJMP Timr0
ORG 2Bh
SETB ADFlag
RETI
;------------------------Init indicate------------------------------------------------
READ BIT P3.3
STROBE BIT P3.5
CTRL BIT P3.4
LCD_DATA SEGMENT DATA
RSEG LCD_DATA
OFFSET: DS 1
lcd_code segment CODE
RSEG LCD_CODE
PUBLIC INITLCD, OUTLCD, DELAY, CLEARD
INITLCD: CLR STROBE
CLR READ
CLR CTRL ACALL WAIT40
MOV DPORT,#INITD ; INIT #4 1/16 DUTY 5X7 DOTS
ACALL ENABLE
CLR CTRL
ACALL WAIT40
CLR CTRL
ACALL WAIT40
MOV DPORT,#DISPCLR
ACALL ENABLE
ACALL WAIT40
SETB CTRL
RET
OUTLCD: PUSH DPL
PUSH DPH
ACAll SETCUR
POP DPH
POP DPL
INC DPTR
ACALL MDISP
RET
SETCUR: ACALL MESSLEN
MOV A,#lcount
SUBB A,R6
CLR C
RRC A
SKIP: ADD A,R7
MOV OFFSET,A
ACALL MOVCUR
RET
LINECHK:CJNE A,#00,CHK2
MOV R7,#00h
INC DPTR
RET
CHK2: CJNE A,#01,CHK3
MOV R7,#40h
INC DPTR
RET
CHK3: CJNE A,#02,CHK4
MOV R7,#14h
INC DPTR
RET
CHK4: CJNE A,#03,CHKD
MOV R7,#54h
INC DPTR
CHKD: RET
UPDATE: INC R6
INC DPTR
AJMP LOOP2
MESSLEN:
MOV R6,#00H
MOV R7,#00H
LOOP2: CLR A
MOVC A,@A+DPTR
ACALL LINECHK
CJNE A,#EOT,UPDATE
RET
MOVCUR: CLR CTRL
MOV A,OFFSET
ADD a,#dadd
MOV DPORT,A
ACALL ENABLE
ACALL WAIT40
SETB CTRL
RET
CLEARD: CLR CTRL
MOV DPORT,#DISPCLR
ACALL ENABLE
ACALL WAIT40
SETB CTRL
RET
MDISP: CLR A
MOVC A,@A+DPTR
MOV DPORT,A
ACALL ENABLE
INC DPTR
DJNZ R6,MDISP
RET
ENABLE: SETB STROBE
NOP
NOP
CLR STROBE
CLR CTRL
MOV DPORT,#255
SETB READ
WAITL: SETB STROBE
NOP
JB P1.7,WAITL
CLR STROBE
CLR READ
SETB CTRL
RET
WAIT40: MOV R3,#35
WAIT1: MOV R2,#255
WAIT2: DJNZ R2,WAIT2
DJNZ R3,WAIT1
RET
DELAY: ACALL WAIT40
DJNZ R4,DELAY
RET
;--------------UART--------------------------------------------------------
JMP MAIN2
ORG 00H
_MAIN2: MOV SCON,#0C0H
MOV RCAP2H,#0FFH
MOV RCAP2L,#30H
MOV T2CON,#14
MOV A,#0AAH
MOV C,P
MOV TB8,C
CLR TI
_LOOP2: MOV SBUF,A
JNB TI,$
CLR TI
JMP _LOOP2
BaudVal EQU -139
StrtVal EQU -39
XmtDat DATA 10h
RcvDat DATA 11h
BitCnt DATA 12h
LoopCnt DATA 13h
Flags DATA 20h
TxFlag BIT Flags.0
RxFlag BIT Flags.1
RxErr BIT Flags.2
RcvRdy BIT Flags.3
TxD BIT P3.0
RxD BIT P3.1
Reset: MOV SP,#30h
MOV Flags,#0
CLR RxFlag
MOV TCON,#00h
MOV IE,#82h
MOV LoopCnt,#16
MOV R1,#0
MOV DPTR,#Msg1
_Loop11: ACALL Mess
MOV A,#':'
ACALL XmtByte
MOV A,R1
ACALL PrByte
INC R1
DJNZ LoopCnt,Loop11
_Loop22: SETB EX0
JNB RcvRdy,$
CLR RcvRdy
MOV A,RcvDat
ACALL XmtByte
SJMP Loop22
XmtByte: JB RxFlag,$
ACALL RSXmt
JB TxFlag,$
RET
RSXmt: MOV XmtDat,A
MOV BitCnt,#10
MOV TH,#High BaudVal
MOV TL,#Low BaudVal
MOV RTH,#High BaudVal
MOV RTL,#Low BaudVal
SETB TR
CLR TxD
SETB TxFlag
RET
Timr0: PUSH ACC
PUSH PSW
JB RxFlag,RxBit
JB TxFlag,TxBit
T0Ex1: CLR TR
T0Ex2: POP PSW
POP ACC
RETI
TxBit: DJNZ BitCnt,TxBusy
CLR TxFlag
SJMP T0Ex1
TxBusy: MOV A,BitCnt
CJNE A,#1,TxNext
SETB TxD
SJMP T0Ex2
TxNext: MOV A,XmtDat
RRC A
MOV XmtDat,A
MOV TxD,C
SJMP T0Ex2
Int0: MOV BitCnt,#10
MOV TH,#High StrtVal
MOV TL,#Low StrtVal
MOV RTH,#High BaudVal
MOV RTL,#Low BaudVal
MOV RcvDat,#0
CLR EX0
CLR RxErr
SETB TR
SETB RxFlag
RETI
RxBit: DJNZ BitCnt,RxBusy
JB RxD,RxBitEx
RxBtErr: SETB RxErr
RxBitEx: CLR RxFlag
SETB EX0
SETB RcvRdy
SJMP T0Ex1
RxBusy: MOV A,BitCnt
CJNE A,#9,RxNext
JB RxD,RxBtErr
SJMP T0Ex2
RxNext: MOV A,RcvDat
MOV C,RxD
RRC A
MOV RcvDat,A
SJMP T0Ex2
PrByte: PUSH ACC
SWAP A
ACALL HexAsc
ACALL XmtByte
POP ACC
ACALL HexAsc
ACALL XmtByte
RET
HexAsc: ANL A,#0FH
JNB ACC.3,NoAdj
JB ACC.2,Adj
JNB ACC.1,NoAdj
Adj: ADD A,#07H
NoAdj: ADD A,#30H
RET
Mess: PUSH ACC
MOV R0,#0
Mesl: MOV A,R0
MOVC A,@A+DPTR
CJNE A,#0,Send POP ACC
RET
Send: ACALL XmtByte
INC R0
SJMP Mesl
;----------------A/D---------------------------------------------------------
Reset1: MOV SP,#30h
MOV Flags,#0
MOV TCON,#00h
MOV IE,#82h
MOV DPTR,#Msg1
ACALL Mess
MOV R1,#0
Loop1: MOV A,R1
ACALL ADConv
MOV R2,A
MOV DPTR,#Msg2
ACALL Mess
MOV A,R1
ACALL PrByte
MOV DPTR,#Msg3
ACALL Mess
MOV A,R2
ACALL PrByte
INC R1
CJNE R1,#5,Loop1
MOV DPTR,#CRLF
ACALL Mess
MOV IE,#0C2h
MOV PWMP,#80h
MOV PWCM,#0
MOV PWENA,#01h
Loop2: MOV A,#0
ACALL ADStart
JNB ADFlag,$
MOV A,ADAT
CPL A
MOV PWCM,A
ACALL PrByte
MOV DPTR,#Msg4
ACALL Mess
SJMP Loop2
ADStart: CLR ADFlag
ORL A,#28h
MOV ADCON,A
RET
ADConv: ORL A,#28h
MOV ADCON,A
ADC1: MOV A,ADCON
JNB ACC.4,ADC1
MOV A,ADAT
RET
XmtByte: ACALL RSXmt
JB TxFlag,$
RET
RSXmt: MOV XmtDat,A
MOV BitCnt,#10
MOV TH,#High BaudVal
MOV TL,#Low BaudVal
MOV RTH,#High BaudVal
MOV RTL,#Low BaudVal
SETB TR
CLR TxD
SETB TxFlag
RET
Timr0: PUSH ACC
PUSH PSW
JB TxFlag,TxBit
T0Ex1: CLR TR
T0Ex2: POP PSW
POP ACC
RETI
TxBit: DJNZ BitCnt,TxBusy
CLR TxFlag
SJMP T0Ex1
TxBusy: MOV A,BitCnt
CJNE A,#1,TxNext
SETB TxD
SJMP T0Ex2
TxNext: MOV A,XmtDat
RRC A
MOV XmtDat,A
MOV TxD,C
SJMP T0Ex2
PrByte: PUSH ACC
SWAP A
ACALL HexAsc
ACALL XmtByte
POP ACC
ACALL HexAsc
ACALL XmtByte
RET
HexAsc: ANL A,#0FH
JNB ACC.3,NoAdj
JB ACC.2,Adj
JNB ACC.1,NoAdj
Adj: ADD A,#07H
NoAdj: ADD A,#30H
RET
Mess: PUSH ACC
MOV R0,#0
Mesl: MOV A,R0
MOVC A,@A+DPTR
CJNE A,#0,Send
POP ACC
RET
Send: ACALL XmtByte
INC R0
SJMP Mesl
Msg2: DB 0Dh, 0Ah, 'A/D Channel ', 0
Msg3: DB ' = ', 0
Msg4: DB ' ', 0
END
Висновок
При створенні мікрокомп’ютера використовувався мікроконтролер АТ80С5112, який наслідує архітектуру 80С51, яка є передовою архітектурою в галузі мікропроцесорних систем. Висока швидкодія, велика інтеграція, наявність вбудованих пристроїв обробки інформації робить цей процесор вигідним при використанні в різних галузях. Мікроконтролер використовується в системах контролю за різними фізичними процесами, в системах управління роботами та автономними комп’ютерними системами, також можливе використання в побутових електротехнічних приладах.
В розробленому мікрокомп’ютері до мікроконтролера приєднано зовнішню пам’ять (пам’ять програм і пам’ять даних), що надає можливість завантажувати більшого обсягу програми, спроектована зовнішня індикація та клавіатура, що дає автономності мікрокомп’ютеру. З’єднання з іншими комп’ютерними системами відбувається завдяки послідовному порту RS232.
Розроблений мікрокомп’ютер може використовуватись в різних системах контролю, де досліджувані сигнали будуть під’єднуватись до входів вбудованого АЦП мікроконтролера.
Робота над курсовим проектом показала переваги використання інтегральних мікросхем передових технологій завдяки їх великій інтеграції, швидкодії, надійності, простоті у проектуванні; їх використання спрощує проект, що в свою чергу зменшує ціну готового виробу.
Література
1. HYPERLINK "http://atmel.com/" http://atmel.com/
2. Конспект лекцій з курсу “Мікропроцесорні системи”.
3. Микропроцессоры и микропроцессорные комплекты интегральных микросхем : Справочник. В 2 т. / В.-Б. Б. Абрайтис, Н. Н. Аверьянов, А. И. Белоус и др.; Под ред. В. А. Шахнова. – М.: Радио и связь, 1988. – Т.1. – 368 с.: ил.
4. Цифровые и аналоговые интегральные микросхемы : Справочник / С. В. Якубовский, Л. И. Ниссельсон, В. И. Кулешова и др.; Под ред. С. В. Якубовского. – М.: Радио и связь, 1990. – 496 с.: ил