Міністерство освіти і науки України
Національний університет «Львівська політехніка»
ГРАФІЧНО-РОЗРАХУНКОВА РОБОТА
з дисципліни:
«Обчислювальна техніка та мікропроцесори»
на тему:
«Синтез цифрових пристроїв»
Варіант №4
Львів - 2013
ЗМІСТ:
Вступ
Розробка мікропроцесорної системи на базі MKMCS-51.
Розробка і опис принципової схеми
Блок-схема алгоритму
Розробка програми на мові Асемблер
Висновок
Список використаної літератури
ВСТУП
Системи автоматичного управління виробничими процесами, інформаційно-вимірювальні та контрольно-діагностичні системи, а також автоматизація наукових досліджень не можуть бути реалізовані без пристроїв, що виконують функції управління.
При побудові системи управління будь-яким об'єктом постає ряд завдань: робити вимірювання (можливо у великій кількості і від декількох об'єктів), проводити їх обробку, забезпечувати зберігання інформації, виробляти керуючі сигнали. Все це буде займати у оператора багато часу і може призводити до грубих помилок. Тому постає питання про автоматизацію вимірювань, що збільшує швидкість зняття відліків, а, отже, і обсяг одержуваної інформації, веде до підвищення точності та достовірності результатів вимірювань і звільняє людину від заняття монотонної і трудомісткою роботою.
У зв'язку з цим останнім часом в якості пристроїв управління зростає застосування мікроконтроллерів. Сучасні мікроконтролери володіють такими обчислювальними ресурсами і можливостями управління в режимі реального часу, для одержання яких раніше необхідні були дорожчі багатокристальні компонування.
2.Розробка функціональної схеми мікропроцесорної системи на базі МК 51.
3.Розробка і опис принципової схеми:
Для реалізації мікропроцесорної системи відображення інформації на семи сегментному індикаторі (LED) я використовую такі елементи:
а) мікроконтролерIntel 8051
б) 9 розрядний (LED) семи-сегментнийіндикатор АЛС318
в) дешифратор К155ИД3 (4-16)
г) 8-ми розрядний паралельно-паралельний регістр зсуву К155ИР13
г) кварцовий генератор «HC-49 S» з частотою 11,0592 МГц
Спроектована мікропроцесорна система живиться від стабілізованого джерела напруги величиною +5В. Частота з якою працює контролер від кварцового резонатора становить 11.0592 МГц, тому тривалість одного машинного циклу становить 2 мкс. В даній схемі реалізований принцип динамічної індикації.
Індикатор АЛС318 має спільний катод, а тому щоб засвітити певний розряд необхідно подати на анод логічну «1» а на катод логічний «0». Для засвічування потрібного розряду використовується дешифратор на виході якого є тільки один логічний нуль ( до катода ). Для засвічування необхідних сегментів використовується порт 1, який з’єднаний з анодами індикатора через буферний регістр зсуву, який виконує узгодження рівнів сигналів мікропроцесора і індикатора. Сам регістр синхронізується з 4-ої ніжки порта2 кожен раз при активації відповідного розряду індикатора. Зважаючи на те, що у дешифратора є невикористаними аж 7 виходів, ми легко можемо збільшити кількість розрядів індикатора аж до 16.
4.Блок-схема алгоритму роботи індикатора АЛС318
5.Розробка програми на мові Асемблер з необхідними коментарями
Код програми яка реалізує виведення даних на спроектованому нами цифровому пристрої.
;===================== Ініціалізація банків ====================
bank0 equ 00000000B
bank1 equ 00001000B
bank2 equ 00010000B
bank3 equ 00011000B
;===================== Оголошення змінних ===================
adressequ R1 ; для пересування по буферу даних
indexequ R0 ; для зміни розряду індикатора
;===================Сегмент даних ========================
DSEG
ORG 20H
ORG 30h
BufROM: DS 10H ; визначення масиву даних для відображення
ORG 70H
Stack: DS 10H
;=================== Сегмент коду =========================
CSEG
ORG 0000H ; старт програми
jmpstart ; перехід до початку програми
ORG 0003H
reti ; вектор переривання INT0
ORG 000BH
call INTERUPT
; вектор переривання таймера 0
ORG 0013H
reti ; вектор переривання INT1
ORG 001BH
reti ; вектор переривання таймера 1
ORG 0023H
reti ; вектор переривання UART
ORG 0030H
Start:
movsp, #(stack-1) ;встановлення вершини стеку
;================ ініціалізація портів ==================
mov p0, #11111111B
mov p1, #11111111B
mov p2, #11111111B
mov p3, #11111111B
;================= запис попередніх значень в буфер ======
movbufROM,#0
mov bufROM+1,#1
mov bufROM+2,#2
mov bufROM+3,#3
mov bufROM+4,#4
mov bufROM+5,#5
mov bufROM+6,#6
mov bufROM+7,#7
mov bufROM+8,#8
mov bufROM+9,#9
;=================== ініціалізація =======================
call INITIALIZATION ; ініціалізація змінних
mov TL0,#LOW(-5000) ; встановлення таймера 0 на 5 мс
mov TH0,#HIGH(-5000) ; в режим зворотнього відліку
mov IE,#0ffh ;глобальний дозвіл переривань
mov TMOD,#00000001b ;встановлення Т0 в 16 бітний режим
mov TCON,#10h ;запуск таймера 0
;============ основне тіло програми ======================
MAIN:
jmp MAIN
;================= обробка переривань ====================
INTERUPT:
mov P2,#0FFh ;скидання порта2
mov IE,#0 ;заборона переривань
mov TCON,#0h ;вимкнення таймера
mov A,@adress ;зчитування значення розряду з буфера даних
callDecoder ;декодування зчитаного значення в 16h
mov P1,A ;виведення обробленого значення на індикатор
mov P2,index ;активація поточного розряду індикатора
incadress ;перейти на наступний байт в буфері даних
djnzindex,skip ;якщо при переході на інший розряд відбувсявихід за межі розрядної сітки індикатора то викликаємо функцію ініціалізації
call INITIALIZATION
skip:
mov TL0,#LOW(-5000) ;встановлення таймера
mov TH0,#HIGH(-5000) ; встановлення таймера
mov IE,#0ffh ;дозвіл переривань
mov TCON,#10h ;включення таймера
reti ;повернення з переривань
;================== функція ініціалізації ====================
INITIALIZATION:
movindex,#9 ;перехід на 0 розряд індикатора
movadress,#BufROM ;перехід на перший байт буфера даних
mov P1,#0 ;очищення порта 1
mov P2,#0FFh ;встановлення порта 2
ret
;========== функція двійково-шістнадцяткового декодування =====
Decoder:
movc A,@A+PC ;зчитування потрібного значення з таблиці даних
ret
;============= таблиця значень декодера =====================
db 01100000b
db 11011010b
db 11110010b
db 01100110b
db 10110110b
db 10111110b
db 11100000b
db 11111110b
db 11110110b
db 11101110b
db 00111110b
db 10011100b
db 01111010b
db 10011110b
db 10001110b
;================== кінець програми =======================
end
ВИСНОВОК:
При створенні алгоритму роботи пристрою і написанні коду програми на мові асемблер, було зроблено акцент на економічності використання ресурсів і часу роботи процесора. Алгоритм може бути з легкістю модифікований, оскільки задача виведення тут реалізована через переривання, а весь інший час роботи можна використовувати для вирішення інших задач.
Використана література:
Микроконтроллеры. Это же просто. Том 1 , Фрунзе А.В., 2002.
Цифровые и аналоговыеинтегральныемикросхемы., С. В. Якубовский, Л. И. Ниссельсон, В. И. Кулешова,1990.
Популярныемикросхемы ТТЛ , Шило В.Л. ,Аргус,1987.