سلام برویچ با مرام eca
امروز تو سایت داشتم سرچ میکردم که یه مطلب ساده و در عین حال خیلی کاربردی رو توی تاپیک ها دیدم که حمید بادامی نجات عزبز و دوست خوبم حامد جعفری توضیحات کاملی در این
رابطه دادن و منم به این فکر افتادم که یه حرکتی کنم و از بیکاری مطالب رو جمع اوری و ادیت کردم و خودمم یه برنامه با بیسکام واسش نوشتم تا کامل تر یشه این مبحث
امید وارم که مورد قبول استاتید واقع بشه
سون سگمنت به روشهای مختلفی به میکروکنترلر متصل می شود. روش اول این است که کدهای 7.segment را به صورت مستقیم به 7.segment ارسال کنیم و روش دوم استفاده از IC هایی است که بدین منظور ساخته شده اند. این آی سی ها کد باینری را به کد مورد نیاز سون سگمنت تبدیل می کنند. از جمله این آی سی ها می توان به 7448 ، 7447 ، 4511, 4054 ، 4055 ، MAX7219 ،MAX7221 اشاره کرد.
عیب عمده استفاده از سون سگمنت های معمولی در این است که در صورت استفاده کردن از چندین سون سگمنت پایه های زیادی از میکروکنترلر اشغال می شود. برای رفع این مشکل باید پایه های a تا g همه 7.segment را به هم وصل کنیم و پایه های مشترک آنها را کنترل کنیم. به این نوع 7.segment ها، سون سگمنت های مالتی پلکسری اطلاق می شود. شکل زیر یک نوع سون سگمنت مالتی پلکسری4 عددی رانشان می دهد

