ساخت چراغ راهنمایی و رانندگی
در این بخش دانلود پروژه ساخت چراغ راهنمایی با سون سگمنت مولتی پلکس با استفاده از میکروکنترلر AVR, توسط تیم الکترونیک و برنامه نویسی الکترونیک ۹۸ برای شما علاقه مندان به پروژه های میکروکنترلر AVR آماده شده است. در این پروژه با استفاده از نمایشگر 7 قسمتی (Seven Segments Display) اقدام به طراحی یک چراغ راهنمایی و رانندگی برای یک چهارراه, با قابلیت زمان سنجی برای هر دو طرف طراحی کرده ایم. نمایشگر 7 قسمتی که سون سگمنت نیز خوانده می شود, شامل هفت ال ای دی LED است. این ال ای دی LED ها به صورتی پوشانده شده اند که با روشن شدن برخی از این بخش ها می توان عددی بین 0 تا 9 و برخی حروف را نمایش داد.
سون سگمنت
نمایشگر 7 قسمتی (سون سگمنت) به دو دسته کلی کاتد مشترک (Common Cathode) و آند مشترک (Common Anode) تقسیم می شوند. در نوع کاتد مشترک, پایه های کاتد دیود ها به یکدیگر وصل شده اند و باید به زمین (GND) یا ولتاژ منفی متصل گردند, ولی در نوع آند مشترک, پایه های آند دیودها به یکدیگر وصل شده اند و باید به VCC یا همان ولتاژ مثبت اتصال گردند.
در نمایشگرهای 7 قسمتی (سون سگمنت) برای نمایش اعداد بر روی آن, به هشت پایه اتصال نیاز داریم, که یکی از آن ها سیم مشترک بوده و بقیه مربوط به سگمنت های A,B,C,D,E,F,G می باشند. در این پروژه لازم است از 4 سون سگمنت تک رقمی جهت نمایش زمان استفاده کنیم, به همین علت به 4 عدد سیم مشترک و 7*4=28 عدد سیم مربوط به سگمنت های آن ها نیاز خواهیم داشت و در مجموعه به 32 رشته سیم اتصال احتیاج خواهد شد.
معلوم است که اگر بخواهیم از این چهار قطعه سون سگمنت برای نمایش زمان چراغ راهنمایی در مدار با آی سی میکروکنترلر AVR استفاده کنیم, تعداد 32 عدد از پایه های آن را اشغال خواهد کرد که این مسئله با توجه به محدودیت پایه های خروجی میکروکنترلر مشکلاتی را به وجود خواهد آورد. علاوه بر این ها برنامه ای طولانی و پیچیده نیاز خواهد داشت و از همه مهمتر به جریان مصرفی بیشتری نیز برای روشن کردن آن ها احتیاج خواهد شد. برای غلبه بر این مشکلات, در این پروژه از سون سگمنت مولتی پلکس استفاده می کنیم.
سون سگمنت (مالتی پلکس) چیست؟
در این نوع سون سگمنت (اعم از اینکه از هر تعداد تشکیل شده باشد که بستگی به ارقامی خواهد داشت که قرار است نشان دهد) پایه های مربوط به سگمنت های a,b,c,d,e,f,g,dp تمامی آن ها به هم متصل شده اند. به عبارت دیگر اگر فرض کنیم که مولتی پلکس ما چهار رقمی باشد , با اعمال ولتاژ تغذیه به سیم مشترک و سیم مربوط به ال ای دی a خواهیم دید که سگمنت a در هر چهار رقم سون سگمنت مولتی پلکس روشن خواهند شد.
در این سگمنت ها, سیم های مشترک نقش اساسی را بازی می کنند, بدین معنی که ابتدا Data یعنی معادل باینری عددی که قرار است دیده شود بر روی پورتی که به اتصالات هشت گانه : A,B,C,D,E,F,G,DP وصل است, فرستاده می شود و همزمان با این کار برای روشن شدن رقم مورد نظر, ولتاژ سیم مشترک مربوط به آن انتخاب و اعمال می شود.
نحوه راه اندازی سون سگمنت مالتی پلکس با میکروکنترلر
مثال : فرض کنید یک سون سگمنت 4 رقمی مالتی پلکس کاتد مشترک را همانند نقشه شماتیک زیر به میکروکنترلر متصل کرده ایم و می خواهیم عدد 2014 را توسط میکروکنترلر AVR بر روی سون سگمنت مولتی پلکس نمایش دهیم.
همانطور که در نقشه شماتیک مثال بالا می بینید سگمنت های A,B,C,D,E,F,G,DP به ترتیب به پایه های پورت A میکروکنترلر ATmega32 متصل شده اند, و همچنین چهار پایه کاتد مشترک هر رقم از سگمنت به ترتیب به پایه های پورت B میکروکنترلر وصل شده اند. حال برای نمایش عدد 2014 بر روی سون سگمنت مولتی پلکس توسط میکروکنترلر و نحوه برنامه نویسی میکروکنترلر باید به ترتیب مراحل زیر عمل کنیم.
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 |
Porta = &B01011011 Portb = &B11111110 Waitms 1 Porta = &B00000000 Portb = &B11111111 Waitus 50 Porta = &B00111111 Portb = &B11111101 Waitms 1 Porta = &B00000000 Portb = &B11111111 Waitus 50 Porta = &B00110000 Portb = &B11111011 Waitms 1 Porta = &B00000000 Portb = &B11111111 Waitus 50 Porta = &B01100110 Portb = &B11110111 Waitms 1 Porta = &B00000000 Portb = &B11111111 Waitus 50 |
حال تنها کافیست تا برنامه نوشته شده را در یک حلقه DO و LOOP قرار دهید. تا عدد 2014 را بر روی سون سگمنت مولتی پلکس به صورت کامل مشاهده نمائید. (شکل زیر)
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 |
$regfile = "M32def.dat" $crystal = 8000000 Config Porta = Output Config Portb = Output Do Porta = &B01011011 Portb = &B11111110 Waitms 1 Porta = &B00000000 Portb = &B11111111 Waitus 50 Porta = &B00111111 Portb = &B11111101 Waitms 1 Porta = &B00000000 Portb = &B11111111 Waitus 50 Porta = &B00110000 Portb = &B11111011 Waitms 1 Porta = &B00000000 Portb = &B11111111 Waitus 50 Porta = &B01100110 Portb = &B11110111 Waitms 1 Porta = &B00000000 Portb = &B11111111 Waitus 50 Loop End 'end program |
نقشه شماتیک پروژه ساخت چراغ راهنمایی
برنامه میکروکنترلر در محیط نرم افزار Bascom AVR
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 |
$regfile = "m32def.dat" $crystal = 1000000 Dim A As Byte , B As Byte , C As Byte , M As Byte , H As Byte Config Porta = Output Config Portb = Output Config Portc = Output Config Portd = Output M = 15 Main: Set Porta.2 Set Porta.3 Do Portb = 33 Reset Porta.2 Gosub 5 Portb = 34 Wait 3 Set Porta.2 Portb = 12 Reset Porta.3 Gosub 5 Portb = 20 Wait 3 Set Porta.3 Loop End 5: A = M Do Gosub 6 Wait 1 If A = 0 Then Exit Do Decr A Loop Return 6: B = A / 10 C = B * 10 C = A - C Portd = Lookup(b , Dta) Portc = Lookup(c , Dta) Return Dta: Data 63 , 6 , 91 , 79 , 102 , 109 , 125 , 7 , 127 , 111 |
توجه : از آنجا فیوز بیت JTAG بر روی PORTC میکروکنترلر ATmega32 قرار دارد و به صورت پیش فرض فعال می باشد, و ما نیز در این پروژه از پورت C میکروکنترلر استفاده کرده ایم, به همین خاطر در هنگام پروگرام کردن میکروکنترلر ATmega32 حتما فیوز بیت JTAG را غیر فعال نمائید.
سلام خسته نباشید ببخشید پروژه چراغ راهنمایی که داخل سایت هست برا چراغ دو زمانه هست یا چهار زمانه؟
سلام دوست عزیز
این پروژه یک چراغ راهنمایی و رانندگی دو زمانه می باشد
سلام ممنونم از پروژه خوب شما