به نام خدا : قفل رمز ۴ رقمی با میکروکنترلر avr – این پروژه avr رو یکی از دوستان تو قسمت نظرات اعلامش کرد ما هم درسش کردیم؛ این پروژه چیز خاصی نداره فقط چون یکم کدهاش زیاده باید یه ۱۵ دقیقه ای ببینی که من کد هاش رو چطور نوشتم تا متوجه بشی ، البته خودم هم کد هاش رو تا جایی که بتونم توضیح میدم ولی اگه جاییش رو نگفتم یا بد گفتم یا متوجه نشدید بگید تا توضیح بدم.
قفل رمز ۴ رقمی با میکروکنترلر avr
طرز کار این برنامه رو هم تو عکس بالا زیر میتونید ببینید.
مدارش ناقص هستش ، مثلا اون پایه هایی از lcd که چیزی بهشون وصل نشده یه چیزای باید بهشون وصل بشه ولی تو شبیه سازی بود و نبودشون زیاد برامون مهم نیست ومن برای این قرارشون ندادم تا دوستان تازه کار سر چند تا چیز چرت و پرت الکی اذیت نشن و مدار پیچیده نشده.
اینم از کد های برنامه
کد های این برنامه رو میشه طوری تغیر داد که اول کد اعداد وارد شوند و به محض وارد کردن عدد به صورت * نمایش داده نشوند و اول کد اعداد دریافت شوند و سپس به صورت **** نمایش داده شود.(فهمیدی چی میگم؟؟؟)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
#include <mega16.h> // تابع میکروکنترلر ای تی مگا ۱۶ #include <delay.h> // تابع تاخیر زمانی #include <lcd.h> // تابع کتاب خانه ال سی دی #include <stdlib.h> // این کتاب خانه برا تبدیل انواع متغیر ها به هم دیگه هستش //سه خط زیر برا تعیین این هستش که ال سی دی به کدام پایه میکروکنترلر وصل بشه #asm .equ __lcd_port=0x18 #endasm //#############################################تعریف توابع int key();//با این تابع ما میفهمیم که رو کدام دکمه کلیک شده است void amaliat(int);//این تابع هم همه کاره برنامه هستش-تمام کار ها تو این تابع انجام میشه //#############################################تعریف متغیر های مورد نیاز برنامه //total_number برا شمارش تعداد اعداد وارد شده میباشد // a-b-c-d اعداد وارد شده توسط ما در این متغییر ها قرار میگیره // عدد اول در ای-عدد دوم در بی-عدد سوم در سی و عدد چهارم در دی قرار میگیرد int total_number=1 , a , b , c , d ; char password[4];// ای-بی-بی--سی-دی بعد از تبدیل واحد متغییر در این متغییر قرار میگیرن //############################################# void main(void) { int y; DDRB=0xFF; DDRD=0x0F; lcd_init(16); while(1) { y = key(); if(y == 0) {lcd_putchar('0'); delay_ms(50);amaliat(y);} if(y == 1) {lcd_putchar('1'); delay_ms(50);amaliat(y);} if(y == 2) {lcd_putchar('2'); delay_ms(50);amaliat(y);} if(y == 3) {lcd_putchar('3'); delay_ms(50);amaliat(y);} if(y == 4) {lcd_putchar('4'); delay_ms(50);amaliat(y);} if(y == 5) {lcd_putchar('5'); delay_ms(50);amaliat(y);} if(y == 6) {lcd_putchar('6'); delay_ms(50);amaliat(y);} if(y == 7) {lcd_putchar('7'); delay_ms(50);amaliat(y);} if(y == 8) {lcd_putchar('8'); delay_ms(50);amaliat(y);} if(y == 9) {lcd_putchar('9'); delay_ms(50);amaliat(y);} } } //############################################# int key(void) { while(1) { PORTD.0 = 1 ; PORTD.1 = 0 ; PORTD.2 = 0 ; PORTD.3 = 0 ; if(PIND.4 == 1){return 7 ; delay_ms(50);} if(PIND.5 == 1){return 8 ; delay_ms(50);} if(PIND.6 == 1){return 9 ; delay_ms(50);} //========================================== PORTD.0 = 0 ; PORTD.1 = 1 ; PORTD.2 = 0 ; PORTD.3 = 0 ; if(PIND.4 == 1){return 4 ;delay_ms(50);} if(PIND.5 == 1){return 5 ;delay_ms(50);} if(PIND.6 == 1){return 6 ;delay_ms(50);} //========================================== PORTD.0 = 0 ; PORTD.1 = 0 ; PORTD.2 = 1 ; PORTD.3 = 0 ; if(PIND.4 == 1){return 1 ;delay_ms(50);} if(PIND.5 == 1){return 2 ;delay_ms(50);} if(PIND.6 == 1){return 3 ;delay_ms(50);} //========================================== PORTD.0 = 0 ; PORTD.1 = 0 ; PORTD.2 = 0 ; PORTD.3 = 1 ; if(PIND.5 == 1){return 0 ;delay_ms(50);} } } //############################################# void amaliat (int y) { if(total_number==1) //اگر این رقم ، رقم اول است { total_number++; a = y ; lcd_clear(); lcd_puts("*"); } else if(total_number==2) //اگر این رقم ، رقم دوم است { total_number++; b = y ; lcd_clear(); lcd_puts("**"); } else if(total_number==3) //اگ این رقم ، رقم سوم است { total_number++; c = y ; lcd_clear(); lcd_puts("***"); } else if(total_number==4) //اگر این رقم ، رقم چهارم است { total_number=1; d = y ; lcd_clear(); lcd_puts("****"); delay_ms(300); lcd_clear(); itoa( a , password ) ; lcd_puts(password); itoa( b , password ) ; lcd_puts(password); itoa( c , password ) ; lcd_puts(password); itoa( d , password ) ; lcd_puts(password); delay_ms(300); lcd_clear(); }; } |
چیز خاصی نداره و اگه سوالی بود درخدمتیم.
دانلود این پروژه | حجم: ۱۳۶ کیلوبایت !
عملی بستن پروژه : اینم فیلمی از همین پروژه که به صورت عملی بستم>>> فقط یه اصلاحات کوچیک دادم و پایه های متصل به LCD و کیپد رو هم تغییر دادم تا تو عمل راحت تر پروژه رو ببندم.
البته برا عملی بستن پروژه یه چند تا نکته کوچیک رو باید رعایت کنید که میتونید مطلب زیر رو بخونید>> کلیک کنید
اینم فایل پروژه با برخی تغیرات داده شده
مهمان
سلام برنامخ رو کپی و تو کدویزن زدم و پروتعوس شبیهسازی کردم. هر عددی از keypad میزنم 4بار عدد 7 نشون میده . مشکل چجوری حل کنم و اگر نخام ستاره نمایش نده وعدد ثابت باشه چکارکنم
مهمان
سلام ببخشید میشه بگین که با چه برنامه ای شبیه سازی کردین؟
مهمان
سلام
من اگ بخوام این رمز فعال و غیر فعال کردنش دست خودم باشه باید چکاری انجام بدم؟
ممنون میشم راهنماییم کنید
مهمان
سلام
خواستم ببینم این کد ها رو تو پایتون هم بزنیم اجرا میکنه یا نه
مهمان
سلام خوب هستین .میشه لطف کنین نقشه مدار رو برای من ایمیل کنید .من نقشه کامل رو میخوام دقیقا همون قطعاتی که حذفش کردین رو میخوام برای پروژه بدم دانشگاه
مهمان
با عرض سلام و خسته نباشید
ببخشید من میخوام رمزم#abcd#باشه ولی دقیقا نمیدونم کجایه برنامه رو باید تغییر بدم
خواهش میکنم یکم راهنماییم کنید
با تشکر
مهمان
سلام میشه ایمیلتون رو لطف کنید قیمت میخواستم بگیرم ازتون
نویسنده این مطلب
سلام
mahdedamarchi@gmail.com
مهمان
با سلام و خسته نباشید
میخواستم ببینم اگه خواسته باشم یک کلید واسه زمانی که برنامه هنگ کرد بزارم باید چه کدی بنویسم ؟؟؟
و وقتی هنگام ورود رمز یک عدد اشتباه وارد کنم خواسته باشم پاک کنم و تصحیح کنم چه کدی باید بنویسم ؟
اگه میتونید کمکم کنید خیلی ممنون میشم
با تشکر
نویسنده این مطلب
سلام
از واچ داگ استفاده کن تا میکرو هنگ نکنه – نکات مربوط به نویز رو هم رعایت کنی نیاز به استفاده از واچ داگ کم میشه.
آموزش واچ داگ تو نت و سایت هستش.
مهمان
سلام ببخشید من موضوع پروژمو میخام همین قفل دیجیتال بگیرم ب نظرتون سادس ؟؟؟البته همینشم واسم سخته بعضی جاهاشو متوجه نشدم میشه راهنمایییم کنین؟
مهمان
سلام. میخواستم یه خط به برنامه اضافه بشه که اگه رمز درست بود یه چراغ روشن بشه اگر اشتباه بود یه چراغ دیگر روشن بشه. ممنون
مهمان
چرا نمیتونم محتوی پروژرو نگاه کنم
پروتوسم ارور میده
کد ویژن هم دارم
دیگه چ برنامه هایی نیاز دارم ؟
نویسنده این مطلب
عکس بده
هیچی
مهمان
یک سوال داشتم میخاستم یک کلید off طراحی کنید که هرجای برنامه اون کلید روفشاربدی برنامه متوقف بشه میتونیید؟
تعریف اولیش اینطوریه: define off PINC.1 # (مثلا روی پورت c) مچکر.
نویسنده این مطلب
سلام
مطلب وقفه در avr رو بخویند
مهمان
خدا خیرت بده، پروژه خیلی خوبیه
مهمان
سلام پس قراربودکلید off طراحی کنید که هرجای برنامه بود اون رو متوقف کنه
نویسنده این مطلب
سلام
من کی گفتم انجام میدم؟
مهمان
رو کیپد که کلیدمیکنی جواب نمیده چون باید برنامه ی کیپد اولش نوشته بشه. فعلا مدارمن راطراحی کنید
نویسنده این مطلب
اگه میخواین ایمیل بهم بدید تا براورد هزینه کنم و خدمتتون عرض کنم.
مهمان
ببخشید اقا مهدی این قسمت چکار میکنه

