русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Тема 2.1 Генерация сигнала с изменяемой мощностью


Дата добавления: 2014-11-28; просмотров: 645; Нарушение авторских прав


Программа листинга 2.1 не имеет принципиальных отличий от рассмотренных ранее примеров. Увеличена только частота следования импульсов. Здесь реализовано формирование периодического сигнала с переменной мощностью.

В начале на светодиод поступает импульс, длительностью в 1 секунду, в течение которого происходит свечение с полной яркостью. После чего для его питания формируется пакет импульсов, что приводит к уменьшению яркости свечения светодиода, т.к. питание осуществляется не все время, а с перерывами, и мощность отдельных световых импульсов усредняется человеческим зрением на весь период следования сигнала.

Примерная диаграмма формируемого сигнала приведена на рисунке 2.4 и 2.5. Заштрихованная фигура на графиках примерно характеризует воспринимаемую зрением яркость свечения светодиода. Усреднение импульсного сигнала на графиках рассмотрены условно со значительным упрощением переходных процессов.

Рисунок 2.4 – Диаграмма формируемого сигнала

Рисунок 2.5 – Усреднение импульсного сигнала

Листинг 2.1 – Изменение яркости свечения светодиода

//-----подключение библиотек--------------------------- //----------------------------------------------------- #include <mega8.h> //описание памяти микроконтроллера #include <delay.h> //временные задержки //***************************************************** //-----макроопределения-------------------------------- //----------------------------------------------------- #define D 1000 //длительность сигнала #define T 20 //период ШИМ сигнала #define P 3 //длительность импульса //***************************************************** //=====ГЛАВНАЯ ФУНКЦИЯ================================= //===================================================== void main (void){ //-----локальные переменные---------------------------- unsigned char i; //счетчик импульсов //-----настройка портов ввода/вывода------------------- DDRD=0x80; //7 разряд - выход //-----фоновая программа------------------------------- while(1){ //бесконечный цикл PORTD.7=1; //включить светодиод

Продолжение листинга 2.1



delay_ms(D); //на полную яркость //-----включаем светодиод с ограничением яркости------- for(i=0;i<D/T;i++){//пакет с заданной длительностью PORTD.7=1; //формируем импульс delay_ms(P); //задаем длительность импульса PORTD.7=0; //формируем паузу между импульсами delay_ms(T-P); //расчитываем дительность паузы } }//while(1) }//END MAIN //=====================================================

Следующий пример, представленный в листинге 2.2, выполняет ступенчатое изменение яркости свечения светодиода. В основе программы также формируются пакеты импульсов с частотой выше 50Гц.

Значение длительности импульсов определяется содержимым массива P[], а длительность паузы вычисляется непосредственно при вызове функции формирования временного интервала как разность между периодом следования сигнала и длительности импульса в строке 28.

Количество градаций яркости светодиода определяется значением переменной константного типа MAX.

Длительность сигналов одной градации и период ШИМ сигнала определены макросами в строках 8 и 9. Их также можно было определить как переменные константного типа, но это в данном случае не критично.

Стоит уделить внимание тому, как происходит формирование длительности сигналов с установленными градациями.

Так как граница восприятия зрением отдельных оптических импульсов составляет 50Гц, то периодичность ШИМ последовательности не может превышать значения 20мс, а длительность получаемых в результате преобразования аналоговых сигналов значительно превышает это время.

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

Ограничение количества импульсов в пакете рассчитывается как разность между длительностью аналогового сигнала D и периодом следования ШИМ последовательности импульсов T в условиях цикла for в строке 24. Данное вычисление будет произведено однократно препроцессором на стадии компиляции исходного текста программы, из-за того, что эти имена определены как макроподстановки.

Изменение яркости свечения светодиода по отдельным градациям происходит в цикле for в строке 23, путем перебора значений массива P[], которые преобразуются в значения длительности импульса и паузы ШИМ сигнала.

Формируемый сигнал проиллюстрирован на рисунке 2.6.

Рисунок 2.6 – Диаграмма формируемого сигнала

 

 

Листинг 2.2 – Ступенчатое изменение яркости свечения светодиода

//-----подключение библиотек--------------------------- //----------------------------------------------------- #include <mega8.h> //описание памяти микроконтроллера #include <delay.h> //временные задержки //***************************************************** //-----макроопределения-------------------------------- //----------------------------------------------------- #define D 1000 //длительность сигнала #define T 20 //период ШИМ сигнала //***************************************************** //=====ГЛАВНАЯ ФУНКЦИЯ================================= //===================================================== void main (void){ //-----локальные переменные---------------------------- const unsigned char MAX=5;//количество градаций яркости const unsigned char P[MAX]//значения яркости для ={1,3,5,7,18};//каждого шага unsigned char i,j; //счетчики //-----настройка портов ввода/вывода------------------- DDRD=0x80; //7 разряд - выход //-----фоновая программа------------------------------- while(1){ //бесконечный цикл for(i=0;i<MAX;i++) //перебираем значения яркости for(j=0;j<D/T;j++){ //пакет с заданной длительностью PORTD.7=1; //формируем импульс delay_ms(P[i]); //задаем длительность импульса PORTD.7=0; //формируем паузу между импульсами delay_ms(T-P[i]);//расчитываем дительность паузы } }//while(1) }//END MAIN //=====================================================

Вопросы для сома контроля

1.




<== предыдущая лекция | следующая лекция ==>
Тема 2 Формирование сигналов аналоговой формы | Тема 2.2 Генерация аналогового сигнала


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.733 сек.