- •Алгоритмічні мови та програмування Методичні вказівки
- •Алгоритмічні мови та програмування Методичні вказівки
- •03056, Київ, вул..Політехнічна, 12, корп. 17
- •Порядок виконання роботи
- •Загальні відомості для виконання лабораторної роботи
- •0X число (шістнадцяткове),
- •0 Число(число (вісімкове),
- •Результат виконання
- •Порядок виконання роботи
- •Порядок виконання роботи
- •Порядок виконання роботи
- •Додаток 1
- •Додаток 2
- •Порядок виконання роботи
- •Порядок виконання роботи
- •Доступ до елемента масиву
- •Запис вектора у стовпець (рядок) масиву
- •Зміна стовпців масиву
- •Додаткові засоби
- •Теоретична частина
- •Порядок виконання роботи
- •Теоретична частина
- •Порядок виконання роботи
- •Додаток
- •Порядок виконання роботи
- •Результати виконання програми
- •Результати виконання програми
- •Порядок виконання роботи
- •Добирання формул за дослiдними даними згiдно методу найменших квадратiв
- •Порядок виконання роботи
- •Порядок виконання роботи
- •Додаток 1
- •Додаток 2
- •Додаток 3
- •Порядок виконання роботи
- •//Функція
- •//Динамічні масиви
- •Порядок виконання роботи
- •Порядок виконання роботи
- •Порядок виконання роботи
- •Порядок виконання роботи
Порядок виконання роботи
А. При підготовці:
1.Ознайомитися із додатком А, де наведені основні функції бібліотеки dos.h та приклади реалізації цих функцій ,опис регістрів керування паралельним портом комп’ютера та принциповою схемою запропонованого зовнішнього пристрою .
2.Ознайомитися з програмою (додаток В) із прикладами роботи з паралельним портом комп’ютера та зовнішнім пристроєм.
3.Розробити алгоритми та написати програму для виконання наступного завдання .У програмі повинно бути меню, за яким можна :
визначити стан порту та погасити випадково засвічені світлодіоди ;
засвітити будь-який світлодіод ,
організувати режим біжучих вогнів на світлодіодах ( таблиця № 21.1) ,
примусити блимати задані світлодіоди із заданою частотою (таблиця № 21.2 ) .
4.Підготувати шаблон звіту.
В. У лабораторii:
1.Виконати підготовлену програму .
2.Оцінити результати виконання програми та зробити висновки.
3.Заповнити звіт.
Змiст звiту:
1.Алгоритм розрахунків та програма.
2.Оцінка результатів та відповідні висновки.
3.Пропозиції по роботі.
Таблиця №21.1
Варіант |
Кількість біжучих світлодіодів і напрямок руху |
|
1 |
2 сусідніх , праворуч |
11 |
2 |
3 сусідніх, праворуч |
111 |
3 |
4 сусідніх, праворуч |
1111 |
4 |
2 сусідніх, ліворуч |
11 |
5 |
3 сусідніх, ліворуч |
111 |
6 |
4 сусідніх, ліворуч |
1111 |
7 |
2 з інтервалом у один світлодіод , праворуч |
101 |
8 |
2 з інтервалом у два світлодіоди , праворуч |
1001 |
9 |
2 з інтервалом у три світлодіоди , праворуч |
10001 |
10 |
2 з інтервалом у один світлодіод , ліворуч |
101 |
11 |
2 з інтервалом у два світлодіоди , ліворуч |
1001 |
12 |
2 з інтервалом у три світлодіоди , ліворуч |
10001 |
13 |
3 з інтервалом у один світлодіод , праворуч |
1011 |
14 |
4 з інтервалом у один світлодіод , праворуч |
10111 |
15 |
3 з інтервалом у один світлодіод , праворуч |
1101 |
16 |
4 з інтервалом у один світлодіод , праворуч |
11101 |
17 |
3 з інтервалом у один світлодіод , ліворуч |
1011 |
18 |
4 з інтервалом у один світлодіод, ліворуч |
10111 |
19 |
3 з інтервалом у один світлодіод, ліворуч |
1101 |
20 |
4 з інтервалом у один світлодіод , ліворуч |
11101 |
21 |
3 з інтервалом у два світлодіоди , праворуч |
11001 |
22 |
3 з інтервалом у два світлодіоди , праворуч |
10011 |
23 |
3 з інтервалом у два світлодіоди , ліворуч |
11001 |
24 |
3 з інтервалом у два світлодіоди , ліворуч |
10011 |
25 |
4 з інтервалом у один світлодіод , праворуч |
11011 |
26 |
4 з інтервалом у один світлодіод , ліворуч |
11011 |
27 |
4 з інтервалом у два світлодіоди , ліворуч |
110011 |
28 |
3 з інтервалом у два світлодіоди , ліворуч |
10101 |
29 |
4 з інтервалом у два світлодіоди , праворуч |
110011 |
30 |
3 з інтервалом у два світлодіоди , праворуч |
10101 |
Таблиця №21.2
Варіант |
Кількість |
Схема розташування |
Частота ,Гц |
1 |
4 |
1 0 1 0 1 0 1 0 |
10 |
2 |
5 |
1 1 0 1 0 1 0 1 |
12 |
3 |
5 |
1 1 1 0 1 0 1 0 |
14 |
4 |
6 |
1 1 1 1 0 1 0 1 |
16 |
5 |
4 |
1 0 0 1 0 1 0 1 |
18 |
6 |
4 |
1 1 0 0 1 0 1 0 |
20 |
7 |
5 |
1 1 1 0 0 1 0 1 |
11 |
8 |
5 |
1 1 1 1 0 0 1 0 |
13 |
9 |
6 |
1 1 0 1 1 0 1 1 |
15 |
10 |
5 |
1 1 0 0 1 1 0 1 |
17 |
11 |
5 |
1 1 0 0 0 1 1 1 |
19 |
12 |
3 |
1 0 0 1 0 0 1 0 |
2 |
13 |
3 |
1 0 0 0 1 0 1 0 |
2.5 |
14 |
3 |
1 0 0 0 0 1 1 0 |
3 |
15 |
3 |
1 0 1 0 0 1 0 0 |
3.5 |
16 |
3 |
1 1 0 0 0 1 0 0 |
4 |
17 |
3 |
1 0 0 1 1 0 0 0 |
4.5 |
18 |
3 |
1 0 0 0 0 1 1 0 |
5 |
19 |
4 |
1 1 0 0 0 0 1 1 |
5.5 |
20 |
4 |
1 1 0 0 1 1 0 0 |
6 |
21 |
4 |
1 1 0 1 1 0 0 0 |
6.5 |
22 |
4 |
0 0 1 1 0 0 1 1 |
7 |
23 |
4 |
0 0 0 1 1 0 1 1 |
7.5 |
24 |
4 |
0 0 0 0 1 1 1 1 |
8 |
25 |
4 |
1 1 1 1 0 0 0 0 |
8.5 |
26 |
5 |
1 1 0 0 1 1 0 0 |
9 |
27 |
5 |
1 1 1 0 0 0 1 1 |
9.5 |
28 |
5 |
0 0 1 1 1 0 1 1 |
10.5 |
29 |
4 |
0 0 1 1 0 0 1 1 |
11.5 |
30 |
3 |
0 0 0 1 1 0 0 1 |
12.5 |
Додаток А
Функції із бібліотеки dos.h
1. Виведення байта даних у порт за адресою
void outportb ( int portid , unsigned char value );
portid – адреса порту .
2. Виведення слова ( два байти ) даних у порт за адресою
void outport ( int portid , int value );
3. Введення байта даних із порту за адресою
unsigned char inportb ( int portid );
4. Введення слова даних із порту за адресою
int inport ( int portid );
5. Звук із заданою частотою :
запустити void sound ( unsigned frequency );
зупинити void nosound ( void );
6. Затримка виконання операторів
void delay ( unsigned milliseconds );
void sleep (unsigned seconds );
Паралельний порт LPT
Паралельний 8-розрядний порт комп’ютера в системах MS DOS та Windows 9x обслуговують три регістри : регістр для виведення даних за адресою 0х378 , регістр стану порту за адресою 0х379 (рис. 21.1) та регістр керування за адресою 0х37А (рис.21.2).
Регістр станів 379h | ||||||||
Біт |
/BUSY |
ACK |
PE |
SELIN |
ERR |
|
|
|
Номер |
7 |
6 |
5 |
4 |
3 |
|
|
|
Рис.21.1.
Регістр керування 37Ah | ||||||||
Біт |
|
|
Data i/o |
IRQ En |
/SEL |
INIT |
/AFEED |
/STR |
Номер |
|
|
5 |
4 |
3 |
2 |
1 |
0 |
Рис.21.2.
У регістр даних записуються дані , що виводяться .Записане у регістр значення зберігається незмінним до наступного запису.
Читання регістру стану дозволяє виявити реакцію зовнішнього пристрою на виведені дані та скоригувати інформаційний обмін .
За допомогою регістру керування встановлюється заданий режим обміну . Слід зауважити , що цей порт призначений для принтера , тому більшість розрядів регістрів стану та керування має специфічне призначення :
BUSY - зовнішній пристрій зайнятий , /ACK – підтвердження обміну ,
PE – нема паперу ( Paper End ) , SEL - вхідний сигнал вибору , /SELIN – вихідний сигнал вибору , /ERROR – помилка , /INIT – ініціалізація , /AUTOFD – автоматична подача паперу (autofeed) .
Вихід розрядів регістрів на роз’єм порту показаний на рис.21.3.
PC
PC
[1] [3] [2] [3]
Рис.21.3.
Лабораторну роботу можна виконати на пристрою , зібраного за схемою, показаною на рис.21.4, 8 світлодіодів через опори у 470 Ом підключаються до виводів порту , стан яких визначається регістром даних. Дев’ятий світлодіод служить індикатором подачі напруги на світлодіоди . Щоб засвітити світлодіод , треба у відповідний розряд регістру даних
записати логічну одиницю „1” і вивести у високий рівень напруги на його вивід порту .Для гасіння треба подати низький рівень напруги , тобто записати у регістр даних логічний нуль „0” .
Наприклад , перший світлодіод
OutPortB ( 0x378h , 1) ; // засвічується
sleep ( 180 ) ; // горить 3 хвилини
OutPortB ( 0x378h , 0) ; //гасне
Додаток В
У даній демонстраційній програмі поєднано виконання одночасного виведення інформації на пристрій з світлодіодами та на екран компютера .
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <dos.h>
const unsigned int lpt = 0x378; //адреса порту для даних
/* функція виведення на екран кольорового віконця , еквівалентного світлодіоду з номером number , який засвічується */
void show_led ( int number , int color )
{
window (28 + number*4 , 5 , 30 + number*4 , 6 );
textbackground ( color );
clrscr ();
}
/* функція виведення на екран кольорового віконця , еквівалентного світлодіоду з номером number , який загасається */
void clear_led ( int number )
{
window (28 + number*4 , 5 , 30 + number*4 , 6 );
textbackground ( LIGHTBLUE);
clrscr ();
}
Рис.17.4.
Рис.21.4.
/* функція обчислення 2К */
int pow2k ( int k )
{
int a = 1 , i = 1;
while( i < k )
{
i ++ ; a = a *2 ;
}
return a;
}
void main()
{
textbackground ( LIGHTGREEN );
clrscr();
gotoxy ( 28 , 4 );
cprintf ( " LIGHT EMITTING DIODES " );
int i, j ,k , a , a1 , b , m;
/* виведення на екран 8 яскраво-синіх забарвлених прямокутників , еквівалентних світлодіодам пристрою , у яскраво-зелене вікно */
for ( i = 0; i < 8; i ++ )
show_led ( i , LIGHTBLUE );
/* виведення на екран меню */
next: window ( 30 , 10 , 60 , 15 );
gotoxy ( 1 , 1 ); cprintf ("1. EMIT ONE LED -- 1 ");
gotoxy ( 1 , 2 ); cprintf ("2. RUN LED -- 2 ");
gotoxy ( 1 , 3 ); cprintf ("3. RUN LEDS -- 3 ");
gotoxy ( 1 , 4 ); cprintf ("4. END.EXIT -- 4 ");
gotoxy ( 1 , 5 ); cprintf (" CHOOSE MODE = ");
cin >> m;
switch ( m )
{
/* засвічування світлодіода із заданим з клавіатури номером */
case 1 :
gotoxy ( 1 , 6); cprintf ("\ show led , number = ");
cin >> k ;
show_led ( k-1 ,RED );
b = pow2k(k);
outportb ( lpt, b);
sound (50 * k); delay (10000);
clear_led ( k-1 );outportb ( lpt, 0);
nosound(); break;
/* біжучий світлодіод */
case 2 :
k=0; j = 0;
while (j < 24)
{
k = k % 8;
show_led ( k ,RED );
outportb ( lpt, pow2k( k ) );
delay (1000);sound (100 * (k+1));
clear_led ( k );
k++;
j++;
}
outportb ( lpt , 0 );nosound();
break;
/* поступове загоряння усіх світлодіодів */
case 3 :
a = 1, a1 = 1, j = 1;
while (j < 4 )
{
for (i = 0; i < 8; i++)
{
show_led ( i ,RED );
outportb (lpt, a1);
a = a*2; a1 = a - 1;
delay (1000);
sound (100*(i+1));
}
a = 1;j ++;
for (i = 0; i < 8; i++)
{
clear_led ( i );
}
outportb( lpt , 0 );
}
nosound(); break;
case 4 :
nosound();exit (1);
} goto next;
}
Список літератури
1. С.Д.Кузнецов. Турбо Си - М.Малип.1992.
2. Ян Белецкий. Энциклопедия СИ –М .Мир.1992.
3. Д.Мак-Кракен,У.Дорн . Численніе методы и програмирование на Фортране.М.Мир.1977.
4. Демидович В.П., Марон И.А. Основы вычислительной математики. - М.: Физматгиз, 1970.
5. Крилов В.И. Приближенное вычисление определенных интегралов . – М.Наука ,1967.
6. Зельдович Я.Б., Мышкис А.Д., Элементы прикладной математики. - М.Наука,1972г.
7. Копченова Н.В., Марон И.А. Вычислительная математика в примерах и задачах. - М.: Наука, 1972.
8. Справочник по функциям Borland C++ 3.1/4.0 .Под ред.И.И.Дериева . – Киев. Диалектика, 1994.
9. А.П.Побегайло.С/С++ для студента .- Санкт-Петербург , 2006.
10. С.В.Глушаков и др. Язык програмирования С++ .Учебный куррс.- Фолио- Аст ,2001.
11. Н.Культин .С/С++ в задачах и примерах . - Санкт-Петербург , 2001.
12. В.Дьяконов .Matlab 6 .Учебный курс. – Питер ,2001.
13. В.Дьяконов . Mathcad 2001 . Учебный курс. – Питер ,2001.
14. Глушаков С.В. и др.Персональный компьютер.Учебный курс.
-Харьков:Фолио.2001.
15.Шпак З.Я. Програмування мовою С.-Львів.-2006.
16. Джамса К. Учимся программировать на С++
17. Подбельский Язык С++.
18. Нейбауэр А. Моя первая программа на С/С++.-Питер.-1995.
19. Голуб А.И. Правила программирования С/С++.-М.:Бином,1996.
20 Коцержинський Б.О. Обчислювальна техніка та програмування . Навчально-методичний посібник для студентів радіотехнічних спеціальностей .-Київ ,2009.( електронний засіб навчального призначення)
21. Коцержинський Б.О. Обчислювальна техніка та програмування . Методичні вказівки до практичних занять з дисципліни. .-Київ ,2008.
22. Коцержинський Б.О. Обчислювальна техніка та програмування . Методичні вказівки до виконання лабораторних робіт з дисципліни. .-Київ , 2008.
23. Боглаев Ю.П. Вычислительная математика и программирование.-М:Высшая школа.1990.-544 с.
24. Киреев В.И., Пантелеев А.В.Численные методы в примерах и задачах.
25. Шмидт Справочник програмиста-С/С++ - Вільямс,Киев,2000