نمایش نتایج: از 1 به 10 از 10
Like Tree8 لایک
  • 4 Post By magmagmary
  • 2 Post By hamedbehboodi
  • 1 Post By hamedbehboodi
  • 1 Post By rusputin

موضوع: ماژول سون سگمنت 4 رقمی همراه با درایور 74hc59

  1. #1
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064

    ماژول سون سگمنت 4 رقمی همراه با درایور 74hc59

    ماژول سون سگمنت 4 رقمی همراه با درایور 74hc59

    سیم بندی اتصال ماژول سون سگمن به آردوینو

    Arduino Seven segment
    GND GND
    5V VCC
    D7 Sclk
    D6 DIO
    D5 Rclk


    نمونه کد نمایش سال 1395 روی سون سگمنت :
    کد:
    
    int rclkpin = 5; // connect to pin 12 on the '595
    int sclkpin = 7; // connect to pin 11 on the '595
    int diopin = 6; // connect to pin 14 on the '595
    
    
    //int speed = 300; // used to control speed of counting
    int segdisp[10] = {3, 159, 37, 13, 153, 73, 65, 27, 1, 9 };
    int digits[] = {128, 64, 32, 16, 8, 4, 2, 1};
    void setup()
    {
      pinMode(rclkpin, OUTPUT);
      pinMode(sclkpin, OUTPUT);
      pinMode(diopin, OUTPUT);
      digitalWrite(rclkpin, LOW);
      shiftOut(diopin, sclkpin, LSBFIRST, 0); // clears the right display
      shiftOut(diopin, sclkpin, LSBFIRST, 0); // clears the left display
      digitalWrite(rclkpin, HIGH);
    
    
    }
    
    
    void loop()
    {
      setDigit(3, 1);
      setDigit(2,3);
      setDigit(1,9);
      setDigit(0,5);
      delay(10);
    }
    
    
    void setDigit(int dig, int character)
    {
      digitalWrite(rclkpin, LOW);
      shiftOut(diopin, sclkpin, LSBFIRST, segdisp[character]);
      shiftOut(diopin, sclkpin, LSBFIRST, digits[dig]);
      digitalWrite(rclkpin, HIGH);
      digitalWrite(rclkpin, LOW);
      shiftOut(diopin, sclkpin, LSBFIRST, 0); // clears the right display
      shiftOut(diopin, sclkpin, LSBFIRST, 0); // clears the left display
      digitalWrite(rclkpin, HIGH);
    }

  2. #2
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    شماتیک سون سگمنت
    فایل های پیوست شده فایل های پیوست شده

  3. #3
    Junior Member
    تاریخ عضویت
    Jul 2016
    نوشته ها
    15
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    ماژول سون سگمنت 4 رقمی همراه با درایور 74hc59



    کد:
    
    
    
    int segdisp[10] = {3, 159, 37, 13, 153, 73, 65, 27, 1, 9 };
    int digits[] = {128, 64, 32, 16, 8, 4, 2, 1};
    پرسش:

    اعضای آرایهsegdispو digits بر چه اساسی نوشته شدن؟و اصلن چی هستن؟

  4. #4
    Junior Member
    تاریخ عضویت
    Jul 2016
    نوشته ها
    2
    { int segdisp[14] = {3, 159, 37, 13, 153, 73, 65, 27, 1, 9,253,99,97,255 };
    { int digits[] = {128,64,32,16, 8, 4, 2, 1};
    0=3و1=159و2=37و3=13و4=153و5=73و6=65و7=27و8 =1و9=9و-=253 ,99=c ,
    e=97

  5. #5
    Junior Member
    تاریخ عضویت
    Jul 2016
    نوشته ها
    2
    سلام کافیه بجای ال ای دی های روشن برای نمایش هر عدد و یا کاراکتر 0 بگذاریم و جای خاموش ها یک و عدد یک ها رو جمع کنیم البته از a و عدد 128 شروع کنید
    لایک کردن

  6. #6
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نمونه کد پیشنهادی دوستان :
    کد:
    
    int dataPin = 2;
    
    
    int latchPin = 3;
    
    
    int clockPin = 4;
    
    
    const byte ARRAY_SIZE = 27;
    
    
    byte segment_codes[ARRAY_SIZE];
    
    
    String available_chars[ARRAY_SIZE];
    
    
    void show(String value){
    
    
     int skip = 0;
    
    
     for(int i=0; i<value.length(); i++) {
    
    
       if(!((String)value[i]).equals(".")) {
    
    
         int indexOfCharToWrite = findIndexOfChar((String)value[i]);
    
    
         if(indexOfCharToWrite > -1){
    
    
           byte bitToWrite = 0;
    
    
           digitalWrite(latchPin, LOW);
    
    
           byte code = segment_codes[indexOfCharToWrite];
    
    
           boolean skipNext = false;
    
    
           if(((String)value[i+1]).equals(".")) {
    
    
             bitWrite(code, 7, 0);
    
    
             skipNext = true;
    
    
           }
    
    
           shiftOut(dataPin, clockPin, MSBFIRST, code);
    
    
           bitWrite(bitToWrite, i-skip, 1);
    
    
           shiftOut(dataPin, clockPin, LSBFIRST, bitToWrite);
    
    
           digitalWrite(latchPin, HIGH);
    
    
           if(skipNext){
    
    
             skip++;
    
    
           }
    
    
         }
    
    
       }
    
    
     }
    
    
    }
    
    
    int findIndexOfChar(String character){
    
    
     int wantedpos = -1;
    
    
     for(int i=0; i< ARRAY_SIZE; i++){
    
    
       if(character.equals(available_chars[i])){
    
    
         wantedpos = i;
    
    
         break;
    
    
       }
    
    
     }
    
    
     return wantedpos;
    
    
    }
    
    
    void setup() {
    
    
     available_chars[0] = "0";
    
    
     available_chars[1] = "1";
    
    
     available_chars[2] = "2";
    
    
     available_chars[3] = "3";
    
    
     available_chars[4] = "4";
    
    
     available_chars[5] = "5";
    
    
     available_chars[6] = "6";
    
    
     available_chars[7] = "7";
    
    
     available_chars[8] = "8";
    
    
     available_chars[9] = "9";
    
    
     available_chars[10] = "A";
    
    
     available_chars[11] = "b";
    
    
     available_chars[12] = "D";
    
    
     available_chars[13] = "c";
    
    
     available_chars[14] = "d";
    
    
     available_chars[15] = "E";
    
    
     available_chars[16] = "F";
    
    
     available_chars[17] = "H";
    
    
     available_chars[18] = "h";
    
    
     available_chars[19] = "L";
    
    
     available_chars[20] = "n";
    
    
     available_chars[21] = "I";
    
    
     available_chars[22] = "O";
    
    
     available_chars[23] = "o";
    
    
     available_chars[24] = "P";
    
    
     available_chars[25] = "S";
    
    
     available_chars[26] = " ";
    
    
     segment_codes[0]=0b11000000;
    
    
     segment_codes[1]=0b11111001;
    
    
     segment_codes[2]=0b10100100;
    
    
     segment_codes[3]=0b10110000;
    
    
     segment_codes[4]=0b10011001;
    
    
     segment_codes[5]=0b10010010;
    
    
     segment_codes[6]=0b10000011;
    
    
     segment_codes[7]=0b11111000;
    
    
     segment_codes[8]=0b10000000;
    
    
     segment_codes[9]=0b10011000;
    
    
     segment_codes[10]=0b10001000;
    
    
     segment_codes[11]=0b10000011;
    
    
     segment_codes[12]=0b11000110;
    
    
     segment_codes[13]=0b10100111;
    
    
     segment_codes[14]=0b10100001;
    
    
     segment_codes[15]=0b10000110;
    
    
     segment_codes[16]=0b10001110;
    
    
     segment_codes[17]=0b10001001;
    
    
     segment_codes[18]=0b10001011;
    
    
     segment_codes[19]=0b11000111;
    
    
     segment_codes[20]=0b10101011;
    
    
     segment_codes[21]=0b11111001;
    
    
     segment_codes[22]=0b11000000;
    
    
     segment_codes[23]=0b10100011;
    
    
     segment_codes[24]=0b10001100;
    
    
     segment_codes[25]=0b10010010;
    
    
     segment_codes[26]=0b11111111;
    
    
     pinMode(latchPin, OUTPUT);
    
    
     pinMode(clockPin, OUTPUT);
    
    
     pinMode(dataPin, OUTPUT);
    
    
    }
    void loop() {
    
    
     show("    5P.IO");
    
    
    }
    رفرنس:https://github.com/5pIO/7Segment

  7. #7
    Junior Member
    تاریخ عضویت
    Jan 2016
    نوشته ها
    11
    سلام.
    با تشکر ار نمونه کدی که گذاشتید، ممیز را چطور می شود نشون داد؟

  8. #8
    Junior Member
    تاریخ عضویت
    Feb 2017
    نوشته ها
    1
    سلام.ماژولی که در این صفحه است:
    ماژول سون سگمنت 4 رقمی همراه با درایور 74HC59

    چهار پایه دارد در حالی که در مثال این انجمن پنج پایه در نظر گرفته شده است:

    Arduino Seven segment
    GND GND
    5V VCC
    D7 Sclk
    D6 DIO
    D5 Rclk
    من یکی از این سون سگمنت ها رو از فروشگاه آفتاب رایانه خریدم که روش نوشته 3642bh که پایه های آن GND, VCC,DIO, CLK هستند که با مثال انجمن جور در نمی آید.لطفا مثالی دقیقا مربوط به همین سون سگمنتی که در:
    ماژول سون سگمنت 4 رقمی همراه با درایور 74HC59 وجود دارد را قرار بدین و البته در مورد پایه ها توضیحی هم بدهید.
    لایک کردن

  9. #9
    Junior Member
    تاریخ عضویت
    May 2016
    نوشته ها
    15
    سلام کد بالا زیاد به درد من نخورد چون قراره یه متن واسم چشمک بزنه و این کد بالا این کار رو انجام نمی ده و باید مدام در حلقه قرار بگیره کد زیر رو پیدا کردم اما نمی دونم چطوری یه عدد رو توش نمایش بدم
    int latchPin = 11; // RCLK
    int clockPin = 4; // SCLK
    int dataPin = 2; // DIO

    int numLights=24;
    unsigned long light = 0; // Bit pattern for entire display
    byte b1 = 0; // byte place holders for each shift register
    byte b2 = 0; // extracted from "light"
    byte b3 = 0;



    void setup()
    {
    pinMode(latchPin, OUTPUT);
    pinMode(dataPin, OUTPUT);
    pinMode(clockPin, OUTPUT);
    // Serial.begin(9600);
    }

    void loop()
    {
    for (int i = 0; i < numLights*2; i++)
    {
    int shift = i;
    if( i >= numLights ) //if i is above numlights then wee need to start
    { // moving back to the left.
    shift = numLights*2 - i - 1;
    }
    // Extract the bytes of the light patter to be sent out
    light = (long)(1)<<shift;
    b1 = (byte)((light>>16)&0xFF);
    b2 = (byte)((light>>8)&0xFF);
    b3 = (byte)((light)&0xFF);
    updateShiftRegister(); // shift out b1, b2 and b3
    delay(30);
    }
    }

    void updateShiftRegister()
    {
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, MSBFIRST, b1);
    shiftOut(dataPin, clockPin, MSBFIRST, b2);
    shiftOut(dataPin, clockPin, MSBFIRST, b3);
    digitalWrite(latchPin, HIGH);

    }

  10. #10
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    دیتاشیت tm1637

    فایل های پیوست شده فایل های پیوست شده

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

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

SEO by vBSEO