ورود

نسخه کامل مشاهده نسخه کامل : راهنمایی در مورد مگا8 وال سی دی 2×16



habibanzali216
28-06-2010, 20:25
سلام کسی هست که بتونه منو راهنمایی کنه یه مشکل کوچکی دارم:
می خواهم یه ال سی دی 2×16 رو به مگا 8 وصل کنم که فقط یه متنو نشون بده این برنامه رو هم با کدویزارد نوشتم و مدار رو هم روی برد برد بستم ولی وقتی که میخواهم تست کنم فقط سطر اول ال سی دی 16 مربع روشن میشه و در ضمن پایه های 15 و 16 رو هم به +5ولت وصل کردم ولی ال ای دی های پشت ال سی دی روشن نمیشن اگه امکانش هست به برنامه ای که نوشتم نگاهی بندازید و نحوه مونتاژ مدارو هم لطف کنید بگید اخه ممن خیلی خیلی تازه واردم.لطفاً منو راهنمایی کنید
این هم برنامه:
/*********************************************
This program was produced by the
CodeWizardAVR V1.23.8c Standard
Automatic Program Generator
© Copyright 1998-2003 HP InfoTech s.r.l.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
e-mail:office@hpinfotech.ro
Project :
Version :
Date : 2010/06/28
Author : crystal-xp
Company :
Comments:

Chip type : ATmega8L
Program type : Application
Clock frequency : 8.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*********************************************/
#include <mega8.h>
#include <stdio.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18;PORTB
#endasm
#include <lcd.h>
#include <delay.h>
// Declare your global variables here
void main(void)
{
int i=0;
char lcd_buffer[20];
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
GICR|=0x00;
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
// Analog Comparator Output: Off
ACSR=0x80;
SFIOR=0x00;
// LCD module initialization
lcd_init(16);
while (1)
{
for(i=0;i<101;i++)
{
sprintf(lcd_buffer,"Count form 0-100=%-u",i);
lcd_clear();
lcd_puts(lcd_buffer);
delay_ms(200);
}
delay_ms(2000);
};
}

habibanzali216
01-07-2010, 00:24
سلام مجدد مشکلم در مورد ال سی دی حل شد حالا یه مشکل دیگه دارم اونم اینکه یه کی پد 16*2 دارم که میخواهم به مگا 8 وصل بشه و هر کلیدی که از رو کی پد فشار داده بشه روی ال سی دی نشون بده برنامه رو هم به کدویژن نوشتم حالا میزارم تا بقیه یه نگاه بندازن بلکه مشکلم حل شد،راستی این کی پدی که خریدم خیلی پین داره و جا واسه 4تا ال ای دی و 4تا مقاومت pullup و یه پین v0 که گفته واسه تغذیه که این یکیو میدونم 4تا پین دیگه r1تاr4 که اینوهم میدونم واسه سطرهاست و 5تا پین دیگهc0تاcc4 که اینو تقریبا نمیدونم یعنی فکر میکنم اینطوری باشه c1تاc4 واسه ستونها.حالا مشکلم اینه که نمی دونم کی پدو درست بستم یا اشکال از برنامه هستش یا از هر دو لطفاً منو راهنمایی کنید.راستی من از مگا8 استفاده میکنم که از پورت d واسه ال سی دی و از پورت bواسه گی پد که boتاb3ورودی b4تاb7خروجی تعریف کردم یه برنامه ساده میخواهم که هر دکمه ای از کی پد فشرده شد همون عدد رو روی ال سی دی نشون بده.

