عکس پیش‌فرض نوشته

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

برنامه شمارنده صعودی 0 تا 9 و نمایش آن در 7-seg

ساده ترین نمایشگر شامل LED های نورانی هستند که فقط بودن یا نبودن (روشن و خاموش) یک حالت را بیان می کنند و به طور کلی دارای 2 حالت هستند.

نماشگرهای بعدی نمایشگر های 7 قسمتی یا 7-Seg می باشند که قابلیت نمایش اعداد و برخی از حروف انگلیسی را دارند و با کنار هم قرار دادن آن ها می توان نمایشگرهای بزرگتری ساخت. این نمایشگرهای خود از LED های نورانی تشکیل شده اند که به صورت منظم کنار یکدیگر قرار گرفته و 7-Seg را می سازند.

نمایشگرهای بعد از 7-Seg نمایشگرهای کارکتری هستند که قابلیت نمایش تمامی حروف انگلیسی را دارند.

و دیگر نمایشگرهایی که قابلیت گرافیکی دارند و یا رنگی هستند و ….

در کل تعداد نمایشگرهایی که در بازار وجود دارند زیاد هستند که ما در این مطلب می خواهیم با نمایشگر 7-Seg کار کنیم و آن را توسط میکرو AVR با زبان Bascom راه اندازی نماییم.

برای این کار ما نیاز به یک 7-Seg و یک میکرو (به طور مثال ATmega32) داریم.

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

 

ابتدا باید سخت افزار بسته شود و مشخص کنیم که 7-Seg به کدام پورت متصل است.

همانطور که می دانید 7-Seg دارای هفت ال ای دی (LED) اصلی و یک LED برای نمایش اعشار می باشد. در اینجا ما از هفت LED اصلی استفاده می کنیم.

خود 7-Seg ها دارای دو مدل کاتد مشترک و آند مشترک هستند که ما از کاتد مشترک استفاده می کنیم.

همچنین می دانیم 7-Seg کاتد مشترک دارای یک پایه مشترک منفی می باشد و پایه های مثبت هفت قسمت دیگر دست ما هستند و با یک کردن یا همان مثبت دادن می توان آنها را روشن کرد.

حال باید 7-Seg را به میکرو متصل کرد. برای این کار ما 7-Seg را به پورت B متصل می کنیم به این صورت که پایه a نمایشگر به PortB.0 و به همین ترتیب پایه g نمایشگر به PortB.6 میکرو متصل می کنیم.

 

برنامه نویسی شمارنده در AVR

یک سری از دستورات در برنامه نویسی برای پیکربندی استفاده می شود (دستورات زیر)

$regfile="m32def.dat"
$crystal=8000000
Config PortB=OUTPUT

و یک سری از دستورات برای تعریف متغیر

Dim x as Byte
X = 0

بدنه اصلی برنامه

Do
   PortB=lookup(x,dta)
   Incr x
   Wait 1

   If x > 9 Then
      X = 0
   End If
Loop
End

و در نهایت جدول دیتا خروجی

dta:
Data &B00111111, &B00000110, &B01011011, &B01001111, &B01100110, &B01101101, &B01111101, &B00000111, &B01111111, &B01101111

 

در قسمت پیکر بندی ابتدا نوع میکرو تعریف شده است و بعد از آن فرکانس کاری میکرو باید تعیین شود و در نهایت پورتی از میکرو که به 7-Seg متصل می شود را باید به عنوان خروجی تعریف نمود.

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

در قسمت بدنه اصلی برنامه، ابتدا یک حلقه بی نهایت با Do …. Loop ایجاد می کنیم که برنامه به صورت مداوم تکرار شود.

در داخل حلقه ابتدا مقدار متغیر را به جدول انتهای برنامه ارسال می کنیم تا دیتای خروجی (یا همان عدد) که باید در خروجی نمایش دهد را دریافت کنیم و بر روی پورت B نمایش دهیم. به طور کلی برای نمایش اعداد و یا هر متنی بر روی 7-Seg باید یک جدول در انتهای برنامه (بعد از دستور END) ایجاد کنیم و اعداد و متن هایی که لازم داریم را مقداردهی کنیم.

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

البته !!!!!

با توجه به اینکه نمایشگر ما فقط می تواند یک رقم را نشان دهد پس فقط باید اعداد بین 0 تا 9 را در برنامه داشته باشیم و به دلیل اینکه متغیر را از نوع بایت تعریف کرده ایم، مقدار آن تا می تواند بین 0 تا 255 باشد، پس باید یک دستور شرطی در برنامه اضافه کنیم که اگر مقدار متغیر از 9 بیشتر شد (یعنی 10 و بالاتر) مقدار متغیر را به صفر باز گرداند.

 

در قسمت جدول دیتای خروجی، همانطور که گفته شد باید دیتاهای اعداد 0 تا 9 را بنویسیم. به طور مثال عبارت &B00000110 عدد یک را نشان می دهد.(اگر در مورد دیتای خروجی سوالی داشتید در بخش نظرات بپرسید…)