پنج شنبه , ۲۷ تیر ۱۳۹۸
آخرین مطالب
LINK TABLES
خانه | میکروکنترلر | ادوات جانبی | راه اندازی سون سگمنت با میکروکنترلر AVR

راه اندازی سون سگمنت با میکروکنترلر AVR

با سلام خدمت دوستان عزیز، با پروژه ای دیگه از مجموعه پروژه های آموزشی در خدمتتون هستم. این بار میخوایم با AVR سون سگمنت راه اندازی کنیم. شاید بپرسید سون سگمنت چیه؟ خب جوابتون رو در ادامه دادم. شاید بپرسید چطوره میشه این کار رو کرد؟ باز هم در ادامه ی مطلب به جواب سوالتون خواهید رسید. پس بیشتر از این منتظرتون نمیذارم.

فقط یه چیز دیگه بگم و اون هم این که مطالبی که باید از قبل بلد باشین رو قبلا توی پست برنامه ریزی پورت ها و همچنین پست منابع وقفه یاد دادیم.

 

سون سگمنت چیست؟

امروزه سون سگمنت جزء رایج ترین نمایشگرهای موجود در بازار است چرا که ارزان است ؛ برنامه ریزی آن آسان بوده و از لحاظ اندازه هم قطعه ای کوچک می باشد. سون سگمنت ها در ساعت های دیجیتال، شمارنده ها و دیگر وسایل الکترونیکی جهت نمایش اطلاعات عددی مورد استفاده قرار می گیرند. همانطور که از اسم آن پیداست سون سگمنت دارای هفت قطعه دیود نوری می باشد که به فرمی مستطیلی مانند چیده شده اند. هر LED یک سگمنت یا قطعه نامیده می شود چون با روشن شدن هر قطعه، آن قطعه در تشکیل شکل عدد مورد نمایش شرکت می کند. یک قطعه ی دیود نوری هشتم هم وجود دارد که نقطه اعشاری را معین می کند.

سون سگمنت

دیود نوری به زبان ساده

LED یا دیود نوری یک قطعه ی ساده ی الکترونیکی است که هنگامی که جریان الکتریکی از آن می گذرد از خودش نور ساطع می کند. دیود نوری نیز مانند همه ی دیودهای دیگر دارای دو سر آند (مثبت) و کاتد (منفی) است. به طوری که فقط جریانی را هدایت می کند که طرف مثبت ولتاژ به سمت آند و جهت منفی ولتاژ به سمت کاتد متصل باشد.  یعنی جریان از آند به سمت کاتد جاری شود. LED هایی که برای کاربردهای عمومی مورد استفاده قرار می گیرند برای روشن شدن نیاز به جریانی در حدود ۷۵ میلی آمپر و یا کمتر دارند تا روشن شوند. به همین دلیل برای محدود کردن جریان از مقاومت هم استفاده می شود. در میکروکنترلر AVR جریانی که هر پین پشتیبانی می کند در حدود ۲۰ میلی آمپر است. پس می توان با حذف مقاومت یک LED را به طور مستقیم توسط میکروکنترلر روشن کرد. در واقع اگر مقاومتی اضافه شود شدت نور LED کم می شود. در شکل زیر یک LED به طور صحیح راه اندازی شده است.

LED

چیدمان سون سگمنت

همانطور که در شکل زیر نمایش داده شده است هفت LED موجود در سون سگمنت با حروف A، B، C، D، E، F و G برچسب گذاری می شوند. البته بعضی از سون سگمنت ها دارای یک  LED دیگر نیز برای نمایش ممیز اعشاری (dp) هستند که در شکل با حرف H نمایش داده شده است.

چیدمان سون سگمنت

سون سگمنت ها برای نمایش ارقام عددی مورد استفاده قرار می گیرند. شکل زیر نشان می دهد که برای نمایش اعداد ۱ و ۲ و ۳ و ۴ و ۵ و ۶ کدام LEDها باید روشن شوند. رقم های دیگر (۷ و ۸ و ۹ و ۰) نیز با روشن کردن LEDهای مناسب قابل نمایش می باشند:

۷seg- 1to6

یک سون سگمنت همچنین برای نمایش بعضی از حروف انگلیسی نیز قابل استفاده است. شکل زیر نشان می دهد که برای نمایش حروف A، F، H، L و P کدام LEDها باید روشن شوند:

۷seg- LtoP

 در انیمیشن زیر نحوه ی نمایش اعداد و حروف بهتر نشان داده شده است:

۷seg-animation

 

انواع سون سگمنت

در بازار دو نوع سون سگمنت وجود دارد:

