Виберіть свою мову

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

Пристрій, схема якого зображена на рис. 1, дозволяє вимірювати частоту періодичних сигналів з рівнями ТТЛ до 110 МГц, виробляти рахунок вхідних імпульсів, вимірювати період вхідних сигналів, виробляти сигнал прямокутної форми зі шпаруватістю 2 і частотою від 1 Гц до 3 МГц, відображати поточний час, день тижня, число, місяць, рік, а також працювати в якості будильника. Струм, споживаний приладом від джерела живлення напругою 5 В ±10 %, не перевищує 30 мА (при вимкненому підсвічуванні індикатора).

Основа приладу - мікроконтролер (МК) AT89S8252 фірми ATMEL. До його складу входять ПЗП об'ємом 8 Кбайт, електрично зтирається ППЗУ об'ємом 2 Кбайт, ОЗУ об'ємом 256 байт, чотири порти введення/виводу, три таймера/лічильника (Т/З-Т/С2), сторожовий таймер, тактовий генератор і інші вузли.

При використанні Т/З в якості лічильника зовнішніх імпульсів частота рахунки не може бути більш 1/24 частоти тактового генератора. Збільшити частоту рахунку можна, наприклад, включивши на вході швидкодіючий дільник, однак це вимагає введення вузлів комутації. В описуваному пристрої для збільшення частоти рахунку на вході використовуються швидкодіючі лічильники серії КР1554, завдяки чому частота рахунку зростає в 256 разів і теоретично може досягати 128 МГц (з кварцовим резонатором на частоту 12 МГц). При використанні мікросхем КР1554ИЕ18 (DD2, DD3) максимальна частота дорівнює 110 МГц.

Після подачі живлення на вході 9 МК DD1 формується сигнал скидання, тривалість якого визначається параметрами ланцюга R1C3. Діод VD1 служить для швидкої розрядки конденсатора C3 після відключення живлення.

На початку виконання програми проводиться настройка дисплея HG1. При цьому відбувається очищення його буфера, забороняється відображення курсора і миготіння. Для зменшення числа ліній вводу/виводу, необхідних для запису інформації на дисплей, розмір шини встановлюється рівним 4 бітам.

Потім задаються режими роботи Т/З, вирішуються необхідні переривання і відновлюються режим роботи і частота генератора, які були перед попереднім вимкненням приладу. У всіх режимах Т/ЗІ працює в якості таймера. Він запрограмований таким чином, що його переповнення та переривання від нього відбуваються 50 разів в секунду. В процесі обробки переривання відбувається опитування клавіатури, а також виробляються зразкові сигнали для роботи приладу режимі частотомера.

Скидання лічильників DD2, DD3 здійснюється синхронно по фронту сигналу на вході С при рівні лог. 0 на вході R. Ця обставина диктує суперечливі вимоги до тривалості сигналу скидання. З одного боку, для збільшення швидкості рахунку вона повинна бути досить малою, з іншого - при такій тривалості може не відбутися скидання при низькій частоті вхідного сигналу. Для усунення цього протиріччя в даному приладі від сигналу скидання було вирішено відмовитися зовсім. Після кожного вимірювання стану лічильників запам'ятовуються і при подальшому вимірюванні віднімаються з отриманого результату.

Режими роботи Т/С1 залежать від режиму роботи приладу і описані нижче.

Годинник-будильник виконані на мікросхеми DD4. Вона містить всі вузли, необхідні для рахунку годин, хвилин, секунд, днів тижня, числа, місяця і року. В ній є також ОЗУ об'ємом 56 байт, доступних для запису і читання. При підключеному елемент G1 (наприклад, CR2032) мікросхема може працювати до 10 років, зберігаючи в пам'яті всі записані дані. Необхідну точність ходу годинника встановлюють підлаштування конденсатором С4, контрастність, що виводиться на дисплей інформації - підлаштування резистором R5. Кнопка SB 17 служить для включення світлодіодним підсвічування дисплея в темний час доби.

