Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Вольтметр


Автор: newbie2009 16.5.2010, 10:49
Не подскажите схему и прошивку для того что бы собрать вольтметр на основе МК фирмы АВР?

Автор: Mazzi 16.5.2010, 11:10
Вот здесь глянь. http://cxem.net/mc/mc37.php

Автор: newbie2009 16.5.2010, 12:00
Ой,  надо что-то проще...
мне надо что бы он измерял до 9-12 В, мне оно надо только что бы разобраться с работой АЦП и ЛСД экрана....

Автор: Mazzi 16.5.2010, 12:12
Для этого достаточно даташитов на микроконтроллер и на дисплей.

Автор: newbie2009 16.5.2010, 22:50
Хорошо, тогда если не сложно подскажите, что не так...
Вот хочу работать с дисплеем, кидаю исходники и схему в протеусе, если сложно то скажите почему не выводит. 

Автор: Mazzi 17.5.2010, 13:07
1) Тебе в программу вместо return 0 нужно поставить бесконечный цикл. Это грубейшая ошибка.
2) покажи схему

Автор: newbie2009 17.5.2010, 13:17
В архиве вроде есть, вот кидаю еще так....

Автор: newbie2009 18.5.2010, 09:11
Всем спасибо, завтык вроде как найден!

Автор: Mazzi 18.5.2010, 10:27
В чём проблема то была?

Автор: newbie2009 18.5.2010, 19:40
Да там много было.

Добавлено через 1 минуту и 17 секунд
Да там много было. Не правильно работал с ножнами НП и данные не устанавливал до подачи сигнала ЕН. в общем вот так вот должно быть... теперь у меня есть еще 1 вопрос по поводу дисплея чуток позже напишу...

Автор: newbie2009 6.6.2010, 12:39
Не подскажите еще как преобразовать число с регистра ADCW в число, а потом это число в символ ...
ну или как его значение вывести на дисплей, делал так не получается, подскажите, что не так:
Код

#include <90s8535.h>   
#include <delay.h> 

#define ADC_VREF_TYPE 0x00 

#define RS        PC0
#define EN        PC2
#define TIME    100

void pause(unsigned int a)
{
    unsigned int cn;
    for( cn = a; cn > 0; cn-- );
}

void lcd_com(unsigned char p)
{
    PORTC &= ~(1<<0);
    PORTD  = p;
    PORTC |= 1<<2;
    pause(TIME);
    PORTC &= ~(1<<2);
    pause(5*TIME);
}

void lcd_dat(unsigned char p)
{
    PORTC |= 1<<0;
    PORTD  = p;
    PORTC |= 1<<2;
    pause(TIME);
    PORTC &= ~(1<<2);
    pause(5*TIME);
}

void lcd_init()
{
    lcd_com(0x30);
    lcd_com(0x30);
    pause(100*TIME);
    lcd_com(0x30);
    pause(20*TIME);
    lcd_com(0x38);
    lcd_com(0x01);
    pause(100*TIME);
    lcd_com(0x06);
    lcd_com(0x0D);
}

  
interrupt [ADC_INT] void adc_isr(void){

PORTB=(unsigned char) ~ADCW;
PORTB = 0x00;



delay_ms(20);  

ADCSR|=0x40; 


} 
  

////////////////////////////////////////


void main(void) {  
DDRD = 0xFF;
PORTC = 0xF8; DDRC = 0x07; 

PORTB=0xFF; 
DDRB=0xFF; 


lcd_init();
lcd_dat((unsigned char)ADCW);
       //lcd_dat('H'); lcd_dat('e'); lcd_dat('l'); lcd_dat('l'); lcd_dat('o');
ADCSR=0x8E; 
#asm("sei") 

ADMUX=0; 

ADCSR|=0x40; 


    
           
while (1){}; 

} 






Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)