آموزش راه اندازی سون سگمنت (Seven Segment) با بسکام (Bascom)


Notice: A non well formed numeric value encountered in /home/admin/domains/justeducation.ir/public_html/static/www/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 118

Notice: A non well formed numeric value encountered in /home/admin/domains/justeducation.ir/public_html/static/www/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 119

Notice: A non well formed numeric value encountered in /home/admin/domains/justeducation.ir/public_html/static/www/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 118

Notice: A non well formed numeric value encountered in /home/admin/domains/justeducation.ir/public_html/static/www/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 119

Notice: A non well formed numeric value encountered in /home/admin/domains/justeducation.ir/public_html/static/www/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 118

Notice: A non well formed numeric value encountered in /home/admin/domains/justeducation.ir/public_html/static/www/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 119

Notice: A non well formed numeric value encountered in /home/admin/domains/justeducation.ir/public_html/static/www/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 118

Notice: A non well formed numeric value encountered in /home/admin/domains/justeducation.ir/public_html/static/www/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 119

Notice: A non well formed numeric value encountered in /home/admin/domains/justeducation.ir/public_html/static/www/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 118

Notice: A non well formed numeric value encountered in /home/admin/domains/justeducation.ir/public_html/static/www/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 119

Notice: A non well formed numeric value encountered in /home/admin/domains/justeducation.ir/public_html/static/www/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 118

Notice: A non well formed numeric value encountered in /home/admin/domains/justeducation.ir/public_html/static/www/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 119

Notice: A non well formed numeric value encountered in /home/admin/domains/justeducation.ir/public_html/static/www/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 118

Notice: A non well formed numeric value encountered in /home/admin/domains/justeducation.ir/public_html/static/www/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 119

Notice: A non well formed numeric value encountered in /home/admin/domains/justeducation.ir/public_html/static/www/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 118

Notice: A non well formed numeric value encountered in /home/admin/domains/justeducation.ir/public_html/static/www/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 119

Notice: A non well formed numeric value encountered in /home/admin/domains/justeducation.ir/public_html/static/www/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 118

Notice: A non well formed numeric value encountered in /home/admin/domains/justeducation.ir/public_html/static/www/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 119

Notice: A non well formed numeric value encountered in /home/admin/domains/justeducation.ir/public_html/static/www/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 118

Notice: A non well formed numeric value encountered in /home/admin/domains/justeducation.ir/public_html/static/www/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 119

در این پست شما طریقه راه اندازی نمایشگرهای سون سگمنت ها توسط میکروکنترلرها به زبان بیسیک و با استفاده از نرم افزار محبوب Bascom، آموزش می بینید.

مقدمه

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

نمایشگر هفت قسمتی برای نشان دادن اعداد در ساعتهای دیجیتالی، چراغ راهنما، ماشین حساب، ترازوی دیجیتالی و … از یک قطعه الکترونیکی به نام Seven-Segment یا هفت قسمتی استفاده می کنند؛ که اغلب به رنگ های سبز و قرمز هستند. ساختار این قطعه الکترونیکی از هفت LED (دیود نورانی) تشکیل شده است و با روشن یا خاموش کردن این LED‌ها می توان اعداد را به نمایش گذاشت.

تقسیم بندی و انواع سون سگمنت ها

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

سون سگمنت آند مشترک

سون سگمنتی که پایه مشترک آن مثبت باشد، به آن آند مشترک گویند که این به این معنی است که پایه های مثبت LEDهای درون سون سگمنت به هم مشترک و یا اتصال داده شده اند و می توان با کنترل پایه های منفی این سون سگمنت ها که با حروف a, b, c, d, e, f, g نمایش داده شده اند، اعداد دلخواه را روی سون سگمنت ها نمایش دهیم. برای یادگیری و فهم بهتر تصویر زیر را مشاهده نمایید:

شکل (۱)

سون سگمنت کاتد مشترک

