ايران ويج

نسخه‌ی کامل: وصل lcd به یک برنامه ی تولیدpwm
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.

من یه برنامه دارم که تبدیل موج pwm به adc هست میخوام یه lcd بهش وصل کنم که فرکانس و پهنای باند موج رو نشون بده باید چیکار کنم؟
(۱۱-دى-۱۳۸۹, ۱۹:۲۳:۱۶)parisa_memari نوشته است: [ -> ]من یه برنامه دارم که تبدیل موج pwm به adc هست میخوام یه lcd بهش وصل کنم که فرکانس و پهنای باند موج رو نشون بده باید چیکار کنم؟
برنامت رو بزار یه نگاه بهش بندازم!!!؟؟"
#include <mega8.h>
unsigned char read_adc(unsigned char adc_input);

// Timer 2 overflow interrupt service routine
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
OCR2=read_adc(0);

}

#define ADC_VREF_TYPE 0x60
// Read the 8 most significant bits
// of the AD conversion result
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;

ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;

}


void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Func0=In Func1=In Func2=In Func3=Out Func4=In Func5=In Func6=In Func7=In
// State0=T State1=T State2=T State3=0 State4=T State5=T State6=T State7=T
PORTB=0x00;
DDRB=0x08;

DDRC.0=0;


// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 0.977 kHz
// Mode: Fast PWM top=FFh
// OC2 output: Inverted PWM
ASSR=0x00;
TCCR2=0x7F;
TCNT2=0x00;
OCR2=0x80;



// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x40;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
// Analog Comparator Output: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC Clock frequency: 125.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC High Speed Mode: Off
// ADC Auto Trigger Source: None
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x83;
SFIOR&=0xEF;

#asm("sei")

while (1)
{


};
}
دوستانی که کدویژن کار میکنن راهنمایی کنن
????? من یه برنامه مشابه دارم ولی الان پیشم نیست حتما میزارم
من تا 2شنبه شب باید داشته باشم.لطفا کمکم کنید
(۱۱-دى-۱۳۸۹, ۲۳:۳۷:۰۷)parisa_memari نوشته است: [ -> ]
#include <mega8.h>
unsigned char read_adc(unsigned char adc_input);

// Timer 2 overflow interrupt service routine
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
OCR2=read_adc(0);

}

#define ADC_VREF_TYPE 0x60
// Read the 8 most significant bits
// of the AD conversion result
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;

ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;

}


void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Func0=In Func1=In Func2=In Func3=Out Func4=In Func5=In Func6=In Func7=In
// State0=T State1=T State2=T State3=0 State4=T State5=T State6=T State7=T
PORTB=0x00;
DDRB=0x08;

DDRC.0=0;


// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 0.977 kHz
// Mode: Fast PWM top=FFh
// OC2 output: Inverted PWM
ASSR=0x00;
TCCR2=0x7F;
TCNT2=0x00;
OCR2=0x80;



// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x40;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
// Analog Comparator Output: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC Clock frequency: 125.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC High Speed Mode: Off
// ADC Auto Trigger Source: None
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x83;
SFIOR&=0xEF;

#asm("sei")

while (1)
{


};
}

این که برنامه نیست!!!!!!
توی کدویزارد adc را فعال کردی و کد تولید کردی.

زحمت بکشین و برنامه بنویسین تا ما کمک کنیم