Добавил:
Студент, если у тебя есть завалявшиеся работы, то не стесняйся, загрузи их на СтудентФайлс! Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Pz2

.docx
Скачиваний:
18
Добавлен:
16.10.2022
Размер:
597.12 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ЖЕЛЕЗНОДОРОЖНОГО ТРАНСПОРТА

Федеральное государственное бюджетное образовательное учреждение

высшего образования

«Петербургский государственный университет путей сообщения

Императора Александра I»

(ФГБОУ ВО ПГУПС)

Факультет «Автоматизация и интеллектуальные технологии»

Кафедра «Автоматика и телемеханика на железных дорогах»

Специальность 23.05.05 Системы обеспечения движением поездов

Специализация Автоматика и телемеханика на железнодорожном транспорте

Отчет по практическому заданию № 2

по дисциплине «Микропроцессорные информационно-управляющие системы 1»

М6 «Изучение принципов программирования платы расширения, содержащей параллельный периферийный адаптер с использованием интегрированной среды разработки языка программирования C++ Builder 5»

Обучающийся

Курс IV

Группа

АР-709

дата

Баранов Д.А.

Преподаватель

Отметка о зачете, подпись, дата

доц. Чухонин В.М.

должность, Ф.И.О.

Санкт-Петербург

2020

Цель практического задания: ознакомление со структурой плат расширения, изучение основ управления платами расширения с помощью программных приложений в системе программирования C++ Builder 5 с использованием Интегрированной Среды Разработки (ИСР); освоение методики разработки приложений; программирование параллельного периферийного адаптера (ППА) на микросхеме intel 8255.

Назначение ППА и его структурная схема

Микросхема intel 8255 параллельного интерфейса периферийного адаптера представляет собой программируемое устройство ввода/вывода параллельной информации и применяется в качестве элемента ввода/вывода общего назначения, сопрягающего различные типы периферийных устройств с магистралью данных систем обработки информации.

Рис. 1 – Структурная схема ППА

Методика составления управляющего слова ППА для ситуации: режим 0, каналы А и B настраиваются на ввод информации, канал C настраивается на вывод информации

Для заданной ситуации необходимо в двоичном коде записать следующее управляющее слово ППА:

D7

D6

D5

D4

D3

D2

D1

D0

1

0

0

1

0

0

1

0

Здесь значения разрядов означают:

D0=0 – разряды 0 – 3 канала С ППА настроены на вывод информации;

D1=1 – канал В ППА настроен на ввод информации;

D2=0 – разряды 0–3 канала С и канал В ППА настроены для работы в режиме 0;

D3=0 – разряды 4–7 канала С ППА настроены на вывод информации;

D4=1 – канал А ППА настроен на ввод информации;

D5=0; D6=0 – разряды 4–7 канала С и канал А ППА настроены для работы в режиме 0.

Привести последовательно этапы разработки проекта «PausePPA», включая описание визуальных компонент, их свойств и соответствующих обработчиков событий, а также включения в проект дополнительных файлов

1. Открыть папку Pause PPA

1.1 Сохранить файл реализации в папке Pause PPA с именем PausePPA Unit1.cpp:

- в окне Save Unit1 As в графе «Имя файла» изменить имя Unit1.cpp, предлагаемое C++ Builder 5, на имя PausePPA Unit1.cpp;

- щёлкнуть один раз левой кнопкой мыши по кнопке «Сохранить».

1.2 Сохранить файл проекта в папке Pause с именем Pause PPA Project1.bpr:

- в окне Save Unit1 As в графе «Имя файла» изменить имя Project1.bpr, предлагаемое C++ Builder 5, на имя PausePPA Project1.bpr.

-щёлкнуть один раз левой кнопкой мыши по кнопке «Сохранить».

Таким образом, результатом действий по сохранению проекта будет создание папки PausePPA в нужном директории и сохранение в этой папке проекта с именем PausePPA.Следует отметить ,что имя проекта записывается латинскими буквами.

