|
Светофор, управляемый напряжениями
Программные примеры для микроконтроллеров AVR - AVRStudio
(Светофор, управляемый напряжениями разного
уровня на аналоговом входе микроконтроллера)
К выводам порта D подключены три светодиода с цветным покрытием. Выводу
0 соответствует зеленый свет, выводу 1 — желтый, а выводу 2 — красный.
Управление сигналами этого "светофора" осуществляется по уровню напряжения
на аналоговом входе (пусть это будет вывод 3 порта А). При напряжении до 1 В на
этом входе должен загораться зеленый свет, при напряжении 1..2 В — желтый, а
при напряжении свыше 2 В — красный.
Значение преобразования сохраняется в регистровой паре ADCL:ADCH, которой
в WinAVR соответствует константа ADCW. Разрешение АЦП — 10 бит, а
предельное значение напряжения на аналоговом входе составляет 5 В. Таким образом,
для срабатывания зеленого света значение ADCW должно быть меньше, чем
1 • (210 - 1) / 5 = 1023 / 5. Аналогичным образом вычисляются и пороговые величины
для красного (больше 2046 / 5) и желтого (1023 / 5 .. .2046 / 5) света.
Примечание: при компиляции проекта требуется добавить в проект следующие библиотеки: "avr/io.h", "avr/interrupt.h", "signal.h".
INTERRUPT(SIG_ADC)
{
unsigned int ADCdata;
ADCdata = ADCW;
if (ADCdata > (2046 / 5)) PORTD = 3;
else if (ADCdata < (1023 / 5)) PORTD = 6;
else PORTD = 5;
ADCSR = ADCSR | 0x40;
}
int main (void)
{
DDRD = 7;
ADMUX = 3;
ADCSR = 0xCE;
sei();
while(1) ;
}
|
Файлы проекта можно скачать здесь:
|
|
|