۱) کاتد مشترک: در سون سگمنت کاتد مشترک سر منفی یا کاتد تمامی LED ها از داخل به پایه ی مشترک متصل شده اند که  باید به زمین وصل شود. به منظور روشن کردن LED مورد نظر نیاز است تا  ولتاژ +۵ ولت به قطب مثبت و یا آند آن LED اعمال شود، و در صورت نیاز یک مقاومت محدودکننده ی جریان نیز به قطب مثبت متصل گردد.

۲) آند مشترک: در سون سگمنت آند مشترک سرهای مثبت یا آند همه ی LEDها از داخل به پایه ی مشترک سون سگمنت متصل شده اند که باید به منبع ولتاژ +۵ ولت وصل گردد. جهت روشن کردن یک LED باید پین مربوط به کاتد آن را به زمین متصل نمود.

common anode/cathode

سون سگمنت ها در اندازه های مختلف ۰٫۲۸ ، ۰٫۳، ۰٫۳۲، ۰٫۳۶، ۰٫۳۹، ۰٫۴، ۰٫۵، ۰٫۵۶، ۰٫۶، ۰٫۸، ۱٫۰، ۱٫۲، ۱٫۵، ۱٫۸، ۲٫۰، ۲٫۳، ۳٫۰، ۴٫۰، ۵٫۰ و ۷٫۰ اینچی در بازار موجود هستند. همچنین در رنگ های مختلف قرمز، سبز، زرد، نارنجی، آبی و سفید عرضه می گردند.

پیکربندی پایه های سون سگمنت:

برای استفاده کردن از سون سگمنت نیاز است تا نحوه ی چیدمان پایه های آن را دانست. همانطور که احتمالا حدس زده اید این نمایشگرها باید ۹ پین داشته باشند (یکی برای هر قطعه LED، ممیز اعشار و پایه ی مشترک) اما ماژول های موجود در بازار دارای دو پایه ی مشترک هستند که از داخل هم به هم متصل می باشند. بنابراین در نهایت هر سون سگمنت دارای ۱۰ پایه می باشد. شکل زیر چینش پایه های یک سون سگمنت را نشان می دهد.

۷seg-configuration

راه اندازی سون سگمنت با میکروکنترلر AVR:

۱) راه اندازی مستقیم: در راه اندازی مستقیم ۸ پایهی سون سگمنت را به هشت پایه ی خروجی از میکروکنترلر متصل می کنیم. همچنین باید بدانیم که مثلا برای نمایش عدد ۵ کدام LEDها باید روشن شوند و سپس پایه های مربوط به آن LEDها را یک کنیم. به همین دلیل نیاز به یک جدول درستی داریم.

جدول درستی برای نمایش ارقام ۰ تا ۹ و حروف قابل نمایش:

برای نمایش اعداد صفر تا ۹ بر روی یک سون سگمنت کافی است تا هفت پین مربوط به اعداد و یک پین نقطه ی اعشاری را برنامه نویسی کنیم. برای این کار از جدول زیر استفاده می شود. این جدول مربوط به سون سگمنت کاتد مشترک است. برای سون سگمنت آند مشترک کافی است همه ی صفرها را به یک و همه ی یک ها را به صفر تغییر دهیم. ۷seg- truth table

نحوه ی اتصال به میکروکنترلر:

بسته به این که جدول درستی چگونه تنظیم شده باشد نحوه ی اتصال به میکروکنترلر هم متفاوت خواهد بود. اگر کدهای هگز جدول درستی برای ترتیب ABCDEFGH پایه های سون سگمنت نوشته شده باشند، پایه ی A به PIN.7 پورت میکرو و به همین ترتیب پایه ی H  به PIN.0 پورت میکرو متصل می شود. ولی اگر جدول درستی برای ترتیب HGFEDCBA نوشته شده باشد باید PIN.0 پورت به پایه ی A متصل گردد و به همین ترتیب PIN.7 به پایه ی H وصل شود. در این جا حالت دوم به کار گرفته شده است.

برنامه ریزی میکرکنترلر برای شمارنده ی تک رقمی سون سگمنت:

در این پروژه قصد داریم یک شمارنده ی تک رقمی با سون سگمنت طراحی، برنامه نویسی و شبیه سازی کنیم. هشت پایه از پورت A میکروکنترلر ATmega16 را به هشت پایه ی سون سگمنت متصل می نماییم. با توجه به این که از جدولی استفاده می کنیم که قبلا نیز آمد، باید پایه ی PINA.0 را به پایه ی A از سون سگمنت و به همین ترتیب پایه ی PINA.7 میکرو را به پایه ی H وصل کنیم. البته در این جا نقطه ی اعشار همیشه خاموش می ماند. یک میکروسوئیچ به پایه ی INT0 وصل می شود. در ابتدا سون سگمنت عدد ۰ را به حالت چشمک زن نشان می دهد. در صورتی که میکروسوئیچ فشرده شود شمارنده از ۰ تا ۹ را شمرده و دوباره به حالت چشمک زن برمی گردد.

