WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаТехнічні науки → Навчальна модель аналогово-цифрового перетворювача - Курсова робота

Навчальна модель аналогово-цифрового перетворювача - Курсова робота

4.3 Програма керування АЦП

Загальний вигляд головної форми програми представлено на рис.

Рис.4.1. Екранна форма програми керування АЦП

Кнопка Write_DR дозволяє записувати в порт принтера стан чотирьох бітів регістру DR (біти DR0, DR1, DR2, DR3).

Кнопка Read_SR зчитує з порта принтера значення регітру SR (біт SR3).

Кнопка Write_СR дозволяє записувати в порт принтера стан чотирьох бітів регістру DR (біти СR0, СR1, СR2, СR3).

Кнопка In_U перетворює напругу, яка подається на плату у двійковий код DR0 – DR3.

Кнопка Out_U записує у порт двійковий код, який відповідає введеній на формі напрузі.

За допомогою кнопки Diagram зчитується напруга QI разів і отримане значення будується у вигляді графіка. Проміжок часу між зчитуванням рівний Time_Discret (Додаток Б).

4.3.1 Процедура обрахунку напруги за її двійковим представленням

Процедура p_Init_U встановлює звязок між напругою Ur і двійковою комбінацією, яка буде передана на LPT-порт, а далі в ЦАП, і з якої ЦАП сформує напругу Ur.

p_Init_U – процедура без параметрів. В процедурі оголошено пять змінних: nDr та bOut типу Integer, Rc1,Rc,Ur типу Real.

Тіло процедури починається з циклу, де bOut міняється від 0 до qB. Глобальна змінна qB приймає значення 15. В циклі виконуються наступні дії:

  • процедура Trans_bOut_mDR(bOut) перетворює bOut з десяткової системи числення в двійкову і записує порозрядно в масив mDR[], який є глобальним для всьго модуля;

  • змінній Rc1 присвоюєм значення 0;

  • відкриваєм цикл, де nDR міняється від 0 до qDR. Глобальна змінна qDR приймає значення 3. В цьому циклі змінній Rc1 присвоюємо значення Rc1:=Rc1+(1/(mR[nDr]+Rdiod))*mDR[nDr], де mR[i] – масив значень, елементи якого відповідають реальним значення опорів 4-х резисторів ЦАП. Rdiod – змінна, значення якої рівне значеню опору діодів, що підключені до резисторів послідовно. Отже з законом Ома загальний опір при паралельному включенні n опорів, буде рівний:

.

Доданок (1/(mR[nDr]+Rdiod)) множиться на елемент масиву mR[i], що приймає двійкове значення 0 чи 1. Тобто, якщо в двійковій комбінації певний розряд рівний 0, то струм не протікає, а отже і не враховується при обчисленні опору. Одже, в даному циклі обраховується обернена величина до опору Rc;

  • змінній Rc, що відповідає опору Rc присвоюєм значення 0. Перевіряється, чи значення Rc1 більше 0, тоді Rc присвоюємо 1/Rc1. Значення 1/Rc1 рівне значенню опору при паралельному включені;

  • для обрахування напруги на виході ЦАП при поданні відповідних двійкових комбінацій на вхід неохідно також врахувати значення опору Rz. Змінна Rz буде рівна цьому опору. Напруга Uz на виході ЦАП буде обчислена в процедурі наступним чином U_DR=(Rz/(Rz+Rc))*U_A. Змінна U_A рівна значенню напруги, що подається на вхід дільника (3.7 В).

  • Значення обрахованої напруги Ur на виході ЦАП запишеться у масив mUr[bOut] (таблиця 4.1).

4.3.2 Процедура DR P_Write_DR

Процедура P_Write_DR записує байт даних в регістр DR.

P_Write_DR – процедура без параметрів. В процедурі оголошено три змінних: bOut типу byte, pDr,nDR типу integer.

Змінній bout привласнюєм спочатку 0, pDr – 1. В циклі з масиву mDR[i] з 4-х молодших розрядів формуємо десяткове число, яке потрібно записати в регістр DR( bout:=bOut+mDR[nDR]*pDr; pDr:=pDr*2;).

За тілом циклу записуємо в регістр DR десяткове число, що знаходиться в змінній bout. Для запису використовується процедура PortOut(Adr,bOut) з бібліотеки IO.dll. Ця процедура записує байт даних bOut в порт за адресою Adr. В даному випадку Adr рівне $378.

