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

8.1. Мета роботи

Вивчити методи частотного перетворення. Навчитися здійснювати вимірювання частоти, періоду, тривалості дискретних сигналів за допомогою програмованих таймерів/лічильників ОМК AT89C51, а також з використанням зовнішнього еталонного генератора.

8.2. Теоретичні відомості

Блок таймерів лічильників призначений для підрахунку зовнішніх імпульсів (функція лічильника), реалізація програмно-керованих затримок та виконання функції задання часу (функція таймера).

У системах автоматичного керування часто приходиться вимірювати такі величини як: частота f, період T, тривалість τ, зсув фаз φ. Для цього застосовується перетворення частота-код. В залежності від того, який саме параметр потрібно виміряти застосовують різні підходи.

Рис.8.1. Діаграма вимірювання частоти.

При вимірюванні частоти fx проводиться підрахунок імпульсів вхідного сигналу протягом фіксованого відрізку часу Т0 (рис.8.1). Тоді частоту знаходять як

.

Такий метод прийнятний для вимірювання частот більше 100Гц. Верхня межа обмежується швидкодією елементів схеми і розрядністю лічильників.

Рис.8.2. Вимірювання періоду слідування методом підрахунку кількості імпульсів відомої частоти.

Вимірювання частот нижче 100Гц заміняється вимірюванням періоду Тх. При цьому виробляється підрахунок імпульсів фіксованої частоти f0 за інтервал рівний або кратний вимірюваному періодові мал.8.3.

У такий же спосіб виміряється тривалість імпульсу, відмінність полягає лише в тому, що при вимірі тривалості імпульсу не треба поділяти частоту на два.

Рис.8.3. Вимірювання зсуву фаз.

У мікроконтролері AT89C51 реалізовано два 16-бітних таймери/лічильники: T/С0 і T/С1. Обидва можуть бути налаштовані як таймер, або як лічильник. Коли Timer/Counter налаштований як таймер, то його регістр (ТНх – старші 8 бітів та TLx – молодші) інкрементується з кожним машинним циклом. Таким чином, таймер рахує машинні цикли. Оскільки машинний цикл складається з 12 коливань генератора тактових імпульсів, то швидкість підрахунку складає 1/12 цієї частоти. Якщо Timer/Counter налаштований як лічильник, то його регістр інкрементується коли відбувається зміна „1→0” на функціональній лінії Т0, Т1. Коли високий рівень на вході в одному машинному циклі змінюється низьким рівнем в наступному, значення лічильника збільшується. Нове значення лічильника заноситься в регістр на кроці S3P1, наступного машинного циклу, що слідує за циклом, в якому був визначений перехід від 1 до 0. Таким чином, необхідно два машинних цикли для встановлення переходу від 1 до 0, тому максимальна частота підрахунку складає 1/24 частоти генератора. Таймер/лічильники можуть працювати в чотирьох режимах: 13-бітний таймер, 16-бітний таймер, 8-бітний з авто-перезавантаженням, розділений таймер.

Функція таймера чи лічильника вибирається бітом в регістрі TMOD. Обидва таймери мають чотири режими роботи, які вибираються бітовими парами (М1, М0) в TMOD (див рис.7). Режими 0, 1, 2 однакові для обох таймерів/лічильників, а режим 3 відрізняється (див. Табл.8.1).

Gate

M1

M0

Gate

M1

M0

Timer 1

Timer 0

Рис.8.4. Регістр конфігурації таймерів TMOD.

Gate – дозволяє керувати таймером від зовнішнього виводу. Коли біт встановлений, то Timer/Counter працює при умові, що на INTx високий рівень та біт TRx (біт ввімкнення таймера) встановлений в 1. У випадку, коли Gate=0, то таймер вмикається лише бітом TRx.

– 0 відповідає за режим таймера, а 1 – лічильника.

М1 – біт вибору режиму.

М0 – біт вибору режиму.

Таблиця 8.1. Опис режимів роботи таймерів.

М1

М0

Режим

Опис

0

0

0

Режим 13-бітного таймера.

