در ابتدای آموزش شمارنده، به معرفی مختصری در مورد سون سگمنت میپردازیم.
سون سگمنت چیست؟
سون سگمنت قطعهای است که معمولاً به عنوان نمایشگر اعداد (از 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
حال برنامه را درپروتئوس روی میکرو میریزیم و نحوه کار را در ویدئو زیر ببینید.