habibanzali216
01-07-2010, 00:30
راستی برنامه رو یادم رفت اینجا میزارمش این اولین برنامه این اعداد قاطی پاطی میزنه:
/*********************************************
This program was produced by the
CodeWizardAVR V1.23.8c Standard
Automatic Program Generator
© Copyright 1998-2003 HP InfoTech s.r.l.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
e-mail:office@hpinfotech.ro
Project :
Version :
Date : 2010/06/30
Author : crystal-xp
Company :
Comments:

Chip type : ATmega8
Program type : Application
Clock frequency : 4.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*********************************************/
#include <mega8.h>
#include <stdio.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x12
#endasm
#include <lcd.h>
// Declare your global variables here
int keyout;
char LCDstr[30];
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In
// State0=P State1=P State2=P State3=P State4=P State5=P State6=P State7=P
PORTB=0xFF;
DDRB=0x00;
// Port C initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
GICR|=0x00;
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
// Analog Comparator Output: Off
ACSR=0x80;
SFIOR=0x00;
// LCD module initialization
lcd_init(16);
lcd_putsf("Welcome");
while (1)
{
keyout=0;
PORTB=0x01;
delay_ms(100);
if(PINB.4==1)
{
keyout=1;
sprintf(LCDstr,"1");
}
if(PINB.5==1)
{
keyout=1;
sprintf(LCDstr,"2");
}
if(PINB.6==1)
{
keyout=1;
sprintf(LCDstr,"3");
}
if(PINB.7==1)
{
keyout=1;
sprintf(LCDstr,"F1");
}
PORTB=0x02;
delay_us(100);
if(PINB.4==1)
{
keyout=1;
sprintf(LCDstr,"4");
}
if(PINB.5==1)
{
keyout=1;
sprintf(LCDstr,"5");
}
if(PINB.6==1)
{
keyout=1;
sprintf(LCDstr,"6");
}
if(PINB.7==1)
{
keyout=1;
sprintf(LCDstr,"F2");
}
PORTB=0x04;
delay_us(100);
if(PINB.4==1)
{
keyout=1;
sprintf(LCDstr,"7");
}
if(PINB.5==1)
{
keyout=1;
sprintf(LCDstr,"8");
}
if(PINB.6==1)
{
keyout=1;
sprintf(LCDstr,"9");
}
if(PINB.7==1)
{
keyout=1;
sprintf(LCDstr,"F3");
}
PORTB=0x08;
delay_us(100);
if(PINB.4==1)
{
keyout=1;
sprintf(LCDstr,"start");
}
if(PINB.5==1)
{
keyout=1;
sprintf(LCDstr,"0");
}
if(PINB.6==1)
{
keyout=1;
sprintf(LCDstr,"stop");
}
if(PINB.7==1)
{
keyout=1;
sprintf(LCDstr,"Enter");
}
if(keyout==1)
{
lcd_clear();

lcd_puts(LCDstr);
}
PORTB=0x00;
delay_ms(10);
delay_ms(80);

};
}

این برنامه دومی هم فقط روی ال سی دی مینویسه welcome اعداد رو نشون نمیده:

/*********************************************
This program was produced by the
CodeWizardAVR V1.23.8c Standard
Automatic Program Generator
© Copyright 1998-2003 HP InfoTech s.r.l.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
e-mail:office@hpinfotech.ro
Project :
Version :
Date : 2010/06/30
Author : crystal-xp
Company :
Comments:

Chip type : ATmega8
Program type : Application
Clock frequency : 4.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*********************************************/
#include <mega8.h>
#include <stdio.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x12
#endasm
#include <lcd.h>
// Declare your global variables here
int keyout;
char LCDstr[30];
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func0=In Func1=In Func2=In Func3=In Func4=Out Func5=Out Func6=Out Func7=Out
// State0=P State1=P State2=P State3=P State4=0 State5=0 State6=0 State7=0
PORTB=0x0F;
DDRB=0xF0;
// Port C initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
GICR|=0x00;
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
// Analog Comparator Output: Off
ACSR=0x80;
SFIOR=0x00;
// LCD module initialization
lcd_init(16);
lcd_putsf("Welcome");
while (1)
{
keyout=0;
PORTB=0x01;
delay_ms(100);
if(PINB.4==1)
{
keyout=1;
sprintf(LCDstr,"1");
}
if(PINB.5==1)
{
keyout=1;
sprintf(LCDstr,"2");
}
if(PINB.6==1)
{
keyout=1;
sprintf(LCDstr,"3");
}
if(PINB.7==1)
{
keyout=1;
sprintf(LCDstr,"F1");
}
PORTB=0x02;
delay_us(100);
if(PINB.4==1)
{
keyout=1;
sprintf(LCDstr,"4");
}
if(PINB.5==1)
{
keyout=1;
sprintf(LCDstr,"5");
}
if(PINB.6==1)
{
keyout=1;
sprintf(LCDstr,"6");
}
if(PINB.7==1)
{
keyout=1;
sprintf(LCDstr,"F2");
}
PORTB=0x04;
delay_us(100);
if(PINB.4==1)
{
keyout=1;
sprintf(LCDstr,"7");
}
if(PINB.5==1)
{
keyout=1;
sprintf(LCDstr,"8");
}
if(PINB.6==1)
{
keyout=1;
sprintf(LCDstr,"9");
}
if(PINB.7==1)
{
keyout=1;
sprintf(LCDstr,"F3");
}
PORTB=0x08;
delay_us(100);
if(PINB.4==1)
{
keyout=1;
sprintf(LCDstr,"start");
}
if(PINB.5==1)
{
keyout=1;
sprintf(LCDstr,"0");
}
if(PINB.6==1)
{
keyout=1;
sprintf(LCDstr,"stop");
}
if(PINB.7==1)
{
keyout=1;
sprintf(LCDstr,"Enter");
}
if(keyout==1)
{
lcd_clear();

lcd_puts(LCDstr);
}
PORTB=0x00;
delay_ms(10);
delay_ms(80);
};
}

habibanzali216
01-07-2010, 23:14
یعنی کسی نیست که منو در مورد سوال دومم راهنمایی کنه؟؟؟؟؟؟؟؟؟؟؟؟؟