Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторки.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.62 Mб
Скачать

Лабораторна робота №14 Тема: Робота мікроконтролера з сигналом шім (широтно імпульсної модуляції).

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

Матеріальне забезпечення роботи: персональний комп’ютер, програмне забезпечення віртуального середовища Proteus ISIS, мова програмування С, відлагоджувальний комплект ICD2.

Завдання для попередньої підготовки.

  1. Вивчити відповідний теоретичний матеріал.

  2. Опрацювати контрольні запитання.

  3. Підготовити звіт.

  4. Намалювати схеми для моделювання та дослідження.

Хід роботи:

  1. В програмному симуляторі зібрати схему згідно завдання лабораторної роботи.

  2. Створити проект програмного коду в програмі mikroC.

  3. Внести заготовлений код програми до програмного середовища.

  4. Компілювати проект.

  5. Внести отриманий двійковий компільований код до програми відлагоджувальника.

  6. Запустити програму відлагоджувальник.

  7. Проаналізувати роботу програми в різних режимах.

Вихідні дані до роботи:

Апаратний модуль CCP| є|наявний| у ряді|в ряді| мікроконтролерів|мікроконтроллерів| PIC|. MIKROC| надає бібліотеку, яка спрощує використання апаратного модуля CCP| в режимі PWM|.

Примітка|тлумачення|: Окремі PICmicro| з|із| двома або більш модулями CCP|, як, наприклад, P18F8520|, вимагають заздалегідь визначити модуль, який буде використаний. Для цього досить просто додати|добавляти| номер 1 або 2 до Pwm| в імені функції. Наприклад, Pwm2_Start|(); Також, з метою зворотної сумісності з|із| попередніми версіями компілятора і полегшення управління кодами, мікроконтролери|мікроконтроллери| з|із| декількома модулями CCP| мають Pwm| бібліотеку, яка ідентична Pwm1| (тобто можна використовувати Pwm_Init|(5000) замість Pwm1_Init|(5000) для ініціалізації модуля CCP1|).

Тут безперервно міняється шпаруватість сигналу PWM| на виході RC2|. Якщо до цього виводу|висновку| підключити світлодіод, можна буде спостерігати зміну яскравості свічення.

// мікроконтролер|мікроконтроллер|: P16F877A|

// модуль PWM| використовує RC2|.

unsigned| short| j, oj|;

void| InitMain|() {

PORTB| = 0; // Скидання|скид| PORTB| в 0

TRISB| = 0; // PORTB| - вихід

ADCON1| = 6; // Всі входи ADC| - цифрові

PORTA| = 255;

TRISA| = 255; // PORTA| - вхід

PORTC| = 0xFF|; // Установка PORTC| в 0xFF|

TRISC| = 0; // PORTC| - вихід

Pwm_Init|(5000); // Ініціалізація модуля PWM|

}//~

void| main|() {

InitMain|();

j = 80; // Початкове значення j

oj| = 0; // oj| зберігатиме старе j 'Old| j'

Pwm_Start|(); // запуск PWM|

while| (1) { // Нескінченний|безконечний| цикл

if| (Button|(&PORTA|, 0,1,1)) // Кнопка на RA0| натиснута|натискувати|

j++| ; // інкремент j

if| (Button|(&PORTA|, 1,1,1)) // кнопка на RA1| натиснута|натискувати|

j-- ; // декремент j

if| (oj| != j) { // якщо була зміна

Pwm_Change_Duty|(j); // встановити нову шпаруватість

oj| = j; // запам'ятати

PORTB| = oj|; // і вивести на PORTB|

}

Delay_ms|(200); // Сповільнювач|уповільнювач| процесу

}

}

Підключення пристроїв

Демонстрація PWM|