Ім'я файлу: лаб 1.docx
Розширення: docx
Розмір: 995кб.
Дата: 28.03.2020
скачати

Міністерство освіти і науки України

Національний університет „Львівська політехніка”

Кафедра СКС



Звіт до лабораторної роботи № 1

з дисципліни: «Програмування систем на кристалі»

на тему: «Вивід інформації на LCD дисплей стенду PSOC3»

Виконав: ст.гр. КІ-47

Фединець Ю. В.

Прийняв:

Цигилик Л. О.

Львів 2019

Мета роботи: метою лабораторної роботи є ознайомлення з принципами роботи стенду PsoC3 для практичного засвоєння базових навичок проектуаннясистем на кристалі, засвоєння методів та засобів конфігурування програмованих систем на кристалі та перевірки їх функціонування на прикладі роботи із символьними дисплейем.

Завдання:

• Статично відобразити текст відповідно до прикладу.

• Динамічно відобразити текст відповідно до індивідуального завдання.

Індивідуальне завдання до лабораторної роботи:

Я, студент групи КІ-47Фединець Юрій.

Порядковий номер згідно актуального журналу групи: 23

Варіант до лабораторної роботи: 27 mod 8= 7.


Рис.1 Індивідуальне завдання до лабораторної роботи.
Хід роботи:

1. Статичне відображення тексту

1.1. Створюємо новий проект. Після налаштування відповідних конфігурацій проекту у “Каталозі компонентів Cypress” натискаємо на пункт “Display” і вибираємо перший компонент “Character LCD. Відредаговуємо ім’я елементу на «LCD_Fedynets» (Рис.2.)



Рис.2 Розміщення елемента у «Файл схеми»

1.2. У пункті “Custom Character Editor” записуємо своє ім’я латинськимибуквами та забираємо галочку з пункту “Include ASCII to Number Conversion Routines”, для підтвердження натискаємо кнопку “OK” (Рис.3).



Рис.3 Редагування пункту «User Defined»

1.3. В файл «main.c» записуємо відповідний код програми для статичного відображення тексту на дисплеї.

Код програми:
#include "project.h"

extern uint8 const CYCODE LCD_Fedynets_customFonts[];

int main(void)

{

uint8 pos=1u;

uint8 row=0u;

LCD_Fedynets_Start();

LCD_Fedynets_LoadCustomFonts(LCD_Fedynets_customFonts);

LCD_Fedynets_Position(row, pos);

LCD_Fedynets_PutChar(LCD_Fedynets_CUSTOM_0);

pos+=2u;

LCD_Fedynets_Position(row, pos);

LCD_Fedynets_PutChar(LCD_Fedynets_CUSTOM_1);

pos+=2u;

LCD_Fedynets_Position(row, pos);

LCD_Fedynets_PutChar(LCD_Fedynets_CUSTOM_2);

pos+=2u;

LCD_Fedynets_Position(row, pos);

LCD_Fedynets_PutChar(LCD_Fedynets_CUSTOM_3);

pos+=2u;

LCD_Fedynets_Position(row, pos);

LCD_Fedynets_PutChar(LCD_Fedynets_CUSTOM_4);

pos+=2u;

LCD_Fedynets_Position(row, pos);

LCD_Fedynets_PutChar(LCD_Fedynets_CUSTOM_5);

pos+=2u;

LCD_Fedynets_Position(row, pos);

LCD_Fedynets_PutChar(LCD_Fedynets_CUSTOM_6);

pos+=2u;

LCD_Fedynets_Position(row, pos);

LCD_Fedynets_PutChar(LCD_Fedynets_CUSTOM_7);

pos+=2u;

CyDelay(200u);

LCD_Fedynets_Position(1u, 9u);

LCD_Fedynets_PrintString("Fedynets");

CyGlobalIntEnable;

}


1.4. Після побудови проекту у “корені проекту” клацаєм “мишкою” на знак “+” поряд з меню “Design Wide Resources(Lab_1.cydwr)”. У розкритому списку відкриваємо (двійний клік) пункт “Pins”. Переходимо у край край екрану проекту у поле “Port” та змінюємо фізичні виводи з P0 [6:0] на Р2[6:0] для того, щоб з’єднати виводи проекту із фізичними виводами SoC (Рис.4).


Рис.4 Вибір фізичного виводу даного проект
1.5. Для прошивки стенду запускаємо програму «PSoC Programmer». Після вибору усіх необхідних параметрів та завантаження файлу «.hex» прошиваємо стенд. Про вдалу операцію говорить екран, показаний на Рис.5.

Рис.5 Прошивання «стенду».

2. Динамічне відображення тексту
Для виконання індивідуального завдання повторюємо дії, описані в пунктах 1.2-1.6 для прикладу програми зі статичним відображенням інформації. Редагуємо пункт «User Defined» згідно заданого варіанту (Рис.6).



Рис.6 Вікно «User Defined».
Опис всіх задіяних АПІ методів


  • LCD_Char_Start() - Запускаєдрайвера LCD дисплея та

завантажує набір користувацьких символів якщо він був визначений.


  • LCD_Char_LoadCustomFonts() - Завантажує символи користувача в драйвер LCD.




  • LCD_Char_ClearDisplay() - Очищує екрану LCD дисплея.




  • LCD_Char_Position(uint8 row, uint8 pos) - Встановлює позицію курсора, що відповідає номеру рядка(row) та номеру стовпця(column).




  • LCD_Char_PutChar() - Посилає один символ в регістр даних драйвера LCD для його відображення в поточній позиціїкурсора



Лістинг програми для індивідуального завдання
#include "project.h"

extern uint8 const CYCODE LCD_Fedynets_customFonts[];

int main(void)

{

uint8 i = 0;

uint8 pos1 = 0u;

uint8 row1 = 0u;

uint8 dat = 0;

uint8 state = 0;

uint8 pos2 = 8u;

uint8 row2 = 1u;

LCD_Fedynets_Start();

LCD_Fedynets_LoadCustomFonts(LCD_Fedynets_customFonts);
for(;;)

{

LCD_Fedynets_ClearDisplay();

//функція для 1 блоку

LCD_Fedynets_Position(row1, pos1);

LCD_Fedynets_PutChar(LCD_Fedynets_CUSTOM_0);

i++;

i = (i)%31;

if (i > 15) {

pos1 = 31 - i ;

} else pos1 = i;

//функція для 2 блоку

LCD_Fedynets_Position(row2, pos2);

LCD_Fedynets_PutChar(LCD_Fedynets_CUSTOM_1);

dat++;

dat = dat%63;

state = dat >> 3;

//автомат станів

switch(state){

case 0:case 3:

pos2++;

row2 = 1;

break;

case 1 : case 2:

pos2--;

row2 = 2;

break;

case 4:case 7:

pos2--;

row2 = 1;

break;

case 5: case 6:

pos2++;

row2 = 2;

break;

CyDelay(300);

}
Висновок: Виконуючи дану лабораторну роботу я ознайомився з принципами роботи стенду PsoC3, та засвоїв базові навички проектування систем на кристалі та перевірив їх функціонування на прикладі роботи із символьним дисплеєм.
скачати

© Усі права захищені
написати до нас