ساعت در چهار سون سگمنت تکی به روش مولتی پلکس

با سلام خدمت دوستان

چون درخواست در مورد این  پروژه  زیاد بود  گذاشتم اینجا  که دیگران هم که احتیاج دارن استفاده کنند.

ایندفعه ساعت را در چهارسون سگمنت آند مشترک جدا از هم با استفاده از یک آیسی راه انداز سون سگمنت به شماره 7447  و 4 ترانزستور جهت سوییچ کردن ولتاژ پایه های مشترک سون سگمنت ها و یک آیسی میکرو atmega 8  >>>مزیت این روش نسبت به پروژه قبلی (ساعت در چهار سون سگمنت جدا از هم ) که در پست های قبل با آیسی میکرو atmega 16  درست کرده بودم اینه که به پورت های خروجی کمتری احتیاج داریم به همین دلیل از آیسی atmega 8 استفاده کردم در ضمن یکی دیگر از مزایای  این  است ساعت توسط سه کلید تنظیم میشود .

برای تنظیم  ساعت >>  یکبار  کلید set را فشار میدهیم تا ساعت انتخاب شود با کلید های مثبت و منفی ساعت را تنظیم کنید با دوباره فشار دادن این کلید دقیقه انتخاب میشود و با کلید های مثبت و منفی دقیقه را هم تنظیم کنید

مجدد کلید  set  را بزنید تا نقطه سون سگمنت دوم شروع به چشمک زدن بکند این نقطه نشانگر ثانیه هست 


آیسی 7447 یک آیسی راه انداز سون سگمنت هست به این صورت که ما عدد باینری را به پایه A B C D این آیسی میدهیم  که با ارزش ترین بیت آن D و کم ارزشترین بیت A هست سپس در سون سگمنت عدد برای ما نمایش داده میشود >>> مثلا اگر ما عدد باینری دو 0010 را به ورودی این آیسی بدهیم در  سون سگمنت عدد 2 روشن میشود.



نقشه پروتیوس

==========



توضیح در مورد برنامه 

===========


با دستور regfile آیسی میکرو atmega 8 را معرفی میکنیم
با دستور crystal فرکانس کاری میکرو را تنظیم میکنیم که بر حسب هرتز است
با دستور config پورت B و C را به عنوان خروجی پیکره بندی کردیم و پورت D را به عنوان ورودی پیکره بندی کردیم و
یک بیت از این پورت (portd.6 ) را به عنوان خروجی معرفی کردیم.
با دستور config clock ماژول ساعت را پیکره بندی کردیم و جلوی این دستور نوشتم gosub sectic که میکرو هر یک ثانیه
یکبار به زیر برنامه sectic پرش کرده و دستورات این زیربرنامه را انجام میدهد که این زیر برنامه را من در آخر برنامه نوشتم
باعث میشه که نقطه سون سگمنت (همون نقطه ای که در گوشه سمت راست هر سون سگمنت است DP )هر ثانیه چشمک بزنه و
ثانیه را نشان میدهد
با دستور enable interrupts وقفه سراسری را فعال میکنیم اگر این دستور را نویسی ساعت شروع بکار نمیکنه
در خط بعدش نوشتم time$="12:10:10" در اینجا میتوانید هر ساعتی که دوست داشتین داخل " " بنویسید
که میکرو وقتی شروع بکار میکند اول این ساعت را نشان میدهد.(پیش فرض)
در خط بعد با دستور alias اسم پورت ها را عوض کردم یعنی هر وقت در برنامه نوشتم dp یعنی پورت PORTD.6
بجای dp هر اسمی میتوانید بنویسید .
در خط های بعد هم همینطور
با دستور dim متغییر هایی که در برنامه احتیاج داریم معرفی میکنم اسم متغییر ها هم هر اسمی میتواند باشد
با دستور declare sub زیر برنامه ها را معرفی کردم زیر برنامه ها هم هر اسمی میتواند باشد مثلا بجای A اسمی دیگر بگذارید
در خط های بعد مقدار اولیه متغییر های O را برابر با یک قرار دادم.و متعییر V را صفر
در خط بعد یک حلقه do loop که میکرو دستورات درون این حلقه را بطور دایم اجرا میکند درون این حلقه نوشتم زیر برنامه A و B
فراخوانی کن که میکرو دایما اینکارو انجام میده.
در کل میکرو اینکارو انجام میده و هر چی درون این دو زیر برنامه بنویسیم فقط میکرو انجام میده چون فقط این دو زیر برنامه را
با دستور call فراخوانی کردیم.
زیر برنامه A مربوط میشه به کلید های ورودی که کار تنظیم ساعت را انجام میدن
از دستور Sub A تا end sub مربوط به زیر برنامه A میشود
در درون این زیر برنامه از دستورات شرط استفاده کردم if seet =0 then یعنی وقتی seet مساوی با صفر شد آنوقت seet یعنی
PIND.4 که در اول برنامه با دستور alias اسم seet گذاشتم روش
آنوقت به متغییر V یک واحد اضافه کن در خط بعدش دوباره شرط نوشتم که وقتی V برابر با 2 شد آنوقت O=0 شود
ELSE یعنی در غیر اینصورت O=1 وبا دستور End if شرطمان به پایان میرسد.