4.3.3 Процедура P_Write_CR

P_Write_CR аналогічна процедурі P_Write_DR, але дані беруться не з масиву mDR, а з масиву mCR. Дані з масиву mCR інвертуються, крім 2-го елементу масиву і записуються в масив mCR1. Надалі в процедурі відбуваються аналогічні дії як в процедурі P_Write_DR. При цьому використовується не масив mDR, а mCR1. Також в процедурі PortOut(Adr,bOut) параметр Adr прийме інше значення.

4.3.4 Процедура читання P_Read_SR

Процедура читає дані з регістру SR, використовуючи функцію PortIn(Adr) зовнішньої бібліотеки IO.dll. Функція PortIn(Adr) читає байт даних з LPT-порта за адресою Adr і записує в змінну b. Значення b записується в регістр al. Виконується обнулення всіх бітів крім 4-го біта. Одержаний результат записується в елемент масиву mSR[3].

4.3.5 Процедура B_In

В циклі у порт записується значення змінної bOut від мінімального значення 0 до максимального 15. Якщо зчитаний сигнал SR[3]=0, то це означає, що напруга з ЦАП більша за вхідну. В такому випадку вхідній напрузі буде відповідати цифрове значення bOut, або в двійковому вигляді масив бітів mDR(Рис 4.2., Додаток В).

0100090000032a0200000200a20100000000a201000026060f003a03574d46430100000000000100dd640000000001000000180300000000000018030000010000006c0000000000000000000000350000006f0000000000000000000000413f00007326000020454d46000001001803000012000000020000000000000000000000000000007f120000771a0000c80000001f010000000000000000000000000000000f030058600400160000000c000000180000000a0000001000000000000000000000000900000010000000f10e000015090000250000000c0000000e000080250000000c0000000e000080120000000c00000001000000520000007001000001000000a4ffffff00000000000000000000000090010000000000cc04400022430061006c00690062007200690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110040ae110010000000a4b1110024af110052516032a4b111009cae1100100000000cb0110088b1110024516032a4b111009cae11002000000049642f319cae1100a4b1110020000000ffffffff0c26f600d0642f31ffffffffffff0180ffff01800fff0180ffffffff000000000008000000080000d4fb240501000000000000005802000025000000372e9001cc00020f0502020204030204ef0200a07b20004000000000000000009f00000000000000430061006c00690062007200000000000000000064af1100dee32e31e88d0832c4b21100d0ae11009c38273108000000010000000caf11000caf1100e87825310800000034af11000c26f6006476000800000000250000000c00000001000000250000000c00000001000000250000000c00000001000000180000000c0000000000000254000000540000000000000000000000350000006f00000001000000e7298740a48e87400000000057000000010000004c000000040000000000000000000000f10e00001509000050000000200035003600000046000000280000001c0000004744494302000000fffffffffffffffff20e000016090000000000004600000014000000080000004744494303000000250000000c0000000e000080250000000c0000000e0000800e000000140000000000000010000000140000000400000003010800050000000b0200000000050000000c0250012902040000002e0118001c000000fb020200010000000000bc02000000cc0102022253797374656d0000000000000000000000000000000000000000000000000000040000002d010000040000002d01000004000000020101001c000000fb02f3ff0000000000009001000000cc0440002243616c6962726900000000000000000000000000000000000000000000000000040000002d010100040000002d010100040000002d010100050000000902000000020d000000320a0d000000010004000000000027025001202f0800040000002d010000040000002d010000030000000000

Рис 4.2. Алгоритм програми керування

Таблиця 4.1

DR3

DR2

DR1

DR0

U_DR, В

0

0

0

0

0,06

0

0

0

1

0,72

0

0

1

0

1,2

0

0

1

1

1,55

0

1

0

0

1,63

0

1

0

1

1,88

0

1

1

0

2,03

0

1

1

1

2,21

1

0

0

0

2,22

1

0

0

1

2,34

1

0

1

0

2,42

1

0

1

1

2,53

1

1

0

0

2,57

1

1

0

1

2,64

1

1

1

0

2,70

1

1

1

1

2,78

Зв'язок між напругою на виході ЦАП та її цифровим представленням

5. ТЕХНІКО-ЕКОНОМІЧНЕ ОБГРУНТУВАННЯ ПРОЕКТУ

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

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

Loading...

 
 

Цікаве