برنامه ی این پروژه را به زبان C و در محیط کدویژن می نویسیم:

 

همان طور که مشاهده می شود جدول درستی را به صورت یک آرایه به نام x تعریف کرده ایم. که خانه ی صفر آن کد هگز مربوط به نمایش عدد ۰، خانه ی ۱ آن کد هگز مربوط به نمایش عدد ۱ و …. را در خود جا داده است. با توجه به این که می خواهیم برای کار با کلید از وقفه ی خارجی INT0 استفاده کنیم، ابتدا پرچم وقفه ی عمومی و وقفه ی خارجی INT0 را فعال می نماییم. با توجه به این که سطح حساس این وقفه به طور پیش فرض سطح صفر است کلید را به نحوی قرار می دهیم که با فشرده شدن آن به پایه ی INT0 مقدار صفر اعمال شود. تابع اصلی شامل یک حلقه ی while است که در آن کد هگز مربوط به عدد صفر بر روی پورت A قرار داده می شود تا سون سگمنت صفر را نشان دهد. پس از ۵۰ میلی ثانیه تاخیر مقدار صفر را بر روی پورت A قرار می دهیم تا سون سگمنت خاموش شود و باز هم به مدت ۵۰ میلی ثانیه صبر می کنیم. با تکرار حلقه ی While سون سگمنت عدد صفر را به صورت چشمک زن نمایش می دهد. با فشرده شدن کلید برنامه وارد زیر روال وقفه ی INT0 می شود که در آن اعداد ۰ تا ۹ با فاصله های زمانی ۵۰ میلی ثانیه ای در یک حلقه ی for بر روی  سون سگمنت نمایش داده می شود. پس از آن برنامه از روال خارج گشته و باز هم سون سگمنت به حالت چشمک زن در می آید.

شبیه سازی این برنامه در محیط Proteus انجام شده است و در عکس زیر قابل مشاهده می باشد:

ssd-simultn

۲) راه اندازی با استفاده از آی سی های راه انداز:

استفاده از آس سی های راه انداز مبدل BCD به سون سگمنت کار را ساده تر می کند؛ تعداد خطوط برنامه نویسی را کاهش می دهد؛ تعداد پایه های مورد نیاز در میکرو را کاهش می دهد و نیاز به کد کردن به صورت دستی را رفع می نماید.

کد BCD چیست؟

در نمایش اعداد دهدهی برای هر رقم یک کد بایری ۴ بیتی در نظر می گیریم که به صورت جدول زیر است:

BCD

مزیت bcd آن است که همان عدد مبنای ده خودمان است که با یک و صفر بیان شده است (از یک طرف مبنای ده است از یک طرف باینری) مثلاً عدد ۵۹۶۴ به bcd می شود: ۰۱۰۰-۰۱۱۰-۱۰۰۱-۰۱۰۱ نتیجتاً در ورودی کلیدها و یا خروجی صفحه نمایش مدارات میکروپروسسوری و جایی که میخواهیم با کاربر انسانی تعامل داشته باشیم از BCD استفاده می کنیم.

مبدل های BCD به ۷-segment آی سی های ۷۴۴۷ (برای سون سگمنت آند مشترک) و ۷۴۴۸ (برای سون سگمنت کاتد مشترک) می باشند، که عدد ۰ تا ۹ را به صورت کد BCD دریافت نموده و پس از کد کردن آن ها هفت بیت مورد نظر را به سون سگمنت می دهند تا عدد دریافت شده را نمایش دهد.

برنامه ی زیر اصلاح شده ی برنامه ی قبل است که برای راه اندازی سون سگمنت آند مشترک با استفاده از آی سی ۷۴۴۷ نوشته شده است:

همان طور که مشاهده می شود اینجا دیگر نیاز به استفاده از جدول نیست و مستقیما مقدار دهدهی مورد نظر را روی پورت می ریزیم. همچنین برای این که سون سگمنت به طور کامل خاموش شود کافی است مقدار F هگز را به آی سی بدهیم.

 شبیه سازی این برنامه در محیط Proteus انجام شده است و در عکس زیر قابل مشاهده می باشد:

۷۴۴۷-simultn

فایل های هر دو روش راه اندازی شامل فایل C، فایل hex و فایل شبیه سازی پروتئوس را از لینک پایین صفحه دانلود نمایید.

مالتی پلکس کردن سون سگمنت ها:

