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





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









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





  1. #1
    تاریخ عضویت
    2008/10/05
    خراسان جنوبی
    130
    6

    شیفت رجیستر 595

    با سلام و وقت بخیر

    برای استفاده از شیفت رجیستر 595 ما توی بسکام میخواستیم یه عدد سه رقمی رو روی 3 تا سگمنتهای تک رقمی شبیه تصویر ضمیمه شده نشان دهیم از دستورات زیر استفاده میکردیم :

    Shiftout Ds , Sh_cp , Yekan , 1
    Shiftout Ds , Sh_cp , Dahgan , 1
    Shiftout Ds , Sh_cp , Sadgan , 1

    Reset St_cp
    Set St_cp
    Reset St_cp

    توی آردوینو به چه شکلی باید بنویسیم ؟ راههای زیادی رو از سایت های مختلف امتحان کردم ولی چرا نمیشه ؟؟؟؟
    فقط برای تک رقمی مشکلی ندارم و جواب میده !!

    ممنون میشم اگه کسی میدونه از ما هم دریغ نکنه
    قال امام صادق (ع):
    هر چیزی زکاتی دارد و زکات علم آنست که به اهلش بیاموزی.
    • تبلیغات
      .

  2. #2
    تاریخ عضویت
    2008/07/02
    11
    9

    پاسخ : شیفت رجیستر 595

    من یک ساعت با RTC و سگمنت 4 دیجیت آند مشترک ساعتی با 2 عدد شیفت رجیستر این کد زیر رو نوشتم و اجرا شد.
    برای سگمنت ها یک شیفت رجیستر و برای آند مشترک سگمنت ها یک شیفت رجیستر جدا گذاشتم.
    در شیفت رجیستر اول که 8 خروجی داریم. خروجی ها رو برای 7 سگمنت و نقطه اعشار کناراعداد استفاده کردم.
    در شیفت رجیستر دوم از 8 خروجی تعداد 5 عدد را برای اعداد 1-4 و دونقطه ساعت استفاده کردم.
    عملا میشه با 2 عدد شیفت رجیستر و ارتباط 3 سیمه سون سگمنت 8 رقمی راه اندازی کرد.


    //**************************************************************//
    // Name : shiftOutCode, 4-Digit 7Segment //
    // Author : AbdolHakim Esmaeili, Iran, AqQaleh //
    // Date : 05 Mar, 2020 //
    // Version : 1.0 //
    // Notes : Code for using two 74HC595 Shift Register //
    // : to show clock using only 3 wire //
    //****************************************************************
    //RTC-DS1307 Wiring
    //SCL to A5 Arduino Pro Mini Or Uno
    //SDA to A4 Arduino Pro Mini Or Uno
    //GND to GND
    //VCC to VCC


    #include <RTClib.h>
    RTC_DS1307 rtc;


    //Pin connected to ST_CP of 74HC595
    int latchPin = 6;
    //Pin connected to SH_CP of 74HC595
    int clockPin = 7;
    ////Pin connected to DS of 74HC595
    int dataPin = 5;


    //Common Anode
    const byte Num[13]={0b00000011,0b10011111,0b00100101,0b00001101,0b10011001,0b01001001,0b01000001,0b00011111,0b00000001,0b00001001,0b11111110,0b00111111,0b11011111};//0,1,2,3,4,5,6,7,8,9,Dot,:,Degree
    const byte Pos[5]={0b00001000,0b00010000,0b00100000,0b01000000,0b10000000};//L,Dig1,Dig2,Dig3,Dig4
    unsigned long startMillis;
    unsigned long currentMillis;
    int HH;
    int MM;
    unsigned int Dly1 = 4;
    unsigned int Dly2 = 1;




    void setup() {

    if (! rtc.begin())
    {
    while (1);
    }
    //set pins to output because they are addressed in the main loop
    pinMode(latchPin, OUTPUT);
    pinMode(clockPin, OUTPUT);
    pinMode(dataPin, OUTPUT);
    startMillis = millis(); //initial start time
    }




    void loop() {


    DateTime now = rtc.now();
    HH=now.hour();
    MM=now.minute();
    TimeShow(HH,MM);

    }




    void Segment(int number,int digit){
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, LSBFIRST, Num[number]);
    shiftOut(dataPin, clockPin, LSBFIRST, Pos[digit]);
    digitalWrite(latchPin, HIGH);
    }

    void DoubleDot(){
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, LSBFIRST, Num[11]);
    shiftOut(dataPin, clockPin, LSBFIRST, Pos[0]);
    digitalWrite(latchPin, HIGH);
    delay(1);
    }


    void TimeShow(int hh,int mm){
    currentMillis = millis(); //get the current "time" (actually the number of milliseconds since the program started)
    int dig4=hh/10;
    int dig3=hh%10;
    int dig2=mm/10;
    int dig1=mm%10;


    if (currentMillis - startMillis <= 500) //test whether the period has elapsed
    {
    Segment(dig4,4);
    delay(Dly1);
    Segment(dig3,3);
    delay(Dly1);
    Segment(dig2,2);
    delay(Dly1);
    Segment(dig1,1);
    delay(Dly1);
    DoubleDot();
    }
    else
    {
    Segment(dig4,4);
    delay(Dly2);
    Segment(dig3,3);
    delay(Dly2);
    Segment(dig2,2);
    delay(Dly2);
    Segment(dig1,1);
    }

    if (currentMillis - startMillis >= 1000)
    {
    startMillis = currentMillis; //IMPORTANT to save the start time of the current state
    }
    [FONT=Yekan]}[/FONT]
    AGHYOOL
  3. #3
    تاریخ عضویت
    2008/10/05
    خراسان جنوبی
    130
    6

    پاسخ : شیفت رجیستر 595

    سلام
    ممنون از لطف و پاسخگویی شما
    البته منظور من خود دستور شیفت بود که آخرش مشکل حل شد و مشکل سخت افزاری بود!
    بازم بینهایت سپاسگزارم
    قال امام صادق (ع):
    هر چیزی زکاتی دارد و زکات علم آنست که به اهلش بیاموزی.
نمایش نتایج: از 1 به 3 از 3

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

  1. معرفی ای سی شیفت رجیستر 74HC595
    توسط علی چمانی در انجمن میکروکنترلرهای AVR
    پاسخ: 3
    آخرين نوشته: 2017/06/27, 07:08
  2. شیفت رجیستر
    توسط Azadfalah در انجمن میکروکنترلرهای AVR
    پاسخ: 0
    آخرين نوشته: 2016/10/23, 11:30
  3. پالس شیفت رجیستر
    توسط sima.b در انجمن مدار های ديجيتال
    پاسخ: 0
    آخرين نوشته: 2016/01/13, 09:50
  4. نویز در شیفت رجیستر
    توسط sena در انجمن برنامه نویسی و اینترفیس
    پاسخ: 1
    آخرين نوشته: 2010/03/05, 23:09
  5. شیفت رجیستر
    توسط masoodhashemy در انجمن مدار های ديجيتال
    پاسخ: 1
    آخرين نوشته: 2008/05/29, 17:12

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

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

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

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