حالا کلا این زیر برنامه A میکنه ؟؟؟ وقتی ما کلید Set میدهیم به متغییر V یک واحد میشه و V صبق شرطی که براش نوشتیم
نمیتواند بیشتر از 2 شود و دوباره صفر میشود .
وقتی یکبار کلید set را فشار دهیم V=1 میشود و شرط ما که در خط های بعد نوشتیم وقتی V=1 شد آنوقت میتوانیم با کلید های مثبت
و منفی ساعت را تنظیم کنیم . در درون این شرط دوباره یک شرط دیگر نوشتم که وقتی AD=0 شد یعنی PIND.0 که در اول برنامه
اسمش را گذاشتم AD آنوقت به ساعت یک واحد اضافه کن و دوباره شرط نوشتم که وقتی ساعت بیشتر از 23 رسید آنوقت
ساعت ( _Hour ) برابر با صفر شود چون ساعت 24 ساعته است .
و با دستور call F زیر برنامه F را فراخوانی کردم که این زیر برنامه یک phri بخق next است که 25 بار تکرار میشود
این برای زمانی است که وقتی دست ما روی کلید مثبت است تا ساعت را تنظیم کنیم ساعت با سرعت زیادی تغییر نکنید اگر عدد
25 که درون این زیر برنامه است بیشتر کنیم سرعت تغییر عدد کمتر میشود و بلعکس

دستورات دیگر هم به توضیح که نوشتم هست که با کلید های که به ورودی وصل است شرط های ما اجرا میشود یعنی اگه دوباره
کلید set را بزنیم V=2 شده و دستوراتی که درون این شرط است اجرا میشه
توجه با دستور End if شرطی که نوشتیم به پایان میرسه
نکته incr یک واحد به متغییر اضافه میکنه و دستور decr یک واحد از متغییر کم میکنه
مثال وقتی کلید مثبت را فشار میدهیم با دستور incr یک واحد به ساعت اضافه میشه و وقتی کلید منفی را میزنیم با دستور decr یک
واحد از ساعت کم میشه.

کار زیر برنامه B
توجه: در ابتدای برنامه C را به comm عوض کردم و پورت B به را به datport

عدد باینری 1000را در خروجی پورت C ظاهر میکند که این عمل باعٍث میشود پایه مشترک سون سگمنت اول از سمت راست یک شود
وقتی پایه مشترک یک شد آن وقت ما میتوانیم عددی در آن نمایش دهیم چون اگر صفر باشد سون سگمنت بطور کامل خاموش میشود
حالا پایه مشترک یک شده چه عددی را نمایش میدهد ؟؟؟؟؟؟یعنی الان فقط یک سون سگمنت روشن هست.
وما فقط میتوانیم یکی از اعداد ساعت را نمایش دهیم مثلا ساعت 12:10 است فقط ما میتوانیم یا یک یا دو ساعت یا یک یا صفر دقیقه
در خروجی پورت B ظاهر کنیم که این عدد در سون سگمنت روشن شود.
خوب چون سون سگمنت اول از سمت راست را روشن کردم پس یکی عدد دقیقه را باید در خروجی ظاهر کنم
برای اینکار با دستور _min mod یکان این عدد جدا میشود یعنی صفر و در متغییر dat ریخته میشود و بعد از آن با دستور
call refresh زیر برنامه refresh فراخوانی میشود در درون این زیر برنامه پورت خروجی B برابر با متغییر dat میشود
که dat طبق همین مثال الان صفر است پس در سون سگمنت اول از سمت راست عدد صفر نمایش داده میشود .
در سون سگمنت های بعدی هم طبق همین دستورات عمل میشود
یعنی در خط بعد عدد باینری 0100 در خروجی C ظاهر میشود و اینبارپایه مشترک سون سگمنت دوم از سمت راست یک میشود و
ما دقیقه را تقسیم بر 10 میکنیم تا دهگان آن بدست بیاید که وقتی 10/10 شود میشود یک با دستور call refresh زیر برنامه
refresh فراخوانی میشود و اینبار عدد یک در خروجی B ظاهر میشود و در سون سگمنت دوم از سمت راست عدد یک
روشن میشود.
توجه توجه توجه : از بس این عمل سریع تکرار میشود ما فکر میکنیم که همزمان همه سون سگمنت ها روشن است در صورتی که
اینطور نیست و میکرو یکی یکی آنها را روشن میکند و عدد که ما تعیین کردیم را درون آنها نشان میدهد امیدوارم که خوب درک
کرده باشین اگر کم وکاستی بود منو ببخشین.
وقتی میکرو در هر جای برنامه به دستور end sub میرسد به حلقه do loop بر میگردد. و به زیر برنامه A رفته و دستورات درون
این زیربرنامه را اجرا میکند و وقتی به دستور end sub رسید یعنی برگرد به درون حلقه و وقتی به درون حلقه برگشت دستورات
زیر برنامه B را هم اجرا میکند و وقتی به end sub این زیر برنامه رسید برمیگردد به درون حلقه این عمل بطور دایم تکرار میشود

