Створення, відлагодження та виконання проектів у інтегрованому середовищі PSoC® Creator™

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут телекомунікацій, радіоелектроніки та електронної техніки
Факультет:
Радіотехніка
Кафедра:
Не вказано

Інформація про роботу

Рік:
2016
Тип роботи:
Лабораторна робота
Предмет:
Радіовимірювання
Група:
РТ-22

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет «Львівська політехніка» Інститут телекомунікацій, радіоелектроніки та електронної техніки кафедра «Теоретична радіотехніка та радіовимірювання» / Звіт з лабораторних робіт на тему: «Створення, відлагодження та виконання проектів у інтегрованому середовищі PSoC® Creator™» з дисципліни «Програмування програмно-апаратних засобів» Підготував: ст. групи РТ-22 Матвіїв Р.М. Прийняв: асист. каф. ТРР Мащак А.В. Львів 2016 Лабораторна робота №1 Створення, відлагодження та виконання проектів у інтегрованому середовищі PSoC® Creator™ Мета: ознайомитися з функціональними можливостями інтегрованого середовища PSoC® Creator™, навчитися створювати, відлагоджувати та виконувати проекти, використовуючи засоби інтегрованого середовища PSoC® Creator™. Під час виконання лабораторної роботи ми прцаюємо з CY8CKIT-042 PSoC® 4 Pioneer Kit. Завдання Створити проект. Ознайомитися з програмованою системою-на-чіпі CY8CKIT-042 PSoC® 4 Pioneer Kit. Підключити PSoC® 4 Pioneer Kit до комп’ютера через USB. Скомпілювати і запрограмувати проект LED_blink.cydsn в PSoC® 4 Pioneer Kit. Build → Build Project (Shift+F6) → Debug → Program (Ctrl+F5). У редакторі ресурсів змінити колір світлового сигналу шляхом зміни порта вводу/виводу синього діода P0.3 на зелений P0.2 або червоний P1.6. Згідно свого порядкового номера N в списку групи змінити код програми main.c, щоб забезпечити тривалість світіння та згасання діода за такими формулами: τсв. = 100 ∙ N (мс); τзг. = 3000 – 100 ∙ N (мс). Відлагодити та запрограмувати модифікований проект у PSoC® 4 Pioneer Kit. Build (Shift+F6) → Compile File (Ctrl+F6) → Program (Ctrl+F5). У звіті до лабораторної роботи представити: Код програми main.c проекту LED_blink.cydsn. Розрахунок зміни тривалості тривалість блимання та загасання діода свого порядкового номера N в списку групи. Код програми main.c проекту LED_blink_student.cydsn. Скіншот редактора ресурсів LED_blink_student.cydwr. Код програми main.c проекту LED_blink.cydsn: #include <project.h> int main() { for(;;) { LED_Write(~LED_Read()); CyDelay (500); /* тривалість світіння */ LED_Write(~LED_Read()); CyDelay (1000); /* тривалість згасання */ } } τсв. = 100 ∙ 10 = 1000 (мс); τзг. = 3000 – 100 ∙ 10 = 2000 (мс). Код програми main.c проекту LED_blink_software_Matviiv.cydsn #include <project.h> #define swich_on 0 # define switch_off 1 int main() { CyGlobalIntEnable; for(;;) { CyDelay(2000); /* тривалість згасання */ Led_0_2_Write(swich_on); /*вмикаємо діод*/ CyDelay(1000); /* тривалість світіння */ Led_0_2_Write(switch_off); /*вимикаємо діод*/ } } Скріншоти редактора ресурсів .cydwr та редактора схеми проекту .cysch проекту LED_blink_software_Matviiv.cydsn // / Код програми main.c проекту LED_blink_invert_Matviiv.cydsn #include <project.h> int main() { CyGlobalIntEnable; for(;;) { Led_0_2_Write(~Led_0_2_Read()); /*встановлюємо інвертоване до зчитаного значення*/ CyDelay(500); } } Скріншоти редактора ресурсів .cydwr та редактора схеми проекту .cysch проекту LED_blink_invert_Matviiv.cydsn (аналогічні до проекту LED_blink_software_Matviiv.cydsn) // Скріншоти редактора ресурсів .cydwr та редактора схеми проекту .cysch проекту LED_blink_hardware_Matviiv.cydsn / / Код програми main.c проекту LED_blink_hardware_Matviiv.cydsn #include <project.h> int main() { CyGlobalIntEnable; for(;;) { /*Оскільки у цьому випадку контроль над діодом здійснюється апаратно, то й код програми відсутній*/ } } Висновки: під час виконання цієї лабораторної роботи ми ознайомилися з функціональними можливостями інтегрованого середовища PSoC® Creator, навчилися програмувати PSoC® 4 Pioneer Kit для маніпуляції світлодіодом. Лабораторна робота №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() – функція котра одночасно вимикає баззер та світіння діода. Скріншоти редактора ресурсів .cydwr / / Скріншот редактора схеми проекту .cysch / Код програми, яка виводить перші три літери прізвища: #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 Blink_M (void); /* char M - "Line_Line" */ void Blink_A (void); /* char A - "Dot_Line" */ void Blink_T (void); /* char T - "Line" */ int main() { for(;;) { if (SW_Read() == 0) // кнопка натиснута? { Blink_M(); // виклик функції, що відтворює літеру М Blink_A(); // виклик функції, що відтворює літеру А Blink_T(); // виклик функції, що відтворює літеру Т } } } void Start (void) { Buzzer_Write(1); LED_Write(0); } void Stop (void) { Buzzer_Write(0); LED_Write(1); } void Blink_M(void) // функція, що відтворює літеру М азбукою Морзе { /* char M - "Line_Line" */ CyDelay(PAUSE); Start(); CyDelay(LINE); Stop(); CyDelay(PAUSE_C ); Start(); CyDelay(LINE); Stop(); } void Blink_A(void) // функція, що відтворює літеру А азбукою Морзе { /* char A - "Dot_Line" */ CyDelay(PAUSE); Start(); CyDelay(DOT); Stop(); CyDelay(PAUSE_C ); Start(); CyDelay(LINE); Stop(); } void Blink_T(void) // функція, що відтворює літеру Т азбукою Морзе { /* char T - "Dot_Line" */ CyDelay(PAUSE); Start(); CyDelay(LINE); Stop(); } Код програми, яка виводить одну з трьох літер прізвища (вказана користувачем у рядку« Blink('A'); » , де «А» -літера, яку виводитимемо) : #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 Blink (char); /* char - ? */ int main() { for(;;) { if (SW_Read() == 0) { Blink('A'); } } } void Start (void) { Buzzer_Write(1); LED_Write(0); } void Stop (void) { Buzzer_Write(0); LED_Write(1); } void Blink(char symbol) { if (symbol == 'M') { /* char M - "Line_Line" */ CyDelay(PAUSE); Start(); CyDelay(LINE); Stop(); CyDelay(PAUSE_C ); Start(); CyDelay(LINE); Stop(); } if (symbol == 'A') { /* char A - "Dot_Line" */ CyDelay(PAUSE); Start(); CyDelay(DOT); Stop(); CyDelay(PAUSE_C ); Start(); CyDelay(LINE); Stop(); } if (symbol == 'T') { /* char T - "Dot_Line" */ CyDelay(PAUSE); Start(); CyDelay(LINE); Stop(); } } Висновки : в результаті виконання цієї лабораторної роботи ми в інтегрованому середовищі PSoC® Creator™ написали програму з використанням функцій мови С для проекту, який реалізовує передачу перших трьох літер прізвища студента азбукою Морзе світловим та звуковим сигналами програмованою системою-на-чіпі CY8CKIT-042 PSoC® 4 Pioneer Kit. Лабораторна робота №3 Керуючі сигнали з байтовою конфігурацією. Світлодіодна лінійка Мета: навчитися формувати керуючий сигнал з байтовою конфігурацією та виводити його на світлодіодну лінійку. Постановка задачі: в інтегрованому середовищі PSoC® Creator™ відповідно до свого варіанту сформувати керуючий сигнал з байтовою конфігурацією та вивести його на світлодіодну лінійку за допомогою системи-на-чіпі CY8CKIT-042 PSoC® 4 Pioneer Kit. Завдання: за допомогою вбудованих функцій реалізувати процес виведення на світлодіодну лінійку керуючого сигналу з байтовою конфігурацією. Реалізувати виведення трьома способами: виключно апаратним, виключно програмним та комбінованим. Варіанти виконання роботи Керуючий байт у шістнадцятковій формі для індивідуального варіанту виконання роботи визначається викладачем Задане число (комбінація діодів, що треба «запалити») – 10101000 У десятковій формі воно дорівнює 168 і A8 у шістнадцятковій Короткі відомості для виконання роботи Для реалізації поставленої задачі можна використати вбудовані функції: LED_Write() – функція, яка задає світіння світлодіодів; Status_Reg_Read() – функція зчитування з регістра стану Status Register; Clock_Start() – функція запуску тактового генератора Clock. Скріншоти редактора ресурсів .cydwr (однаковий для трьох випадків) / / Скріншот редактора схеми проекту .cysch для апаратної реалізації завдання: / Код програми, у випадку реалізації апаратними засобами: #include <project.h> int main() { CyGlobalIntEnable; for(;;) { } } Скріншот редактора схеми проекту .cysch для програмної реалізації завдання: / Код програми, у випадку реалізації програмними засобами : #include <project.h> int main() { CyGlobalIntEnable; LEDs_Write(0xA8); for(;;) { } } Скріншот редактора схеми проекту .cysch для змішаної (програмно-апаратної) реалізації завдання: / Код програми, у випадку реалізації змішаним (програмно-апаратним) методом : #include <project.h> int main() { CyGlobalIntEnable; LEDs_Write(Status_Reg_Read()); for(;;) { } } Висновки : під час виконання цієї дабораторної роботи ми за допомогою вбудованих функцій реалізували процес виведення на світлодіодну лінійку керуючого сигналу з байтовою конфігурацією (заданого викладачем, у моєму випадку - 10101000); реалізували виведення трьома способами: виключно апаратним, виключно програмним та комбінованим. Лабораторна робота №4 Формування та керування сигналами Мета: навчитися формувати керуючий сигнал з байтовою конфігурацією, виводити його на світлодіодну лінійку, визначати відповідність програмно-виконуваних дій та реакцій на них. Постановка задачі: в інтегрованому середовищі PSoC® Creator™ написати програму мовою С для проекту, який реалізовує дозволяє відповідно до свого варіанту сформувати керуючий сигнал та вивести його на світлодіодну лінійку за допомогою системи-на-чіпі CY8CKIT-042 PSoC® 4 Pioneer Kit. Завдання: за допомогою вбудованих функцій реалізувати процес виведення на світлодіодну лінійку керуючого сигналу з циклічним зміщенням вліво або вправо. Варіанти виконання роботи Номер варіанту виконання роботи визначається номером робочого місця студента: Робочі місця 1, 5, 9 – варіант 1; Робочі місця 2, 6, 10 – варіант 2; Робочі місця 3, 7, 11 – варіант 3; Робочі місця 4, 8, 12 – варіант 4. Варіант Операція Напрямок зміщення Варіант Операція Напрямок зміщення  1 Порозрядне доповнення вправо 2 Порозрядне логічне множення (І) вліво  3 Порозрядна сума за модулем два вправо 4 Порозрядне логічне додавання (АБО) вліво   Короткі відомості для виконання роботи Для реалізації поставленої задачі можна використати вбудовані функції: CyDelay() – функція затримки, аргументом якої є період в мілісекундах; LED_Write() – функція, яка задає світіння світлодіодів. Скріншоти редактора ресурсів .cydwr / / Скріншот редактора схеми проекту .cysch: / Код програми: #include <project.h> int main() { CyGlobalIntEnable; uint8 a,b,c; a=0x45; b=0x4D; c=a^b; //00001000 – результат виконання операції «порозрядна сума за модулем два» між a та b. for(;;) { /* CyDelay(2000); // затримка 2с LED_Write(a); //0100 0101 – відображення комбінації a на світлодіодній лінійці CyDelay(500); // затримка 0,5с LED_Write(b); //0100 1101 - відображення комбінації b на світлодіодній лінійці */ CyDelay(100); // затримка 0,1с LED_Write(c); // відображення комбінації c на світлодіодній if((c&1)==0) //перевірка молодшого біта c = c>>1; // зміщення комбінації вправо на 1 біт, якщо молодший біт дорівнює 0 else { c = c>>1; // зміщення комбінації вправо на 1 біт c = c|128; //встановлення 1 в старший біт } } Висновок : під час виконання цієї лабораторної роботи я за допомогою вбудованих функцій реалізував процес виведення на світлодіодну лінійку керуючого сигналу (00001000) з циклічним зміщенням вправо, використовуючи логічні операції. Лабораторна робота №5 Виведення інформації на LCD-дисплей Мета: навчитися виводити інформацію на LCD-дисплей. Постановка задачі: в інтегрованому середовищі PSoC® Creator™ написати програму мовою С для проекту, який реалізовує виведення ім’я та прізвища студента на LCD-дисплей за допомогою системи-на-чіпі CY8CKIT-042 PSoC® 4 Pioneer Kit. Завдання: за допомогою вбудованих функцій для LCD-дисплея та функції затримки реалізувати процес виведення на LCD-дисплей ім’я студента у першому рядку та прізвища студента у другому рядку на кирилиці використовуючи функції LCD_Char_Position та LCD_Char_PutChar. Реалізувати виведення ім’я або прізвища з циклічним зміщенням вліво або вправо на один знак згідно заданого варіанту. Виведення імені або прізвища, якщо воно не зміщується, реалізувати окремою функцією. Варіанти виконання роботи Номер варіанту виконання роботи визначається номером робочого місця студента: Робочі місця 1, 5, 9 – варіант 1; Робочі місця 2, 6, 10 – варіант 2; Робочі місця 3, 7, 11 – варіант 3; Робочі місця 4, 8, 12 – варіант 4. Варіант Виведення ім’я та прізвища студента Варіант Виведення ім’я та прізвища студента   напрямок зміщення  напрямок зміщення  1 вліво прізвище 2 вліво ім’я  3 вправо прізвище 4 вправо ім’я   Скріншоти редактора ресурсів .cydwr / / Скріншот редактора схеми проекту .cysch: / Код програми: #include "project.h" void LastName(int a); // ініціація функції, що виводить прізвище в позицію, описувану параметром а int i=0; int main(void) { CyGlobalIntEnable; LCD_Char_1_Start(); // початок роботи з LCD дисплеєм LCD_Char_1_LoadCustomFonts(LCD_Char_1_customFonts); // завантаження користувацьких символів LCD_Char_1_DisplayOn(); // ввімкнення дисплею for(i=0;i<16;i++) /* цикл з параметром і у якості лічильника для циклічного зміщення праворуч (про що свідчить наростання значення лічильника) прізвища при виведенні на LCD дисплей */ { LCD_Char_1_Position(0,0); // вказуємо позицію (умовного курсору) для виведення тексту чи символів LCD_Char_1_PrintString("POMAH"); //виведення стрічки тексту (ім’я) LastName(i); /* виклик функції і передання значення змінної і у якості параметру, тобто виведення прізвища на LCD дисплей з початком у координаті і */ if(i>9) /* перевірка значення лічильника для вчасного переміщення умовного курсору (початку виведення)*/ { LastName(i-16); /* виклик функції та передання значення і-16 у якості параметру, тобто повторне виведення прізвища із зміщенням на 16 елементів ліворуч, яке потрібне для виведення тієї частини прізвища, котра «вилазитиме» за межі дисплею, і створення ефекту циклічного зміщення */ } CyDelay(250); // затримка 250 мс LCD_Char_1_ClearDisplay(); // очищення дисплею if(i==15) // перевірка значення лічильника { i=0; // скидання лічильника } } } void LastName(int a) // функція, що виводить прізвище в позицію, описувану параметром а { // a=0; LCD_Char_1_Position(1,a); // вказуємо позицію LCD_Char_1_PutChar('M'); // виводимо символ у вказану позицію LCD_Char_1_Position(1,a+1); LCD_Char_1_PutChar('A'); LCD_Char_1_Position(1,a+2); LCD_Char_1_PutChar('T'); LCD_Char_1_Position(1,a+3); LCD_Char_1_PutChar('B'); LCD_Char_1_Position(1,a+4); LCD_Char_1_PutChar(1); LCD_Char_1_Position(1,a+5); LCD_Char_1_PutChar(0); LCD_Char_1_Position(1,a+6); LCD_Char_1_PutChar('B'); } Висновок : під час виконання цієї лабораторної роботи я в інтегрованому середовищі PSoC Creator за допомогою вбудованих функцій для LCD-дисплея та функції затримки реалізував процес виведення на LCD-дисплей ім’я студента («Роман») у першому рядку та прізвища студента («Матвіїв») у другому рядку (з циклічним зміщенням вправо на один знак) на кирилиці, використовуючи функції LCD_Char_Position та LCD_Char_PutChar (або LCD_Char_PrintString) за допомогою системи-на-чіпі CY8CKIT-042 PSoC® 4 Pioneer Kit. Лабораторна робота №6 Переривання в системі набору CY8CKIT-042 PSoC 4 Pioneer Kit. Мета: ознайомитися з принципами роботи переривань за допомогою набору CY8CKIT-042 PSoC 4 Pioneer Kit. Постановка задачі: в інтегрованому середовищі PSoC Creator реалізувати процедури переривання системи на мікроконтролері CY8CKIT-042. Завдання: за допомогою типових компонентів інтегрованого середовища PSoC Creator, функцій переривання, скласти схему та написати програму в якій будуть відбуватись переривання основної програми. Варіанти виконання роботи Номер варіанту виконання роботи визначається номером робочого місця студента: Робочі місця 1, 5, 9 – варіант 1; Робочі місця 2, 6, 10 – варіант 2; Робочі місця 3, 7, 11 – варіант 3; Робочі місця 4, 8, 12 – варіант 4. Таблиця 2 Таблиця відповідностей перемикачів та підведених до них портів Порядковий номер перемикача 0 1 2 3 4 5  Порядковий номер виводу порту P1[0] P1[1] P1[2] P1[3] P1[4] P1[5]   Таблиця 3 Варіанти реалізації програми Номер варіанту Порядковий номер перемикача  Згідно п.3.3 (методички) написати функцію  1 5 Секундоміра   2 3  Таймера зворотнього відліку  3 1 Секундоміра   4 4  Таймера зворотнього відліку  5 2 Секундоміра   6 0  Таймера зворотнього відліку  7 0 Секундоміра   8 3  Таймера зворотнього відліку  9 4 Секундоміра   10 1  Таймера зворотнього відліку  11 2 Секундоміра   12 5  Таймера зворотнього відліку   Скріншоти редактора ресурсів .cydwr / / Скріншот редактора схеми проекту .cysch: / Код програми: #include "project.h" int counter=0; // ініціація лічильника int m=0; // ініціація змінної, що міститиме інформацію про хвилини int s=0; // ініціація змінної, що міститиме інформацію про секунди int main(void) { CyGlobalIntEnable; /* Enable global interrupts. */ LCD_Start(); // початок роботи з дисплеєм void check_interact(); /* оголошення функції, що перевірятиме положення перемикача і виконуватиме переривання та обчислення і виведення кількості переривань */ void timer(); // оголошення функції-секундоміра void PrintText(); /* оголошення функції, що виводить текст «ЛІЧИЛЬНИК:» */ isr_StartEx(check_interact); /* функція, що встановлює функціонування переривань і встановлює адресу по якій знаходиться функція обробки переривання */ timer(); // виклик функції-таймера PrintText(); // виклик функції, що виводить текст «ЛІЧИЛЬНИК:» for(;;) { check_interact(); timer(); // виклик функції-секундоміра } } void check_interact() /* опис функції, що перевірятиме положення перемикача і виконуватиме переривання та обчислення і виведення кількості переривань*/ { if (SW_Read()) { CyDelay(20); counter++; if(counter<10) { LCD_Position(1,12); LCD_PrintNumber(counter); } if(counter>=10) { LCD_Position(1,11); LCD_PrintNumber(counter); } do { } while(SW_Read()); } } void timer() // опис функції-секундоміра { if(!SW_Read()) { CyDelay(1000); if(s==60) { s=0; LCD_Position(0,6); LCD_PutChar(7); m++; } if(s<10) { LCD_Position(0,7); LCD_PrintNumber(s); } if(s>=10) { LCD_Position(0,6); LCD_PrintNumber(s); } LCD_Position(0,4); LCD_PutChar(':'); LCD_Position(0,2); LCD_PrintNumber(m); s++; } } void PrintText() // опис функції, що виводить текст «ЛІЧИЛЬНИК:» { LCD_Position(1,0); LCD_PutChar(0); LCD_Position(1,1); LCD_PutChar(1); LCD_Position(1,2); LCD_PutChar(2); LCD_Position(1,3); LCD_PutChar(3); LCD_Position(1,4); LCD_PutChar(0); LCD_Position(1,5); LCD_PutChar(4); LCD_Position(1,6); LCD_PutChar(5); LCD_Position(1,7); LCD_PutChar(3); LCD_Position(1,8); LCD_PutChar(6); LCD_Position(1,9); LCD_PutChar(':'); } Висновок : під час виконання цієї лабораторної роботи я в інтегрованому середовищі PSoC Creator за допомогою типових компонентів, набору CY8CKIT-042 PSoC 4 Pioneer Kit та функцій переривання, склав схему та написав програму в якій будуть відбуватись переривання основної програми (секундоміра) з виведенням кількості переривань на LCD дисплей за допомогою перемикача підведеного до порту P1[2].
Антиботан аватар за замовчуванням

02.04.2017 12:04-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!