В режим вимірювання частоти прилад переводять натисканням на кнопку "F", виміру періоду - на кнопку "Р", генератора на кнопку "G". Цими ж кнопками при натиснутій кнопці "S" включають режими відповідно рахунки вхідних імпульсів, годин і будильника. Звуковий сигнал подається випромінювачем BQ1 як при натисканні на кнопку, так і при спрацьовуванні будильника. Вимкнення сигналу, що видається при натисканні на кнопку, здійснюється від'єднанням виведення 4 мікросхеми DD1, а сигналу, що звучить при спрацьовуванні будильника, - виведення 3.

Розглянемо роботу пристрою в різних режимах більш докладно.

В режим вимірювання частоти пристрій переходить при включенні живлення, а також, як зазначалося, після натискання на кнопку SB13 ("F"). У цьому режимі Т/С1 запрограмований на роботу в якості лічильника вхідних імпульсів. Після закінчення 1 з результат рахунку виводиться на верхньому рядку екрана (рис. 2,а). Одночасно розраховується період сигналу і результат виводиться на нижній рядок.

Іноді, наприклад, при настройці генератора з плавною перебудовою на певну частоту зручно проводити вимірювання не один раз в секунду, а частіше. В даному приладі передбачено режим, коли вимірювання проводяться в 10 разів частіше (кожні 0,1 с). Результат вимірювання виводиться на дисплей п'ять разів в секунду. Роздільна здатність в цьому випадку зменшується до 10 Гц. Перехід в цей режим проводиться натисненням кнопки SB12 ("R"). При цьому замість останньої цифри виміряного значення частоти виводиться знак "*". Для повернення у звичайний режим вимірювання частоти натискають кнопку SB8 ("В").

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

У режимі вимірювання періоду таймер/лічильник Т/С1 запрограмований на рахунок імпульсів, що надходять з внутрішнього дільника. Частота їх прямування дорівнює V12 частоти генератора, тобто 1 МГц. Дозвіл рахунку здійснюється з входу INT1 (вив. 13) DD1: при лог. 1 на цьому вході рахунок імпульсів дозволений, при лог. 0 - заборонений. У момент перепаду рівня з 1 на 0 виробляється переривання, процесі обробки якого результат рахунку виводиться на нижньому рядку дисплея (рис. 2,б). Одночасно розраховується частота сигналу (з точністю до тисячних часткою) і результат виводиться на верхньому рядку дисплея. Подавати на вхід приладу сигнал частотою 10 кГц не рекомендується, так як обробка переривання з входу INT1 буде займати практично весь час та на обробку результату і опитування клавіатури не залишиться часу.

У режимі рахунку вхідних імпульсів Т/С1 також запрограмований для роботи в якості лічильника зовнішніх імпульсів. Висновок результату рахунки (рис. 2,в) на екран дисплея виробляється 50 раз в секунду. Натисканням на кнопку SB8 ("В") при необхідність зупиняють рахунок імпульсів (у цьому випадку знак ">" гасне). Повторним натисненням на кнопку SB8 рахунок відновлюють. Для обнуління показів лічильника використовують кнопку SB12 ("R"). Необхідно враховувати, що реакція на натискання будь-якої кнопки настає через 100 мс (час, необхідний для придушення брязкоту контактів).

Значення частоти генерованих імпульсів вводять з допомогою цифрових кнопок "0"-"9". Натискання на кнопку SB8 ("В") призводить до видалення крайньої правої цифри. В верхній рядку індикатора (рис. 2,г) виводиться набираемая частота, в нижній - реальна частота генератора, яка визначається за формулою 3000000/Т (Т змінюється від 1 до 65535). Таким чином, набравши, наприклад, число 55000, реально отримаємо 55555.555 (3000000/54). При натисканні кнопки SB12 ("R") відбувається зміна частоти генератора.

