شمارنده تک رقمی با کلید افزایش و کاهش عدد

شمارنده تک رقمی با کلید افزایش و کاهش عدد

 

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

دراین پروژه میخواهیم شمارنده سون سگمنت با کلید درمحیط بسکام درست کنیم که با فشردن کلید up بالاوبافشردن کلید down پایین رود . وهرگاه به 9 برسد با زدن کلید به 0 برگردد.

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

در ابتدا به معرفی مختصری در مورد سون سگمنت می‌پردازیم. سون سگمنت قطعه ای است که معمولاً به عنوان نمایشگر اعداد (از 0 تا 9) و برخی حروف انگلیسی به کار می‌رود. همچنین قابلیت نمایش برخی نمادها مانند مساوی، سه خط  موازی و نقطه را دارد. معمولا از نقطه که در پایین قطعه در کنار سگمنت هشتم قرار دارد به عنوان ممیز استفاده می‌­شود. هم‌چنین مواردی مانند چشمک زدن، چرخش سگمنت ها و … امکان نشان دادن اطلاعات بسیاری را از طریق این قطعه فراهم می­‌کند.

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

در واقع ساختمان داخلی سون سگمنت از LED هایی تشکیل شده است که یا به صورت آند مشترک و یا به صورت کاتد مشترک به یکدیگر متصل هستند، از همین رو سون‌ سگمنت ها به دو دسته­ کاتد مشترک و آند مشترک تقسیم بندی می‌­شوند.

در کاتد مشترک سیگنال HIGH و در آند مشترک سیگنال LOW سبب روشن شدن سگمنت ها می­‌شود. برای اتصال سون سگمنت به میکروکنترلر از مقاومت برای محدود کردن جریان استفاده می‌شود. برای محاسبه این مقاومت باید مقدار افت ولتاژ روی سون سگمنت را بدانیم، که این مقدار در هر سون سگمنت متفاوت می­‌باشد.

(ولتاژ پورت – ولتاژ سگمنت) / مقاومت = جریان هر سگمنت

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

مدارپروتوس زیر را ببندید.

ما در مدار شمارنده بالا آمده ایم پورت d0 تا d7 برای سون سگمنت گذاشتیم وپورت b1 وb2 کلید up و down میگذاریم

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

 

در ابتدا به وسیله دستور ”regfile”m16.def.dat$ نوع میکروکنترلر را مشخص می­کنیم.

در ادامه نوع فرکانس کریستال مشخص می‌شود. $crystal=8000000

باید به وسلیه دستور config PORTD=output پورت B را خروجی قرار دهیم و سپس حلقه DO LOOP ایجاد شود.

بادستور Alias کلید هارا نام گذاری میکنیم.

سپس بادستور Debounce کلید هارا کنترل میکنیم.

کد های برنامه دربسکام مینویسیم وکامپایل میکنیم.

$regfile = "m16def.dat"
$crystal = 8000000

Config Portd = Output

Config Portb.1 = Input
Plas Alias Pinb.1
Config Portb.2 = Input
Lowd Alias Pinb.2

Dim Porya As Byte

Do

Portd = Lookup(porya , Tomani)

If Porya > 9 Then Porya = 0
If Porya < 0 Then Porya = 9

Debounce Plas , 0 , Plas_at , Sub
Debounce Lowd , 0 , Lowd_by , Sub

Loop

Plas_at:

Porya = Porya + 1
Return

Lowd_by:

Porya = Porya - 1

Return

End
Tomani:

Data &B00111111
Data &B00000110
Data &B01011011
Data &B01001111
Data &B01100110
Data &B01101101
Data &B01111101
Data &B00000111
Data &B01111111
Data &B01101111
Data &B01110111
Data &B01111100
Data &B00111001
Data &B01011110
Data &B01111001
Data &B01110001

حال برنامه را درپروتوس روی میکرو میریزیم و نحوه کار را در ویدئو زیر ببینید.

برای دانلود کلیک کنید

porya toomani