اطلاعیه

Collapse
No announcement yet.

درایو کردن multi 7 segment

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    درایو کردن multi 7 segment

    سلام برویچ با مرام 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 نیز نمایش داده می شوند.


    #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);
    };
    }



    از 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




    اینم فایل پروتئوس ،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
    کمتر به سایت میام .....

    #2
    پاسخ : درایو کردن multi 7 segment

    ممنون از مطلب مفیدتون.

    دیدگاه


      #3
      پاسخ : درایو کردن multi 7 segment

      سلام ....
      جهت تکمیل کردن این مقاله یه برنامه دیگه نوشتم که دیگه پرونده این بحث تکمیل بشه این برنامه از صفر شروع به شمارش میکنه ، تو این برنامه از تایمر 0 استفاده شده و در زمان مشخص وقفه تایمر رخ میده و یکی به عدد اضافه میشه
      برنامه رو به ساده ترین صورت نوشتم که قابل فهم تر باشه
      $regfile "m8def.dat"
      $crystal = 8000000

      Config Portb = Output
      Config Portc = Output


      Config Timer0 = Timer , Prescale = 256
      Enable Interrupts
      Enable Timer0
      On Timer0 7segment
      Start Timer0


      Dim Yekan As Byte
      Dim Dahgan As Byte
      Dim Sadgan As Byte
      Dim Temp As Byte
      Dim A As Byte

      A = 0


      Do

      Incr A

      Sadgan = A / 100
      Temp = A Mod 100
      Dahgan = Temp / 10
      Yekan = Temp Mod 10
      Waitms 1

      Loop

      End


      7segment:




      Set Portc
      Reset Portc.3
      Portb = Yekan
      Waitms 2
      Set Portc.3


      Reset Portc.2
      Portb = Dahgan
      Waitms 2
      Set Portc.2


      Reset Portc.1
      Portb = Sadgan
      Waitms 2
      Set Portc.1


      Reset Portc.0
      Portb = 0
      Waitms 2
      Set Portc.0


      Return

      اگه برنامه ایرادی داره اساتید نظر خودشونو بگن ولی ظاهرا درست کار میکنه :mrgreen:

      شماتیک برنامه مثل پست قبله

      فایل شبیه سازی شده پروتئوس http://www.4shared.com/file/69350511/24aef0c3/7segment.html
      کمتر به سایت میام .....

      دیدگاه

      لطفا صبر کنید...
      X