Простой проектик (CVAVR 3/12): значение АЦП отображается в первой строке (16 знакомест).
По этой величине вычисляется другая и отображается во второй строке (16 знакомест).
Зацикливаемся. При изменении напряжения на входе АЦП - на LCD меняются показания ТОЛЬКО во второй строке!
Значение в первой строке стоит, как вкопанное. Если сделать сброс, оно обновится.
Работает так, как в Протеусе, так и в железе. Сто раз лепил такое не задумываясь, - и никаких проблем...
Насоветуйте, может, чего...
Под спойлером фрагмент кода, во вложении - проект CVAVR и Протеус
Спойлер
...#include <alcd.h>
// Declare your global variables here
unsigned int v_in, dlit, dlit_max = 1000;
char string_out[16];
...
while (1)
{
//lcd_clear(); // без этого сброса отображение работает некорректно!
v_in=get_adc();
// вывести напряжение в 1 строке
lcd_gotoxy(0,0);
sprintf(string_out," input: %1u.%02u V ", v_in/100, (v_in-(v_in/100)*100));
lcd_puts(string_out);
// вычислить dlit по входному напряжению
dlit = (unsigned long int)dlit_max*v_in/500;
// вывести длительность во 2 строке
lcd_gotoxy(0,1);
sprintf(string_out," impuls: %4u us", dlit);
lcd_puts(string_out);
// выдать импульс на выход
out_impuls(dlit);
// разрядить емкость
RES_OUT = 1;
delay_us(10);
RES_OUT = 0;
delay_us(200);
}
- Вложения
-
- CVAVR & Proteus.zip
- проекты CVAVR и Протеус
- (136.58 КБ) 165 скачиваний