PORTD.0 = 1 ;
PORTD.1 = 0 ;
PORTD.2 = 0 ;
PORTD.3 = 0 ;
if(PIND.4 == 1){return 7 ; delay_ms(50);}
if(PIND.5 == 1){return 8 ; delay_ms(50);}
if(PIND.6 == 1){return 9 ; delay_ms(50);}
//==========================================
PORTD.0 = 0 ;
PORTD.1 = 1 ;
PORTD.2 = 0 ;
PORTD.3 = 0 ;
if(PIND.4 == 1){return 4 ;delay_ms(50);}
if(PIND.5 == 1){return 5 ;delay_ms(50);}
if(PIND.6 == 1){return 6 ;delay_ms(50);}
//==========================================
PORTD.0 = 0 ;
PORTD.1 = 0 ;
PORTD.2 = 1 ;
PORTD.3 = 0 ;
if(PIND.4 == 1){return 1 ;delay_ms(50);}
if(PIND.5 == 1){return 2 ;delay_ms(50);}
if(PIND.6 == 1){return 3 ;delay_ms(50);}
//==========================================
PORTD.0 = 0 ;
PORTD.1 = 0 ;
PORTD.2 = 0 ;
PORTD.3 = 1 ;
if(PIND.5 == 1){return 0 ;delay_ms(50);}
نویسنده این مطلب
برا اینه که بفهمی رو کدوم دکمه کلیک شده….باید یه کد اسکن براش بنویسی …. این همون کد اسکن هستش
یه سیم برق رو فرض کن که از یه طرفش برق دادی و از اون سر سیم اگه دست بخوره برق میگیره و متوجه میشی….حالا اگه یه دکمه وسط سیم بزاری و هر موقع که فشارش بدی برق میگیرتت و میفهمی..
این جا هم داستان همینطوره….اول میایم یه پایه(مثلا z ) رو ۱ میکنیم(برق میدیم) و بعد میایم و میبینیم که ایا اون سر سیمش (پایه مربوطه که به پایه z وصل هستش) برق داره یا نه…یعنی وقتی برق داره که ما دکمه روی کیپد رو فشار بدیم
بهتره مدار داخلی کیپد رو یه نگاه بندازی …. مطلب زیر رو یه نگاه بنداز…. مدار داخلی کیپد رو نگاه کن متوجه میشی
https://dmf313.ir/%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%DA%A9%DB%8C%D9%BE%D8%AF-%D8%A8%D8%A7-%D9%85%DB%8C%DA%A9%D8%B1%D9%88%DA%A9%D9%86%D8%AA%D8%B1%D9%84%D8%B1-avr/
مهمان
نظر ندی یه وقت…گناه میشه
مهمان
راستی یه زحمت دیگه
اگر بخواییم همین برنامه را برای at8951 بنویسیم امکانش هست برنامشو بزارید ؟
ممنون
مهمان
با سلام
اگر زحمتی نیست برنامه نویسی را با چه زبانی نوشته ای ؟
c یا ++c یا اسمبلی یا ویژال بیسیک ؟
نویسنده این مطلب
سلام
c
مهمان
یکشنبه هفته دیگه باد تحویلش بدم 16/6
نویسنده این مطلب
خودم دارم پروژش رو مینویسم
>>>>> پروژه تو رو کی حال داره نگاه کنه>>>یه روز طول میکشه فقط کداش رو تحلیل کنم>>>>البته بگم تو به امید من نباش و تلاش خودت رو بکن>>>>یه وقت دیدی فردا من مردم یا بنا به دلایلی نتونستم پروژه رو انجام بدم و… 

