Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Проектування інтелектуальних давачів на базі мікроконтролера 89С51

КурсоваДопомога в написанніДізнатися вартістьмоєї роботи

За апаратносформованим кодом LCALL система переривань заносить у стек тільки вмістиме лічильника команд (РС) і завантажує в лічильник команд адрес вектора відповідної підпрограми обробки. За адресом вектору повинна бути розташована команда безумовної передачі керування (JMP) до початкового адресу підпрограми обробки переривання. Підпрограма обробки при необхідності повинна починатися із команд… Читати ще >

Проектування інтелектуальних давачів на базі мікроконтролера 89С51 (реферат, курсова, диплом, контрольна)

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ

«ЛЬВІВСЬКА ПОЛІТЕХНІКА»

Кафедра АТХП КУРСОВИЙ ПРОЕКТ з курсу «мікропроцесорна техніка»

на тему:

«ПРОЕКТУВАННЯ ІНТЕЛЕКТУАЛЬНИХ ДАВАЧІВ НА БАЗІ МІКРОКОНТРОЛЕРА 89С51 «

Виконав: студент групи АВ-32

Горбаль Любомир Прийняв:

Костик І. В.

ЛЬВІВ — 2011

Зміст Вступ

Індивідуальне завдання Структурна схема інтелектуального давача, побудованого на базі мікропроцесорного пристрою Побудова контролера клавіатури та семисегментного індикатора Ввід інформації з клавіатури Вивід інформації на восьмисегментний індикатор Програми для програмування програмованого логічного пристрою контролера Часові діаграми роботи програмованого логічного пристрою контролера Робота аналого-цифрового пристрою Програма для роботи мікропроцесорного пристрою, побудованого на базі мікроконтролера 89С51

Специфікація Висновки Застосована література

