Показать сообщение отдельно
Старый 01.04.2009, 11:03   #45   
Форумец
 
Сообщений: 1,532
Регистрация: 19.02.2009
Возраст: 54
Записей в дневнике: 1

petrd вне форума Не в сети
Еще примерчик с ШИМ. Понятное дело, что яркость светодиода напряжением сильно не нарегулируешь. А вот при помощи ШИМ можно, а человеческий глаз свое дело сделает. Кнопкой на RA0 яркость светодиода можно увеличивать, а кнопкой на RA1 - уменьшать. Все достаточно просто. Схема ниже.
Код:
unsigned short  j, old_j;
void Init() {
CMCON=7;                // все входы цифровые, компараторы отключены
PORTB = 0;              // установили PORTB в 0
TRISB = 0;              // настроили PORTB на выход
PORTA = 0xff;           // установили PORTA в 1
TRISA = 0xff;           // настроили PORTA на вход
Pwm_Init(5000);         // настроили ШИМ модуль, период ШИМ - 5 кГц
}//
void main() {
Init();
j   = 80;               // начальная инициализация j
old_j  = 0;             // начальная инициализация old_j
Pwm_Start();            // запуск ШИМ
while (1) {             // устроили бесконечный  цикл
if (Button(&PORTA, 0,1,0))   // нажимаем кнопку на RA0
j+=10 ;                    // увеличивается j (яркость больше)
if (Button(&PORTA, 1,1,0))   // нажимаем кнопку на RA1
j-=10 ;                    // уменьшается j (яркость меньше)
if (old_j != j) {        // если было изменение j
Pwm_Change_Duty(j);    // то изменяем параметры ШИМ
old_j = j;             // и сохраняем новое значение
}
Delay_ms(200);        // задержка 200 мсек
}
}//~
Миниатюры
Нажмите на изображение для увеличения
Название: ШИМ.JPG
Просмотров: 312
Размер:	69.1 Кб
ID:	422309  
  Ответить с цитированием