2. Включение в проект дополнительных файлов. Включение в проект файла DriverDataIO.cpp.

2.1 На мониторе появляется визуальная форма проекта. Войти в меню Project пункт меню Add to project (или в панели быстрых кнопок выбрать кнопку Add to project).

2.2 В открывшемся диалоговом окне перейти в корневой каталог диска С.

2.3 В корневом каталоге диска С открыть каталог С:\Рсl836.

2.4 В строке диалогового окна «Тип файла» выбрать расширение *.сср.

2.5 В диалоговом окне установить курсор на файл DriverDataIO.cpp.

2.6 Щёлкнуть курсором мыши по кнопке Открыть (или щёлкнуть два раза курсором мыши по выделенному файлу DriverDataIO.cpp.).

2.7 На экране монитора появится файл DriverDataIO.cpp.

2.8 Щёлкнуть правой кнопкой мыши по пустому месту файла драйвера и выбрать пункт Close Page, щёлкнуть по нему один раз левой кнопкой мыши и тем самым закрыть этот файл (т.е убрать файл из Редактора кода).

Включение в проект файла adsapi.lib.

2.9. В меню Project выбрать Add to project

2.10. В появившемся диалоговом окне перейти в корневой каталог диска C.

2.11. В корневом каталоге диска C открыть каталог C:\Pcl836.

2.12. В строке диалогового окна «Тип файла» выбрать расширение *.lib.

2.13. В диалоговом окне установить курсор на файл adsapi.lib.

2.14. Щёлкнуть курсором мыши по кнопке «Открыть» Включение в проект файла Driver Data IO.h.

2.15. Войти в меню File, выбрать пункт меню Include Unit.

2.16. В открывшемся окне Use Unit установить курсор на файл DriverDataIO.h.

2.17. Щёлкнуть курсором мыши по кнопке ОК. В заголовочную часть файла реализации проекта добавится файл Drive-DataIO.h.

3. Визуальное проектирование.

3.1. Повторить действия, связанные с созданием приложения Pause (см. ПЗ №1, раздел «2. Этапы разработки проекта Pause».

3.2. Добавить в проект обработчик событий функции Form Create: Щёлкнуть два раза левой кнопкой мыши по свободному от объектов месту визуальной формы (в файл реализации проекта добавится заготовка этой функции и пустое тело функции).

3.3. Добавить в проект обработчик событий функции Form Destroy: В инспекторе объектов перейти на панель Events объекта Form. Выбрать пункт On Destroy и щёлкнуть по нему один раз левой кнопкой мыши – справа от пункта On Destroy появится пустое окно белого цвета. Установить курсор в это окно и щёлкнуть два раза левой кнопкой мыши по этому окну ( в файле реализации проекта добавится заготовка этой функции – имя функции и пустое тело функции).

Функции Form Create: используется для инициализации начальных установок, таких, как, например, занести начальные значения исходных данных в соответствующие окна Edit*.

Функции Form Destroy: разрушает окно, то есть закрывает и выгружает его из памяти, делает невозможным дальнейшее использование каких-либо свойств этого окна в программе.

Блок-схемы алгоритмов проекта в целом и функции Timer1.Timer

Рис. 2 – Общий алгоритм работы Timer1.Timer

Рис. 3 – Блок-схема функции Timer1.Timer

Программный листинг файла реализации с описанием каждой его строки программного кода

1: //---------------------------------------------------------------------------

2:

3: #include <vcl.h> // директива перепроцессора подключает файлы

4: // визуальных компонентов

5: #pragma hdrstop // директива перепроцессора указывает компилятору

6: // конец списка общих файлов

7: #define BASE 0x100 // внесение директивы BASE 0x100

8: #include "Pause_PPA.h" // директива перепроцессора подключает в файл

9: // реализации заголовочный файл

10: #include "DriverDataIO.h" // включение в проект файла "DriverDataIO.h"

11: //---------------------------------------------------------------------------

12: #pragma package(smart_init) // директива перепроцессора указывает

13: // компилятору последовательность

14: // инициализации пакетов такой, какая

15: // устанавливается взаимными ссылками

16: // использующих их модулей

17: #pragma resource "*.dfm" // директива перепроцессора указывает

18: // компилятору, что для формы надо

19: // использовать файл .dfm с тем же именем,

20: // что и имя данного файла

21: TForm1 *Form1; // объявление указателя *Form1 для объекта формы

22: // TForm1

23: unsigned short int y; // объявление переменной "y" как беззнакового,

24: // короткого, целого числа

25: // Объявление указателя для ППА

26:    long HDevice;

27: //--------------------------------------------------------------------------

28: // Объявление конструктора формы и функции конструктора формы

29: __fastcall TForm1::TForm1(TComponent* Owner)

30:       : TForm(Owner)

31: {

32: y = 0; // начальное значение переменной y

33: }

34: //--------------------------------------------------------------------------

35: // Инициализация структуры данных

36: TDataIO DataIO[] =

37: {

38: {BASE+3, 0x92}, // Адрес и упр.слово ППА, реж. 0, A<--,B<--,C-->

39: {BASE,0}, // Адрес канала А

40: {BASE+1,0}, // Адрес канала В

41: {BASE+2,0}, // Адрес канала С

42: };

43: // Объявление наличия кнопки Button1 (Пуск)

44: void __fastcall TForm1::Button1Click (TObject *Sender)

45: {

46: // Разрешение работы таймера

47: Timer1->; Enabled=true;

48: }

49: //---------------------------------------------------------------------------

50: // Объявление наличия кнопки Button2 (Закрыть)

51: void __fastcall TForm1::Button2Click (TObject *Sender)

52: {

53: // Закрытие формы и завершение приложения

54:  Close();

55: }

56: //---------------------------------------------------------------------------

57: // Объявление наличия таймера Timer1

58: void __fastcall TForm1::Timer1Timer (TObject *Sender)

59: {

60: // Инверсия y

61: y = ~y;

62: // Выделение разряда D0 переменной y

63: y = y&0x01;

64: // Вывод значения переменной "y"; на форму

65: Label2 ->; Caption = "y="; + AnsiString(y);

66: // Окрашивание переменной "y" в красный цвет

67: Label2 -> Font ->; Color = clRed;

68: // Вывод значения переменной "y" в порт канала "C" ППА

69: DataIO[3].value = y;

70: WriteDeviceData (HDevice, &DataIO[3], 1);

71: }

72: //---------------------------------------------------------------------------

73: // Инициализация начальных установок ППА

74: void __fastcall TForm1::FormCreate (TObject *Sender)

75: {

76: // Открытие платы ППА

77: HDevice = OpenDevice (1);

78: // Инициализация ППА

79: WriteDeviceData (HDevice, &DataIO[0], 1);

80: // Функция заносит в порт 0x103 значение 0x92

81: }

82: //---------------------------------------------------------------------------

83: void __fastcall TForm1::FormDestroy (TObeject *Sender)

84: {

85: // Закрытие платы ППА

86: CloseDevice (HDevice);

87: }

Вывод

В ходе выполнения практического занятия была изучена структура плат, а также рассмотрены основы управления расширения с помощью программных приложений в системе программирования C++ Builder 5 с использованием Интегрированной Среды Разработки (ИСР). Были изучены функции и свойства некоторых основных компонентов C++ Builder 5, таких как Form Create, Form Destroy, Timer1Timer.

На основе полученных навыков создан проект PausePPA, реализующий вывод на форму переменной у и её значения в виде 0 и 1, а также одновременный вывод в порт С ППА значения 0х00 и 0х01 шестнадцатеричном виде. В работе приведен файл реализации, полученный после сохранения проекта. Также приложены блок-схемы алгоритмов, реализованных в данной работе.

Соседние файлы в предмете Микропроцессорные информационно-управляющие системы