گاهی نیاز داریم که چند سون سگمنت را توسط یک پورت مقدار دهی کنیم. به عبارت دیگر با یک پورت یک عدد چند رقمی را با سون سگمنت هایی نمایش دهیم. به این کار مالتی پلکس کردن سون سگمنت ها گفته می شود. یک نمونه از پروژه ای که در قسمت پروژه های سایت قرار داده ایم و در آن از سون سگمنت مالتی پلکس استفاده می شود را در شکل زیر می بینید:

پروژه تایمر معکوس

برای یادگیری اصول این کار به پست «پروژه تایمر معکوس با سون سگمنت مالتی پلکس» مراجعه فرمایید. در این پست با سون سگمنت مالتی پلکس به خوبی آشنا خواهید شد.

فایل های مربوط به راه اندازی سون سگمنت را از طریق لینک زیر دانلود نمایید:
پسورد فایل زیپ: www.microlearn.ir

دانلود فایل پروژه سون سگمنت

امیدوارم که این پست براتون مفید بوده باشه. با مجموعه ی میکرولرن همراه باشین تا مطالب جدیدتر و جالب تر آتی رو از دست ندین.

درباره ی مجتبی حکیمیان

کارشناس الکترونیک و کارشناس ارشد مخابرات سیستم | زمینه ی تحقیقاتی : پردازش تصویر و تعقیب اشیاء متحرک |‌فعال در حوزه ی الکترونیک مبتنی بر میکروکنترلر | برنامه نویس و طراح بردهای الکترونیکی مبتنی بر میکروکنترلر

