Проектування мікрокомп’ютера

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2004
Тип роботи:
Курсова робота
Предмет:
Мікропроцесорні системи
Група:
КСМ-41

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти та науки України Національний університет “Львівська політехніка” Курсова робота з курсу: “Мікропроцесорні системи” тема: “Проектування мікрокомп’ютера” Зміст 1. Початкові дані на проектування 3 2. Загальні відомості 4 2.1 Основні технічні харакетристики мікроконтролера AT 80C5112: 5 2.2 Внутрішня структура AT83C5112 6 3. Розробка схеми електричної функціональної 11 3.1 Загальна схема мікрокомп'ютера 11 3.2 Формування магістралі адрес 11 4. Проектування принципової схеми мікрокомп'ютера 14 4.1 Вузол синхронізації 14 4.2 Вузол формування сигналу RESET 14 4.3 Зовнішня пам'ять 15 4.4 Вузли вводу/виводу 18 5. Програма початкової ініціалізації 20 5.1 Опис алгоритму 20 5.2 Блок-схема алгоритму 21 5.3 Текст програми ініціалізації 22 Висновок 30 Література 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 Мнемоніка Тип Назва і функція  VSS I Ground: OV рекомендований.  VCC I Power Supply: напруга живлення для normal, idle and power-down режиму.  AVSS I Analog Ground: OV рекомендований.  AVCC I Analog Power Supply: напруга живлення для normal and idle режиму АЦП  VREF I VREF рекомендований позитивний вхід конвертора.  VPP I Vpp : Programming Supply Voltage: на цей пін подається 12В програмуючий імпульс, який виконує програмування EPROM та тестові методи виробника.  P1.0-P1.7 I/O Port 1: двонаправлений 8-канальний з внутрішнім pull-ups Альтернативні функції порту:   I/O WR (P1.0): строб запису в зовнішню пам’ять даних   I/O RD (P1.1): строб читання з зовнішньої пам’яті даних   I/O ECI (P1.2): Зовнішні тактові імпульси для PCA   I/O CEXO (P1.3): Приймання/порівняння зовнішнього I/O для PCA module 0   I/O CEX1 (P1.4): Приймання/порівняння зовнішнього I/O для PCA module 1   I/O CEX2 (P1.5): Приймання/порівняння зовнішнього I/O для PCA module 2   I/O CEX3 (P1.6): Приймання/порівняння зовнішнього I/O для PCA module 3   I/O CEX4 (P1.7): Приймання/порівняння зовнішнього I/O для PCA module 4  P3.0 - P3.7 I/O Port 3: двонаправлений 8-канальний з внутрішнім internal pull-ups. Може бути використаний як вхід. P3.6 – працює тільки на вхід. Port 3 порт .   I/O RXD (P3.0): Вхід послідовного порту   I/O TXD (P3.1): Вихід послідовного порту   I/O INTO (P3.2): Зовнішнє переривання 0   I/O TO (P3.3): зовнішній вхід Timer 0   I/O Port 4: є 8-бітовим двонаправленим I/O портом. Кожний біт може використовуватись для вводу CMOS або для двотактного виводу. Порт може використовуватись як порт АЦП і для осцилятора і скиду.   I/O AINO (P4.0): Вхід АЦП 0  P4.0-P4.7 I/O AIN1 (P4.1): Вхід АЦП 1 T1: зовнішній вхід Timer 1   I/O AIN2 (P4.2): Вхід АЦП 2 SS: Вибір входу Slave для SPI контролера   I/O AIN3 (P4.3): Вхід АЦП 3 INT1: Зовнішнє переривання 1   I/O AIN4 (P4.4): Вхід АЦП 4 MISO: Master IN, Slave OUT для SPI контролера   I/O AIN5 (P4.5): Вхід АЦП 5 MOSI: Master OUT, Slave IN для SPI контролера   I/O AIN6 (P4.6): Вхід АЦП 6 SPSCK: Тактовий вхід I/O для SPI контролера   I/O AIN7 (P4.7): Вхід АЦП 7  P0.0-P0.7 I/O Port 0: є відкрито-дренажний, двонаправлений I/O порт. Піни порту 0, час запису до яких 1s, змінні і можуть бути використані як високоімпедансні входи. Порт 0 є також мультиплексованою молодшою шиною адрес і даних для доступу до зовнішньої пам’яті програм і даних.  P2.0-P2.7 I/O Port 2: є 8-бітовим двонаправленим I/O портом. Через порт 2 може передаватись старша частина адреси на шину адрес до зовнішньої пам’яті. Коли використовується 8-ми бітна адресація, то на порт 2 видається вміст P2 SFR.  RST I RST: Сигнал високої напруги на цей вхід протягом двох циклів виконує скид пристрою. Якщо значення WD активує скид, то RST стає виходом на протязі часу внутрішнього скиду.  ALE O Address Latch Enable: Вихідний імпульс для визначення молодшої адреси для доступу до зовнішньої пам’яті програм. В нормальному режимі роботі, ALE створюється постійно 1/6 від частоти осцилятора. При доступі до зовнішньої пам’яті даних один імпульс ALE пропускається.  PSEN O Program Store Enable: Строб читання зовнішньої пам’яті програм. Коли виконується код з зовнішньої програмної пам’яті, PSEN активний двічі кожного машинного циклу, і навпаки, PSEN не активний протягом доступу до пам’яті даних. PSEN не активний протягом роботи з внутрішньою пам’яттю.  EA I External Access Enable: EA повинен бути встановлений в низький рівень для використання зовнішньої пам’яті програм, розміщених в адресному просторі більше 1FFFH.  XTAL1 I XTAL1 : Вхід до інвертуючого підсилювача осцилятора і вхід до кола внутрішнього генератора тактових імпульсів  XTAL2 O XTAL2 : Вихід з інвертуючого підсилювача осцилятора Output from the inverting oscillator amplifier.   3. Розробка схеми електричної функціональної 3.1 Загальна схема мікрокомп'ютера АТ80С5112 завдяки високій інтеграції побудова мікрокомп'ютера на його основі не вимагає під'єднання великої кількості додаткових пристроїв. Тому основні вузли, які потрібно спроектувати в схемі, це: зовнішня постійна та змінна пам'ять, вузол синхронізації та вузол початкової установки, вузли вводу/виводу. Загальна структурна схема мікрокомп'ютера представлена на рисунку 3.  Рисунок 3 – Загальна структурна схема мікрокомп'ютера 3.2 Формування магістралі адрес Оскільки в АТ80С5112 лінії порт Р0 мультиплексовані для передачі молодшої частини адреси і передачі/приймання даних, то виникає необхідність використання регістру для проміжного зберігання молодшої частини адреси. Сигнал ALE визначає тип передачі: дані чи адреса.  Рисунок 4 – Схема формування магістралі адресу 3.3 Формування магістралі даних В мікроконтролері АТ80С5112 дані які передаються до зовнішньої пам'яті, також як і молодша частина адреси, передаються через порт Р0. Але завдяки тому, що мікроконтролер має сигнал ALE, який визначає тип сигналів на виході Р0, а також завдяки сигналу PSEN, який визначає звертання до пам'яті програм чи пам'яті даних, відпадає необхідність формувати магістраль даних за допомогою шинних формувачів та інших схем проміжного зберігання даних. Подача даних на зовнішню пам'ять відбувається напряму з порту Р0. Це підвищує як швидкісні характеристики роботи мікро контролера з пам’яттю, так і надійність схеми в цілому.  Рисунок 5 – Формування магістралі даних Як видно з рисунку 5, передача даних в схему індикації відбувається по магістралі даних завдяки тому, що вона знаходиться в адресному просторі пам'яті даних. Це означає, що передача даних проводиться за допомогою команд пересилки в пам'ять даних. Таке виконання спрощує написання програм, а також дозволяє використовувати вільні порти мікроконтролера за іншим призначенням, що суттєво розширює можливості проектованого мікрокомп'ютера, а відповідно і області його застосування. Контроль схемою індикації відбувається за допомогою ліній порту мікроконтролера Р1. 3.4 Формування зовнішніх пристроїв вводу/виводу До зовнішніх пристроїв вводу/виводу проектованого мікрокомп'ютера відносяться схема індикації, блок клавіатури та послідовний інтерфейс RS232. На рисунку 6 зображена функціональна схема пристроїв вводу/виводу. Рисунок 6 – Формування зовнішніх пристроїв вводу/виводу В мікрокомп'ютері використана динамічна світлодіодна індикація. Це означає, що в кожен момент включені сегменти тільки одного з восьми розрядів. Якщо зображення на індикаторі обновлювати приблизно 100 раз за секунду, то складеться враження неперервного свічення. Розряди індикатора почергово вибираються дешифратором, який управляється мікро контролером через порт Р1. Сегменти вибраного розряду засвічуються сигналами, які надходять з регістрі, який в свою чергу під'єднаний до порта Р0. Виходи дешифратора одночасно служать для сканування рядків клавіатури. Зчитування інформації з клавіатури відбувається через порт Р3. Для з'єднання проектованого мікрокомп'ютера з іншим комп'ютером служить послідовний порт RS232. Загальна функціональна схема мікрокомп'ютера представлена в графічній частині курсового проекту. 4. Проектування принципової схеми мікрокомп'ютера 4.1 Вузол синхронізації В мікроконтролері АТ80С5112 XTAL1 і XTAL2 є входом і виходом, відповідно, інвертуючого підсилювача, який з використанням кварцового кристала або керамічного резонатора працює як вбудований генератор, як показано на рисунку 7.  Рисунок 7 – Схема вузла синхронізації Кварцовий кристал генератора таймера під'єднується безпосередньо до виведень XTAL1 і XTAL2. Додаткові зовнішні конденсатори не потрібні. Генератор оптимізований під часовий кварц з частотою 32,768 КГц. Зовнішній тактовий сигнал, який подається на ці виводи, поступає на підсилювач зі смугою пропускання 256 КГц. Таким чином частота зовнішнього сигналу повинна знаходитися в діапазоні від 0 до 256 КГц. 4.2 Вузол формування сигналу RESET При ввімкненні живлення мікро контролер АТ80С5112 виконує операцію початкового скидання автоматично, при чому посилає сигнал RESET всій системі. Така операція називається “power-on-reset” ”(POR), часова діаграма її виконання зображена на рисунку 8.  Рисунок 8 – Часова діаграма виконання сигналу початкового скидання Затримка POR забезпечує достатній час, щоб дозволити ініціювати коректно всі складові частини процесора після ввімкнення живлення. Щоб реалізувати схему „ручного” скиду мікроконтролера потрібно під'єднати до входу Reset, як показано на рисунку 9, відповідний перемикач К1. Рисунок 9 – схема „ручного” формування сигналу Reset Для виконання скиду потрібно утримувати низький рівень на вході на протязі двох машинних циклів. Reset має найвищий пріоритет з усіх переривань і перериває будь-яку операцію, що виконується. Лічильник команд PC встановлюється в значення 0000H і вибірка команд відбувається з зовнішньої пам'яті програм за цією адресою. 4.3 Зовнішня пам'ять Мікроконтролер АТ80С5112 працює з двома типами зовнішньої пам'яті – пам'ять програм та пам'ять даних. Завдяки використанню спеціальних виводів для визначення пам'яті PSEN, а також типу сигналів на шині ALE, відпадає необхідність в декодуванні адрес. На рисунку 10 показана схема під’єднання зовнішньої постійної та оперативної пам’яті до мікроконтролера. Програма початкової ініціалізації зберігається в постійній пам'яті. Тип мікросхеми постійної пам'яті, яка використана при проектуванні мікрокомп'ютера, - 27С512, вона має об'єм 64Кб, тобто покриває весь адресний простір, який може адресувати мікроконтролер. Рисунок 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 Блок-схема алгоритму 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. http://atmel.com/ 2. Конспект лекцій з курсу “Мікропроцесорні системи”( 3. Микропроцессоры и микропроцессорные комплекты интегральных микросхем : Справочник. В 2 т. / В.-Б. Б. Абрайтис, Н. Н. Аверьянов, А. И. Белоус и др.; Под ред. В. А. Шахнова. – М.: Радио и связь, 1988. – Т.1. – 368 с.: ил. 4. Цифровые и аналоговые интегральные микросхемы : Справочник / С. В. Якубовский, Л. И. Ниссельсон, В. И. Кулешова и др.; Под ред. С. В. Якубовского. – М.: Радио и связь, 1990. – 496 с.: ил
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!