8-бітний таймер ТНх з 5-бітним TLx подільником.

0

1

1

Режим 16-бітного таймера.

Подільник частоти відсутній.

1

0

2

Режим 8-бітного з авто завантаженням.

В ТНх знаходиться (записується програмно) значення,

яке завантажується в TLx після кожного переповнення. Наприклад, якщо TH=200, то при переповнені регістра TL (наступний машинний цикл після значення TL=255) підрахунок буде розпочинатися не з нуля а з 200.

1

1

3

Режим роздільного таймера.

(Timer 0). TL0 є 8-бітним таймером/лічильником, робота якого керується бітами Timer 0. ТН0 8-бітний таймер, контролюється бітами Timer 1. Робота Timer1 заблокована.

Для керування роботою таймерів використовується регістр управління TCON (рис.8.5).

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

Рис.8.5. Регістр управління таймерами TCON.

TF1(TF0) – прапор переповнення Т/С1(0). Якщо TF = 0, то переповнення не відбулося. Якщо TF = 1, то відбулося переповнився Т/С.

TR1(TR0) – керування роботою таймерів/лічильників. Якщо TR = 1, то Т/С увімкнений. Якщо TR = 0, то Т/С вимкнений.

IE1(IE0) – біти запиту зовнішніх переривань по входу .

IT1(IT0)біти, що визначають тип переривання по входу .

Таймери в мікроконтролерах також використовуються для введення/виведення сигналів із широтно-імпульсною модуляцією PWM (Pulse Width Modulated). PWM сигнал часто використовується для передачі значення аналогового сигналу в цифрову систему чи з неї. Сигнал має періодичну повторювану форму, де тривалість імпульсу пропорційна значенню переданої аналогової величини (рис. 8.6).

 

Рисунок 8.6. Сигнал із широтно-імпульсною модуляцією PWM

 

PWM-сигнали часто використовується для керування електродвигунами, задаючи швидкість обертання чи положення валу в електроприводі.

Приклад програми. Сформувати прямокутні імпульси з періодом 2 сек. та скважністю 50%, при напрузі високого рівня засвічувати світлодіоди.

IE data 0A8h ;адреса регістра дозволу переривань

IP data 0B8h ;адреса регістра пріоритетів переривань

TCON data 088h ;адреса регістра контролю переривань

TMOD data 089h ;настроювання таймерів

TR1 bit TCON.6 ;адресація біта TR1 регістра TCON

TF1 bit TCON.7 ;адресація біта TF1 регістра TCON

TL1 data 8Bh ;адреса регістра Т/С1 (молодші біти)

TH1 data 8Dh ;адреса регістра Т/С1 (старші біти)

ORG 0 ;стартовий вектор

jmp start

start: mov IE,#000000000b ;заборона усіх видів переривань

mov IP,#000001000b ;встановлення найвищого пріоритету для

;переривань від ТС1

mov TMOD,#000010000b;налаштування Т/С1 в режим 16-бітного таймера

mov R1,#0

mov R0,#0 ;R0 використовується для підрахунку переповнень

loop:

setb TR1 ;запуск таймера

loop1:

іnc A

mov DPTR,#0A001h

movx @DPTR,A

jb TF1,mit1 ;перехід на mit1 при переповненні Т/С1

jmp loop1

mit1:

clr TF1 ;очистка біта переповнення

clr TR1 ;зупинка роботи Т/С1

inc R0

cjne R0,#010,loop ;перехід на startloop якщо к-сть

;переповнень рівна 10

jmp startloop

startloop:

mov R0,#00 ;обнулення регістра R0

cjne R1,#01,mit2 ;

mov A,#0255 ;підпрограма формування на ЦАП

mov DPTR,#0F000h ;напруги високого рівня і засвічення

movx @DPTR,A ;діодів

mov DPTR,#0A006h ;

movx @DPTR,A ;

mov R1,#0 ;запис у R1 нуля

jmp loop

mit2:

mov A,#0

mov DPTR,#0F000h

movx @DPTR,A

mov DPTR,#0A006h

movx @DPTR,A

mov R1,#01

jmp loop

END