اطلاعیه

Collapse
No announcement yet.

فرستادن دیتای سریال به 74595

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

    فرستادن دیتای سریال به 74595

    برنامه زیر برای فرستادن دیتای سریال به 74595 نوشته شده در پروتیوس خروجی درست نشون داده نمیشه اما روی اسیلوسکوپ درست نشون داده میشه .دلیلش چیه .از طرفی وقتی متغیر ها رو خارج حلقه while تعریف می کنیم جواب نمیده . اگر بخاهیم یک 595 دیگه رو با اولی سری کنیم باید در برنامه چه تغیری بدیم .و نحوه بستن چطوره .
    یک سوال دیگه اینه که 595دوم دیتای 595 اول رو نشون میده یا روی 595 دوم میشه دیتای دیگه ای نشون داد .
    define s_data(14) PORTD.0
    #define sh_clk(11) PORTD.1
    #define la_clk (12) PORTD.2
    #define reset (10) PORTD.3
    while (1)
    {

    unsigned char data;
    int i;
    data=0b11111111;
    la_clk=0;
    reset=0;
    PORTD=PORTD&0b11111000;
    la_clk=0;
    reset=1;
    for(i=7;i>=0;i--)
    {
    sh_clk=0;
    s_data=((data & (1 << i)) >> i);
    sh_clk=1;
    }
    la_clk=1;

    };
    }

    #2
    پاسخ : فرستادن دیتای سریال به 74595

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

    پین کلاک شیفت رجیستر همه 595 ها به هم وصل باشد
    پین کلاک لچ همه 595 ها به هم وصل باشد
    پین دیتای خروجی هر 595 به دیتای ورودی 595 بعدی وصل باشد

    پین ریست همیشه یک باشد ( با عوض کردن داده نیازی به ریست نداریم)

    فرض کنیم چهار 595 داریم که به ترتیب زیر


    -------
    micro->A->B->C->D
    --------

    حالا اگر یک بایت را شیفت بدهیم وارد A میشود و هر 595 مقدارش را به بعدی میفرستد

    باید هر چهار بایت را شیفت بدهیم و در نهایت کلاک لچ را یک کنیم . و باید داده ها را با ترتیب دور به نزدیک بفرستیم یعنی اول مقدار D بعد C بعد B و در آخر مقدار A را میفرستیم .

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

    میتونیم با چهارتا 595 یه تابلوی 16 در 16 بسازیم . یا هم 8 در 24 .

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

    دیدگاه


      #3
      پاسخ : فرستادن دیتای سریال به 74595

      آقا دستت درد نکنه واقعا مسئله رو برام روشن کردی . :applause:ارتباط سریالم که مشکل داره چیکارش کنم . :cry2:

      دیدگاه


        #4
        پاسخ : فرستادن دیتای سریال به 74595

        کجا مشکل داری؟
        به راه بادیه رفتن ، به از نشستن باطل

        دیدگاه


          #5
          پاسخ : فرستادن دیتای سریال به 74595

          یه مثال تو کدویژن و پروتیوس با atmega32 و چهار عدد 595

          http://www.4shared.com/file/BvXc3Dlz/m32.html


          ----start--

          #include <mega32.h>
          #include <delay.h>

          #define data PORTC.0
          #define sh_clk PORTC.1
          #define s_clk PORTC.2
          char i;
          void send_595(char D)
          {
          char z=7;
          for(i=0;i<=7;i++)
          {
          sh_clk = 0;
          data = (D & (1 << z)) >> z;
          sh_clk = 1;
          z--;
          }
          }

          void load_595()
          {
          s_clk=0;// baraye mohkamkari
          s_clk=1;
          s_clk=0;
          }

          void main(void)
          {
          char x;
          DDRC=0xff;
          PORTC=0;
          while (1)
          {
          for(x=1;x<=127;x++)
          {
          send_595(x); // 595 D
          send_595(255);// 595 C
          send_595(0); // 595 B
          send_595(x+1); // 595 A
          load_595();
          delay_ms(1000);
          }
          };
          }
          ----end-----


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

          دیدگاه


            #6
            پاسخ : فرستادن دیتای سریال به 74595

            مشکل دیتای سریال با برنامه شما حل شد .
            حالا می خوام یک ساعت 8در 32 با همین 595بسازم که رفرش سطری باشه .اما درست نمی تونم این کارو کنم .اول یکان دقیقه و ساعت ودهگان دقیقه وساعت رو در میارم .حالا مشکل در ریختن اینها روی تابلو دارم . برای اعداد 1تا 9 من نه تا جدول در نظر گرفتم .این طوری [هشت بایت]data1 وdata2 تا نهمی اما وقتی که می خوام اینها رو بریزم روی تابلو خود این دیتاها هشت بایته و اینجا دیگه هنگ می کنم oo:.میشه راهنمایی کنید . اگه پیشنهاد بهتری دارید لطفا بگید .اگه یه برنامه کوچیک نمونه بذارید که دیگه عالیه .

            دیدگاه


              #7
              پاسخ : فرستادن دیتای سریال به 74595

              ّباید برای تابلو فونت طراحی کنی . چون میخوای ساعت باشه کارت راحته . فقط باید فونت اعداد و جدا کننده ساعت رو بسازی . برای شروع یه تابلو 8 در 8 بساز که اعداد 0 تا 9 رو نمایش بده . وقتی راه افتادی هر سایزی رو میتونی کار کنی .
              به راه بادیه رفتن ، به از نشستن باطل

              دیدگاه


                #8
                پاسخ : فرستادن دیتای سریال به 74595

                تابلوی 8در8درست کردم مشکلی نداره .اما اینجا تعداد ستون ها 32 تا است وقتی 8تا بود خیلی راحت دیتا رو می فرستم ولی اینجا گیر می کنم . :angry:
                اول سطر 1 رو صفر میکنم بعد اطلاعات دقیقه وساعت 32 تا ستون باید بدم یعنی سطر1وستون 1تا32بعد باید سطز دو رو صفر کنم اطلاعات ساعت و دقیقه ستون 1تا 32 توی همین قسمت نحوه فرستادن اطلاعات ستون ها مشکل دارم .

                دیدگاه


                  #9
                  پاسخ : فرستادن دیتای سریال به 74595

                  تابلوت میشه 4 بلوک 8 در 8 . اول سطر و بعدش هم مقدار بلوکها رو بفرست . برای هر بلوک میشه یک بایت .
                  به راه بادیه رفتن ، به از نشستن باطل

                  دیدگاه

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