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

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

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

Рік:
2024
Тип роботи:
Інші
Предмет:
Мікропроцесорні системи

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

Зміст ВСТУП 3 ЗАВДАННЯ ДО КУРСОВОЇ РОБОТИ 4 СПИСОК СКОРОЧЕНЬ 5 1. Синтез цифрових пристроїв на логічних елементах 6 1.1. Синтез перетворювача коду N в код М 6 1.2. Синтез лічильника імпульсів 13 2. Розробка мікропроцесорної системи на базі МК MCS-51 17 ВИСНОВКИ 27 ВИКОРИТСТАНА ЛІТЕРАТУРА 28 Вступ На даній курсовій роботі ми повторимо отримані нами знання на попередніх курсах з цифрової техніки, та реалізуємо пристрій на мікроконтролері і8051. Мікропроцесор - процесор (пристрій, що відповідає за виконання арифметичних, логічних операцій і операцій управління, записаних в машинному коді), реалізований у вигляді однієї мікросхеми або комплекту з декількох спеціалізованих мікросхем (на відміну від реалізації процесора у вигляді електричної схеми на елементній базі загального призначення або у вигляді програмної моделі). Контролер HD44780 фірми Hitachi фактично є промисловим стандартом і щироко застосовується при виробництві алфавітно-цифрових РКІ-модулів. Аналоги цього контролера або сумісні з ним по інтерфейсу і командній мові мікросхеми, випускають безліч фірм, серед яких: Epson, Toshiba, Sanyo, Samsung, Philips. Ще більше число фірм виробляють РКІ-модулі на базі даних контролерів. Ці модулі можна зустріти в самих різноманітних пристроях: вимірювальних приладах, медичному обладнанні,промисловому і технологічному обладнанні, офісної техніки - принтерах,телефонах, факсимільних і копіювальних апаратах. Алфавітно-цифрові РК-модулі -цє недороге і зручне рішення, що дозволяє заощадити час і ресурси при розробці нових виробів, при цьому забезпечують відображення великого обсягу інформації при нормальному розрізненні  та низькому енергоспоживанні. Можливість оснащення РКІ-модулів задньою підсвіткою дозволяє експлуатувати їх в умовах поганої або нульової  освітленості, а виконання з розширеним діапазоном температур (-20 ° С. .. +70 ° С) в складних експлуатаційних умовах, у тому числі в переносний, польовий і навіть, іноді, в бортовій апаратурі. Контролер 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, хоча в деяких комбінаціях програмна адресація символів може виявитися не дуже зручною. В рамках одного формату можуть вироблятися РКІ-модулі декількох конструктивів, що відрізняються як габаритами РКІ (і, як наслідок, розмірами символів), так і розмірами плати і посадки. Наприклад, фірма Powertip пропонує алфавітно-цифрові РК-модулі 11-ти форматів (від 8 х 2 до 40 х 4) у 37-ми різних конструктивах, 16 х 1 у 6-ти, а модулі формату 16 х 2 у 11-ти [2]. СИНТЕЗ ЦИФРОВИХ ПРИСТРОЇВ НА ЛОГІЧНИХ ЕЛЕМЕНТАХ Синтез перетворювача коду N в код М Складаємо повну таблицю істинності перетворювача коду N=1 в код М=2. № Х3 Х2 Х1 Х0 Y3 Y2 Y1 Y0  0 0 0 0 0 0 0 0 0  1 0 0 0 1 0 0 0 1  2 0 0 1 0 0 0 1 1  3 0 0 1 1 0 1 0 1  4 0 1 0 0 ~ ~ ~ ~  5 0 1 0 1 ~ ~ ~ ~  6 0 1 1 0 0 1 1 1  7 0 1 1 1 ~ ~ ~ ~  8 1 0 0 0 1 0 0 0  9 1 0 0 1 1 0 0 1  10 1 0 1 0 1 0 1 1  11 1 0 1 1 1 1 0 1  12 1 1 0 0 ~ ~ ~ ~  13 1 1 0 1 ~ ~ ~ ~  14 1 1 1 0 ~ ~ ~ ~  15 1 1 1 1 1 1 1 1   2. Записуємо функції перетворення в удосконаленій диз'юнктивній нормальній формі (УДНФ) і удосконаленій кон'юктивній нормальній формі (УКНФ). УДНФ:     УКНФ:   3. Мінімізуємо функції перетворення методом карт Карно. 00 01 11 10   00 0 ~ ~ 1  01 0 ~ ~ 1  11 0 ~ ~ 1  10 0 0 1 1   00 01 11 10  00 0 ~ ~ 0  01 0 ~ ~ 0  11 1 ~ ~ 1  10 0 1 1 0   МДНФ: Y3=x3 МДНФ:  МКНФ: Y3=x3 МКНФ:  00 01 11 10  00 0 ~ ~ 0  01 0 ~ ~ 0  11 0 ~ ~ 0  10 1 1 1 1   00 01 11 10  00 0 ~ ~ 0  01 1 ~ ~ 1  11 1 ~ ~ 1  10 1 1 1 1   МДНФ:  МДНФ:  МКНФ:  МКНФ:  4. Записуємо функції перетворення в базисах функції І-НЕ (Шефера), АБО-НЕ (Вебба).         5. Cхема перетворювача кодів в базисах І-НЕ, АБО-НЕ. 6. Реалізуємо перетворювач кодів на заданому у табл.2 типі ПЗП  7. Реалізація перетворювача кодів на базі мікросхеми ЛА3 (2І-НЕ). 8. Часові діаграми роботи лічильника імпульсів. Q3 Q2 Q1 Q0  0 0 0 0 0  1 0 0 0 1  2 0 0 1 0  3 0 0 1 1  4 0 1 1 0  5 1 0 0 0  6 1 0 0 1  7 1 0 1 0  8 1 0 1 1  9 1 1 1 0   9. Мінімізовуємо за допомогою карт Карно. 00 01 11 10  00 0001 0010 0110 0011  01 ~ ~ ~ 1000  11 ~ ~ ~ 0000  10 1001 1010 1110 1011   00 01 11 10  00 0 0 0 0  01 ~ ~ ~ 1  11 ~ ~ ~ 0  10 1 1 1 1   00 01 11 10  00 0 0 1 0  01 ~ ~ ~ 0  11 ~ ~ ~ 0  10 0 0 1 0   00 01 11 10  00 0 1 1 1  01 ~ ~ ~ 0  11 ~ ~ ~ 0  10 0 1 1 1   00 01 11 10  00 1 0 0 1  01 ~ ~ ~ 0  11 ~ ~ ~ 0  10 1 0 0 1    10. Схема лічильника імпульсів на D тригерах.  Програмна реалізація функції Розробити і описати функціональну схему мікропроцесорної системи на базі МК51. 2. Скласти блок-схему алгоритмів цифрового пристрою Розробити програму на мові Асемблер з необхідними коментарями. LCD_E equ P2.0 LCD_RS equ P2.1 LCD_RW equ P2.2 SPI_CS equ P2.6 SPI_SDO equ P2.5 SPI_SCLK equ P2.7 ;####################################################### DSEG ORG 20h ; ... ORG 30h ResL: ds 1 ResH: ds 1 Tmp: ds 1 divider: ds 1 buff: ds 8 ; ... ORG 60h Stack: DS 20h ;########################################################## CSEG ORG 0000h jmp start ORG 0003h reti ORG 000Bh reti ORG 0013h reti ORG 001Bh reti ORG 0023h reti ; ------------------------------------------------------- ORG 0030h Start: mov sp, #(stack-1) mov p0, #11111111B mov p1, #11111111B mov p2, #11111111B mov p3, #11111111B clr SPI_SCLK call LCD_Init mov DPTR, #S_hello call LCD_Print call LCD_Print_u ;############################################## ;## Main Loop ## ;############################################## MAIN: call ADC_Get call LCD_Print_U call LCD_Busy mov A, #88h call LCD_Cmd call ScanKey mov B, #10 div AB anl A, #0Fh add A, #30h call LCD_Busy call LCD_Data mov A, B anl A, #0Fh add A, #30h call LCD_Busy call LCD_Data call Delay jmp MAIN ;-------------------------------------------------------------------- ; Procedures ;-------------------------------------------------------------------- ScanKey: push 5 push 6 mov R6, #0EFh mov B, #0 sk_m2: mov P0, R6 nop nop mov R5, #4 mov A, P0 sk_m1: rrc A jnc sk_end inc B djnz R5, sk_m1 mov A, R6 rl A mov R6, A jb ACC.7, sk_m2 sk_end: mov P0, #0EFh mov A, B call DecodeKey pop 6 pop 5 ret ;-------------------------------------------------------------------- DecodeKey: inc A movc A, @A+PC ret db 01h, 04h, 07h, 0Ah, 02h, 05h, 08h, 0, 03h, 06h, 09h, 0Bh, 0Fh ;-------------------------------------------------------------------- LCD_Cmd: clr LCD_RW clr LCD_RS mov P1, A setb LCD_E clr LCD_E ret ;--------------------------------------------------------------------- LCD_Data: clr LCD_RW setb LCD_RS mov P1, A setb LCD_E clr LCD_E ret ;---------------------------------------------------------------------- LCD_Init: clr LCD_E clr LCD_RW clr LCD_RS call LCD_Delay mov A, #30h call LCD_Cmd mov B, #10 lcdi_m1: call LCD_Delay djnz B, lcdi_m1 mov A, #30h call LCD_Cmd mov B, #5 lcdi_m2: call LCD_Delay djnz B, lcdi_m2 mov A, #30h call LCD_Cmd mov B, #5 lcdi_m3: call LCD_Delay djnz B, lcdi_m3 mov A, #38h call LCD_Cmd call LCD_Delay mov A, #0Ch call LCD_Cmd call LCD_Delay mov A, #06h call LCD_Cmd call LCD_Delay ret ;------------------------------------------------------------- LCD_Busy: push ACC; mov P1, #0FFh setb LCD_RW clr LCD_RS lcdbc_m1: setb LCD_E nop nop mov A, P1 clr LCD_E jb ACC.7, lcdbc_m1 pop ACC ret ;------------------------------------------------------------- LCD_Print: clr A movc A, @A+DPTR jz lcdpr_end mov B, A call LCD_Busy mov A, B call LCD_Data inc DPTR jmp LCD_Print lcdpr_end: ret ;------------------------------------------------------------- LCD_Delay: push 2 mov R2, #255 djnz R2, $ pop 2 ret ;------------------------------------------------------------- ADC_Get: push B clr SPI_CS clr A nop nop nop mov B, #8 adc_loop: setb SPI_SCLK nop mov C, SPI_SDO clr SPI_SCLK rlc A djnz B, adc_loop setb SPI_CS pop B ret ;------------------------------------------------------------- LCD_Print_U: mov B, #2 mul AB mov resH, B mov resL, A mov divider, #10 mov R0, #buff mov B, #3 call DivW call DivW mov @R0, tmp inc R0 mov @R0, resL call LCD_Busy mov A, #0C0h call LCD_Cmd mov DPTR, #S_u call LCD_Print mov A, @R0 add A, #30h call LCD_Busy call LCD_Data mov A, #'.' call LCD_Busy call LCD_Data dec R0 mov A, @R0 add A, #30h call LCD_Busy call LCD_Data mov A, #' ' call LCD_Busy call LCD_Data mov A, #'V' call LCD_Busy call LCD_Data ret ;------------------------------------------------------------- DivW: push B push ACC mov Tmp,#0 mov B,#16 dv_loop: clr C mov A, ResL rlc A mov ResL, A mov A, ResH rlc A mov ResH, A mov A, Tmp rlc A mov Tmp,A clr C subb A, divider jc dv_next mov tmp, A inc ResL dv_next: djnz B, dv_loop pop ACC pop B ret ;------------------------------------------------------------- Delay: mov r3,#0ffh d_m2: mov r2,#0ffh d_m1: djnz r2,d_m1 djnz r3,d_m2 ret ;------------------------------------------------------------- S_hello: db 'Hello!',0 S_u: db 'U= ',0 end Висновок Мова асемблера- машинно-орієнтована мова низького рівня, команди якого зазвичай знаходяться у відповідності «один до одного» з командами машини і який може забезпечити такі можливості, як використання макрокоманд; автокод, розширений такими засобами мов програмування високого рівня , як вираження, макрокоманди, засоби, що забезпечують модульність програм. Автокод - мова програмування, пропозиції якого за своєю структурою в основному подібні до команд і оброблюваних даними конкретного машинного мови. Мова асемблера - система позначень, що використовується для подання в зрозумілій формі програм, записаних в машинному коді. Мова асемблера дозволяє програмісту користуватися алфавітними мнемонічними кодами операцій, на свій розсуд присвоювати символічні імена регістрів ЕОМ і пам'яті, а також задавати зручні для себе схеми адресації (наприклад, індексний або непряму). Крім того, він дозволяє використовувати різні системи числення (наприклад, десяткову або шістнадцяткову) для представлення числових констант і дає можливість позначати рядки програми мітками із символічними іменами з тим, щоб до них можна було звертатися (за іменами, а не по адресам) з інших частин програми (наприклад, для передачі керування). Переклад програми на мові асемблера в здійснимих машинний код (обчислення виразів, розкриття макрокоманд, заміна мнемонік власне машинними кодами і символьних адрес на абсолютні або відносні адреси) проводиться асемблером - програмою-транслятором, яка і дала мови асемблера його назву. Переваги: Мова асемблера дозволяє писати найшвидший і компактний код, який взагалі можливий для даного процесора. Якщо код програми досить великий, - дані, якими він оперує, не поміщаються повністю в регістрах процесора, тобто частково або повністю перебувають в оперативній пам'яті, то майстерний програміст, як правило, здатний значно оптимізувати програму в порівнянні з транслятором з мови високого рівня по одному або декільком параметрам: швидкість роботи - за рахунок оптимізації обчислювального алгоритму і / або більш раціонального звернення до ОП, перерозподілу даних; обсяг коду (у тому числі за рахунок ефективного використання проміжних результатів). (Скорочення обсягу коду також нерідко підвищує швидкість виконання програми.) Забезпечення максимального використання специфічних можливостей конкретної платформи, що також дозволяє створювати більш ефективні програми, - в тому числі менш ресурсомісткі. При програмуванні на мові асемблера можливий безпосередній доступ до апаратури, і, зокрема, портів вводу-виводу, регістрів процесора та ін Мова асемблера часто застосовується для створення драйверів устаткування і ядра операційної системи (або машинно підсистем ядра ОС). Мова асемблера використовується для створення «прошивок» BIOS. За допомогою мови асемблера часто створюються машинно підпрограми компіляторів і інтерпретатори мов високого рівня, а також реалізується сумісність платформ. За допомогою дизассемблера можливо дослідити існуючі програми при відсутності вихідного коду. Недоліки: В силу машинної орієнтації («низького» рівня) мови асемблера людині складніше читати і розуміти програму на ньому в порівнянні з мовами програмування високого рівня; програма складається з дуже «дрібних» елементів - машинних команд, відповідно, ускладнюються програмування і налагодження, ростуть трудомісткість і ймовірність внесення помилок. Потрібна підвищена кваліфікація програміста для отримання якісного коду: код, написаний середнім програмістом на мові асемблера, звичайно виявляється не краще або навіть гірше коду, породжуваного оптимизирующим компілятором для порівнянних програм, написаних мовою високого рівня. Програма на мові високого рівня може бути перекомпілювати з автоматичною оптимізацією під особливості нової цільової платформи, програма ж на мові асемблера на новій платформі може втратити свою перевагу в швидкості без ручного переписування коду. Як правило, менша кількість доступних бібліотек в порівнянні з сучасними індустріальними мовами програмування. Відсутня переносимість програм на комп'ютери з іншого архітектурою і системою команд. Список використаної літератури Застосування мікроконтролерів AVR: схеми, алгоритми, програми. Автор: Баранов В.М. Видавництво: Додека, 2004 рік. Довідник з PIC-мікроконтролерів Майкл Предко PICmicro Microcontroller Видавництва: ДМК, Додека, 2004 р. Каспер Ерні. Програмування на мові асемблера для мікроконтролерів сімейства І8051. М.: Гаряча лінія - Телеком, 2004. - 191 с.: Іл. Мікроконтролери серії 8051: практичний підхід. Магда Ю. С.
Антиботан аватар за замовчуванням

23.12.2013 22:12-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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