شروع میکنیم به توضیح نمایش یک عدد(فرض عدد 1387) بر روی سون سگمنت 4 تایی: ( به شماتیکی که در بالا کشیده شده دقت کنید(
میکرو باید اول پایه کنترلری 1 رو فعال کنه و بلافاصله کدهای مربوط به عدد "1" رو بفرسته بعد بیاد 5 میلی ثانیه( حدودی) عدد یک را ثابت نگه داره. بعد از 5 میلی ثانیه میکرو باید پایه کنترلی 2 رو فعال کنه و بقیه پایه ها رو غیر فعال. الان نوبت ارسال عدد "3" که باید مثل عدد"1" 5 میلی ثانیه نمایش داده بشه. مابقی عدد ها رو هم به این صورت نمایش میدیم. در واقع هر کدوم از سون سگمنت ها در هر 20 میلی ثانیه یکبار روشن میشن و اطلاعات رو نشون میدن. ما یک حلقه بینهایت درست میکنیم و برنامه رو داخل اون قرار میدیم. چون سرعت رفلش خیلی زیاده چشم ما قادر به قطع و وصل این سون سگمنت ها نمیشه.

مثال) برنامه ای بنویسیدکه عدد 1386 را بر روی سون سگمنت مالتی پلکسری آند مشترک نمایش دهد.
در برنامه زیر ابتدا سون سگمنت اول فعال می شود و عدد 0xF9(کد عدد 1 ) به خروجی ارسال شده و به مدت 1 میلی ثانیه نمایش داده می شود سپس سون سگمنت دوم فعال شده و عدد0xb0 (کد عدد 3 ) به خروجی ارسال و به مدت 1میلی ثانیه نمایش داده می شود. به همین ترتیب اعداد 8 و6 نیز نمایش داده می شوند.
از 7447 هم می شه استفاده کرد:



این هم یه نمونه برنامه با بیسکام

اینم فایل پروتئوس ،http://www.4shared.com/file/67434300/327a4b4/7segmentt.html
و یه مقاله مختصز و مفید دیگه در این رابطه
http://www.4shared.com/file/67433958/e0cb65ac/seven_segment.html
و نسخه pdf مطالب فوق
http://www.4shared.com/file/67434539/555b3361/Segment.html
امروز تو سایت داشتم سرچ میکردم که یه مطلب ساده و در عین حال خیلی کاربردی رو توی تاپیک ها دیدم که حمید بادامی نجات عزبز و دوست خوبم حامد جعفری توضیحات کاملی در این
رابطه دادن و منم به این فکر افتادم که یه حرکتی کنم و از بیکاری مطالب رو جمع اوری و ادیت کردم و خودمم یه برنامه با بیسکام واسش نوشتم تا کامل تر یشه این مبحث
امید وارم که مورد قبول استاتید واقع بشه
سون سگمنت به روشهای مختلفی به میکروکنترلر متصل می شود. روش اول این است که کدهای 7.segment را به صورت مستقیم به 7.segment ارسال کنیم و روش دوم استفاده از IC هایی است که بدین منظور ساخته شده اند. این آی سی ها کد باینری را به کد مورد نیاز سون سگمنت تبدیل می کنند. از جمله این آی سی ها می توان به 7448 ، 7447 ، 4511, 4054 ، 4055 ، MAX7219 ،MAX7221 اشاره کرد.
عیب عمده استفاده از سون سگمنت های معمولی در این است که در صورت استفاده کردن از چندین سون سگمنت پایه های زیادی از میکروکنترلر اشغال می شود. برای رفع این مشکل باید پایه های a تا g همه 7.segment را به هم وصل کنیم و پایه های مشترک آنها را کنترل کنیم. به این نوع 7.segment ها، سون سگمنت های مالتی پلکسری اطلاق می شود. شکل زیر یک نوع سون سگمنت مالتی پلکسری4 عددی رانشان می دهد

شروع میکنیم به توضیح نمایش یک عدد(فرض عدد 1387) بر روی سون سگمنت 4 تایی: ( به شماتیکی که در بالا کشیده شده دقت کنید(
میکرو باید اول پایه کنترلری 1 رو فعال کنه و بلافاصله کدهای مربوط به عدد "1" رو بفرسته بعد بیاد 5 میلی ثانیه( حدودی) عدد یک را ثابت نگه داره. بعد از 5 میلی ثانیه میکرو باید پایه کنترلی 2 رو فعال کنه و بقیه پایه ها رو غیر فعال. الان نوبت ارسال عدد "3" که باید مثل عدد"1" 5 میلی ثانیه نمایش داده بشه. مابقی عدد ها رو هم به این صورت نمایش میدیم. در واقع هر کدوم از سون سگمنت ها در هر 20 میلی ثانیه یکبار روشن میشن و اطلاعات رو نشون میدن. ما یک حلقه بینهایت درست میکنیم و برنامه رو داخل اون قرار میدیم. چون سرعت رفلش خیلی زیاده چشم ما قادر به قطع و وصل این سون سگمنت ها نمیشه.

مثال) برنامه ای بنویسیدکه عدد 1386 را بر روی سون سگمنت مالتی پلکسری آند مشترک نمایش دهد.
در برنامه زیر ابتدا سون سگمنت اول فعال می شود و عدد 0xF9(کد عدد 1 ) به خروجی ارسال شده و به مدت 1 میلی ثانیه نمایش داده می شود سپس سون سگمنت دوم فعال شده و عدد0xb0 (کد عدد 3 ) به خروجی ارسال و به مدت 1میلی ثانیه نمایش داده می شود. به همین ترتیب اعداد 8 و6 نیز نمایش داده می شوند.
#include <mega16.h>
#include <delay.h>
void main(void)
{
DDRA=0xFF;
DDRB=0x0F;
while (1)
{
PORTB=0b0111; //7.segment 1 is active
PORTA=0xf9; //data is "1"
delay_ms(1);
PORTB=0b1011; //7.segment 2 is active
PORTA=0xb0; //data is "3"
delay_ms(1);
PORTB=0b1101; //7.segment 3 is active
PORTA=0x80; //data is "8"
delay_ms(1);
PORTB=0b1110; //7.segment 4 is active
PORTA=0x82; //data is "6"
delay_ms(1);
};
}
#include <delay.h>
void main(void)
{
DDRA=0xFF;
DDRB=0x0F;
while (1)
{
PORTB=0b0111; //7.segment 1 is active
PORTA=0xf9; //data is "1"
delay_ms(1);
PORTB=0b1011; //7.segment 2 is active
PORTA=0xb0; //data is "3"
delay_ms(1);
PORTB=0b1101; //7.segment 3 is active
PORTA=0x80; //data is "8"
delay_ms(1);
PORTB=0b1110; //7.segment 4 is active
PORTA=0x82; //data is "6"
delay_ms(1);
};
}
از 7447 هم می شه استفاده کرد:



این هم یه نمونه برنامه با بیسکام
$regfile "m8def.dat"
$crystal = 8000000
Config Portb = Output
Config Portc = Output
Dim A As Byte
Do
Set Portc
Reset Portc.3
Portb = 7
Waitms 2
Set Portc.3
Reset Portc.2
Portb = 8
Waitms 2
Set Portc.2
Reset Portc.1
Portb = 3
Waitms 2
Set Portc.1
Reset Portc.0
Portb = 1
Waitms 2
Set Portc.0
Loop
End
$crystal = 8000000
Config Portb = Output
Config Portc = Output
Dim A As Byte
Do
Set Portc
Reset Portc.3
Portb = 7
Waitms 2
Set Portc.3
Reset Portc.2
Portb = 8
Waitms 2
Set Portc.2
Reset Portc.1
Portb = 3
Waitms 2
Set Portc.1
Reset Portc.0
Portb = 1
Waitms 2
Set Portc.0
Loop
End

اینم فایل پروتئوس ،http://www.4shared.com/file/67434300/327a4b4/7segmentt.html
و یه مقاله مختصز و مفید دیگه در این رابطه
http://www.4shared.com/file/67433958/e0cb65ac/seven_segment.html
و نسخه pdf مطالب فوق

http://www.4shared.com/file/67434539/555b3361/Segment.html
دیدگاه