Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Інститут телекомунікацій, радіоелектроніки та електронної техніки
кафедра «Теоретична радіотехніка та радіовимірювання»
Звіт з лабораторних робіт
на тему:
«Розробка проектів у середовищі PSoC® Creator™ з використанням функцій в коді програми»
з дисципліни «Програмування програмно-апаратних засобів»
Підготував:
ст. групи РТ-21
Лоїк.В.А.
Прийняв:
асист. каф. ТРР
Мащак А.В.
Львів 2016р.
Лабораторна робота №2
Розробка проектів у середовищі PSoC® Creator™ з використанням функцій в коді програми
Мета: навчитися застосовувати функції мови С, як основні елементи структурного програмування для створення проектів в інтегрованому середовищі PSoC® Creator™.
Постановка задачі: в інтегрованому середовищі PSoC® Creator™ написати програму з використанням функцій мови С для проекту, який реалізовує передачу перших трьох літер прізвища студента азбукою Морзе світловим та звуковим сигналами програмованою системою на чіпі CY8CKIT-042 PSoC® 4 Pioneer Kit.
Короткі відомості для виконання роботи
Порти вводу/виводу світлодіодів:
P0.2 – зеленого;
P0.3 – синього;
P1.6 – червоного.
Для реалізації поставленої задачі необхідно використати вбудовані функції:
SW_Read() – функція зчитування рівня сигналу з кнопки SW. Якщо функція SW_Read() повертає 0, то це означає, що кнопка була натиснута.
CyDelay() – функція затримки, аргументом, якої є період в мілісекундах.
Buzzer_Write() – функція, яка вмикає/вимикає баззер:
Buzzer_Write(1) – баззер видає звуковий сигнал;
Buzzer_Write(0) – баззер не видає звуковий сигнал.
LED_Write() – функція, яка задає світіння діода:
LED_Write(0) – світлодіод світиться;
LED_Write(1) – світлодіод не світиться;
Start() – функція, яка одночасно вмикає баззер та світіння світлодіода.
Stop() – функція, яка одночасно вимикає баззер та світіння світлодіода.
Порядок виконання роботи
1. Організація програми для відтворення сигналу однієї літери.
/* ======================================== * * Copyright YOUR COMPANY, THE YEAR * All Rights Reserved * UNPUBLISHED, LICENSED SOFTWARE. * * CONFIDENTIAL AND PROPRIETARY INFORMATION * WHICH IS THE PROPERTY OF your company. * * ======================================== */ #include <project.h> #define PAUSE 450 /* gap between letters is three units */ #define DOT 150 /* dot is one unit */ #define LINE 450 /* dash is three units */ #define PAUSE_C 150 /* inter-element gap between the dots and dashes */ void Start(void); /* Function which start lighting a LED blinking and Buzzer sounding */ void Stop (void); /* Function which stop lighting a LED blinking and Buzzer sounding */ int main() { for(;;) { if (SW_Read() == 0) { /* char L - "*-**" */ CyDelay(PAUSE ); Start(); CyDelay(DOT); Stop(); CyDelay(PAUSE_C ); Start(); CyDelay(LINE); Stop(); CyDelay(PAUSE_C ); Start(); CyDelay(DOT); Stop(); CyDelay(PAUSE_C ); Start(); CyDelay(DOT); Stop(); /* char O - "- - -" */ CyDelay(PAUSE ); Start(); CyDelay(LINE); Stop(); CyDelay(PAUSE_C ); Start(); CyDelay(LINE); Stop(); CyDelay(PAUSE_C ); Start(); CyDelay(LINE); Stop(); /* char I - " * *" */ CyDelay(PAUSE ); Start(); CyDelay(DOT); Stop(); CyDelay(PAUSE_C ); Start(); CyDelay(DOT); Stop(); } } } void Start (void) { Buzzer_Write(1); LED_Write(0); } void Stop (void) { Buzzer_Write(0); LED_Write(1); }
2. Організація програми для відтворення сигналу однієї літери окремими функціями.
#include <project.h> #define PAUSE 450 /* gap between letters is three units */ #define DOT 150 /* dot is one unit */ #define LINE 450 /* dash is three units */ #define PAUSE_C 150 /* inter-element gap between the dots and dashes */ void Start(void); /* Function which start lighting a LED blinking and Buzzer sounding */ void Stop (void); /* Function which stop lighting a LED blinking and Buzzer sounding */ void L (void); void O (void); void I (void); int main() { for(;;) { if (SW_Read() == 0) { /* char L - "*-**" */ L (); /* char O - "- - -" */ O (); /* char I - " * *" */ I (); } } } void Start (void) { Buzzer_Write(1); LED_Write(0); } void Stop (void) { Buzzer_Write(0); LED_Write(1); } void L (void) { CyDelay(PAUSE ); Start(); CyDelay(DOT); Stop(); CyDelay(PAUSE_C ); Start(); CyDelay(LINE); Stop(); CyDelay(PAUSE_C ); Start(); CyDelay(DOT); Stop(); CyDelay(PAUSE_C ); Start(); CyDelay(DOT); Stop(); } void O (void) { CyDelay(PAUSE ); Start(); CyDelay(LINE); Stop(); CyDelay(PAUSE_C ); Start(); CyDelay(LINE); Stop(); CyDelay(PAUSE_C ); Start(); CyDelay(LINE); Stop(); } void I (void) { CyDelay(PAUSE ); Start(); CyDelay(DOT); Stop(); CyDelay(PAUSE_C ); Start(); CyDelay(DOT); Stop(); } /* [] END OF FILE */
3. Організація програми для відтворення сигналу однієї літери окремою функцією.
/* ======================================== * * Copyright YOUR COMPANY, THE YEAR * All Rights Reserved * UNPUBLISHED, LICENSED SOFTWARE. * * CONFIDENTIAL AND PROPRIETARY INFORMATION * WHICH IS THE PROPERTY OF your company. * * ======================================== */ #include <project.h> #define PAUSE 450 /* gap between letters is three units */ #define DOT 150 /* dot is one unit */ #define LINE 450 /* dash is three units */ #define PAUSE_C 150 /* inter-element gap between the dots and dashes */ void Start(void); /* Function which start lighting a LED blinking and Buzzer sounding */ void Stop (void); /* Function which stop lighting a LED blinking and Buzzer sounding */ void L (void); void O (void); void I (void); char symbol; void blink (uint8 symbol); int main() { for(;;) { if (SW_Read() == 0) { blink ('L'); blink ('O'); blink ('I'); } } } void Start (void) { Buzzer_Write(1); LED_Write(0); } void Stop (void) { Buzzer_Write(0); LED_Write(1); } void L (void) { CyDelay(PAUSE ); Start(); CyDelay(DOT); Stop(); CyDelay(PAUSE_C ); Start(); CyDelay(LINE); Stop(); CyDelay(PAUSE_C ); Start(); CyDelay(DOT); Stop(); CyDelay(PAUSE_C ); Start(); CyDelay(DOT); Stop(); } void O (void) { CyDelay(PAUSE ); Start(); CyDelay(LINE); Stop(); CyDelay(PAUSE_C ); Start(); CyDelay(LINE); Stop(); CyDelay(PAUSE_C ); Start(); CyDelay(LINE); Stop(); } void I (void) { CyDelay(PAUSE ); Start(); CyDelay(DOT); Stop(); CyDelay(PAUSE_C ); Start(); CyDelay(DOT); Stop(); } void blink (uint8 symbol ) { if(symbol == 'L') { L (); } if(symbol == 'O') { O (); } if(symbol == 'I') { I (); } } /* [] END OF FILE */
Висновок : на цій лабораторній роботі ми навчилися організовувати подання сигналу за допомогою як звичайного способу, так і організовувати це за допомогою функцій, що спрощують сприйняття коду програми. Я написав програму, яка подає сигнал, що відповідає коду перших 3 букв мого прізвища, згідно з азбукою Морзе. Програма була написана звичайним кодом, з використанням функції для кожної бувки і з загальною функцією для всіх букв.