ولی من تلاشم رو میکنم
نویسنده این مطلب
پروژت رو انجام دادم
>>>> هیچ مشکلی هم پیش نیومد
>>>>ولی پروژه sms خودم با احتساب امشب و دیروز>>>2 روز میشه که هنوز به جواب نرسیده
>>>>تو بحث تایمرش گیر کردم
>>>دستت نسوزه 

فقط یه قسمت از پروژت رو از قصد انجام ندادم تا خودت انجامش بدی>>>>اونجایی که اگه کد ها درست وارد شد یه کاری انجام بده>>>از قصد انجام ندادم>>>علتش رو هم حال ندارم بگم
پروژش چیز خوبی درومد>>>فردا میزارم تو سایت>>>لذا این فایل زیر داغ داغه>>>
[لینک حذف شد]
البته اگه مشکلی داشت بهم بگو تا….
موفق باشی دادا
نویسنده این مطلب
این مطلب رو ببین
https://dmf313.ir/%D9%82%D9%81%D9%84-%D8%B1%D9%85%D8%B2-%DB%B4-%D8%B1%D9%82%D9%85%DB%8C-%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA%D9%87-%D8%A8%D8%A7-avr/
همین پروژس فقط یه کم تغییرش دادم+توضیحاتش
مهمان
بله
درسته . PORTA.1 برای یک ثانیه یک میشه و دوباره صفر میشه . برای ب صدا در اومدن صدای زنگ.
بله داداش. همش همینه
خیلی ساده است؟
مهمان
پروژه قراره در نهایت به ی قفل رمز دار تبدیل بشه که بعد از وارد کردن رمز صحیح زنگی که ب PORTA.1 متصله رو به صدا در بیاره و بعد با فشردن کلید 1 درو باز کنه -کلید 2 وضعیت رو به حالت اول برگردونه( یعنی اول برنامه که درخواست ورود رمز میشه). و کلید 15 هم وارد منوی تغییر رمز بشه و بعد از ورود رمز قدیمی رمز جدید وارد بشه و جایگزین رمز قدیمی بشه.
هنوز خیلی کار داره
نویسنده این مطلب
پس پروژه یه رمز اولیه داره که کسی اگه بخواد رمز رو تغییر بده اول باید رمز قدیمی رو وارد کنه و اگه درست بود اون وقت میتونه رمز جدید رو وارد کنه(البته برای تغییر رمز باید رو دکمه ای از کیپد که قبلا گفتی کلیک کنه)
بعد اگه رمز صحیح بود پایه porta.1 یک بشه>>>بعد با فشردن یه دکمه(کلید1) در باز بشه>>>و دکمه ای (کلید 2 که گفتی) رو اگه بزنیم دوباره در قفل بشه و porta.1 صفر بشه>>>> و دوباره درخواست رمز کنه>>>>>>درست گفتم؟؟؟
کل پروژت همینه یا این فقط قسمتی از پروژت هستش؟؟؟؟؟
کی باید تحویل بدی پروژت رو؟؟؟؟
نویسنده این مطلب
من که هنوز کاری نکردم
)
کامل در مورد پروژت توضیح بده ببینم>>>خیلی پیچوندیش>>اصلا تر تمیز نیست کد هات>>>کل پروژت رو توضیح بده و این که پروژت قراره چیار بکنه و… همه رو بگو>>>> بهم بگو شاید یه پروژه برات نوشتم(البته اگه از پس فهمیدن پروژت در نیومدم
مهمان
لاالله الا الله وحدهو لا شریک الله. یا ایهالذین امنو. الله و اکبر الله و اکبر. (عربی تو؟)
نویسنده این مطلب
سلام
………چاکریم داش
این متن چیه نوشتی؟منظورم اینه که یه ربطیش به این موضوع؟ منظورت رو نفهمیدم
والا داشت ترک هستش….البته کل عمرش تو تهران بوده…ننه باباش ترک هستن
یه سوال چرا اسمت رو “الانزجارالعرب” قرار دادی؟….معنی خوبی نمیده
مهمان
رمزو ک وارد میکنیم وارد منو میشه اما نتونستم منورو واسش درست کنم. ینی با زدن عدد 1 باید در باز بشه و با زدن عدد 2 از منو خارج بشه و به اول برنامه برگرده ک موفق نشدم.
برا تغییر رمز هم کلید 15(ON/c) رو معرفی کردم ولی تغییر رمزو بلد نیستم
نه نمیبینم. کجاست؟
نویسنده این مطلب
الان وارد سایت شدی؟؟؟؟>>>اگه آره>>>صفحه رو بالا پایین کن>>یعنی برو بالای صفحه و بیا پایین صفحه>>>>ببین پچیزی ظاهر نمیشه….>>خبرم کن.
پروژت رو هم قشنگ پیچوندیشا>>>>الان دارم میبینمش
نویسنده این مطلب
کامل در مورد پروژت توضیح بده ببینم>>>خیلی پیچوندیش>>اصلا تر تمیز نیست کد هات>>>کل پروژت رو توضیح بده و این که پروژت قراره چیار بکنه و… همه رو بگو
نویسنده این مطلب
با این وضع >>>باید تا فردا فقط پروژت رو تحیلیل کنم و ببینم که کد هاش چی به چی هستش…
نویسنده این مطلب
مشکلش چیه حالا؟؟؟
راستی یه سوال(این گفتو با ما که گوشه سایت هستش رو میبینی؟؟؟؟؟)
مهمان
لینکش؟
نمیدونم
رد شد رفت
مهمان
من عمادم
عضو سایت شدم
نویسنده این مطلب
خوش به حالت
خسه نباشی
>>>اینا رو ولش>>>لینک رو بفرست بیاد؟؟؟؟؟؟؟؟؟؟؟؟کو لینک فایلت؟؟؟
مهمان
منم عمادم
عضو سایت شدم
مهمان
سلام آقا مهدی
فایلو آپلود کردم
من اولین نفر بودم ک آپولد کردم عایا؟؟
نویسنده این مطلب
نه -خودم قبلا باهاش آپلود کردم
کو لینکش حالا؟؟؟؟؟
مهمان
ممنون داداش
واقعا سایت ارزشمند و کار آمدی راه انداختی


با گرافیکی نتونستم انجامش بدم
قرار شد با LCD متنی انجامش بدم. استادم دلش واسم سوخت.
خیلی عالیه
ایشالا ک یکی از 313 نفر باشی داداش گلم
ی تغیراتی انجام دادم . دوباره واست میفرستم. اینبار با آپلود
ی دنیا ممنون
نویسنده این مطلب
مردونه بیا همین پروژه sms رو ببر به استادتون بده
پروژه توپی هستش>>>از ظهر پای پروژش هستم>>>تو نت فقط یه پروژه من در این باره دیدم که اونم به زبون بیسیک هستش.
بابا ما اینقدر گناه کردیم که جهنم نریم شانس ابردیم>>چز یاران حضرت شدن پیش کش
نویسنده این مطلب
باشه فقط میل نکن و از آپلود سنتری که ساختم استفاده کن>>>>تا حد اقل دلمون خوش بشه که یکی فایل توش آپلود کرده

اون موقع که آپـلود سنتر نبود ملت دهن ما… کردن حالا که ساختیم>>>
مهمان
داداش خودم تقاضا کرده بودم.
من این برنامه شمارو تغییر دادم و ی رمز واسش تعریف کردم اما این رمز قابل تغییر با خود کیپد نیست.
واسه اینکه قابل تغیر باشه باید از حافظه eeprom استفاده کنیم نه؟
داداش من دوباره برنامه رو واست میفرستم. اگه میشه ی نگاه بش بنداز لطفا
نویسنده این مطلب
تو بودی
>>>>>>> 
>>>>احتمالا تا شب تموم بشه>>>بعد کار شما
راستی همین پروژه رو عملی بستم>>فیلمش هم در داخل مطلب گزاشتم
الان دارم پروژه تایپ sms به کیپد رو مینویسم.
ولی چیزی که الان به فکرم میرسه اینه که یکی از دکمه های کیپد رو بزاری برا تغییر پسورد>>یعنی اگه روش کلیک شد پروژه ما آماده تغییر پسورد بشه پسورد تغییر کنه-و دونه دونه متغییر های وارد شده از طرف ما در متغیر هایی ذخیره بشه>>>(مثلا پسورد ما 4 رقمی هستش)و اگه تعداد پسورد های وارد شده توسط ما و دریافت و ذخیره شده توسط پروژه به 4 رسید پسورد ذخیره و یه پیام با عنوان پسورد تغییر کرد تو lcd به کاربر نمایش داده بشه
چیزی که الان به فکرم میرسه همینه>>>البته شاید بعدا چیز های بیشتری به فکرم برسه
راستی داش عماد پروژه چی میخوای درست کنی؟؟؟؟؟>>>>یادمه که میخواستی که با lcd گرافیکی همین پروژه رو درست کنی>>>>الان چیکاره ای؟؟؟؟
راستی آپلود سنتر هم برا سایت درست کردم که میتونی فایلت رو توش آپلود کنی.
مهمان
سلام آقا مهدی

خسته نباشی داداش
این قفل رمز دارو با ال سی دی کاراکتری طراحی کردم ولی قابل تغییر با خود کیبورد نیست
با eeprom تلاش کردم ولی نشد
چ کنم؟؟؟؟؟؟
نویسنده این مطلب
سلام
دقیق متوجه نشدم>>>> این پروژه رو یکی از دوستان خواست منم درست کردم>>> دقیقا قفل رمز نیست(مثل بقه پروژه های توی اینترنت نیست)>>> اگه عکس اول همین پست رو ببینی نحوه کارش ر میفهمی….
الان یعنی رو کیپد کلیک میکنی و چیزی نمایش داده نمیشه؟؟؟؟>>>> درست فهمیدم؟؟؟
یا خودت پروژه رو تغییر دادی؟؟؟>>>و این پروژه کار نمیکنه؟؟؟؟
یه ذره بیشتر توضیح میدی.
نویسنده این مطلب
بوگو به احتمال خودم هم میخوام امشب یا فردا(احتمالا امشب)>>> عملیش رو ببندم
>>> 
مهمان
سلام میگم تمام وسایل مورد نیازش روبهم میگی واسه پروژه دانشجویی میخوام
مهمان
خیلی ممنون از توضیحات کامل و سایت به درد بخورتون
خیلی خوشحال شدم از اینکه اتفاقی به سایتتون اومدم. باتشکر.
نویسنده این مطلب
خواهش