سون سگمنتی که پایه مشترک آن منفی باشد، به آن کاتد مشترک گویند که این به این معنی است که پایه های منفی LEDهای درون سون سگمنت به هم مشترک و یا اتصال داده شده اند و می توان با کنترل پایه های مثبت این سون سگمنت ها، اعداد دلخواه را روی سون سگمنت ها نمایش دهیم. برای یادگیری و فهم بهتر تصویر زیر را مشاهده نمایید:

شکل (۲)

نمایش اعداد بر روی سون سگمنت ها چگونه انجام می شود؟

گاهی می خواهیم تنها یک سون سگمنت را راه اندازی کنیم که این کاری بسیار ساده است و می توان پورت های سون سگمنت (a, b, c, d, e, f, g) را به راحتی به یک پورت از میکرو وصل کرد (شکل ۳) ولی وقتی بیش از یک سون سگمنت را بخواهیم راه اندازی کنیم، به دلیل محدود بودن پایه های میکروکنترلر، نمی توانیم هر کدام از مجموعه پایه های نامشترک سون سگمنت را به پورت مجزایی از میکروکنترلر متصل کنیم. (شکل ۴) راه حلی که برای رفع این مشکل می توان ارائه داد به این صورت است که ابتدا در یک بازه زمانی بسیار کوتاه، سون سگمنت مربوط به اولین عدد روشن شود و عدد مشخص شده خودش را نمایش دهد و بعد از این کار، این سون سگمنت خاموش شود و سپس سون سگمنت دوم روشن شود و عدد تعیین شده برای خودش را نمایش دهد و دوباره خاموش گردد و به همین ترتیب ادامه خواهد یافت.

شکل (۳)
شکل (۴)

لذا کاری که می توان انجام داد این است که پایه های نامشترک سون سگمنت ها را به هم وصل کنیم و همه این پایه ها را به یک پورت از میکروکنترلر اتصال دهیم. بر خلاف این امر، پایه های مشترک (Com) هر سون سگمنت را به یک پایه مجزا از میکروکنترلر متصل کنیم. (شکل ۵) (توجه شود تمامی سون سگمنت ها از نوع آند مشترک هستند.)

شکل (۵)

قسمت کدنویسی

۱٫ بعد از تعیین میکروکنترلر مورد استفاده و فرکانس کریستال، پورت های خروجی را مشخص می کنیم که همان پورت هایی هستند که به سون سگمنت ها متصل می شوند. در اینجا پورت A برای کنترل قسمت های a – b – c – d – e – f – g، و پورت B برای کنترل پایه های آند سون سگمنت ها به کار می رود.

۲٫ پایه های آند هر سون سگمنت را مشخص می کنیم و به آن ها یک نام می دهیم تا فرایند برنامه نویسی آسان شود.

۳٫ متغیرهای موردنیاز در برنامه را تعریف می کنیم.

متغیرهای زیر از این جهت بازه بندی شده اند که در فرایند برنامه نویسی گیج نشده و کدنویسی ما منظم تر جلوه دهد. خط اول مربوط به اعدادی هستند که می خواهیم به هر سون سگمنت دهیم تا آن را نمایش دهد. خط دوم مربوط به متغیرهایی است که در فرایند برنامه نویسی از آن ها بطور موقت و کمکی استفاده می شود. (در محاسبات که در قسمت های پایینی توضیح داده می شود.)

۴٫ پس از ایجاد حلقه Do – Loop، حال نوبت به محاسبات می رسد. برای اینکه یک عدد را به ارقام تشکیل دهنده اش تبدیل کنیم، بایستی از توابع باقی مانده (Mod)، تقسیم صحیح (\) و یا تقسیم معمولی (/) کمک بگیریم. این کار را برای یادگیری بهتر با ارائه یک مثال توضیح می دهیم.

