سلام دوست عزیز
خیلی خوش اومدی :happy:
خوب این سگمنتهای 4 تایی یا 6 تایی یا 8 تایی بر اساس تکنیک مالتی پکسینگ کار میکنند
یعنی شما هر لحظه اطلاعات مورد نظر خود را مثلاً از چهار تا پایه پورت P1 میکرو کنترلر به دکودر 7447
( برای کاتد مشترک ) می فرستید و دکودر بعد از دکود کردن اطلاعات اعداد را بر روی پایه های a تا g سگمنتها
قرار میدهد و شما با استفاده از چهار تا پایه دیگر پورت P1 در هر لحظه فقط آند یک سگمنت را به Vcc وصل میکنید
( فرض بر آند مشترک بودن ) حال بر تکیه بر خطای دید انسان و انتخاب هر سون سگمنت در یک لحظه عدد مورد
نظر را بر روی سون سگمنت مورد نظر نشان میدهیم به عکس زیر نگاه کن من در این مدار با استفاده از پورت P1 میکرو و یک دکودر 7447 و یک سگمنت چهار تایی آند مشترک عدد 1234 را بر روی سگمنتها نشان داده ام
همون طور که رو عکس نوشتم برای تامین جریان سگمنتها باید از چهار تا ترازیستور استفاده کنی برای هر سگمنت یکی تا جریان مورد نیاز از طریق ترازیستورها تامین بشه چون میکرو نمیتونه این جران رو تامین کنه و آسیب می بینه
خروجی میکرو رو به بیس ترازیستور میزنی و کلکتور ترازیستور رو به Vcc و امیتر رو به آند سگمنت وصل میکنی البته یک مقاوت یک کیلو به بیس و یک مقاومت یک کیلو به امیتر وصل میکنی که مقاومت امیتر بستگی به نور سگمنتها داره این مدار ترازیستوری رو برای هر چهار تا سگمنت تکرار میکنی
برنامه اسمبلی رو هم در زیر مشاهده میکنی :
PHP:
$MOD51
ORG 0H
MAIN:
MOV P1,#01H
SETB P1.4
CALL DELAY
MOV P1,#02H
SETB P1.5
CALL DELAY
MOV P1,#03H
SETB P1.6
CALL DELAY
MOV P1,#04H
SETB P1.7
CALL DELAY
JMP MAIN
DELAY:
MOV R0,#0FH
LOOP2:
MOV R1,#0FFH
LOOP1:
DJNZ R1,LOOP1
DJNZ R0,LOOP2
RET
END
توضیحات برنامه :
برای نوشتن عدد 1 در سگمنت SEG 1 باید معادل هگز عدد 1 با طول هشت بیت یعنی 01H رو در روی پورت P1
بنویسی و بلافاصله پایه آند اون سگمنت رو که در اینجا به پایه P1.4 وصل شده یک کنی
برای نوشتن عدد 2 در سگمنت SEG 2 باید معادل هگز عدد 3 با طول هشت بیت یعنی 02H رو در روی پورت P1
بنویسی و بلافاصله پایه آند اون سگمنت رو که در اینجا به پایه P1.5 وصل شده یک کنی
برای نوشتن عدد 3 در سگمنت SEG 3 باید معادل هگز عدد 3 با طول هشت بیت یعنی 03H رو در روی پورت P1
بنویسی و بلافاصله پایه آند اون سگمنت رو که در اینجا به پایه P1.6 وصل شده یک کنی
برای نوشتن عدد 4 در سگمنت SEG 4 باید معادل هگز عدد 4 با طول هشت بیت یعنی 04H رو در روی پورت P1
بنویسی و بلافاصله پایه آند اون سگمنت رو که در اینجا به پایه P1.7 وصل شده یک کنی
البته بین فاصله نوشتن هر عدد در روی پورت باید یک تاخیر کوچولو ایجاد کنی تا میکرو قاط نزنه
این تاخیر در برنامه با ساب روتین DEALY ایجاد شده که بین نوشتن هر عدد فراخوانی میشه
در آخر هم باید برنامه رو در یک حلقه بسته قرار بدی تا همیشه عدد 1234 در خروجی نمایش داده بشه
اگه سوالی برات پیش اومد بگو جواب بدم :happy: