بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته..
اود مشاركة الاخوة هدا النرنامج الذي كتبته بلغة mikroc
وهو عبارة عن قفل الكتروني مشفر بكودين (PIN & PUK)
PIN اربعة ارقام .... PUK ثمانية ارقام.... يشتغل كما يلي :
1: يطلب منك النظام ادخال كود pin (اربع محاولات)
2 : ادا ادخلت الكود الصحيح يتم تفعيل المخرج portd0
3 : ادا فشلت في ادخال الكود اربع مرات يطلب منك ادخال الكود puk (اربع محاولات)
4: ادا ادخلت الكود الصحيح يتم تفعيل المخرج portd0
5: ادا فشلت في ادخال الكود اربع مرات يتم تفعيل نظام الانذار لحوالي 5 ثوان
ثم يتوقف النظام
اليكم الدارة
باسم الله :
و الان مع الكود :
كود:
unsigned short kp[]={0,0,10,9,8,0,7,6,5,0,4,3,2,0,0,1,0},kp1, clavier,pin[]={1,9,8,7},chiffr,nmb,error,a,puk[]={1,2,3,4,5,6,7,8} ;
void ok () {
lcd_cmd(lcd_clear);
lcd_out(1,1,"code ok");
portd.f0=1;
delay_ms(1000);
}
void delay() {
delay_ms(300);
}
void lcdclv () {
for(nmb=0;nmb<4;nmb++) {
lcd_cmd(lcd_second_row);
error=0;
for(chiffr=0;chiffr<a;chiffr++) {
do {
clavier = Keypad_Released();
kp1=kp[clavier] ;
clavier = kp1;
} while(!clavier);
clavier--;
if(clavier!=pin[chiffr] ) {if (a==4) {error=1;} }
if(clavier!=puk[chiffr] ) { if (a==8) { error=1; } }
lcd_chr_cp(clavier+48);
}
if(error==0) { ok (); break;}
if(error==1) {
lcd_out(1,1,"wrong code");
delay();
lcd_cmd(lcd_clear);
if (nmb<3)
lcd_out(1,1,"try again"); }
delay_ms(300);
}
}
void main () {
int alarm=0;
start:
a=4;
trisd=0;
portd.f0=0;
lcd_init(&portb);
keypad_init(&portc);
lcd_cmd(lcd_cursor_off);
lcd_out(1,1," welcome ");
delay();
lcd_cmd(lcd_clear);
lcd_out(1,1,"enter PIN");
lcdclv();
if (error==0) goto start;
lcd_cmd(lcd_clear);
lcd_out(1,1,"pin blocked");
delay();
a=8;
lcd_out(1,1,"enter PUK");
lcdclv();
if(error==0) goto start;
lcd_out(1,1,"systeme blocked");
while(1) {
portd.f1=0;
delay_us(500);
portd.f1=1;
delay_us(500);
alarm++;
if(alarm==5000) break;
}
}
نا مستعد لاي سؤال
اتمنا ان افيد الاخوة كما اتمنى ان اجد من يعدل على الكود بافكار جديدة ان شاء الله
و الان مع رابط ملف hex و proteus
http://www.mediafire.com/?nlnkzn53ckt
الحمد لله الدي هدانا لهدا و ماكنا لنهتدي للولا اد هدانا