برای مثال می خواهیم ارقام عدد ۱۷ را محاسبه کنیم. برای محاسبه رقم یکان، باید باقی مانده تقسیم این عدد بر ۱۰ را محاسبه کنیم که همان رقم یکان می شود. برای محاسبه رقم دهگان، عدد ۱۷ را بر ۱۰ تقسیم صحیح می کنیم. (تقسیم صحیح آن است که اگر بر عددی بخش پذیر نباشد، تنها قسمت صحیح خارج قسمت را در نظر می گیرد و از قسمت اعشاری آن صرف نظر می کند.) با این کار، عدد ۱ بدست می آید که همان رقم دهگان این عدد است.

حال مثال را سخت تر میکنیم و عدد ۲۰۱۷ را در نظر می گیریم. برای اینکه این عدد بزرگ است، بایستی ابتدا رقم هزارگان این عدد را بدست آوریم و سپس ارقام بعدی را محاسبه کنیم. برای محاسبه رقم هزارگان، همانطور که در قسمت قبل گفته شد، عدد ۲۰۱۷ را بر ۱۰۰۰ تقسیم صحیح می کنیم، که عدد ۲ حاصل می شود. حال باقی مانده تقسیم عدد ۲۰۱۷ را بر ۱۰۰۰ بدست می آوریم و درون یکی از متغیرهای موقتی (Temp) قرار می دهیم تا سه رقم سمت راست عدد ۲۰۱۷ بدست آید (۰۱۷). همانطور که مشاهده می کنید ما عدد را مرحله به مرحله می شکنیم تا به رقم یکانش برسیم. حال برای محاسبه رقم صدگان این عدد (۰۱۷)، حاصل تقسیم صحیح آن را بر ۱۰۰ محاسبه میکنیم که عدد ۰ بدست می آید. سپس دوباره باقی مانده تقسیم این عدد را بر ۱۰۰ محاسبه می کنیم تا دو رقم اول عدد بدست آید (۱۷). حال طبق توضیحات بالا و مثال قبل عمل می کنیم و رقم های دهگان و یکان این عدد را نیز محاسبه می کنیم. حال این ارقام را داخل متغیرهای اصلی (Digits) قرار می دهیم.

در برنامه اصلی مایلیم عدد ۸ رقمی را بر روی ۸ عدد سون سگمنت نمایش دهیم که در قطعه کد زیر آمده است.

۵٫ حال نوبت به نمایش این اعداد بر روی سون سگمنت ها می رسد. برای اینکار باید در زمانی بسیار کوتاه (۵ میلی ثانیه و یا کمتر) هر سون سگمنت به ترتیب روشن شود و عدد مربوط به خودش را نمایش دهد و سپس خاموش شود. پس ابتدا به این صورت عمل می کنیم که سون سگمنت اول را توسط دستور Seg1 = 1 و یا Set Seg1 روشن می کنیم؛ حال باید عدد مربوط به خودش را نمایش دهد. لذا بایستی پایه های پورت A را طوری روشن یا خاموش کنیم که این عدد نمایان شود. چون سون سگمنت های موردنظر ما از نوع آند مشترک هستند، لذا باید به پایه های a – b – c و … آن ها، ولتاژ منفی دهیم (همان GND). بدیهی است اگر سون سگمنت ها از نوع کاتد مشترک بودند، می بایست ولتاژ مثبت به این پایه ها می دادیم.

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

PORTA = &B10100111

PORTA = &HA7

دو حرف اول مشکخص می کند مقدار باینری یا هگزادسیمال است. باید توجه داشته باشید که در مقادیر باینری، ترتیب بدین صورت است که مقدار اول، پایه آخر از پورت A را مشخص می کند و مقدار آخر، پایه اول آن را مشخص می کند. برای فهم بهتر، به جدول زیر توجه کنید:

PORTA = &B10100111
PORTA.7 PORTA.6 PORTA.5 PORTA.4 PORTA.3 PORTA.2 PORTA.1 PORTA.0 پایه های پورت A
۱ = روشن ۰ = خاموش ۱ = روشن ۰ = خاموش ۰ = خاموش ۱ = روشن ۱ = روشن ۱ = روشن مقدار و وضعیت

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