۴۸ دیدگاه

  1. لینک مشکل داره

  2. سلام
    ممنون از اطلاعات مفیدتون
    یک سوال
    در واقعیت که بخوایم سون سگمنت راه اندازی کنیم
    خروجی ۷۴۴۷ می تونیم عین مداری که در پروتئوس می بندیم مستقیم به سون سگمنت ببندیم؟
    مقاومت یا ترانزیستور نمی خواد؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

  3. سلام
    خیلی ممنون از آموزش های خوبتون. واقعا مفید هستند و کمک زیادی به یادگیری میکنن
    یه سوال
    با ۷۴۴۷ و یا ۷۴۴۸ چطور میشه اعداد ۱۰ تا ۱۵ (اعداد بیشتر از ۹) رو نشون داد؟

  4. سلام میشه برنامه شمارنده ۰تا۹
    برنامه cشو تو کدویژن برام بفرستین
    بعد چجوری سون سگمنتو تو avr فعال کنیم

  5. سلام خسته نباشی من می خواستم یک شمارنده چهار رقمی راه بندازم ولی هر کار می کنم نمیشه .لطفا اگر می تونید کمکم کنید

  6. سلام مهندس متشکرم از مطالب خوب وبسایتتون یک سوال داشتم
    من ات مگا ۱۶ را پروگرام کردم برای اینکه اعداد ۱تا ۹ را نمایش بده(سون سگمنتش ۱دونه ای هست)
    ولتاژ مثبت و منفیشا وصل کردم پورت cرا هم خروجی کردم فقط نمیدونم چطوری پایه های سون سگمنت را به میکرو وصل کنم اگه میشه توضیح دهید
    با تشکر

  7. با سلام
    میخواستم بدونم اگه همون برنامه ضمیمه شده با ای سی ۷۴۴۸ بخوایم بنویسیم چه فرقی نسبت به برنامه با ای سی ۷۴۴۷ میکنه؟

    • سلام
      قاعدتا برنامه هیچ فرقی نمیکنه، اما چرا؟ چون ما توی برنامه کد BCD تحویل آی سی میدیم و هردو آی سی ۷۴۴۷ و ۷۴۴۸ ورودی های مورد نیازشون کدهای BCD هست.
      پس تفاوتشون چیه؟ تفاوتشون توی خروجی هاشونه. خروجی آی سی ۷۴۴۷ برای سون سگمنت آند مشترک هست و خروجی آی سی ۷۴۴۸ برای سون سگمنت کاتد مشترک. پس در صورتی که از آی سی ۷۴۴۷ استفاده می کنین مدار رو مثل مثال بالا ببندین. ولی اگه از آی سی ۷۴۴۸ استفاده کردین باید از سون سگمنت کاتد مشترک هم استفاده کنین و پایه ی مشترک سون سگمنت رو این بار به زمین وصل کنین.
      در خدمتم

  8. جان من زود جواب بدید.. برنامه ای می خوام که بصورت دستی فرمان بدم یک تا نه بشمره مثلا با یه کلید صعودی بشمره و با یه کلید نزولی ..هر جا که پرسیدم جوابم درست ندادن

    • سلام دوست عزیز
      متاسفانه من الان فرصت نوشتن برنامه رو ندارم
      با من تماس بگیرین تا از محدودیت زمانیتون باخبر شم، شاید فرصت کردم در مدتی که میخواین براتون بنویسمش
      تلگرام: M_Heyran@
      ایمیل: mojtaba_hakimian@yahoo.com

  9. سلام

    من یه سون سگمنت ۳ تایی با نور قرمز (قرمز معمولی نیست و سوپر برایت هست) با کد ۳۲۰۵۶۱k دارم که اگر توی گوگل سرچ کنید دیتاشیت مربوط به اون هم موجود هست..

    سون سگمنت کاتد مشترک هست و همه ی پایه های مثبت رو با یه مقاومت ۲۲۰ سری کردم و به ولتاژ ۵ ولت با جریان ۲۰ میلی وصل کردم ولی نور نمایشگر خیلی کم هست طوری که توی محیط داخلی در طول روز یا با چراغ روشن اصلا قابل خوندن نیست!!

    البته این مشکل برای عدد ۱ وجود نداره ولی بقیه اعداد از ۲ تا ۹ و ۰ همه این مشکل کم نور بودن براشون پیش میاد…

    بنظرتون مشکل از کجاست؟

    • سلام به شما
      مشکلی که شما باهاش روبه رو هستید مربوط به کمبود جریان هست. شما دارید جریان رو از میکرو می گیرید و میکرو نمی تونه جریان رو برای شما تامین کنه و به همین دلیل کم نور میشه. بهترین کار اینه که از سون سکمنت آند مشترک استفاده کنید تا از میکرو جریان نکشید. این که فقط برای عدد ۱ پرنور هست. چون در این حالت کم ترین تعداد LED روشن میشه و جریان کافی وجود داره.

      • خیلی ممنون از راهنمایی تون

        یعنی برای اینکه هر سگمنت روشن بشه (توی آند مشترک) چون پایه میکرو مثبت هست و ما منفی می خوایم باید بهش ۰ منطقی بدم تا روشن بشه؟؟

        ضمنا مگه جهت حقیقی جریان از منفی به مثبت نیست؟:)) یعنی حداکثر جریان از سمت منفی حساب نمیشه؟

        • بله درسته. باید صفر بدید.جهت جریان کلا قراردادیه و از مثبت به منفی توافق شده.دراین حالت میکرو تامین کننده جریان نیست.

  10. سلام نمیشه با atmega 8 درستش کنیم؟؟؟

    • سلام
      اگه منظورت اینه که فقط نوع میکروکنترلر رو عوض کنیم، نه مشکلی نداره. البته یه توصیه خارج از این پست. وقتی میخوای کد را روی یه میکروی دیگه پیاده سازی کنی باید حواست باشه که توی میکروی بعدی تمام امکاناتی که در میکروی اول ازش استفاده کردی وجود داره یا نه.

  11. سلام
    اموزشهای بیسک خبری نیست

    • سلام
      البته قصد داریم که آموزش های بیسیک رو هم شروع کنیم ولی با توجه به نظر سنجی هایی که از طریق قسمت «نظرسنجی سی ثانیه ای» در سایت انجام شده، آموزش های مبتنی بر زبان سی دارای خواهان بسیار بیشتریه. به همین دلیل فعلا تکیه بر آموززش های مبتنی بر زبان سی هست. ولی مطمئنا پس از اتمام این آموزش ها، به زبان بیسیک و بسکام AVR نیز خواهیم پرداخت. اما دوست من، این که دقیقا بتونم بگم چه زمانی میشه امکانش نیست. موفق باشین.

  12. با عرض سلام
    من این مدار را روی برد برد میبندم ولی جواب نمیگیرم اگر امکان دارد راهنمایی کنید

    • سلام
      پیدا کردن عیب یک مدار میکروکنترلر به این صورت مشکله ولی چند تایی سوال می پرسم ازتون، انشالا که مشکلتون رو بتونم حل کنم.
      ۱- مشکلتون دقیقا چیه؟ خروجی مدارتون رو دقیقا توصیف کنین
      ۲- کدوم مدار رو بستین؟ راه اندازی مستقیم؟ یا راه اندازی با آی سی؟
      ۳- برنامه ای که نوشتین همون برنامه ی ارایه شده هست؟ یا خودتون نوشتین؟
      ۴- وقت بستن مدار پایه های ال سی دی رو به درستی تنظیم کردین؟ کنتراست ال سی دی رو طبق مطالبی که در کامنت های قبل گفتم، تنظیم کردین؟

  13. با سلام و تشکر
    آیا امکانش هست که برنامه تحت کدویژن این مثال رو برای من بفرستید
    برنامه ای که در آن ۲ عدد سون سگمنت وجود دارد و یک عدد میکروسوپیچ . با شروع به کار برنامه عدد ۱ بر روی یکی از سون سگمنت ها و عدد ۹ بر روی سون سگمنت دیگر نمایش داده شود . با هربار فشردن میکروسوپیچ یک واحد از عدد ۹ کاسته و یک واحد به عدد ۱ افزوده گردد. بعد از رسیدن عدد سون سگمنت ها به صورت برعکس ۱ و ۹ همین روندتکرار شود .در فرم نرم افزار proteus
    من هر جوری مینویسم یجای کار باز ایراد داره لطفا شما کمک کنید
    ممنون میشم

  14. با سلام خدمت مهندس محترم
    میخواستم بدونم برای برنامه نویسی دو سون سگمنت تکی که یکیش از صفر تا نه و دیگری از نه تا صفر بصورت همزمان شروع به شمارش کنند باید چه کاری انجامداد
    با تشکر

    • درود به شما
      شما دو تا سون سگمنت دارید که دقیقا مخالف جهت هم دیگه دارند شمارش انجام می دند. هر کدوم را باید به یک پورت جداگونه وصل کنید. حالا می تونید از کدهای مستقیم سون سگمنت استفاده کنید یا از ای سی هایی مثلا ۷۴۴۷ سر راه سون سگمنت ها استفاده کنید. در حالت اول شما یک آرایه خواهید داشت که کدها داخل اون ذخیره شده و در حالت دوم شما فقط باید اعداد ۰ تا ۹ را به پورت بفرستید.
      یک حلقه تعریف کنید که یک متغیر “افزایشی” داره (از ۰ تا ۹) و از این متغیر برای نمایش اعداد شمارش به بالا استفاده کنید. همزمان یک متغیر دیگه هم داخل خود حلقه باید داشته باشید (متغیر اصلی حلقه نیست) که از مقدار ۹ تا ۰ کم میشه و برای نماش اعداد شمارش به پایین استفاده می شه. این توضیح الگوریتم بود. شروع کنید به نوشتن برنامه که یکمی هم ریزه کاری اونجا داره و خودتون به سادگی میتونید بنویسیدش.

  15. سلام خسته نباشید…میخواستم بدونم میشه تو مداری ک از سون سگمنت آند مشترک استفاده شده،جاش از کاتد مشترک استفاده بشه؟امکانش هست؟ممنون میشم راهنمایی کنید چطور میتونم اینکارو بکنم

    • سلام به شما 🙂
      فرق راه اندازی سون سگمنت آند مشترک و کاتد مشترک در اینه که سر مشترک در آند مشترک باید به VCC وصل بشه و سر مشترک در کاتد مشترک باید به GND وصل بشه. البته نوع کدهایی که برای نمایش اعداد به کاتد مشترک یا آند مشترک می فرستید هم با هم فرق دارند. پس برای اینکه از کاتد مشترک استفاده کنید دو کار انجام بدید. یک: سر مشترک را به زمین وصل کنید. دو: کدهای ارسالی به سون سگمنت را مطابق کاتد مشترک عوض کنید.

  16. سلام استاد
    بااشتیاق مطالب رادنبال میکنم و بی صبرانه منتظراموزش های شمامیمانم

  17. سلام
    لطفا حافظه ایپرام برای ۷سگمنت بازبان بیسیک یادبدین
    خیلی متشکرم

    • سلام
      انشالله در آینده قرار بر این هست که آموزش های میکروکنترلر به زبان بیسیک رو هم در سایت قرار بدیم.
      مطالب سایت رو دنبال کنید.
      در خدمتیم.

  18. سلام
    ممنون از مطالبتون

    • سلام
      خواهش می کنم. امیدواریم که سایت بتونه برای مخاطبین مفید باشه.
      فیدبک های شما ما رو به ادامه ی کار ترغیب می کنه.

  19. مرسی مهندس ، جوابها مفید و استادانه بود ولی متاسفانه من مبندی هستم . مهندس وقت کردین ایمیلت را چک کن .سپاس

  20. ممنونم مهندس عزیز . مجبت کردین راهنمایی فرمودین. با سپاس

  21. شرمنده یک موردی به ذهنم رسید ، احتمالا از روش parallel کردن دو پورت استفاده کرده بوده ! مثلا پایه ای که ترسیم خط ان روی پی سی بی مشکل داشته را با یک پورت دیگه که کاری انجام نمیداده و مسیر خط کشی اش کوتاه و سرراست بوده را با هم موازی کرده .ایا به نظر شما این روش دخیل بوده ؟با تشکر

    • البته من توی جواب دیروز هم خدمتتون عرض کردم که میشه این کار رو کرد. یعنی برای هر عدد دو تا کدهگز به دست آورد و برای نمایش یه عدد دو تا کد داشت. یکی از کدها رو به یه پورت و کد دیگه رو به پورت بعدی داد. این کار در صورتی که از پین های دیگه ی پورت ها استفاده نشده باشه راحته. ولی اگه از پین ها دیگه استفاده شده باشه برای این که تحت تاثیر این مقدار دهی ها قرار نگیرن باید کارهایی رو کرد که کمی پیچیده میشه.
      پس در صورتی که از بقیه ی پین های هر دو پورت استفاده ی دیگه ای نمیشه میتونی برای هر عدد دو تا کد به دست بیاری.
      ولی من باز هم همون روش نوشتن تابع و استفاده از کدهای هگز قبلی رو ترجیح میدم.

  22. با سلام مجدد و تشکر از لطف شما ، خسته نباشید: این کار را روی یک pcb دیدم و خیلی مفید بود چرا ؟ چون با این شگرد طول خطوط و مسیر انها واقعا کم شده بود و پی سی بی را با ابعاد کوچکتری درست کرده بود . من هم همان مدار را درست کرده ام ولی پی سی بی مال من خیلی بزرگتره و روی پی سی بی دیدم اگر اینجوری پایه ها را وصل کنم ، ابعاد پی سی بی را میتوان کوچکتر کرد . نهایتا جای پایه های a تا g را بصورت دلخواه به یک پورت وصل کردم و کد ها را بصورت تصادفی دراوردم ولی خیلی وقت گیره ، همچنین دنبال شگرد a تا g را به دو پورت متفاوت کردن بودم و هر کاری کردم نشد ولی این کار را روی همین پی سی بی دیدم صورت گرفته بود ، اگر این کار را هم یاد می گرفتم خیلی مفید بود.نمیشه یک نرم افزار تهیه کرد که این کارها را انجام بده ؟ چنین نرم افزاری توی نت نیست ولی خیلی ها فکر کنم بصورت خصوصی دارند. با تشکر فراوان

    • سلام
      خواهش می کنم، لطف که نه من وظیفه ی خودم میدونم
      راه حلی که به ذهن من میرسه خیلی هم سخت نیست. نیاز نیست که بیایید و کدها رو دوباره محاسبه کنید. از همون کدهای رایج هم میشه استفاده کرد. اما چطور؟
      مثلا فرض کن که روی همون مداری که عکسش رو ارسال کردی میخوایم یه عددی رو نمایش بدیم. در حالتی که همه پین ها به ترتیب روی یه پورت بود که مستقیم کدهگز رو روی پورت می ریختیم. اما اینبار باید کد هگز رو بیت به بیت جدا کنیم و هر بیت رو جداگونه به یه پین بدیم. این کار رو با نوشتن یه تابع انجامش بده.
      این تابع باید ابتدا بیت ۰ رو تشخیص بده. اگه یک بود “۱” رو روی پین PB.0 بریزه. اگه صفر بود “۰” رو روی پین PB.0 بریزه. و به همین ترتیب هر ۸ بیت رو تشخیص بده و مقداری که باید رو روی پین مربوطه ش بریزه. به عنوان مثال بیت ۵ رو که تشخیص داد، روی ۵٫PD بریزه.
      با این ترفند میشه از همون کدهای هگز سابق هم استفاده کرد و زحمت محاسبه ی کدهگز جدید رفع میشه.

  23. سلام مهندس خسته نباشید : شرمنده وقتی ترتیب وصل شدن پایه های a تا g سون سگمنت به میکرو را تغییر می دهیم، کد های هگزی که قبلا برای اعداد ۰ تا ۹ بدست اورده بودیم همه بهم میخوره و سون سگمنت درهم بر هم نشان میده . میخوام پایه های a تا g را به ترتیب وصل نکنم ، همچنین نمیخوام همه پایه های a تا g را به یک پورت وصل کنم (مثلا این تصویر ). http://uupload.ir/files/mpfe_12.jpg

    حالا کد هگز مربوط به اعداد برای سون سگمنت را چطوری بدست بیاورم.

    با تشکر. اگر نرم افزاری هم هست خواهشا معرفی نمایید.

    • سلام
      ممنونم.
      بله همین طوره. اگه ترتیب چینش پایه ها رو عوض کنین یا از چند پورت استفاده کنین کدها میریزه به هم. البته بگم که این کار اصلا توصیه نمیشه چون اصلا لزومی به این کار نیست. اگه به چینش سخت افزاری پین های میکروکنترلر هم توجه کنین می بینین که پین های مربوط به یک پورت کنار هم قرار دارن. برای همین به دلیل سادگی برنامه نویسی و همچنین سادگی طراحی pcb و یا بستن مدار، سعی کنین از یه پورت استفاده کنین.
      حالا فرض کنیم که به هردلیلی شما قصد دارین که مثل شکلی که قرار دادین اقدام کنین. در این صورت چون از دو تا پورت استفاده کردید دیگه پیدا کردن یک کد برای یک عدد خاص معنایی نداره، چون دیگه یه پورت ندارین که با دادن یه کد به خروجی اون پورت عدد مورد نظرتون به نمایش در بیاد. در این حالت شما باید حساب کنین که برای نمایش عددی خاص هر پین چه مقداری رو اختیار کنه. مثلا در شکلی که قرار دادین برای نمایش عدد هفت و با فرض کاتدمشترک بودن سون سگمنت باید PB.0 و PB.1 و PD.4 یک بشن و بقیه هم صفر. برای این کار دیگه نمیتونین از یه کد استفاده کنین چون باید یه مقدار رو به پورت B و یه مقدار هم به پورت D بدین. البته این کار غیر ممکن نیست. میشه مثلا برای هر عدد دو تا کد پیدا کرد که یکی از کدها مربوط به پورت B و اون یکی مربوط به پورت D باشه. برای مقدار دهی هم دو تا پورت رو مقدار داد. یا مثلا از همون کدهای قبلی استفاده کنین اما بیت های مختلف رو از کدها بکشین بیرون و به پین های مربوطه بدین. اما این کارها و کارهای مشابه عیب های زیادی داره. اول پیچوندن لقمه به دور سر. چون کار پیچیده و تعداد خط برنامه زیاد و حجم برنامه زیاد و سرعت اجرا کند میشه. دوم این که بقیه ی پین های این دو تا پورت هم تحت تاثیر مقدار دهی های شما قرار می گیرن و برای فرار از این امر هم باز کار پیچیده می شه. و خلاصه مشکلات و باگ های زیادی دامن گیرت میشه. برای همین اصلا این کار توصیه نمیشه و اصولی هم نیست. اصلا دلیل شما برای این کار چیه؟
      اگه یه برنامه ی خوب میخواین برای تولید کد هگز سون سگمنت روی لینک زیر کلیک کنید، البته بگم که این کدها مربوط به یه پورت میشن. که استاندارد این کار هم همینه.
      http://microlearn.ir/wp-content/uploads/2016/05/02.5-SetupLed7SegmentEditor.zip
      منتظر جوابت هستم.

  24. سلام
    خسته نباشید
    اگه بخوایم چند عدد رو روی یک پورت نمایش بدیم چی
    مثلا ۴۳ رو بخوایم نمایش بدیم. یا مثلا ۱۴۸ رو ( دو یا سه رقمی ) توسط پایه های Enable
    اگه میشه در بسکام توضیح بدین من c بلد نیستم

    • سلام
      ممنونم
      دقیقا قدم بعد در راه اندازی سون سگمنت، راه اندازی چند سون سگمنت به وسیله ی یه پورته. یا همون طور که خودتون هم گفتین نمایش چند عدد با یک پورت. به این کار میگن مالتی پلکس سون سگمنت.
      در مورد مالتی پلکس سون سگمنت در لینک زیر توضیح داده م که اصولش چی هست و برنامه نویسی اون رو هم به طور مفصل شرح داده م:
      http://microlearn.ir/3613/avr-countdown-timer.html
      در لینک بالا به وسیله ی مالتی پلکس سون سگمنت یک تایمر معکوس طراحی و پیاده سازی شده.

  25. سلام اگه بخوایم برعکس بشمره چیکار باید بکنیم؟
    ممنون

    • سلام
      برای برعکس شمردن کافیه که توی برنامه تون مقادیری که به سون سگمنت میدین از ۹ شروع و به صفر ختم بشه.
      اگه دارید مستقیما سون سگمنت رو درایو می کنید، باید مقادیری که در متغیر x تعریف کردیم رو برعکس بذارید داخلش:

      unsigned char x[]={0x67,0x7f,0x07,0x7d,0x6d,0x66,0x4f,0x5b,0x06,0x3f}; // for reverse counting

      اگه دارید با درایور سون سگمنت رو راه اندازی می کنید، باید داخل حلقه ی for کاری کنید که اول مقدار ۹ رو به آی سی بدین:

      for(i=0;i<۱۰;i++) // 1
      }
      PORTA=9-i; // reverse
      delay_ms(40); // 4
      {

      • سلام،امکانش هست همین برنامه راه اندازی سون سگمنت رو با بسکام بنویسیدش؟؟؟

        • سلام دوست عزیز
          همان طوری که دوستم مجتبی هم اشاره کردن فعلا تمرکز گروه میکرولرن بر آموزش های زبان C هست اما در آینده به زبان بیسیک هم خواهیم پرداخت.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *