pomoč ... Problem na ATmega8535

K

konec

Guest
Hi ...

i simulira ADC ATMega8535 uporabo proteus in zbrati z oznako C
Code Vision AVR.

Tu je shematično.

<img src="http://images.elektroda.net/56_1169724096.gif" border="0" alt="Help...Problem on ATmega8535" title="Help ... Problem na ATmega8535"/>

jaz začeti prebrati analogni vhod iz PORTA.0 uporabljajo brezplačno vožnjo način,
in prikaz vrednosti zaslon LCD.

Tukaj je c koda ..

# include "mega8535.h"
# include "stdio.h"
# include "delay.h"
# include "lcd.h"
# asm / / Alfanumerični LCD modul funkcije
. EQU __lcd_port = 0x15
# endasm

unsigned int ADC_VALUE;

unsigned int read_adc (unsigned char adc_input)
(
ADMUX = adc_input;
ADCSRA | = 0x40;
while ((ADCSRA & 0x10) == 0); / / Počakajte, AD konverzijo za dokončanje
ADCSRA | = 0x10;
vrnitev ADCW;
)

void main (void)
(
unsigned char sbuf [16];
unsigned int TEMP;

DDRA = 0x00;
DDRC = 0xFF;

lcd_init (16) / / LCD module initialization

ADCSRA = 0x85;
SFIOR & = 0xEF;

while (1)
(
ADC_VALUE = read_adc (0);

lcd_gotoxy (0,0);
sprintf (sbuf, "VREDNOST:% 4d", ADC_VALUE);
lcd_puts (sbuf);
delay_ms (10);

)
)vir združi z CVAVR in simulacijo z uporabo proteus temelji na shemi zgoraj.

simulacija dela .. ampak vrednost, prikazana v LCD (LCD dispay "1023" obstojne) ne spremeni, ko sem spremembo potensiometer vrednost ..

kaj narobe z mojo kodo?Hvala za pomoč ....

 
Živjo,
Vaš program, ki ADMUX = 0, to pomeni uporabo referenčne napetosti = AVref.Try določiti ADMUX | = 0x40 (referenčna napetost = AVCC), mislim, da bo ok.

 
Ok ...hvala za pomoč

kako je koda, če jaz uporabe dveh kanalov ADC (adc0, adc1) in prikaz

rezultat na LCD

 
Živjo,

ADMUX register nastavite najprej v glavno kodo
void main ()
(
ADMUX = 0x40;
.......
while (1)
(
/ / your code here
)

)

in read_adc v postopku, lahko napišete:

unsigned int read_adc (unsigned char adc_input)
(
.......
ADMUX & = 0xf0; / / jasno zadnji adc_input
ADMUX | = adc_input;
.........
)

ali če vam ni treba init ADMUX v glavni kodo, lahko napišete:
unsigned int read_adc (unsigned char adc_input)
(
.......
ADMUX = adc_input | 0x40;
......
)

 
vaš program je dober, vendar ga morajo vezani na Aref 5 V

 

Welcome to EDABoard.com

Sponsor

Back
Top