سلام کسی میتونه منو راهنمایی کنه؟؟یه سوال واسم پیش اومده آخه من تازه کارم هنوز چیز زیادی حالیم نیست مشکلم اینه که الان 4 روز گرفتار یه کی پد 4*4 هستم ولی هنوز نتونستم راش بندازم البته مگا 32 برنامشو هم این زیر میزارم تا بلکه شماها که سنی ازتون گذشته ببینید و حسابی به من بخندید
راستی داشتم یادم میرفت من این کی پد 4*4 رو به پورت بی وصل کردم و ال سی دی رو به پورت A و برنامه ای ای هم که میخواهم یه برنامه مبتدی واسه یادگیری هست میخواهم برنامه اینجوری باشه که هر کلیدی از صفحه کلید فشرده شد همون عدد رو روی ال سی دی نشون بده البته برنامه های زیادی از اینترنت دانلود کردم ولی هیچکدومشون کار نکرد که مطمعن شدم مشکل یا از برنامه ای هست که نوشتم یا از طریقه سیم کشی یا هم هر دو
اخه یه برنامه ای دانلود کردم اولش درست کار نمیکرد بعدش که اومدم 4تا مقاومت پول پ رو از روی کی پد برداشتم و سیمی هم که رفته بود به vcc باز کردم بهتر شد ولی بازهم هر کلیدی رو که فشار میدادم اول همون عدد رو نشون میداد بعد سریع عوض میشد حالا نمیدونم باید این مقاومت ها باشن(10 کیلو اهمی بسته بودم) و به vccوصل کنم کی پد یا نه الان 4 شبانه روز هست من گرفتار همین هستم خواهش میکنم منو راهنمایی کنیید لطفاً
این هم برنامه که اخر نوشتم وفقط روی ال سی دی عدد 16 نوشته شده و تغییر هم نمیکنه اگه این برنامه چیزی کم یا زیاد داره بی زحمت خودتون درتش کنید لطفاً
/*********************************************
This program was produced by the
CodeWizardAVR V1.23.8c Standard
Automatic Program Generator
© Copyright 1998-2003 HP InfoTech s.r.l.
http://www.hpinfotech.ro
e-mail
ffice@hpinfotech.ro
Project :
Version :
Date : 2010/07/04
Author : crystal-xp
Company :
Comments:
Chip type : ATmega32L
Program type : Application
Clock frequency : 4.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
*********************************************/
#include <mega32.h>
#include <stdio.h>
#include <stdlib.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x1B
#endasm
#include <lcd.h>
// Declare your global variables here
int numkey;
char key[2];
void main(void)
{
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x0F;
lcd_init(16);
#asm("sei"
;
lcd_clear();
lcd_putsf(" WELCOME!"
;
delay_ms(200);
while (1)
{
PORTB=0XFF;
PORTB.0=0;
delay_ms(5);
if(PINB.4==1)numkey=1;
if(PINB.5==1)numkey=2;
if(PINB.6==1)numkey=3;
if(PINB.7==1)numkey=4;
PORTB=0XFF;
PORTB.1=0;
delay_ms(5);
if(PINB.4==1)numkey=5;
if(PINB.5==1)numkey=6;
if(PINB.6==1)numkey=7;
if(PINB.7==1)numkey=8;
PORTB=0XFF;
PORTB.2=0;
delay_ms(5);
if(PINB.4==1)numkey=9;
if(PINB.5==1)numkey=10;
if(PINB.6==1)numkey=11;
if(PINB.7==1)numkey=12;
PORTB=0XFF;
PORTB.3=0;
delay_ms(5);
if(PINB.4==1)numkey=13;
if(PINB.5==1)numkey=14;
if(PINB.6==1)numkey=15;
if(PINB.7==1)numkey=16;
PORTB=0XF0;
lcd_clear();
lcd_putsf("Key Pressed:"
;
delay_ms(30);
itoa(numkey,key);
lcd_gotoxy(8,1);
lcd_puts(key);
delay_ms(500);
};
}


این هم برنامه که اخر نوشتم وفقط روی ال سی دی عدد 16 نوشته شده و تغییر هم نمیکنه اگه این برنامه چیزی کم یا زیاد داره بی زحمت خودتون درتش کنید لطفاً
/*********************************************
This program was produced by the
CodeWizardAVR V1.23.8c Standard
Automatic Program Generator
© Copyright 1998-2003 HP InfoTech s.r.l.
http://www.hpinfotech.ro

Project :
Version :
Date : 2010/07/04
Author : crystal-xp
Company :
Comments:
Chip type : ATmega32L
Program type : Application
Clock frequency : 4.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
*********************************************/
#include <mega32.h>
#include <stdio.h>
#include <stdlib.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x1B
#endasm
#include <lcd.h>
// Declare your global variables here
int numkey;
char key[2];
void main(void)
{
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x0F;
lcd_init(16);
#asm("sei"

lcd_clear();
lcd_putsf(" WELCOME!"

delay_ms(200);
while (1)
{
PORTB=0XFF;
PORTB.0=0;
delay_ms(5);
if(PINB.4==1)numkey=1;
if(PINB.5==1)numkey=2;
if(PINB.6==1)numkey=3;
if(PINB.7==1)numkey=4;
PORTB=0XFF;
PORTB.1=0;
delay_ms(5);
if(PINB.4==1)numkey=5;
if(PINB.5==1)numkey=6;
if(PINB.6==1)numkey=7;
if(PINB.7==1)numkey=8;
PORTB=0XFF;
PORTB.2=0;
delay_ms(5);
if(PINB.4==1)numkey=9;
if(PINB.5==1)numkey=10;
if(PINB.6==1)numkey=11;
if(PINB.7==1)numkey=12;
PORTB=0XFF;
PORTB.3=0;
delay_ms(5);
if(PINB.4==1)numkey=13;
if(PINB.5==1)numkey=14;
if(PINB.6==1)numkey=15;
if(PINB.7==1)numkey=16;
PORTB=0XF0;
lcd_clear();
lcd_putsf("Key Pressed:"

delay_ms(30);
itoa(numkey,key);
lcd_gotoxy(8,1);
lcd_puts(key);
delay_ms(500);
};
}
دیدگاه