ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 8 از 8
  1. #1
    2008/10/08
    371
    14

    نحویه شیفت دادن متن با ایسی 74hc595

    با سلام ...

    از ایسی 74hc595 و میکرو مگا128 و نرم افزار کدویژن استفاده می کنم .
    می خواهم متن را به راست و چپ حرکت دهم .. ولی ظاهرا کار سختی است ..لطفا راهنمایی فرمایید ...

    کتابخانه مورد استفاده ایسی 74hc595
    [code=c]#ifndef clock
    #define clock PORTB.0
    #define strobe PORTB.1
    #define data PORTB.2
    #endif

    //-----------------------------------------------------------------------------------------

    void ic74595_init() //صفر کردن پايه ها
    {
    clock=0;
    strobe=0;
    data=0;
    }

    //-----------------------------------------------------------------------------------------

    void ic74595_load_reg(void) //نمايش کدها
    {
    strobe=1;
    delay_us(1);
    strobe=0;
    }

    //-----------------------------------------------------------------------------------------

    void ic74595_send_byte(unsigned char dt)
    {
    unsigned char i;

    for(i = 0; i <8; i++) // Send 8 bits
    {
    if(dt & 0x80)
    {
    data=1;
    delay_us(1);
    }
    else
    {
    data=0;
    delay_us(1);
    }

    clock=1; //Clock
    delay_us(1);
    clock=0;

    dt <<= 1; // Get next bit into MSB position
    }
    }

    //-----------------------------------------------------------------------------------------

    void ic74595_shift_send(char *d,char size)
    {
    int i=0;
    for(i=size;i>=0;i--)
    ic74595_send_byte(d[i]);

    delay_us(1);
    ic74595_load_reg(); //نمايش دادن کدها
    }

    //-----------------------------------------------------------------------------------------[/code]

    اگر چیزی دیگری هم نیاز است بفرمایید تا قرارش بدهم..
    باتشکر.
  2. #2
    2008/12/16
    بندر بوشهر
    372
    24

    پاسخ : نحویه شیفت دادن متن با ایسی 74hc595

    :eek: :eek: :eek: :eek: :eek: :eek: :eek:
    دقیقا متن کجاست
    تو ال سی دی یا دات ماتریس یا رجیستر داخلی
    عجب روزگاریست...! هیچکس به سکوت آدم نمیرسد،همه منتظرند به داد آدم برسند...!
  3. #3
    2008/10/08
    371
    14

    پاسخ : نحویه شیفت دادن متن با ایسی 74hc595

    سلام بر شما و تشکر از پاسختون .

    14 دات ماتریکس 8*8 دو رنگ ..(که البته فعلا با دو رنگش کاری نداریم،تا تسلتمان بیشتر شود)
    بصورت دو ردیف 7 تایی و کنترول شده با دو عدد ایسی uln2803

    کدهای متن ها بصورت یک کتابخانه سفارشی(خیلی از کدها رو بدلیل حجم زیاد حذفشون کردم)
    [code=c]const unsigned char num1[112]=
    {
    .........
    };

    const unsigned char num2[112]=
    {
    ....
    };
    const unsigned char num3[112]=
    {
    ....
    };
    const unsigned char num4[112]=
    {
    .....
    };
    const unsigned char num5[112]=
    {
    ....
    };
    const unsigned char num6[112]=
    {
    .....
    };
    const unsigned char num7[112]=
    {
    ...
    };
    const unsigned char num8[112]=
    {
    .....
    };
    const unsigned char num9[112]=
    {
    ....
    };

    const unsigned char num10[112]=
    {
    ...
    };

    const unsigned char max[112]=
    {
    0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 0007 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 000E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 0015 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    0x18,0x00,0xF0,0x03,0xE0,0x01,0x80, // 001C . . . # # . . . . . . . . . . . # # # # . . . . . . . . . . # # # # # . . . . . . . . . . . . # # . . . . . . .
    0x18,0x01,0x9C,0x06,0x70,0x03,0x80, // 0023 . . . # # . . . . . . . . . . # # . . # # # . . . . . . . # # . . # # # . . . . . . . . . . # # # . . . . . . .
    0x78,0x00,0x0C,0x00,0x30,0x05,0x80, // 002A . # # # # . . . . . . . . . . . . . . . # # . . . . . . . . . . . . # # . . . . . . . . . # . # # . . . . . . .
    0x18,0x00,0x0C,0x00,0x30,0x09,0x80, // 0031 . . . # # . . . . . . . . . . . . . . . # # . . . . . . . . . . . . # # . . . . . . . . # . . # # . . . . . . .
    0x18,0x00,0x0C,0x00,0x60,0x09,0x80, // 0038 . . . # # . . . . . . . . . . . . . . . # # . . . . . . . . . . . # # . . . . . . . . . # . . # # . . . . . . .
    0x18,0x00,0x1C,0x01,0xC0,0x11,0x80, // 003F . . . # # . . . . . . . . . . . . . . # # # . . . . . . . . . # # # . . . . . . . . . # . . . # # . . . . . . .
    0x18,0x00,0x18,0x00,0x60,0x21,0x80, // 0046 . . . # # . . . . . . . . . . . . . . # # . . . . . . . . . . . . # # . . . . . . . # . . . . # # . . . . . . .
    0x18,0x00,0x30,0x00,0x30,0x3F,0xC0, // 004D . . . # # . . . . . . . . . . . . . # # . . . . . . . . . . . . . . # # . . . . . . # # # # # # # # . . . . . .
    0x18,0x00,0x60,0x00,0x30,0x01,0x80, // 0054 . . . # # . . . . . . . . . . . . # # . . . . . . . . . . . . . . . # # . . . . . . . . . . . # # . . . . . . .
    0x18,0x00,0xC0,0x00,0x30,0x01,0x80, // 005B . . . # # . . . . . . . . . . . # # . . . . . . . . . . . . . . . . # # . . . . . . . . . . . # # . . . . . . .
    0x18,0x01,0x80,0x06,0x60,0x01,0x80, // 0062 . . . # # . . . . . . . . . . # # . . . . . . . . . . . . # # . . # # . . . . . . . . . . . . # # . . . . . . .
    0x7E,0x01,0xFE,0x03,0xC0,0x01,0x80, // 0069 . # # # # # # . . . . . . . . # # # # # # # # . . . . . . . # # # # . . . . . . . . . . . . . # # . . . . . . .
    0x00,0x00,0x00,0x00,0x00,0x00,0x00 // 0070 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    };

    const unsigned char j21[112]=
    {
    ....
    };[/code]
    کد برنامه (چون نسخه ازمایشی هست،بعضی کدها ازمایشی هستش ..)
    [code=c]#include <mega128a.h>
    #include <string.h>
    #include <delay.h>
    #include "74595.c" //کتابخانه ايسي74595
    #include "uni.c" //کتابخانه متن ها

    unsigned char cpy1[16][7]; //آرايه دو بعدي براي تايين سطر و ستون ها
    unsigned char cpy2[16][7];
    unsigned char cpy3[16][7];
    unsigned char cpy4[16][7];
    unsigned char cpy5[16][7];
    unsigned char cpy6[16][7];
    unsigned char cpy7[16][7];
    unsigned char cpy8[16][7];
    unsigned char cpy9[16][7];
    unsigned char cpy10[16][7];
    unsigned char cpy11[16][7];
    unsigned char cpy12[16][7];

    unsigned unsigned char o,i,buffer[7]; //متغيير دات هاي ماتريکسي

    unsigned char Scan[]={0b10000000,0b01000000,0b00100000,0b00010000,0b00 001000,0b00000100,0b00000010,0b00000001};//ريفرش کردن پايه ها
    unsigned char Scan2[]={0b00000000,0b00000000,0b00000000,0b00000000,0b00 000000,0b00000000,0b00000000,0b00000000,0b00000000 ,0b10000000,0b01000000,0b00100000,0b00010000,0b000 01000,0b00000100,0b00000010,0b00000001};//ريفرش کردن پايه ها
    int k,j;
    void math(void)
    {
    memcpy(cpy1,num1+j ,112); //تعداد بيت در اينجا نوشته ميشود
    memcpy(cpy2,num2+j ,112); //تعداد بيت در اينجا نوشته ميشود
    memcpy(cpy3,num3+j ,112); //تعداد بيت در اينجا نوشته ميشود
    memcpy(cpy4,num4+j ,112); //تعداد بيت در اينجا نوشته ميشود
    memcpy(cpy5,num5+j ,112); //تعداد بيت در اينجا نوشته ميشود
    memcpy(cpy6,num6+j ,112); //تعداد بيت در اينجا نوشته ميشود
    memcpy(cpy7,num7+j ,112); //تعداد بيت در اينجا نوشته ميشود
    memcpy(cpy8,num8+j ,112); //تعداد بيت در اينجا نوشته ميشود
    memcpy(cpy9,num9+j ,112); //تعداد بيت در اينجا نوشته ميشود
    memcpy(cpy10,num10+j ,112);//تعداد بيت در اينجا نوشته ميشود
    memcpy(cpy11,max+j ,112); //تعداد بيت در اينجا نوشته ميشود
    memcpy(cpy12,j21+j ,112); //تعداد بيت در اينجا نوشته ميشود

    for(o=0;o<50;o++)
    {
    for (i=0;i<16;i++) //مدت زمان براي لود شدن متن
    {
    PORTC=Scan[i]; //وصل شده به ايسي اول 2803
    PORTA=Scan2[i]; //وصل شده به ايسي دوم 2803

    buffer[0]=cpy11[i][0];
    buffer[1]=cpy11[i][1];
    buffer[2]=cpy11[i][2];
    buffer[3]=cpy11[i][3];
    buffer[4]=cpy11[i][4];
    buffer[5]=cpy11[i][5];
    buffer[6]=cpy11[i][6];

    ic74595_shift_send(buffer,6);
    delay_ms(1);
    PORTC=0x00;
    PORTC=0x00;
    PORTA=0x00;
    PORTA=0x00;
    }
    k++;
    }
    // j+=210;
    // if (j>210) j=0;
    }

    void main(void)
    {
    DDRC=0xFF;
    PORTC=0x00;
    DDRB=0xFF;
    PORTB=0x00;
    DDRA=0xFF;
    PORTA=0x00;
    ic74595_init(); //ارسال کد صفر براي پايه ها ايسي 595
    while (1)
    {
    math();
    }

    }
    [/code]
  4. #4
    2008/10/08
    371
    14

    پاسخ : نحویه شیفت دادن متن با ایسی 74hc595

    سلام

    پرتئوس هم هست .. لطفا اگر ممکنه راهنمایی کنید..
    باتشکر.
  5. #5
    2008/12/16
    بندر بوشهر
    372
    24

    پاسخ : نحویه شیفت دادن متن با ایسی 74hc595

    سلام
    مثل اینکه اشتباه شد من اصلا کدویژن کار نمیکنم
    صورت سوالتون طوری بود که کنجکاو شدم
    باز هم ببخشید :nerd:
    عجب روزگاریست...! هیچکس به سکوت آدم نمیرسد،همه منتظرند به داد آدم برسند...!
  6. #6
    2008/10/08
    371
    14

    پاسخ : نحویه شیفت دادن متن با ایسی 74hc595

    با سلام
    اگر الگو شیفت دادن این ایسی رو با توجه به کتابخانه مد نظر بفرمایید ممنون خواهیم شد ..
    باتشکر.
  7. #7
    2013/10/26
    24
    0

    پاسخ : نحویه شیفت دادن متن با ایسی 74hc595

    سلام

    دوست عزیز

    شماتیک مدار رو قراربدین
    بگید چه تابلویی میخواین درست کنین میخواین یه متن رو فقط نمایش بدین که مثلا از راست به چپ حرکت می کنه یا افکت هم میخواین ؟

    به نظر من اول هر طرحی رو طراحی مفهومی کنید بعد برید سراغ سورس اگه تونستید طرح مفهومی شو در بیارید زبان برنامه نویسی - کمپایلر و سخت افزارش زیاد کاری نداره مشکل اکثر دوستان اینه که نمی دونند میخوان چیکار کنن میان کد میزنن

    اگه میخواین یه متن رو فقط شیفت بدین خیلی سادست فرض کنید متن تون تو حافظه 100 بایت رو اشغال کرده و صفحه نمایش شما میتونه 20 خونه رو نمایش بده شما باید برنامه ای بنویسید که فانکشنی داشته باشه که با گرفتن شماره خونه اول صفحه نمایش رو رفرش کنه بعد بیاین هر مثلا 1 ثانیه این عدد رو یکی افزایش بدین میبینین متن حرکت میکنه البته این طرحو باید گسترشش بدین من فقط مثال زدم خودم چند سال پیش تابلویی درست کرده بودم اما الان کد ها شو ندارم

    یه روش دیگه هم هست که میاین یه فضایی از حافظه رم رو برا صفحه نمایش تون اختصاص میدین و یکی از وقفه ها رو طوری مینویسین که مثلا هر ثانیه 24 با بیاد این حافظه رو بخونه و صفحه نمایش رو از روی این قسمت حافظه رفرش کنه بعد توی برنامه هر تغییری که توی این قسمت حافظه بدین روی صفحه نمایش اعمال میشه به همین راحتی میتونین افکت های مختلفی به متن بدین شیفت به بالا پایین چپ راست چرخش و ... این طوری دست تون بازتره ... بقیه کار با خودتون خداحافظ
  8. #8
    2013/01/19
    تهران
    19
    0

    پاسخ : نحویه شیفت دادن متن با ایسی 74hc595

    سلام
    دوست عزیز باید از پورت spi میکرو استفاده کنی.من خودم کامل روی این قضیه کار کردن و ماژول تابلو روان هم باهاش تولید کردم.مین بردش هم باatmega 8بود.
نمایش نتایج: از 1 به 8 از 8

موضوعات مشابه

  1. ایجاد PWM روی شیفت رجیستر 74hc595
    توسط mr_hadi در انجمن میکروکنترلرهای AVR
    پاسخ: 15
    آخرين نوشته: 2015/12/09, 12:12
  2. شیفت دادن 5 عدد led
    توسط hosseinip در انجمن پروسسورهای ARM
    پاسخ: 1
    آخرين نوشته: 2015/10/23, 01:08
  3. شیفت دادن بیتها
    توسط VILLA-7 در انجمن میکروکنترلرهای AVR
    پاسخ: 9
    آخرين نوشته: 2014/08/12, 13:57
  4. شیفت دادن LCD گرافیکی
    توسط ababakz در انجمن میکروکنترلرهای AVR
    پاسخ: 4
    آخرين نوشته: 2014/03/12, 17:25
  5. ارتباط spi همراه ایسی 74hc595
    توسط javad_zavr در انجمن میکروکنترلرهای AVR
    پاسخ: 11
    آخرين نوشته: 2010/07/19, 17:29

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •