اطلاعیه

Collapse
No announcement yet.

ارتباط spi همراه ایسی 74hc595

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

    ارتباط spi همراه ایسی 74hc595

    با سلام .می خوام کد های یک سون سگمنت رو(یا هر دیتای دیگه رو)از طریق رابط spi بدیم به 74595 که داده سریال رو به موازی تبدیل می کنه کسی با ترکیب این دو تا کار کرده اگه میشه برنامه و شماتیک رو هم بگذارید مخصوصا در مورد 74595 که کلاک و فعال ساز و غیره هم داره .

    #2
    پاسخ : ارتباط spi همراه ایسی 74hc595

    برای ارتباط 595 نمیتونید از spi استفاده کنید . این آی سی برای کارای سریال خیلی جالبه . برای ارتباط با اون سه پین لازم داریم . اگه بخوایم از atmega8 برای ارتباط با اون استفاده کنیم و از سه پین اول پورت C استفاده کنیم میتونیم تابع send رو به صورت زیر تعریف کنیم


    PORTC.0=pin 14 (data serial)
    PORTC.1=pin 11 (shift register clock)
    PORTC.2 = pin 12 (latch clock)

    ارسال بایت در 595 به چه صورت است ؟
    595 دارای یک شیفت رجیستر و یک لچ برای ذخیره داده است . پین 14 ورودی داده است . پین 12 کلاک لچ داده و پین 11 کلاک شیفت رجیستر است .

    انتقال داده :
    هرگاه کلاک شیفت رجیستر از 0 به 1 تغییر حالت بدهد خط ورودی داده خوانده شده و ابتدا مقدار شیفت رجیستر شیفت چپ داده شده و مقدار خوانده شده در مکان صفر شیفت رجیستر قرار داده میشود .

    برای انتقال اطلاعات شیفت رجیستر کافی است کلاک لچ از 0 به 1 تغییر حالت بدهد .

    توجه کنید که باید ابتدا 8 بیت را به شیفت رجیستر بفرستید در نهایت اطلاعات شیفت رجیستر را به لچ بفرستید .
    دقت کنید چون شیفت به چپ داده میشود ابتدا بیتهای پر ارزش را میفرستیم
    مراحل را به صورت شبه کد مینویسیم

    تابع ارسال بایت برای 595 :
    کلاک لچ صفر میشود
    بیت هشتم روی خط داده قرار میگیرد و کلاک شیفت رجیستر صفر میشود
    کلاک شیفت رجیستر یک میشود (یک بیت شیفت میشود )
    بیت هفتم روی خط داده قرار میگیرد و کلاک شیفت رجیستر صفر میشود
    کلاک شیفت رجیستر یک میشود (یک بیت شیفت میشود )
    بیت ششم روی خط داده قرار میگیرد و کلاک شیفت رجیستر صفر میشود
    کلاک شیفت رجیستر یک میشود (یک بیت شیفت میشود )
    بیت پنجم روی خط داده قرار میگیرد و کلاک شیفت رجیستر صفر میشود
    کلاک شیفت رجیستر یک میشود (یک بیت شیفت میشود )
    بیت چهارم روی خط داده قرار میگیرد و کلاک شیفت رجیستر صفر میشود
    کلاک شیفت رجیستر یک میشود (یک بیت شیفت میشود )
    بیت سوم روی خط داده قرار میگیرد و کلاک شیفت رجیستر صفر میشود
    کلاک شیفت رجیستر یک میشود (یک بیت شیفت میشود )
    بیت دوم روی خط داده قرار میگیرد و کلاک شیفت رجیستر صفر میشود
    کلاک شیفت رجیستر یک میشود (یک بیت شیفت میشود )
    بیت اول روی خط داده قرار میگیرد و کلاک شیفت رجیستر صفر میشود
    کلاک شیفت رجیستر یک میشود (یک بیت شیفت میشود )
    کلاک لچ یک میشود (انتقال بایت به لچ و قرار گرفتن بر روی خروجی 595)


    اگر پین 13 صفر باشد خروجی لچ روی خروجی قرار میگرد در غیر اینصورت پینهای خروج به صورت جدا هستند .

    تابع در میکروپاسکال :


    procedure send595(D : byte);
    var
    i:byte;
    begin
    portc := portc and %11111000;
    for i:=7 to 0 do
    begin
    portc.1:=0;
    portc.0 := D.i;
    portc.1:=1;
    end
    portc.2:=1;
    end;



    تابع در کد ویژن :


    void send595(char D)
    {
    char i;
    PORTC&=0b11111000;
    for(i=7;i>=0;i--)
    {
    PORTC.1=0;
    PORTC.0=((D & (1 << i)) >> i);
    PORTC.1=1;
    }
    PORTC.2=1;
    }
    به راه بادیه رفتن ، به از نشستن باطل

    دیدگاه


      #3
      پاسخ : ارتباط spi همراه ایسی 74hc595

      سلام
      این ای سی ۵۹۵ رو میشه با spi راش انداخت
      هرجور فکر میگنم نمیشه

      دیدگاه


        #4
        پاسخ : ارتباط spi همراه ایسی 74hc595

        ممنون از برنامه ای که گذاشتید این برنامه که شما نوشتید در واقع کارش رو spi انجام میده حالا مشکل زمانی پیش مییاد که دو تا ایسی رو پشت سر هم بزاریم در آیسی اول عدد یک رو داشته باشیم و در آیسی دو عدد دو رو داشته باشیم ولی هردو تا ایسی در خروجی با هم یک عدد رو نشون می دن .نکته دیگه اینه که spi خودش کلاک شیفت ریجیستر رو می ده .

        دیدگاه


          #5
          پاسخ : ارتباط spi همراه ایسی 74hc595

          این ای سی ۵۹۵ رو میشه با spi راش انداخت
          هرجور فکر میکنم نمیشه
          ممنون مخصوصا دوست خوبمون fadelphi بابت توضیحات خوبش

          با SPI جواب داد و دیتا قبلی رو هم به ای سی رجیستر بعدی هم ارسال میکنه

          اینم سورس همراه با فایل پروتئوس که هر بار کلید رو فشار بدید مقدار buf یک واحد اضافه شده و به ای سی اول ارسال میشه و مقدار قبلی به اسی سی بعدی ارسال میشه

          ورژن پروتوس 7.7

          http://www.4shared.com/file/LHG-4KCj/74HC595.html

          دیدگاه


            #6
            پاسخ : ارتباط spi همراه ایسی 74hc595

            از برنامهای که گذاشتی ممنون .ورژن پروتیوس خیلس بالاست باز نمیشه .

            دیدگاه


              #7
              پاسخ : ارتباط spi همراه ایسی 74hc595

              من نمیدونم چرا اسرار داری از spi استفاده کنی ؟ تابع بالا خیلی سریعتر از spi هست و پینهای کمتری اشغال میکنه . هر پینی دلت بخواد میتونی انتخاب کنی . من با این روش هم تابلو نویسنده و هم تابلو سون سگمنت با 41 آی سی 74hc595 راه انداختم و مثل فرفره کار میکنه . پروژه ات یه کم بزرگ بشه نیاز داری از spi برای اتصال با ic های دیگه استفاده کنی مثل mmc یا eeprom و هر وسیله دیگری .
              به راه بادیه رفتن ، به از نشستن باطل

              دیدگاه


                #8
                پاسخ : ارتباط spi همراه ایسی 74hc595

                از همه کمک هایی که تا اینجا کردین ممنون. حالا من می خوام یک تابلو 16در 48 برای ساخت ساعت با این روش درست کنم در واقع متن احتیاج به حرکت نداره فقط دیتاهای ساعت رو می خوام نشون بدم در سطر وستون می خوام از 74595 استفاده کنم می شه راهنمایی کنید تا شروع کنیم به نوشتن

                دیدگاه


                  #9
                  پاسخ : ارتباط spi همراه ایسی 74hc595

                  یه مثال با بسکام هم بزارید ممنون می شم.

                  دیدگاه


                    #10
                    پاسخ : ارتباط spi همراه ایسی 74hc595

                    این یه مثال ساده بیسیک



                    -----


                    $regfile = "m8def.dat"
                    $crystal = 8000000
                    $hwstack = 32
                    $swstack = 10
                    $framesize = 40



                    Pin_ser Alias Portc.0 'serial data
                    Pin_sh_clk Alias Portc.1 'shift register clock
                    Pin_s_clk Alias Portc.2 'latch clock

                    Declare Sub Send_595(byval D As Byte)

                    Dim I As Byte
                    I = 0
                    Do
                    For I = 0 To 255
                    Send_595 I
                    Waitms 500
                    Next
                    Loop

                    End


                    Sub Send_595(byval D As Byte)
                    Pin_s_clk = 0
                    Shiftout Pin_ser , Pin_sh_clk , D , 0
                    Pin_s_clk = 1
                    End Sub

                    -------
                    به راه بادیه رفتن ، به از نشستن باطل

                    دیدگاه


                      #11
                      پاسخ : ارتباط spi همراه ایسی 74hc595

                      $hwstack = 32
                      $swstack = 10
                      $framesize = 40
                      این دستورا چین من بیسیک کار نکردم .
                      کار این برنامه چیه.میشه بگی سخت افزارش چطوریه تا امتحانش کنم .
                      برای ساخت یه ساعت 16در 30 اگه در سطر و ستون از این آیسی استفاده کنم آیسی سطر ها باید به ستون وصل باشن یا از یک پین دیتا ی سریال رو بدم به آیسی سطر و از یک پین دیگه دیتای سریال ستون رو بدم .

                      دیدگاه


                        #12
                        پاسخ : ارتباط spi همراه ایسی 74hc595

                        سلام :smile:
                        من یه سوالی درمورد 74595دارم اونم اینکه نمیتونم اطلاعات رو از لچ اول به دوم منتقل کنم واقعن گیر کردم کسی هست که بتونه بهم کمک کنه ؟
                        اینم برنامه اش که با زبان سی هست توی محیط کد ویژن

                        #include <mega32.h>
                        #include <delay.h>
                        void main (){
                        char i,data,q;
                        PORTC=0xff;
                        DDRC=0xff;
                        while (1){
                        PORTC&= 0b11111000;

                        data = 0x54 ;
                        for(i=0;i<8;i++)
                        {
                        PORTC.1=0;
                        PORTC.0=(data & (1 << i));
                        PORTC.1=1;
                        }
                        PORTC.2=1;
                        //................
                        data = 0x04 ;
                        for(i=0;i<8;i++)
                        {
                        PORTC.1=0;
                        PORTC.0=(data & (1 << i));
                        PORTC.1=1;
                        }
                        PORTC.2=1;
                        }
                        }
                        علم و عمل پیوند نزدیک دارند , و کسی که دانست باید به آن عمل کند. چرا که علم عمل را فرا خواند, اگر پاسخش داد میماند و گر نه کوچ میکند. امام علی (ع)

                        دیدگاه

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