При частоті від 46 Гц до 3 МГц Т/С2 працює в режимі генератора. Його вихід підключений до висновку 1 DD1. Переривання при переповненні Т/С2 заборонені. На більш низьких частотах (від 1 до 45 Гц) Т/С2 використовується в якості таймера, при цьому переривання дозволені. Їх частота залежить від заданої частоти генератора і лежить у межах 16...90 Гц. В інтервалі 8...45 Гц проводиться інвертування сигналу на виведенні Р1.0 щоразу, коли Т/С2 переповнюється (частота вихідного сигналу в два разу нижче частоти переривань). При частотах 1...7 Гц інвертування сигналу відбувається 2, 3, 5 або 8 разів в залежності від частоти. Переривання від Т/С2 є низькопріоритетним, так як в іншому випадку зросте похибка при роботі приладу в режимі частотомера. У зв'язку з цим період вихідного сигналу може незначно (на одиниці мікросекунд) відрізнятися від розрахункового значення.

Сигнал на виході генератора присутній незалежно від режиму роботи пристрою. При завданні частоти 0 Гц генератор вимикається.

Поточний час встановлюють кнопками "1" (годинник), "2" (хвилини), "3" (обнуління секунд), "4" (день тижня), "5" (число), "6" (місяць) і "7" (рік) при натиснутій кнопки "В" (якщо показання необхідно збільшити) або "R" (якщо їх необхідно зменшити). Вигляд дисплея в режимі годин показаний на рис. 2,д.

Будильників в описуваному приладі п'ять. Для кожного з них можна встановити годину, хвилину і день тижня. Перемикають будильники натисканням на кнопку "0". Час спрацьовування вводять аналогічно описаному вище для встановлення годин. День тижня встановлюють кнопками "3"-"9" ("3" - понеділок, "4" - вівторок, ... "9" - неділю). При повторному натисканні кнопки позначення відповідного дня на дисплеї пропадає. Приклади встановлення будильників показано на рис. 2,е-з. В першому випадку сигнал будильника 1 буде подаватися у будні о 6 год 30 хв, у другому (будильник 2) - у вихідні дні о 8 год 00 хв, у третьому (будильник 3) - щодня о 18 год 42 хв. Слід врахувати, що будильники спрацюють лише у тому разі, якщо прилад знаходиться в режимі годин. Вимкнути звуковий сигнал можна натисканням на клавішу (крім, звичайно, SB17).

Таблиця з кодами "прошивки" ПЗП МК в hex-форматі

Кілька слів про деталі. Мікросхеми КР1554ИЕ18 замінні їх аналогами з серій К555, КР1533, а при відповідній зміні схеми та іншими лічильниками серій К555, КР1533, К531, КР1554. В залежності від застосованих лічильників максимальна частота рахунку буде перебувати в межах 20... 128 МГц. Замість зазначеного на схемою допустимо використовувати індикатор DV16252. Призначення його висновків таке ж, як у DV16230S1FBLY/R, необхідно тільки поміняти місцями виводи живлення 1 і 2.

Відкалібрувати прилад можна кількома способами.

1. Переключивши прилад в режим вимірювання частоти, подати на вхід сигнал відомої частоти і підлаштування конденсатором С1 встановити на індикаторі це значення. Чим вище частота вхідного сигналу, тим точніше буде налаштований прилад.

2. Приєднавши паралельно входу приладу зразковий частотомір і перейшовши в режим вимірювання частоти, подати на вхід сигнал. Змінюючи ємність конденсатора С1, домогтися того, щоб показання приладів збіглися. Також як і в першому випадку, чим вище частота вхідного сигналу, тим точніше можна налаштувати прилад.

3. Переключивши прилад в режим вимірювання періоду, подати на вхід сигнал відомої частоти і конденсатором С1 встановити потрібне значення. Чим більше період вхідного сигналу, тим точніше налаштування приладу. При калібруванні таким способом зручно використовувати сигнал частотою 1 Гц з електронних годинників.

4. Встановивши на виході генератора частоту 3 МГц, подати сигнал на вхід зразкового частотомера. Змінюючи ємність конденсатора С1, встановити частоту 3 МГц.

Автор: А. Пискаев, Орел р.