درباره سخت افزار هم بگم که چیزی نداره همه سون سگمنت ها آند مشترک هستند فلش هایی که به سمت بیرون هستند خروجی
هستند و فلش های که به سمت داخل هستند ورودی
مثلا وقتی جلوی فلش خروجی نوشته شده A یعنی این پایه از اینجا خارج و به همه فلش هایی که به سمت داخل هستند و جلوش
نوشته شده A وصل است.
در مورد بقیه پایه ها هم همینطور
به خاطر اینکه سیم کشی هامون زیاد شده از input output استفاده کردم که منظم تر باشه
همون فلش ها اگر به سمت خارج باشد یعنی output اگر به سمت داخل باشد یعنی input .
در مورد ترانزیستور ها
وقتی بیس آنها یک میشود سوئچ کرده و ولتاژ مثبت به پایه مشترک سون سگمنت ها وصل میشود وظیفه این ترانزیستور کمک کردن
به آیسی میکرو هست که جریان زیادی از پورت های میکرو کشیده نشود .




برنامه

============


 



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



                                    >>>>>>>>>   موفق باشین <<<<<<<<<<


مطالب مشابه :


دانلود ساعت دیجیتالی دقیق با سون سگمنت با قابلیت تنظیم توسط 3 کلید

دانلود ساعت دیجیتالی دقیق با سون سگمنت با میشود >یعنی ساعت select شد و شما با




ساعت ديجيتال با سون سگمنت

دنیای الکترونیک - ساعت ديجيتال با سون سگمنت - پروژه ها و مدارات الکترونیکی ,ميكرو كنترلر و




ساخت ساعت دیجیتال با AVRو سون سگمنت

با استفاده از یک میکرو کنترلر (avr (atmega8l و سون سگمنت آند مشترک شما میتوانید یک ساعت دیجیتال




ساعت و دما در یک سون سگمنت 4تایی (time temp)

در حالت پیش فرض سون سگمنت ساعت را نشان میدهد » شمارنده صعودی و نزولی 0 تا 99 با سون سگمنت




ساعت در چهار سون سگمنت تکی به روش مولتی پلکس

(ساعت در چهار سون سگمنت جدا مثبت است تا ساعت را تنظیم کنیم ساعت با سرعت زیادی




اتصال سون سگمنت ( 7segment ) به میکرو

اتصال سون سگمنت » پروژه ساعت و تاریخ شمسی با DS1307 ( سه شنبه هفتم آذر ۱۳۹۱ ) CopyRight © 2011




ساعت و دما در یک سون سگمنت 4تایی (time temp)

دوبار فشردن همین کلید سون سگمنت ساعت را ساعت را تنظیم کنید با دوبار فشردن کلید set




تابلو سون سگمنتی نمایش تاریخ ساعت کانتر

دانلود پروژه ساعت دیجیتال با سون » شمارنده صعودی و نزولی 0 تا 99 با سون سگمنت آند




ساعت با avr و سون سگمنت مالتي پلكس

ساعت با avr و سون سگمنت مالتي پلكس خدمت تمامی دوستان دانلود از اينجا +




برچسب :