Автор работы: Пользователь скрыл имя, 06 Ноября 2013 в 09:48, курсовая работа
Мікропроцесор – це напівпровідниковий прилад, який складається з однієї або кількох програмно-керуючих великих інтегральних схем і виконує функції автоматичної обробки інформації. Сучасні мікропроцесорні вимірювальні прилади можуть бути подані як засоби вимірювання, що здійснюють двосторонню взаємодію: з оператором і системою збирання інформації, і односторонньою: з об’єктом вимірювання і навколишнім середовищем. Застосування у вимірювальних приладах мікропроцесорів, що мають можливість програмної обробки інформації, вводить у прилад деякий „інтелект” і дозволяє не тільки поліпшити параметри приладу, але й надати йому абсолютно нових якостей.
Вступ
Аналіз теми та інженерна інтерпретація…………………………………………….
2. Розробка апаратних засобів:
2.1. Розробка структурної схеми пристрою............................................……………….
2.2. Вибір елементної бази........…………………………………………………………
2.3. Розробка принципової схеми пристрою.............................................……………..
3. Розробка програмного забезпечення:
3.1. Алгоритм роботи пристрою................................................................................……
3.2. Програма..........................................................................……………………………
Висновки.................................................................................................................................
Література...............................................................................................................................
Додатки
При прийомі
даних від підлеглого пристрою
тимчасові інтервали для
Перевірка результату прийому даних на помилки Прийом байта починається з молодшого біта. Спочатку йде байт коду сімейства. За кодом сімейства йде 6 байт серійного номера, починаючи з молодшого. Потім йде байт контрольної суми (CRC). В обчисленні байта контрольної суми беруть участь перші 7 байт, або 56 переданих біт. Для обчислення використовується наступний поліном: CRC = X8+X5+X4+1 Після прийому даних майстер повинний обчислити контрольну суму і порівняти значення, що вийшло, з переданою CRC. Якщо ці значення збігаються, то прийом даних пройшов без помилок.
Процес створення програми підрозділяється на наступні етапи:
1. Власне написання програми мовою Асемблера або на будь-якій іншій мові, для якого є програма – транслятор, що працює з даним процесором.
2. Трансляція програми в об’єктний код, - тобто в ті коди, що будуть потім „зашиті” у пам’ять програм мікропроцесора і по яких він і буде працювати.
3. Виправлення помилок, виявлених транслятором у процесі трансляції і повторна трансляція.
4. Налагодження програми в налагоджувальній програмі, що відтворює роботу шуканого процесора. Знаходження помилок алгоритму. Виправлення помилок у тексті програми. Ретрансляція програми.
5. У випадку, якщо транслятор створює файл об’єктного коду в HEX форматі, перетворення в BІN формат, необхідний для роботи програматора.
6. Прошивання коду в пам’ять програм за допомогою програматора.
7. Пробний запуск програми. Виявлення й аналіз помилок. Повторення всього циклу розробки, починаючи з пункту 1 (якщо це необхідно).
Отже, розглянемо детально порядок створення програми для мікроконтролера AT89C2051.
Спочатку розробляємо схему майбутнього мікропроцесорного пристрою. Визначаємо до яких портів, які керовані кола будуть підключатися. До яких портів і як будуть підключатися датчики й можливі блоки керування. Потрібно розуміти в принципі алгоритм процесора в даній схемі. Саме ці аспекти і були докладно розглянуті вище.
Наступний етап – написання тексту програми. Перед тим як писати текст програми, потрібно вивчити архітектуру і систему команд мікропроцесора.
Під архітектурою розуміють те, які внутрішні регістри має процесор. Оскільки мікроконтролер AT89C2051 має внутрішній ОЗП, сполучений з регістрами загального призначення, потрібно добре орієнтуватися в структурі цього ОЗП. Крім того, в поняття архітектури входить наявність портів введення/виведення.
Система команд – це сукупність усіх команд мікропроцесора. Потрібно розуміти, що виконує і на що впливає кожна команда.
Наступне, що потрібно знати перш, ніж починати написання програми – це те, яка програма-транслятор буде використовуватись. Від цього буде залежати текст майбутньої програми. Для кожного процесора існує звичайно безліч модифікацій програм трансляторів. Вони відрізняються не по набору команд (набір команд визначається процесором), а за формою написання програми. Програми для контролера AT89C2051 пишуться звичайно мовою Асемблера. За допомогою цього транслятора і була написана програма, текст якої поданий в додатку 2.
Після написання тексту програми і запису його на диск у виді файлу з розширенням asm (наприклад, myprog.asm), необхідно виконати трансляцію програми. Для цього необхідно помістити файл із текстом програми і файл програми транслятора (Asm51.exe) в одну директорію. Ця директорія повинна з’явитися в активній панелі навігатора (командера). Після цього у командному рядку набираємо наступну команду: asm51 myprog.asm
і натискаємо клавішу Enter. По закінченні роботи програми, вона повинна видати повідомлення про кількість знайдених помилок при трансляції. Крім того, у тій же директорії з’явиться кілька нових файлів. Файл myprog.lst – це лістинг трансляції. Він містить той же текст програми, але праворуч доданий стовпець, де показані результати трансляції. Це коди, якими програма замінили команди, написані мовою Асемблер й адреси комірок пам’яті програм, куди необхідно ці коди помістити. Там же утримується опис усіх знайдених помилок. Позначки робляться прямо в тексті програм, і стрілкою відзначається місце, де знайдене помилка. Ще один файл, що з’явиться в результаті трансляції – це myprog.hex. Це і є вихідний код програми, призначений для прошивання в пам’ять програм. Однак перш ніж прошивати програму в процесор, потрібно випробувати її роботу в налагоджувальній програмі. Ця програма імітує роботу мікроконтролера і при цьому показує на екрані вміст усіх регістрів і комірок пам’яті процесора. Програму можна виконувати, як покроково, так і в режимі автоматичного виконання з постановкою крапок перехоплення.
Після цього можна приступати до прошивання програми в пам’ять програм мікроконтролера. Але перед цим потрібно перевести об’єктний код з формату HEX у формат BІN. HEX формат – це спеціальний текстовий формат, у якому всі байти коду програми, а також адреси їх розміщення записуються у виді шестнадцятирічного коду. BІN формат – це просто набір кодів, що складають програму. Для перекладу з одного формату в іншій і назад служить пара програм: hex2bіn.exe і bіn2hex.exe. У результаті роботи програми з’явиться файл myprog.bіn.
Слід відзначити,
що в додатку 2 подано лише
основні аспекти програми, а саме:
введення/виведення та
Поряд з цим повна програма повинна висвітлювати і такі аспекти як:
ВИСНОВКИ
В даному
курсовому проекті було
Особливу
увагу було звернуто на
В результаті
роботи було спроектовано
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1.«Мікропроцесори та мікропроцесорні комплекти інтегральних мікросхем», довідник, під ред. В.А. Шахнова, том 2, М., «Радио и связь», 1988.
2. А.С. Басманов «МП и ОЭВМ», Москва, «Мир», 1988.
3. В.О. Поджаренко, В.В. Кухарчук „Вимірювання і комп’ютерно- вимірювальна техніка”-К., 1991
ДОДАТКИ
Додаток 2
#DEFINE Z_SUP
#DEFINE LO(XXX) XXX & 0FFH
#DEFINE HI(XXX) (XXX >> 8) & 0FFH
CLK_KHZ = 10000 ;OSC частота, KГц
RTC_MS = 20 ;системний годинник, мс
RTCV = CLK_KHZ*RTC_MS
RTCV = RTCV/12
RTCV = - RTCV
RTCV = RTCV & 0FFFFH
; ------ Константи ------
STACK .EQU 056H ;розміщення стеку
V100MS .EQU 5 ;значення програмного таймера RTPCS 100mS/20mS=5
I2C_ADDR .EQU 0A0H ;I2C адреси для PCF8582 (A0,A1,A2=0)
SMPTMV .EQU 5 ;x20mS значення таймера термометрів
INKTMV .EQU 35 ;x20mS початкове ключове значення таймера повторення
KEYTMV .EQU 5 ;x20mS ключове значення таймера повторення
BRKTMV .EQU 2 ;x20mS ключове значення яскравості таймера повторення
TMOV20 .EQU 25 ;x20mS вихідне часове значення для DS1820
TMOV21 .EQU 100 ;x20mS вихідне часове значення для DS1821
INDTMV .EQU 50 ;x20mS значення затримки індикації
OFFTMV .EQU 50 ;x100mS вихідне значення затримки
PWM_MAX .EQU 230 ;MAX PWM значення
L_MAX .EQU 09AH ;MAX вхідна та вихідна межа
L_MIN .EQU 001H ;MIN вхідна та вихідна межа
; ------ Порти ------
SCAN0 .EQU P3.0 ;лінія сканування дисплею 0
SCAN1 .EQU P3.1 ;лінія сканування дисплею 1
SCAN2 .EQU P3.5 ;лінія сканування дисплею 2
SDA .EQU SCAN0 ;I2C SDA лінія
SCL .EQU SCAN1 ;I2C SCL лінія
OWP1 .EQU P3.2 ;1-порт 1 (зовнішній термометр)
OWP2 .EQU P3.7 ;1-порт 2 (внутрішній термометр)
RETL .EQU P3.4 ;лінія повернення клавіатури
CNTRL .EQU P3.3 ;лінія керування термостатом
;--------Змінні, бітова адресація, зовнішні дані---------------
PWVH .EQU R20 ;значення таймера PWM (в виключеному стані) high
PWVL .EQU R21 ;значення таймера PWM (в виключеному стані) low
PHVH .EQU R22 ;значення таймера PWM (у включеному стані) high
PHVL .EQU R23 ;значення таймера PWM (у включеному стані) low
RTPCS .EQU 021H ;програмний лічильник реального часу (100мс)
EXT_TH EQU 03CH ;дані від зовнішнього термометра (00H-відсутній, 20H-DS1820, 21H-DS1821)
INT_TH EQU 03DH ;дані від внутрішнього термометра (00H-відсутній, 20H-DS1820, 21H-DS1821)
SAVTM .EQU 046H ;збереження таймера затримки NVM
NOTSV .EQU 023H ;незбереження в NVM
OFFTM .EQU 049H ;відключення таймера
ACHTM .EQU 048H ;автозмінювання таймера
ACHR .EQU 028H ;автозмінювання EXT/INT
; ------ Основна програма ------
INIT: MOV SP,#STACK ;ініціалізація стеку
CLR A
MOV KEYTM,A ;обнулення ключового таймера повторення
MOV EXT_TH,A ;обнулення зовнішнього термометра
MOV INT_TH,A ; обнулення внутрішнього термометра
MOV OFFTM,#OFFTMV ;завершення завантаження таймера
ACALL GETPWM ;одержання значень PWM таймера
MOV ACHTM,ACHR
MOV TMOD,#11H ;ініціалізація таймера 0 та таймера 1
MOV TL0,#LO(RTCV) ;завантаження таймера 0
MOV TH0,#HI(RTCV)
MOV TL1,PHVL ;завантаження таймера 1
MOV TH1,PHVH
MOV RTPCS,#V100MS ;завантаження значення 100мс
SETB PT1 ;ініціалізація пріоритетів таймерів (0–low, 1 - high)
MOV IE,#8AH ;ініціалізація дозволу таймерів (ET0,ET1,EA=1)
ACALL AD_EXT ;автовизначення та запуск зовнішнього термометра
ACALL AD_INT ;автовизначення та запуск внутрішнього термометра
MOV SMPTM,#SMPTMV ;завантаження таймера зразка термометрів
MAIN: MOV A,INCODE ;місцева перевірка клавіатури
CPL A
JNZ MA10 ;стрибок, якщо є натискання
CLR FEN
CLR PRESS
SJMP MA20 ;стрибок, якщо немає натискання
MA10: MOV B,A ;зберігання коду клавіатури
ACALL DEL10 ;затримка доносу
MOV A,INCODE ;зчитування коду клавіатури
CPL A
CJNE A,B,MA20 ;відсутність натискання при відмінності кодів
MOV R7,A
MOV OFFTM,#OFFTMV ;завершення завантаження таймера
JB PRESS,SAME
;Аналіз контрольних функцій
DIF: CJNE R7,#KEY_SL,$+5H ;KEY SELECT
ACALL SEL
CJNE R7,#KEY_EX,$+5H ;KEY EXT/INT
ACALL EXT
SAME:CJNE R7,#KEY_UP,$+5H ;KEY UP
ACALL UP
CJNE R7,#KEY_DN,$+5H ;KEY DOWN
ACALL DN
CJNE R7,#KEY_UD,$+5H ;KEY UP+DOWN
ACALL UPDN
SETB PRESS ;встановлення натискання
;Завершення аналізу контрольних функцій
MA20: MOV A,SMPTM ;перевірка зразкового таймеру
JNZ MA24 ;стрибок, якщо немає таймерного переповнення