عدد موردنظر برای نمایش وضعیت سگمنت ها در سون سگمنت کاتد مشترک
a b c d e f g DP کد باینری کد هگزادسیمال
۰ ? ? ? ? ? ? &B00111111 &H3F
۱ ? ? &B00000110 &H06
۲ ? ? ? ? ? &B01011011 &H5B
۳ ? ? ? ? ? &B01001111 &H4F
۴ ? ? ? ? &B01100110 &H66
۵ ? ? ? ? ? &B01101101 &H6D
۶ ? ? ? ? ? ? &B01111101 &H7D
۷ ? ? ? &B00000111 &H07
۸ ? ? ? ? ? ? ? &B01111111 &H7F
۹ ? ? ? ? ? &B01101111 &H6F
عدد موردنظر برای نمایش وضعیت سگمنت ها در سون سگمنت آند مشترک
a b c d e f g DP کد باینری کد هگزادسیمال
۰ ? ? &B11000000 &HC0
۱ ? ?  ? ? ? ? &B11111001 &HF9
۲ ? ? ? &B10100100 &HA4
۳ ? ? ? &B10110000 &HB0
۴ ? ? ? ? &B10011001 &H99
۵ ? ? ? &B10010010 &H92
۶ ? ? &B10000010 &H82
۷ ? ?  ?  ? ? &B11111000 &HF8
۸ ? &B10000000 &H80
۹ ? ? ? &B10010000 &H90

حال برای ساده تر شدن کار می توانیم این اطلاعات و Data ها را در پایین برنامه در یک برچسب یا اصطلاحا Label قرار دهیم که هر وقت به این مقادیر باینری و یا هگز احتیاج داشتیم، با دادن عدد موردنظر، مقادیر باینری و یا هگزادسیمال آن را دریافت کنیم و به پورت A دهیم. برای این منظور از تابع Lookup استفاده می کنیم. ساختار این تابع به صورت زیر است:

PORTA = Lookup(عدد موردنظر, Label)

لازم به ذکر است عدد موردنظر گفته شده، Index و یا ردیف را در Data ها مشخص می کند و مقدار آن Index را بر می گرداند.

برای مثال: کد مربوط به داده ها (مخصوص سون سگمنت های به ترتیب آند مشترک و کاتد مشترک)

قطعه کد برای نمایش اعداد در این قسمت از آموزش به صورت زیر خواهد بود:

و قطعه کد مربوط به داده های سون سگمنت به صورت زیر است:

همچنین ببینید: نرم افزار محاسبه و ایجاد کد برای سون سگمنت

بخش دانلود

بخش دانلودتوضیحات

شامل موارد زیر:

  • فایل های پروژه آموزشی
  • فایل مدار شبیه سازی شده Proteus
  • سورس کد به زبان بیسیک (Bascom)

توجه: برای تهیه این آموزش زحمت فراوانی کشیده شده است؛ لذا، کپی برداری ممنوع می باشد!

آموزش راه اندازی سون سگمنت (Seven Segment) با بسکام (Bascom)
کل امتیازات: ۳ | میانگین: ۵

2
دیدگاه خود را بنویسید ...

avatar
1 تعداد دیدگاه های اصلی
1 تعداد پاسخ های داده شده به دیدگاه های اصلی
1 تعداد دنبال کنندگان این بخش
 
رفتن به دیدگاه با بیشترین رای داده شده
رفتن به داغ ترین دیدگاه در این بخش
2 تعداد نویسنده دیدگاه
مدیر سایتGOLPASAND کاربران اخیری که دیدگاه نوشتند
  عضو شدن در خبرنامه  
جدیدترین قدیمی ترین بیشترین رای ها
مطلع شدن از
GOLPASAND
کاربر
GOLPASAND

سلام مهندس خسته نباشی
میتوانی بگی چطور میشود تعداد بیشتری ۷ سگمنت مثلا ۲۴ یا حتی بیشتر را به میکرو مگا۳۲ وصل کرد اگر نمونه شبیه سازی با بسکام و پروتئوس باشه ممنون میشم