در این پست از سایت اِمیک, ما نحوه راه اندازی یک سون سگمنت 4 تایی (seven segment 4 digit) را با استفاده از میکروکنترلر AVR یاد خواهیم گرفت. قبلا پستی در مورد راه اندازی سون سگمنت قرار داده بودم که در ان پست با سون سگمنت های تکی و انواع ان اشنا شدیم که توصیه می کنم اگر با سون سگمنت ها اشنا نیستید, ابتدا ان پست را مطالعه کنید و در ادامه به سراغ این پست بیاید. برای مشاهده پست راه اندازی سون سگمنت تکی اینجا کلیک کنید.
ابتدا بهتر است که با سون سگمنت 4 تایی (4 دیجیت) اشنا شویم. در زیر تصویری از این سون سگمنت که قصد راه اندازی ان را داریم, مشاهده می کنید:
این سون سگمنت دارای 12 پایه می باشد که ترتیب پایه های ان بصورت زیر است:
همانطور که می دانید یک سون سگمنت تکی از 7 عدد LED تشکیل شده که در تصویر بالا با حروف A تا G مشخص شده اند. گاهی اوقات یک LED هشتم نیز در سون سگمنت وجود دارد که به ان DP (نقطه) می گویند و زمانی که دو یا چند سون سگمنت کنار هم قرار می گیرند, کاربرد دارد.
سون سگمنت 4 رقمی از چهار عدد سون سگمنت در کنار یکدیگر تشکیل شده است که طبق تصویر بالا پایه های مشترک هر کدام از سون سگمنت ها با D1,D2,D3,D4 مشخص شده است که بر اساس اینکه سون سگمنت ما از نوع اند مشترک است یا کاتد مشترک, باید این پایه ها را به مثبت تغذیه یا منفی تغذیه (GND) متصل کنیم. پایه های A تا G نیز مشخص شده اند که باز هم بر اساس اینکه سون سگمنت ما از چه نوعی هست, با دادن مقادیر مناسب به این پایه ها می توانیم ارقام مورد نظر خود را روی سون سگمنت نمایش دهیم. پایه نقطه یا DP نیز پایه 3 سون سگمنت می باشد.
در سون سگمنت 4 تایی پایه های غیرمشترک سون سگمنت ها یعنی پایه های A,B,C,D,E,F,G,DP به هم متصل شده است یعنی به عنوان مثال پایه A هر چهار سون سگمنت به هم وصل شده است و یا پایه D هر چهار سون سگمنت به هم وصل است و در واقع پایه A که در تصویر بالا مشاهده می کنید مربوط به هر چهار سون سگمنت است. برای نمایش یک عدد, شما باید با استفاده از پایه های مشترک یعنی D1,D2,D3,D4 سون سگمنت مورد نظر خود را فعال کنید و با دادن مقادیر مناسب به پایه های A تا G اعداد مورد نظر خود را روی سون سگمنت نمایش دهید.
به عنوان مثال در صورتی که سون سگمنت ما از نوع اند مشترک باشد برای نمایش عدد 4 روی سون سگمنت سوم, باید پایه D3 را به مثبت تغذیه (ولتاژ تغذیه سون سگمنت حدود 3.5 ولت است) و پایه های مشترک دیگر یعنی D1 و D2 و D4 را به GND متصل کنیم. در این حالت سون سگمنت سوم فعال شده و سه سون سگمنت دیگر غیرفعال هستند. طبق تصویر زیر پایه های B,C,F,G به GND و دیگر پایه ها (A,D,E,DP) نیز به مثبت تغذیه متصل می شوند. در این شرایط عدد 4 روی سون سگمنت سوم نمایش داده می شود.
پروژه راه اندازی سون سگمنت 4 تایی با میکروکنترلر AVR :
در این پروژه ما از یک سون سگمنت 4 تایی اند مشترک استفاده می کنیم. عملکرد این پروژه به این صورت است که ما اعداد 1 تا 4 را به ترتیب روی سون سگمنت های اول تا چهارم نمایش می دهیم. در انتهای مطلب می توانید کلیپ تست عملی پروژه را مشاهده کنید.
همانطور که مشاهده می کنید در این پروژه ما از میکروکنترلر ATmega16 به همراه یک سون سگمنت 4 تایی اند مشترک استفاده کرده ایم. بجز میکروکنترلر و سون سگمنت از تعدادی مقاومت و ترانزیستور هم استفاده شده که در ادامه دلیل ان را می گویم.
همانطور که در بالا گفته شد ولتاژ تغذیه سون سگمنت حدود 3.5 ولت است. بنابراین ما نباید بطور مستقیم سون سگمنت را به میکرو که دارای ولتاژ خروجی 5 ولت است متصل کنیم. به همین منظور پایه های A تا G (همچنین پایه DP) توسط مقاومتهای 330 اهم به میکرو متصل شده اند. از 4 عدد ترانزیستور هم برای راه اندازی سون سگمنت های 1 تا 4 استفاده شده است, از انجایی که جریان خروجی پایه های میکرو محدود است از ترانزیستور در حالت سوئیچینگ برای درایو کردن سون سگمنت ها استفاده شده است.
ولتاژ تغذیه این پروژه هم 5 ولت هست, دقت کنید که محلی در شماتیک که با VCC مشخص شده را باید به مثبت تغذیه متصل کنید و پایه های تغذیه میکروکنترلر (پایه 10 و 11) را که در شماتیک بالا نیست, فراموش نکنید به تغذیه 5 ولت متصل کنید.
برنامه کدویژن:
در این پروژه فرکانس میکروکنترلر 1 مگاهرتز تنظیم شده است. در زیر برنامه نوشته شده به زبان C و کامپایلر کدویژن را مشاهده می کنید:
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 |
////////// WWW.EMIC.IR ////////// #include <mega16.h> //معرفي کتابخانه ميکروکنترلر مگا 16// #include <delay.h> //delay معرفي کتابخانه// void main(void) { unsigned char seg[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //معرفي يک ارايه داراي 10 عضو که شامل معادل هگز اعداد 0 تا 9 براي سون سگمنت اند مشترک مي باشد// //ميکروکنترلر را براي اتصال به سون سگمنت خروجي مي کنند C دستورات زير پورت// DDRC=(1<<DDC7) | (1<<DDC6) | (1<<DDC5) | (1<<DDC4) | (1<<DDC3) | (1<<DDC2) | (1<<DDC1) | (1<<DDC0); PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0); //ميکروکنترلر را براي اتصال به سون سگمنت خروجي مي کنند D دستورات زير پورت// DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (1<<DDD3) | (1<<DDD2) | (1<<DDD1) | (1<<DDD0); PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0); while (1) { PORTD=0b00000001; //فعال کردن سون سگمنت اول// PORTC=seg[1]; //نمايش عدد 1 روي سون سگمنت// delay_ms(1000); //ايجاد 1000 ميلي ثانيه يا 1 ثانيه تاخير// PORTD=0b00000010; //فعال کردن سون سگمنت دوم// PORTC=seg[2]; //نمايش عدد 2 روي سون سگمنت// delay_ms(1000); //ايجاد 1000 ميلي ثانيه يا 1 ثانيه تاخير// PORTD=0b00000100; //فعال کردن سون سگمنت سوم// PORTC=seg[3]; //نمايش عدد 3 روي سون سگمنت// delay_ms(1000); //ايجاد 1000 ميلي ثانيه يا 1 ثانيه تاخير// PORTD=0b00001000; //فعال کردن سون سگمنت چهارم// PORTC=seg[4]; //نمايش عدد 4 روي سون سگمنت// delay_ms(1000); //ايجاد 1000 ميلي ثانيه يا 1 ثانيه تاخير// } } |
توضیحات قسمت های مهم برنامه نوشته شده, اگر سوالی داشتید می تونید در قسمت نظرات مطرح کنید. فایل های کدویژن و شبیه سازی پروتئوس را هم می تونید از انتهای مطلب دانلود کنید.
کلیپ تست عملی پروژه :
پسورد فایل زیپ : www.emic.ir
نظر یادتون نره…
سلام میشه اینو کمک کنین
برنامه ای بنویسید که روی یک سون سگمنت چهار رقمی،ثانیه شمار و دقیقه شمار به صورت زیر نمایش داده شود
45.55
در مقدار بالا عدد ۴۵ نشان دهنده دقیقه و عدد ۵۵ نشان دهنده ثانیه است و بین این دو عدد یک نقطه اعشار قرار می گیرد.
ابتدا زمان از 00.00 شروع شود و هر یک ثانیه به مقدار ثانیه شمار یکی اضافه شود و پس از ۵۹ ثانیه یک واحد به دقیقه شمار اضافه شود.
سلام وقت بخیر اگر بخواهیم ورودی را از کاربر بگیریم چه کاری باید انجام بدیم ؟
سلام.به گمانم یه اشتباهی در ترانزیستور ها وجود داره. آخه بیس داره با ۵ ولت تحریک میشه و در این صورت نمیتونه ولتاژ مثبت را سوییچ کنه
سلام, ترانزیستورها NPN هستند و مشکلی وجود ندارد
سلام
ترانزیستورها اشتباه قرار نگرفتن؟ چونکه باید کلکتور به پایه سون سگمنت وصل باشه و امیتر به مثبت تغذیه؟
سلام
خیر دوست عزیز, کلکتور ورودی جریان و امیتر خروجی جریان می باشد و در نتیجه کلکتور باید به مثبت تغذیه متصل باشد.
سلام من وقتی تو یکی از سونسگمنتها ممیز رو فعال می کنم بهم می ریزه عدد ان سون سگمنت از دستور زیر استفاده می کنم 0x80 علاوه بر عدد خودش این چه شکلی انجام میشه ممنون توضیح بدید
حسن
سلام, برای فعال کردن ممیز در سون سگمنت اند مشترک باید پایه DP را صفر کنید. در خط 7 برنامه می توانید ارایه ای که شامل معادل هگز اعداد 0 تا 9 است را تغییر دهید و پایه DP را صفر کنید تا نقطه یا ممیز نیز روشن شود.
گاهی هم یک سون سگمنت خیلی سریع خاموش و روشن میشه در حدی که معلوم نمیشه که روشن شده
سلام
من از سون سگمنت 15011BS استفاده میکنم هر برنامه که میدم خروحی یا 0 نشون میده یا 8
مثلا در برنامه بالا همه رو 8 نشون میده
مشکلش چیه؟
با سلام
اگر ترانزیستورها نباشند، مشکلی در مدار پیش می آید؟
سلام, ترانزیستور حتما باید استفاده بشه و دلیلشم در توضیحات گفته شده