سلام این برنامه از خود انجمن دانلود شده
منتها اشکالات زیادی داشت که احتمالا عمدا دربرنامه قرار داده بود
یک سری از این مشکلات توسط خود دوستان انجمن حل شد
اما الان فقط یک مشکل داره اونم رفرش ال سی دی می باشد که اگه دوستان زحمت بکشند مشکل رفع خواهد شد
سطر دوم ال سی دی حالت کم رنگ و چشمکزن دارد اما سطر اول خوب است
من مجبورم فرکانس میکرو 1 مگا بگیرم چون اگه مثلا 4 مگ بگیرم یا بیشتر اونوقت با یکبار زدن از کی پد اون چند شماره حساب میکنه
اگه این مشکل که همگی مربوط به زمانند حل بشه دیگه برنامه مشکل نداره
منتها اشکالات زیادی داشت که احتمالا عمدا دربرنامه قرار داده بود
یک سری از این مشکلات توسط خود دوستان انجمن حل شد
اما الان فقط یک مشکل داره اونم رفرش ال سی دی می باشد که اگه دوستان زحمت بکشند مشکل رفع خواهد شد
سطر دوم ال سی دی حالت کم رنگ و چشمکزن دارد اما سطر اول خوب است
من مجبورم فرکانس میکرو 1 مگا بگیرم چون اگه مثلا 4 مگ بگیرم یا بیشتر اونوقت با یکبار زدن از کی پد اون چند شماره حساب میکنه
اگه این مشکل که همگی مربوط به زمانند حل بشه دیگه برنامه مشکل نداره
کد:
#include <mega8.h> #include <delay.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x18 ;PORTB #endasm #include <lcd.h> // Declare your global variables here char keypad(void); char password_check(void); void new_password(void); #pragma warn- char eeprom password[5]; char eeprom FirstUSE; #pragma warn+ char password_att[5], password_temp[5],key=0,c,i=0,accept=0; void main(void) { PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0x00; PORTD=0x00; DDRD=0xf8; TCCR0=0x00; TCNT0=0x00; ACSR=0x80; SFIOR=0x00; // LCD module initialization lcd_init(16); // ***************************************Check First Use if(FirstUSE !=0x0A) { password[0] =0x01; delay_ms(15); password[1] =0x01; delay_ms(15); password[2] =0x01; delay_ms(15); password[3] =0x01; delay_ms(15); FirstUSE = 0x0A; delay_ms(15); } PORTD=255; while (1) { lcd_clear(); lcd_putsf("Enter password *"); lcd_gotoxy(0,1); lcd_putsf("Change password#"); PORTD.3=1; PORTD.4=1; PORTD.5=1; PORTD.6=0; PORTD.7=0; if(PIND.2==0) { delay_ms(20); if(PIND.2==0) { new_password(); } } if(PIND.0==0) { delay_ms(10); if(PIND.0==0) { password_check(); } } }; } //////////////// //////////////// char password_check() { int temp=0; lcd_clear(); lcd_putsf("Enter password:"); lcd_gotoxy(0,1); for (i=0;i<4;i++) { password_att[i]=keypad(); lcd_putchar('*'); } for (i=0;i<4;i++) { password_temp[i]=password[i]; } for (i=0;i<4;i++) { if (password_att[i]==password_temp[i]) temp++; } if(temp<4) { lcd_clear(); lcd_putsf("invalid password!"); temp=0; delay_ms(500); accept=0; } else if(temp==4) { lcd_clear(); lcd_putsf("Password accepted!"); PORTD.7=1; delay_ms(2500); accept=1; } return accept; } //////////////// //////////////// void new_password(void) { int temp; lable: temp=0; lcd_clear(); lcd_putsf("Enter old pass:"); lcd_gotoxy(0,1); for (i=0;i<4;i++) { password_att[i]=keypad(); lcd_putchar('*'); } for (i=0;i<4;i++) { password_temp[i]=password[i]; } for (i=0;i<4;i++) { if (password_att[i]==password_temp[i]) temp++; } if(temp>3) { lcd_clear(); lcd_putsf("Enter new pass:"); lcd_gotoxy(0,1); for (i=0;i<4;i++) { password[i]=keypad(); lcd_putchar('*'); } } else if(temp<4) { lcd_clear(); lcd_putsf("invalid password!"); temp=0; delay_ms(500); goto lable; } } //////////////// //////////////// char keypad(void) { char key_press=1; while(key_press) { ////// PORTD.3=0; PORTD.4=1; PORTD.5=1; PORTD.6=1; if(PIND.0==0) { delay_ms(10); if(PIND.0==0) { key_press=0; key=1; } } if(PIND.1==0) { delay_ms(10); if(PIND.1==0) { key_press=0; key=2; } } if(PIND.2==0) { delay_ms(10); if(PIND.2==0) { key_press=0; key=3; } } ///// PORTD.3=1; PORTD.4=0; PORTD.5=1; PORTD.6=1; if(PIND.0==0) { key_press=0; delay_ms(10); if(PIND.0==0) { key_press=0; key=4; } } if(PIND.1==0) { key_press=0; delay_ms(10); if(PIND.1==0) { key_press=0; key=5; } } if(PIND.2==0) { key_press=0; delay_ms(10); if(PIND.2==0) { key_press=0; key=6; } } ////// PORTD.3=1; PORTD.4=1; PORTD.5=0; PORTD.6=1; if(PIND.0==0) { key_press=0; delay_ms(10); if(PIND.0==0) { key_press=0; key=7; } } if(PIND.1==0) { key_press=0; delay_ms(10); if(PIND.1==0) { key_press=0; key=8; } } if(PIND.2==0) { key_press=0; delay_ms(10); if(PIND.2==0) { key_press=0; key=9; } } ////// PORTD.3=1; PORTD.4=1; PORTD.5=1; PORTD.6=0; if(PIND.1==0) { key_press=0; delay_ms(10); if(PIND.1==0) { key_press=0; key=0; } } } delay_ms(100); return key; }
دیدگاه