Вступ На сучасному етапі науково-технічного процесу все більше важливим стає питання впровадження у виробничу і наукову діяльність високоточних методів ведення обрахунку, їх фіксації і перетворення. Це пов`язане в першу чергу з підвищення вимог до точності і надійності проведення у різних галузях науки і техніки, особливо у вимірюваннях фізичних величин.

Використання цифрових складових у приладах і пристроях обумовлюється в першу чергу можливістю прямого їх використання у схемах керування, побудованих як правило на базі мікроконтролерної техніки, що дозволяє обійтися без переходів між аналоговими і цифровими видами представлення інформації, і відповідно зменшити похибки результатів вимірювань.

Переваги мікроелектронних пристроїв над аналоговими є у тому, що у них переважає висока точність вимірювання параметрів, переважає швидкодія вимірювання та можливості використання мікроелектронних пристроїв при непрямих вимірюваннях. При цьому основні похибки вносять аналогові давачі, які є менш точними за цифрові

Інтелектуальні давачі переважно застосовуються для виконання непрямих вимірювань тих величин, які неможливо виміряти прямими методами.

Мікроконтролери серії 8×51 є восьмирозрядними однокристальними мікро-ЕОМ, які працюють при максимальній тактовій частоті генератора 12 МГц. Маючи восьмирозрядну внутрішню архітектуру, МК51 виконує операції над бітами, півбайтами, байтами та машинними словами. За допомогою непрямої адресації процесор може обробляти 16-и бітовий адрес і таким чином адресувати 216=64 Кбайт як оперативної так і програмної пам’яті. Для виконання операцій над бітами МК51 має булевий процесор, який є незалежним бітовим процесором із своєю системою команд і своїм акумулятором.

Особливістю організації пам’яті МК51 є, як фізичне, так і логічне розділення оперативної та програмної пам’яті. Тобто оперативна пам’ять не може бути використана для зберігання програм.

Оперативна пам’ять 8×51 призначена для зберігання і обробки даних в процесі виконання програми і ділиться на внутрішню (вбудовану в кристал) і зовнішню (додаткові мікросхеми пам’яті). МК51 має внутрішній оперативний запам’ятовуючий пристрій (ОЗП) об'ємом 256 байт і зовнішній ОЗП об'ємом 64 Кбайт. В свою чергу внутрішня оперативна пам’ять складається із 128 байт пам’яті даних і 20-и регістрів спеціальних функцій.

Система команд мікроконтролера сімейства 8×51 включає у себе 111 основних команд. Їх довжина — один, два, або три байти, але більшість із них (94%) — це одноабо двобайтні команди. Всі команди виконуються за один або два машинні цикли (відповідно 1 або 2 мкс при тактовій частоті 12 МГц). Виключенням є команди множення та ділення, які виконуються за чотири машинні цикли (4 мкс).

Мікроконтролери сімейства 8×51 використовують прямий, безпосередній, непрямий та неявний способи адресації даних. В якості операндів команд мікроконтролери сімейства 8×51 можуть використовувати окремі біти, чотирьохбітні цифри, байти або двобайтні слова. Всього мікроконтролер виконує 13 типів команд.

Індивідуальне завдання до курсового проекту Варіант 5

1. Розмір клавіатури: 8 x 2

2. Розмірність індикатора: 8

3. Параметр, який вимірюєть непрямим методом:

поправний коефіцієнт на шорсткість внутрішньої поверхні трубопроводу Кш

4. Вхідні параметри, які вимірюються за допомогою перетворювачів:

t = [ oC ].

5. Контрольна точка: t=27 oC, d20=0.097м, D20=0.182м, Rш=2.1· 10−5м, Re=7.44· 105 м.

7. Тип АЦП: TLC 549IP

Отримав: студент групи АВ-32: Горбаль Л.О.

Видав: асистент кафедри АТХП: Костик І. В.

інтеллектуальний давач індикатор мікропроцесорний

Структурна схема інтелектуального давача, побудованого на базі мікропроцесорного пристрою Структурна схема інтелектуального давача на базі мікроконтролера 89С51 наведена на рисунку 2.1 і складається з:

— мікроконтролера 89С51, який здійснює керування зовнішніми пристроями вводу/виводу та поводить обчислення, згідно програми по обчисленню величини Kш (рівняння наведені в індивідуальному завданні);

— аналого-цифрового перетворювача (АЦП TLC 549IP), який здійснює перетворення сигналу з аналогового в цифровий ;

— клавіатури, за допомогою якої вводяться постійні величини, або виводяться певні величини для перевірки програми;

— восьмирозрядного семисегментного індикатора, який потрібен для показу величин, які вводяться, знаходяться в пам’яті (тобто вже введені), вимірюються чи обраховуються в даний момент;

— контролер клавіатури (5С090) та семисегментного індикатора, який обслуговує клавіатуру та семисегментний індикатор;

— контролеру каналу послідовного вводу/виводу (ADM485), який дозволяє обмінюватися інформацією з іншими контролерами чи з вищим рівнем керування (наприклад комп’ютером);

— блоку живлення.

Основним елементом інтелектуального давача є мікроконтролер. Для даного проекта застосовується мікроконтролер 89С51, загальний вигляд та призначення ніжок якого показано на рис. 2.2 .

Мікроконтролер має чотири порти вводу-виводу Р0-Р3. Порт Р0 мікроконтролера 89С51 використовується, як шина даних (коли сигнал ALE=0) і шина адресів від А0 до А7 (коли сигнал ALE=1). Порт Р3 використовується як порт, який видає сигнали керування мікроконтролером. Сигнали керування, які ідуть від порту Р3, наведені на рис. 2.2. Опис сигналів керування наведено в табл. 2.2. Кожний порт може видавати сигнали керування.

Пам’ять у мікроконтролері поділяється на внутрішню пам’ять програм та даних та зовнішню пам’ять програм да даних.

Зовнішня пам’ять програм та даних поділяється на постійну зовнішню пам’ять програм (ПЗП), де знаходяться коди операцій, та зовнішню пам’ять даних (ОЗП), де знаходяться проміжні результати розрахунків. Звернення до ПЗП здійснюється за допомогою керуючого сигналу /PSEN, який виконує функцію строб-сигналу читання. Код команди вибирається із ПЗП при встановленні на /PSEN сигналу рівного логічному 0. Звернення (читання або запис) до ОЗП забезпечується керуючими сигналами /RD або /WR, які формуються на лініях Р3.7 та Р3.6 при виконанні відповідних операцій переміщення даних та команд керування процесором. Звернення до ОЗП здійснюється при встановленні на /RD або /WR сигналів логічного 0. Для того, щоб одночасно читати коди команд із ПЗП та дані із ОЗП сигнали /PSEN та /RD об'єднують в один сигнал /PSEN*/RD.

Мікроконтролер 89С51 має розширену систему переривань. Спрощена схема переривань 89С51 наведена на рис. 2.3.

Зовнішні переривання /INT0 та /INT1 можуть бути викликані або рівнем або переходом сигналу із 1 в 0 (фронтом) на входах 89С51 в залежності від значень керуючих бітів ІТ0 та ІТ1 у регістрі TCON. При значенні цих бітів рівних 0 сигнали зовнішніх переривань приймаються за рівнем, а при значенні їх рівних 1 сигнали /INT0 та /INT1 сприймаються за фронтом. Від зовнішніх переривань встановлюються прапори IE0 та IE1 у регістрі TCON, які ініціюють виклик відповідних підпрограм обробки переривань. Скид цих прапорів здійснюється апаратно тільки у тому випадку, якщо переривання були викликані фронтом сигналу. Якщо ж переривання були викликані рівнем вхідного сигналу, то скидом прапору ІЕ керує відповідна підпрограма обробки переривання шляхом дії на джерело переривання з метою зняття ним запиту.

Прапори запитів переривань від таймерів TF0 та TF1 скидаються автоматично при передачі керування підпрограмі його обробки. Прапори запитів переривань RI та TI встановлюються блоком керування універсального асинхронного приймача-передавача (УАПП) апаратно, але скидатись повинні програмою обробки переривань.

Переривання можуть бути викликані або відмінені програмою, так як усі перераховані прапори програмно досягнені і можуть бути встановлені або скинуті програмою з тим же результатом, що і якщо б вони були встановлені або кинуті апаратними засобами.

В блоці регістрів спеціальних функцій є два регістри, які використовуються для керування режимом переривань та рівнями їх пріоритету. Формати цих регістрів, які мають символічні імена ІЕ та ІР, наведені у табл. 2.2 та табл. 2.3.

Обробка переривань по рівню пріоритету виконується на протязі наступного машинного циклу. Система переривань сформує апаратний виклик (LCALL) відповідної підпрограми обробки переривань, якщо вона не заблокована одним із наступних умов:

1) в даний момент обслуговується переривання рівного або вищого рівня пріоритету;

2) текучий машинний цикл — не останній у циклі виконуваної команди;

3) виконується команда RETI або інша команда, яка пов’язана із зверненням до регістрів ІЕ та ІР.

Таблиця 2.1. Альтернативні функції порта Р3.

P3.7

Читання. Активний сигнал низького рівня формується апаратно при зверненні до зовнішньої пам’яті даних.

P3.6

Запис. Активний сигнал низького рівня формується апаратно при зверненні до зовнішньої пам’яті даних.

P3.5

Вхід таймера/лічильника 1 або тест-вхід.

P3.4

Вхід таймера/лічильника 0 або тест-вхід.

P3.3

Вхід запиту переривання 1. Сприймається сигнал низького рівня або зріз по спаду напруги.

P3.2

Вхід запиту переривання 0. Сприймається сигнал низького рівня або зріз по спаду напруги.

P3.1

Вихід передавача послідовного порта. Вихід синхронізації в режимі зсуваючого регістра.

P3.0

Вхід передавача послідовного порта. Ввід/вивід даних в режимі зсуваючого регістра.

Таблиця 2.2. Прапори дозволу переривань

Джерело переривання

Прапор дозволу

Комірка біту

Зовнішній запит 0

EX0

IE.0

Внутрішній таймер / лічильник 0

ET0

IE.1

Зовнішній адрес 1

EX1

IE.2

Внутрішній таймер / Лічильник 1

ET1

IE.3

Внутрішній послідовний порт

ES

IE.4

Резервний

відсутній

IE.5

Резервний

відсутній

IE.6

Загальний дозвіл

EA

IE.7

Таблиця 2.3. Прапори пріоритету переривань

Джерело переривання

Прапор пріоритету

Пріоритет по рівню

Комірка біту

Зовнішній запит 0

PX0

1(найвищий)

IP.0

Внутрішній таймер/лічильник 0

PT0

IP.1

Зовнішній адрес 1

PX1

IP.2

Внутрішній таймер/лічильник 1

PT1

IP.3

Внутрішній послідовний порт

PS

5(найнижчий)

IP.4

За апаратносформованим кодом LCALL система переривань заносить у стек тільки вмістиме лічильника команд (РС) і завантажує в лічильник команд адрес вектора відповідної підпрограми обробки. За адресом вектору повинна бути розташована команда безумовної передачі керування (JMP) до початкового адресу підпрограми обробки переривання. Підпрограма обробки при необхідності повинна починатися із команд запису у стек (PUSH) слова стану підпрограми (PSW), акумулятора, розширювача, показника даних і т.д. та закінчуватись командами виклику зі стеку (POP) попередніх регістрів за принципом «перший пішов останній повернувся». Підпрограми обробки переривань повинні обов’язково закінчуватись командою RETI, за якою в лічильник команд перенавантажується зі стеку збережений адрес повернення в основну програму. Команда RET також повертає керування перерваній основній програмі, але при цьому не знімають блокування переривання, що призводить до необхідності мати програмний механізм аналізу закінчення процедури обробки переривання.

Опис роботи інтелектуального давача.

Величина, що вимірюється, перетворюється первинним перетворювачем у аналоговий уніфікований електричний сигнал (від 0 до 5 вольт), поступає на вхід аналого-цифрового перетворювача. На аналого-цифровому перетворювачі аналоговий (неперервний) сигнал перетворюється на послідовний чи паралельний цифровий код, який вже може сприймати мікроконтролер. Далі мікроконтролер обраховує величину Z згідно програми, та виводить результат на рідкокристалічний індикатор та, через канал послідовного вводу/виводу, на ЕОМ.

Побудова контролера клавіатури та семисгментного індикатора Для обслуговування клавіатури в мікропроцесорних системах використовується процедура вводу натиснутої клавіші. Схема під'єднання клавіатури та індикатора до контролера клавіатури та індикатора наведена на рисунку 3.1.

Рис 3.1. Структурна схема під'єднання клавіатури та CCІ до контролера Виявлення мікропроцесорним пристроєм натиснення клавіші на клавіатурі здійснюється за допомогою сканування клавіатури. Детальніше процес сканування розглянемо нижче. Для побудови контролера індикатора та клавіатури було вибрано ПЛМ 5С090. Нумерація ніжок серії 5С090 наведена на рисунку 3.2:

Рис 3.2. Нумерація ніжок мікросхем серії 5С090

Ввід інформації з клавіатури Для обслуговування клавіатури мікропроцесорної системи використовується процедура вводу коду натиснутої клавіші. У таблиці 3.1 показано як формується код натисненої клавіші.

Таблиця 3.1 Формування коду натисненої клавіші

R0

R1

K0

K1

K2

K3

K4

K5

K6

K7

P00

P01

P02

P03

Символ

F

E

S

P

=

;

Лінія порту Ri використовується для сканування, а лінія порту Ki — для опиту матриці клавіш. Значення сигналів R0-R1 змінюються за законом зсуваючого регістру з активним вихідним нульовим сигналом. При натисненій клавіші сигнал з лінії Ri поступає на ніжку Ki. Якщо клавіша натиснута, то на ніжці Ri та на ніжці Кі буде активний нульовий сигнал.

Наприклад, якщо буде натиснута клавіша F, то нульовий сигнал буде на ніжках R1 та К5. Кожна клавіша в такій матриці має свій номер, який відповідає її місцезнаходженню. Діоди забезпечують захист від замикання між собою скануючих ліній у випадку одночасного натиснення більше ніж однієї клавіші.

Для зменшення використання зовнішніх портів мікроконтролера 89С51 контролер клавіатури та рідкокристалічного індикатора видає на шину даних порту Р0 мікроконтролера 89С51 код заданої клавіші. Код заданої клавіші формується контролером клавіатури та рідкокристалічного індикатора, побудованого на програмованому логічному пристрої типу 5С090.

Процедура вводу коду натисненої клавіші складається із послідовності часткових процедур: сканування матриці клавіш, усунення дребезгу контактів, очікування звільнення клавіші та ідентифікації коду натисненої клавіші. Для деяких клавіатур може бути відсутня процедура усунення дребезгу контактів (для клавіатури на базі герконів). Процедуру сканування іноді об'єднують з процедурою ідентифікації.

Процедура вибору між скануванням клавіатури та виводу інформації на CCІ здійснюється за допомогою сигналу Р2.1. При активному нульовому сигналі виводиться інформація на КІ, а при активному сигналі високого рівня — сканується клавіатура

Вивід інформації на семисегментний індикатор Вивід інформації на рідкокристалічний індикатор здійснюється наступним чином. Байт з порту Р0 мікроконтролера 89С51 поступає на вхід контролера клавіатури та cемисегментного індикатора, побудованого на базі програмованого логічного пристрою 5С090. На контролер також поступає і сигнал синхронізації CLK, який знімається з виходу Р2.0 мікроконтролера 89С51.

При динамічній індикації байт індикації (YА-YG) поступає від контролера одночасно на входи усіх дев’яти семисегментних індикаторів, які утворюють лінійний дисплей, а вибір знакомісця (R0-R8) здійснюється бітом вибірки, який поступає зсуваючий регістра (R0-R7), що побудований на базі програмованого логічного пристрою 5С090.

З кожним імпульсом біту вибірки сигнал символу з порту Р0 (біти Р0.4 — Р0.7) мікроконтролера 89С51 поступає на дешифратор символів, який побудований на тому ж програмованому логічному пристрої 5С090.

Підпрограма виводу символу на ССІ реалізує вибірку коду наступного символу з РПД (вихідні коди символів повинні бути розміщені у послідовно розташованих комірках пам’яті), його відображення в текучому знакомісці. Для отримання яскравої та рівної (немигаючої) індикації необхідно забезпечити: по-перше, заборону вибірки знакомісць на час зміни байту індикації у порту 0 (бланкування), по-друге, регенерацію зображення на кожному знакомісці з частотою 20 раз в секунду, тобто звертання до підпрограми через кожні 50/9 мс, де 9 — число знакомісць на дисплеї. Бланкування здійснюється видачею байта вибірки «всі одиниці». Відповідність символу, що виводиться на індикатор до коду наведено у таблиці 3.2.

Таблиця 3.2. — Кодування символів індикатора

P07

P06

P05

P04

YA

YB

YC

YD

YE

YF

YG

Символ

F

Е

S

P

=

;

Таблиця 3.2. Таблиця переходів та виходів роботи контролера індикатора

S

CLK

Y

Програма для програмування програмованого логічного пристрою контролера Для програмування ПЛМ була написана наступна програма:

Title KURS1

Pattern pds

Revision 02

Author LG

Company NULP

Data 28.12.1991

chip KURS1 5C090

PIN CLK

PIN IK

PIN R0

PIN R1

PIN R2

PIN R3

PIN R4

PIN R5

PIN R6

PIN R7

PIN YA

PIN YB

PIN YC

PIN YD

PIN YE

PIN YF

PIN YG

PIN Q0

PIN Q1

PIN Q2

PIN P00

PIN P01

PIN P02

PIN P03

PIN P04

PIN P05

PIN P06

PIN P07

PIN K0

PIN K1

PIN K2

PIN K3

PIN K4

PIN K5

PIN K6

PIN K7

STATE MOORE_MACHINE

S0=/Q2*/Q1*/Q0

S1=/Q2*/Q1*Q0

S2=/Q2*Q1*/Q0

S3=/Q2*Q1*Q0

S4=Q2*/Q1*/Q0

S5=Q2*/Q1*Q0

S6=Q2*Q1*/Q0

S7=Q2*Q1*Q0

S0:=GND->S0

+VCC->S1

S1:=GND->S1

+VCC->S2

S2:=GND->S2

+VCC->S3

S3:=GND->S3

+VCC->S4

S4:=GND->S4

+VCC->S5

S5:=GND->S5

+VCC->S6

S6:=GND->S6

+VCC->S7

S7:=GND->S7

+VCC->S0

S0.OUTF=/R0*R1*R2*R3*R4*R5*R6*R7

S1.OUTF=R0*/R1*R2*R3*R4*R5*R6*R7

S2.OUTF=R0*R1*/R2*R3*R4*R5*R6*R7

S3.OUTF=R0*R1*R2*/R3*R4*R5*R6*R7

S4.OUTF=R0*R1*R2*R3*/R4*R5*R6*R7

S5.OUTF=R0*R1*R2*R3*R4*/R5*R6*R7

S6.OUTF=R0*R1*R2*R3*R4*R5*/R6*R7

S7.OUTF=R0*R1*R2*R3*R4*R5*R6*/R7

EQUATIONS

Q0.CLKF=/CLK

Q1.CLKF=/CLK

Q2.CLKF=/CLK

P00.TRST=IK

P01.TRST=IK

P02.TRST=IK

P03.TRST=IK

P04.TRST=IK

P05.TRST=IK

P06.TRST=IK

P07.TRST=IK

T_TAB (P07 P06 P05 P04 >> YA YB YC YD YE YF YG)

0 0 0 0: 1 1 1 1 1 1 0 ;0

0 0 0 1: 0 1 1 0 0 0 0 ;1

0 0 1 0: 1 1 0 1 1 0 1 ;2

0 0 1 1: 1 1 1 1 0 0 1 ;3

0 1 0 0: 0 1 1 0 0 1 1 ;4

0 1 0 1: 1 0 1 1 0 1 1 ;5

0 1 1 0: 1 0 1 1 1 1 1 ;6

0 1 1 1: 1 1 1 0 0 0 0 ;7

1 0 0 0: 1 1 1 1 1 1 1 ;8

1 0 0 1: 1 1 1 1 0 1 1 ;9

1 0 1 0: 1 0 0 0 1 1 1 ;F

1 0 1 1: 1 0 0 1 1 1 1 ;E

1 1 0 0: 1 0 1 1 0 1 1 ;S

1 1 0 1: 1 1 0 0 1 1 1 ;P

1 1 1 0: 0 0 0 1 0 0 1 ;=

1 1 1 1: 0 0 0 0 0 0 1 ;;

T_TAB (R0 R1 K0 K1 K2 K3 K4 K5 K6 K7 >> P03 P02 P01 P00)

1 0 0 1 1 1 1 1 1 1: 0 0 0 0 ;0

0 1 0 1 1 1 1 1 1 1: 0 0 0 1 ;1

1 0 1 0 1 1 1 1 1 1: 0 0 1 0 ;2

0 1 1 0 1 1 1 1 1 1: 0 0 1 1 ;3

1 0 1 1 0 1 1 1 1 1: 0 1 0 0 ;4

0 1 1 1 0 1 1 1 1 1: 0 1 0 1 ;5

1 0 1 1 1 0 1 1 1 1: 0 1 1 0 ;6

0 1 1 1 1 0 1 1 1 1: 0 1 1 1 ;7

1 0 1 1 1 1 0 1 1 1: 1 0 0 0 ;8

0 1 1 1 0 1 0 1 1 1: 1 0 0 1 ;9

1 0 1 1 1 1 1 0 1 1: 1 0 1 0 ;F

0 1 1 1 1 1 1 0 1 1: 1 0 1 1 ;;

1 0 1 1 1 1 1 1 0 1: 1 1 0 0 ;F

0 1 1 1 1 1 1 1 0 1: 1 1 0 1 ;R

1 0 1 1 1 1 1 1 1 0: 1 1 1 0 ;B

0 1 1 1 1 1 1 1 1 0: 1 1 1 1 ;B

SIMULATION

VECTOR INPI:=[P07 P06 P05 P04]

VECTOR OUTK:=[P00 P01 P02 P03]

VECTOR S:=[Q2 Q1 Q0]

SETF /IK

FOR I:=0 TO 15 DO

BEGIN

SETF INPI:=I

END

SETF IK CLK

PRLDF Q2 Q1 Q0

FOR I:=0 TO 8 DO

BEGIN

SETF K0 K1 K2 K3 K4 K5 K6 K7

IF I=0 THEN

BEGIN

SETF /K0

END

IF I=1 THEN

BEGIN

SETF /K1

END

IF I=2 THEN

BEGIN

SETF /K2

END

IF I=3 THEN

BEGIN

SETF /K3

END

IF I=4 THEN

BEGIN

SETF /K4

END

IF I=5 THEN

BEGIN

SETF /K5

END

IF I=4 THEN

BEGIN

SETF /K6

END

IF I=5 THEN

BEGIN

SETF /K7

END

CLOCKF CLK

END

5С090

Gnd — | 1 21 | - Vcc

K7 — | 2 22 | - P04

K6 — | 3 23 | - P05

K5 — | 4 24 | - P06

Q0 — | 5 25 | - IK

Q2 — | 6 26 | - CLK

Q1 — | 7 27 | - YG

R0 — | 8 28 | - P00

R1 — | 9 29 | - P01

YF — | 10 30 | - P02

YE — | 11 31 | - P03

YD — | 12 32 | - R2

YC — | 1 33 | - R3

YB — | 14 34 | - R4

YA — | 15 35 | - R5

R7 — | 16 36 | - R6

K4 — | 17 37 | - P07

K3 — | 18 38 | - K0

K2 — | 19 39 | - K1

GND — | 20 40 | - Gnd

Рис 3.3. Призначення ніжок контролера клавіатури та індикатора

Часові діаграми доботи програмованого логічного пристрою контролера.

Рис 3.4 Часова діаграма роботи клавіатури Рис 3.5 Часова діаграма роботи регістру зсуву.

Рис. 3.6 Часова діаграма виводу символів на ССІ.

Робота аналого-цифрового перетворювача На сьогоднішній день випускають аналого-цифрові перетворювачі (АЦП) в корпусах з вісьма ніжками. Вони використовуються для роботи з сучасними компонентами — RISC-мікроконтролерами та цифровими сигнальними процесорами (ЦСП).

Головна особливість таких АЦП полягає в організації керування на одноабо двопровідній шині (SPI, Microwire, I2C та інших), а не через паралельний канал вводу-виводу, який вимагає наявності одного виводу мікросхеми на кожний розряд шини керування. Звичайно, такий спосіб передачі бітів даних — один за одним по одному проводу — обмежує швидкість обміну інформацією, хоча і тут можна досягти швидкості передачі даних 1Мбіт/с.

На рис. 4.1 наведена структурна схема стандартного послідовного АЦП, виконаних в корпусах з 8 ніжками. Логічний контролер з вбудованим тактовим генератором керує роботою схеми перетворення, яка функціонує за принципом послідовного наближення. Цей принцип полягає у покроковому накопиченні в проміжному регістрі даних двійкового слова, яке відповідає співвідношенню вхідної аналогової напруги та взірцевої напруги (REF).

Розглянемо застосування ніжок мікросхеми MAX1242.

Такий АЦП має один аналоговий вхід АIN та вхід для підключення взірцевої напруги (REF). На виході АЦП буде формуватись байт вихідного коду, який рівний 0 для нульової напруги на аналоговому вході, та 111 111 111 111 — для вхідної напруги, яка рівна опорній, що подається на вхід REF. На вхід АIN повинна подаватися напруга менша 2.5 вольта.

Рисунок 4.1. Структурна схема послідовного АЦП.

TLC 549IP

Кожний біт вихідних даних зчитується на ніжці Sdata, при чому біти виводяться старшими розрядами (MSB) вперед за переднім фронтом імпульсів на ніжці SCLK.

Протокол зв’язку АЦП TLC 549IP наведений на рисунку 4.2

Таблиця 4.1 — Призначення ніжок для мікросхем фірм Linear Technology.

Назва ніжки

Призначення ніжки

Sdata

послідовний цифровий вихід

REF

вхід взірцевої напруги

SCLK

тактований вхід

/CS

вибір кристалу

АIN

аналоговий вхід

VCC

Напруга живлення

GND

Загальний

Схема підключення АЦП до мікроконтролера Програма для роботи мікропроцесорного пристрою, побудованого на базі мікроконтролера 89С51

Нижче приведена, написана мовою асемблера 89С51, програма виконує обрахунки за заданими залежностями, а саме:

У наступній таблиці наведено позначення змінних, їх адреси, а також їх значення у форматі, з яким працює 89С51 з десяткової системи числення значення переводилися за допомогою програми М51−24:

Змінна або число

Значення

Позначення

Адрес байту

Значення байту

TM1

TM2

TM3

TP

30 H

31 H

32 H

33 H

58 H

00 H

00 H

85 H

0.097

DM20M1

DM20M2

DM20M3

DM20P

34 H

35 H

36 H

37 H

46 H

A7 H

EF H

7D H

0.182

DV20M1

DV20M2

DV20M3

DV20P

38 H

39 H

3A H

3B H

3A H

5E H

35 H

7E H

2.1· 15−5

RSM1

RSM2

RSM3

RSP

3C H

3D H

3E H

3 °F H

30 H

29 H

28 H

71 H

7.44· 105

REM1

REM2

REM3

REP

40 H

41 H

42 H

43 H

35 H

A4 H

00 H

94 H

;

ATSUM1

ATSUM2

ATSUM3

ATSUP

44 H

45 H

46 H

47 H

;

;

;

;

;

DMM1

DMM2

DMM3

DMP

48 H

49 H

4A H

4B H

;

;

;

;

;

ATDM1

ATDM2

ATDM3

ATDP

4C H

4D H

4E H

4 °F H

;

;

;

;

;

DVM1

DVM2

DVM3

DVP

50 H

51 H

52 H

53 H

;

;

;

;

;

MM1

MM2

MM3

MP

54 H

55 H

56 H

57 H

;

;

;

;

;

ASM1

ASM2

ASM3

ASP

58 H

59 H

5A H

5B H

;

;

;

;

;

R0M1

R0M2

R0M3

R0P

5C H

5D H

5E H

5 °F H

;

;

;

;

;

AREM1

AREM2

AREM3

AREP

74 H

75 H

76 H

77 H

;

;

;

;

;

KSM1

KSM2

KSM3

KSP

78 H

79 H

7A H

7B H

;

;

;

;

Y

;

YM1

YM2

YM3

YP

7C H

7D H

7E H

7 °F H

;

;

;

;

X

XM1

XM2

XM3

XP

80 H

81 H

82 H

83 H

;

;

;

;

XX

;

XXM1

XXM2

XXM3

XXP

84 H

85 H

86 H

87 H

;

;

;

;

;

10−6

;

;

;

;

;

;

;

;

06 H

37 H

BD H

6D H

;

9.903

;

;

;

;

;

;

;

;

1E H

72 H

B0 H

84 H

;

20.561

;

;

;

;

;

;

;

;

24 H

7C H

ED H

85 H

;

10−3

;

;

;

;

;

;

;

;

03 H

12 H

6E H

77 H

;

— 15.675

;

;

;

;

;

;

;

;

FA H

CC H

CC H

84 H

;

;

;

;

;

;

;

;

;

00 H

00 H

00 H

81 H

;

— 20

;

;

;

;

;

;

;

;

A0 H

00 H

00 H

85 H

;

11.1

;

;

;

;

;

;

;

;

31 H

99 H

99 H

84 H

;

7.9

;

;

;

;

;

;

;

;

7C H

CC H

CC H

83 H

;

— 3.9

;

;

;

;

;

;

;

;

F9 H

99 H

99 H

82 H

;

;

;

;

;

;

;

;

;

1C H

40 H

00 H

8E H

;

0.045

;

;

;

;

;

;

;

;

38 H

51 H

EB H

7C H

;

— 0.025

;

;

;

;

;

;

;

;

CC H

CC H

CC H

7B H

;

— 6

;

;

;

;

;

;

;

;

C0 H

00 H

00 H

83 H

;

— 4

;

;

;

;

;

;

;

;

80 H

00 H

00 H

83 H

;

;

;

;

;

;

;

;

;

74 H

24 H

00 H

94 H

Програма розрахунку заданої функції

TM1 EQU 30h

TM2 EQU 31h

TM3 EQU 32h

TP EQU 33h

DM20M1 EQU 34h

DM20M2 EQU 35h

DM20M3 EQU 36h

DM20P EQU 37h

DV20M1 EQU 38h

DV20M2 EQU 39h

DV20M3 EQU 3Ah

DV20P EQU 3Bh

RSM1 EQU 3Ch

RSM2 EQU 3Dh

RSM3 EQU 3Eh

RSP EQU 3Fh

REM1 EQU 40h

REM2 EQU 41h

REM3 EQU 42h

REP EQU 43h

ATSUM1 EQU 44h

ATSUM2 EQU 45h

ATSUM3 EQU 46h

ATSUP EQU 47h

DMM1 EQU 48h

DMM2 EQU 49h

DMM3 EQU 4Ah

DMP EQU 4Bh

ATDM1 EQU 4Ch

ATDM2 EQU 4Dh

ATDM3 EQU 4Eh

ATDP EQU 4Fh

DVM1 EQU 50h

DVM2 EQU 51h

DVM3 EQU 52h

DVP EQU 53h

MM1 EQU 54h

MM2 EQU 55h

MM3 EQU 56h

MP EQU 57h

ASM1 EQU 58h

ASM2 EQU 59h

ASM3 EQU 5Ah

ASP EQU 5Bh

R0M1 EQU 5Ch

R0M2 EQU 5Dh

R0M3 EQU 5Eh

R0P EQU 5Fh

AREM1 EQU 74h

AREM2 EQU 75h

AREM3 EQU 76h

AREP EQU 77h

KSM1 EQU 78h

KSM2 EQU 79h

KSM3 EQU 7Ah

KSP EQU 7Bh

YM1 EQU 7Ch

YM2 EQU 7Dh

YM3 EQU 7Eh

YP EQU 7Fh

XM1 EQU 80h

XM2 EQU 81h

XM3 EQU 82h

XP EQU 83h

XXM1 EQU 84h

XXM2 EQU 85h

XXM3 EQU 86h

XXP EQU 87h

STEK EQU 70h

ORG 0h

JMP BEGIN

ORG 100h

BEGIN

MOV SP,#STEK

MOV TM1,#58h

MOV TM2,#00h

MOV TM3,#00h

MOV TP,#85h

MOV DM20M1,#46h

MOV DM20M2,#0A7h

MOV DM20M3,#0EFh

MOV DM20P,#7Dh

MOV DV20M1,#3Ah

MOV DV20M2,#5Eh

MOV DV20M3,#35h

MOV DV20P,#7Eh

MOV RSM1,#30h

MOV RSM2,#29h

MOV RSM3,#28h

MOV RSP,#71h

MOV REM1,#35h

MOV REM2,#0A4h

MOV REM3,#00h

MOV REP,#94h

MOV R0, TM1

MOV R1, TM2

MOV R2, TM3

MOV R3, TP

MOV R4,#03h

MOV R5,#12h

MOV R6,#6Eh

MOV R7,#77h

CALL MUL;y=t*e-3

MOV YM1, R0

MOV YM2, R1

MOV YM3, R2

MOV YP, R3

MOV XM1, R0

MOV XM2, R1

MOV XM3, R2

MOV XP, R3

MOV R0, XM1

MOV R1, XM2

MOV R2, XM3

MOV R3, XP

CALL MUL;(t*e-3)^2

MOV R4,#0FAh

MOV R5,#0CCh

MOV R6,#0CCh

MOV R7,#84h

CALL MUL;x=-15.675*(t*e-3)^2

MOV XM1, R0

MOV XM2, R1

MOV XM3, R2

MOV XP, R3

MOV R0, YM1

MOV R1, YM2

MOV R2, YM3

MOV R3, YP

MOV R4,#24h

MOV R5,#7Ch

MOV R6,#0EDh

MOV R7,#85h

CALL MUL;20.561*(t*e-3)

MOV R4, XM1

MOV R5, XM2

MOV R6, XM3

MOV R7, XP

CALL SUM;x+20.561*(t*e-3)

MOV R4,#1Eh

MOV R5,#72h

MOV R6,#0B0h

MOV R7,#84h

CALL SUM;9.903+x+20.561*(t*e-3)

MOV R4,#06h

MOV R5,#37h

MOV R6,#0BDh

MOV R7,#6Dh

CALL MUL;atsu=1e-6*(9.903+x+20.561*(t*e-3))

MOV ATSUM1, R0

MOV ATSUM2, R1

MOV ATSUM3, R2

MOV ATSUP, R3

MOV R0, TM1

MOV R1, TM2

MOV R2, TM3

MOV R3, TP

MOV R4,#0A0h

MOV R5,#00h

MOV R6,#00h

MOV R7,#85h

CALL SUM;t-20

MOV R4, ATSUM1

MOV R5, ATSUM2

MOV R6, ATSUM3

MOV R7, ATSUP

CALL MUL;atsu*(t-20)

MOV R4,#00h

MOV R5,#00h

MOV R6,#00h

MOV R7,#81h

CALL SUM;1+atsu*(t-20)

MOV R4, DM20M1

MOV R5, DM20M2

MOV R6, DM20M3

MOV R7, DM20P

CALL MUL;d=d20*(1+atsu*(t-20)

MOV DMM1, R0

MOV DMM2, R1

MOV DMM3, R2

MOV DMP, R3

MOV R0, YM1

MOV R1, YM2

MOV R2, YM3

MOV R3, YP

MOV R4, YM1

MOV R5, YM2

MOV R6, YM3

MOV R7, YP

CALL MUL;(t*e-3)^2

MOV R4,#0F9h

MOV R5,#99h

MOV R6,#99h

MOV R7,#82h

CALL MUL;xx=-3.9*(t*e-3)^2

MOV XXM1, R0

MOV XXM2, R1

MOV XXM3, R2

MOV XXP, R3

MOV R0, YM1

MOV R1, YM2

MOV R2, YM3

MOV R3, YP

MOV R4,#7Ch

MOV R5,#0CCh

MOV R6,#0CCh

MOV R7,#83h

CALL MUL;7.9*(t*e-3)

MOV R4, XXM1

MOV R5, XXM2

MOV R6, XXM3

MOV R7, XXP

CALL SUM;7.9*(t*e-3)-3.9*(t*e-3)^2

MOV R4,#31h

MOV R5,#99h

MOV R6,#99h

MOV R7,#84h

CALL SUM;11.1+7.9*(t*e-3)-3.9*(t*e-3)^2

MOV R4,#06h

MOV R5,#37h

MOV R6,#0BDh

MOV R7,#6Dh

CALL MUL;atd=1e-6(11.1+7.9*(t*e-3)-3.9*(t*e-3)^2)

MOV ATDM1, R0

MOV ATDM2, R1

MOV ATDM3, R2

MOV ATDP, R3

MOV R0, TM1

MOV R1, TM2

MOV R2, TM3

MOV R3, TP

MOV R4,#0A0h

MOV R5,#00h

MOV R6,#00h

MOV R7,#85h

CALL SUM;t-20

MOV R4, ATDM1

MOV R5, ATDM2

MOV R6, ATDM3

MOV R7, ATDP

CALL MUL;atsu*(t-20)

MOV R4,#00h

MOV R5,#00h

MOV R6,#00h

MOV R7,#81h

CALL SUM;1+atsu*(t-20)

MOV R4, DV20M1

MOV R5, DV20M2

MOV R6, DV20M3

MOV R7, DV20P

CALL MUL;D=D20*(1+atsu*(t-20))

MOV DVM1, R0

MOV DVM2, R1

MOV DVM3, R2

MOV DVP, R3

MOV R0, DMM1

MOV R1, DMM2

MOV R2, DMM3

MOV R3, DMP

MOV R4, DVM1

MOV R5, DVM2

MOV R6, DVM3

MOV R7, DVP

CALL DIV;d/D

MOV XM1, R0

MOV XM2, R1

MOV XM3, R2

MOV XP, R3

MOV R4, XM1

MOV R5, XM2

MOV R6, XM3

MOV R7, XP

CALL MUL;m=(d/D)^2

MOV MM1, R0

MOV MM2, R1

MOV MM3, R2

MOV MP, R3

MOV R0, RSM1

MOV R1, RSM2

MOV R2, RSM3

MOV R3, RSP

MOV R4, DVM1

MOV R5, DVM2

MOV R6, DVM3

MOV R7, DVP

CALL DIV;Rs/D

MOV R4,#1Ch

MOV R5,#40h

MOV R6,#00h

MOV R7,#8Eh

CALL MUL;as=1e4*Rs/D

MOV ASM1, R0

MOV ASM2, R1

MOV ASM3, R2

MOV ASP, R3

MOV R0, ASM1

MOV R1, ASM2

MOV R2, ASM3

MOV R3, ASP

CALL LN;ln (as)

MOV R4,#38h

MOV R5,#51h

MOV R6,#0EBh

MOV R7,#7Ch

CALL MUL;0.045*ln (as)

MOV R4,#0CCh

MOV R5,#0CCh

MOV R6,#0CCh

MOV R7,#7Bh

CALL SUM;r0=0.045*ln (as)-0.025

MOV R0M1, R0

MOV R0M2, R1

MOV R0M3, R2

MOV R0P, R3

MOV R0, REM1

MOV R1, REM2

MOV R2, REM3

MOV R3, REP

MOV R4,#74h

MOV R5,#24h

MOV R6,#00h

MOV R7,#94h

CALL SUM

JNB ACC.7,FORMULA

MOV AREM1,#00h

MOV AREM2,#00h

MOV AREM3,#00h

MOV AREP,#81h

JMP ENDA

FORMULA:

MOV R0, REM1

MOV R1, REM2

MOV R2, REM3

MOV R3, REP

CALL LN;ln (Re)

MOV R4,#0C0h

MOV R5,#00h

MOV R6,#00h

MOV R7,#83h

CALL SUM;ln (Re)-6

MOV XM1, R0

MOV XM2, R1

MOV XM3, R2

MOV XP, R3

MOV R4, XM1

MOV R5, XM2

MOV R6, XM3

MOV R7, XP

CALL MUL;(ln (Re)-6)^2

MOV R4,#80h

MOV R5,#00h

MOV R6,#00h

MOV R7,#83h

CALL DIV;((ln (Re)-6)^2)/(-4)

MOV R4,#00h

MOV R5,#00h

MOV R6,#00h

MOV R7,#81h

CALL SUM;are=1+((ln (Re)-6)^2)/(-4)

MOV AREM1, R0

MOV AREM2, R1

MOV AREM3, R2

MOV AREP, R3

ENDA:

MOV R0, MM1

MOV R1, MM2

MOV R2, MM3

MOV R3, MP

MOV R4, MM1

MOV R5, MM2

MOV R6, MM3

MOV R7, MP

CALL MUL;m2

MOV R4, AREM1

MOV R5, AREM2

MOV R6, AREM3

MOV R7, AREP

CALL MUL;are*m2

MOV R4, R0M1

MOV R5, R0M2

MOV R6, R0M3

MOV R7, R0P

CALL MUL;r0*are*m2

MOV R4,#00h

MOV R5,#00h

MOV R6,#00h

MOV R7,#81h

CALL SUM;1+r0*are*m2

MOV KSM1, R0

MOV KSM2, R1

MOV KSM3, R2

MOV KSP, R3

В результаті виконання програми отримаємо значення функції 1.0196.

Для перевірки правильності роботи програми, складено програму в Matlab:

%rozrahunok

clc;clear

t=27;d20=0.097;D20=0.182;Rs=2.1e-5;Re=7.44e5;

atsy=1e-6*(9.903+20.561*(t/1e3)-15.675*(t/1e3)^2);

d=d20*(1+atsy*(t-20));

atD=1e-6*(11.1+7.9*(t/1e3)-3.9*(t/1e3)^2);

D=D20*(1+atD*(t-20));

m=(d/D)^2;

As=1e4*Rs/D;

r0=0.045*log (As)-0.025;

if Re<1e6

Are=1-(log (Re)-6)^2/4;

else

Are=1;

end

Ks=1+r0*m2*Are

Результати виконання програми:

1.0197

Відносна обчислення мікроконтролером складає:

Висновки У цьому курсовому проекті було розроблено інтелектуальний давач на базі мікроконтролера 89С51.

Також розроблено:

Структурну схему інтелектуального давача, побудованого на базі мікропроцесорного пристрою, яка в свою чергу складається з:

— мікроконтролера 89С51, який здійснює керування зовнішніми пристроями вводу/виводу;

— аналого-цифрового перетворювача (АЦП TLC 549IP);

— клавіатури;

— восьмирозрядного семисегментного індикатора;

— контролера клавіатури;

— контролера каналу послідовного вводу/виводу;

— блоку живлення;

Роботу контролера клавіатури та РКІ синтезовано в середовищі PLDshell в пункті 3. Результат наведений в п. 3.3. та в п. 3.4.

Розроблено також електричну схему інтелектуального давача.

Описано принцип роботи клавіатури разом з контролером клавіатури.

Описано принцип роботи семисегментного індикатора разом з контролером індикатора.

Написано програму для програмування програмованого логічного пристрою, який буде обслуговувати клавіатуру та семисегментний індикатор.

Наведено часові діаграми роботи програмованого логічного пристрою для перевірки всіх етапів синтезу контролера.

Написано програму для обслуговування конкретного переривання та для розрахунку функції, заданої в індивідуальному завданні.

Результат виконання програми на асемблері: Кш = 1.0196

Результат виконання програми в середовищі Matlab: Кш = 1.0197

Вищенаведена програма обраховує залежність з точністю

Список літератури

1. Цифрова техніка: Навчальний посібник /Б.Є. Рицар. — Київ: УМК ВО, 1991. — 372с.

2. Жабин В. И., Ткаченко В. В. Однокристальные и микропрограммируемые ЭВМ. — Киев, 1995, 115 с.

3. Стрепко І.Т., Тимченко О. В., Дурняк Б. В. Проектування систем на однокристальних мікро-ЕОМю — К.: Фенікс, 1998. -266с.

Показати весь текст
Заповнити форму поточною роботою