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





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









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





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

صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 18
  1. #1
    2014/04/09
    63
    0

    مشکل در ساخت دماسنج و رطوبت سنج

    سلام دوستان ميشه اين برنامه رو چک کنيد ببينم مشکل کجاست؟
    با pic کار نکردم بلد نيستم لطفا کمکم کنيد
    مدار رو ميبندم کل 7سگمنت روشن ميشه!!!
    کد:
    [// Define Soft-SPI connections for LED display
    #define MOSI_Pin   RC0_bit
    #define CS_Pin    RC1_bit
    #define CLK_Pin   RC2_bit
    
    // Define Data pin for DHT11
    #define Data     RC4_bit
    #define DataDir   TRISC4_bit
    #define FC_Select  RC3_bit  // Fahrenheit or Celcious select
    
    unsigned short TOUT = 0, CheckSum, i, check, u, NumSamples;
    unsigned short T_Byte1, T_Byte2, RH_Byte1, RH_Byte2;
    unsigned long int brightness=0x0b;
    unsigned int counter = 0, TempF, TempC, RH, ADC_OP, TempSum, RHSum;
    //unsigned short Brightness_Table[21] = {0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15};
    unsigned short Brightness_Table[21] = {0, 1, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 12, 13, 14, 15, 15};
    
    void SPI_Write_Byte(unsigned short num){
     unsigned short t, Mask, Flag;
     CLK_Pin = 0;
     Mask = 128;
     for (t=0; t<8; t++){
     Flag = num & Mask;
     if(Flag == 0) MOSI_Pin = 0;
     else MOSI_Pin = 1;
     CLK_Pin = 1;
     CLK_Pin = 0;
     Mask = Mask >> 1;
     }
    }
    
    void MAX7219_INIT() {
     // Disable Shutdown mode
     CS_Pin = 0;       // CS pin is pulled LOW
     SPI_Write_Byte(0x0C);  // Select Shutdown register
     SPI_Write_Byte(0x01);  // Set D0 bit to return to normal operation
     CS_Pin = 1;       // CS pin is pulled HIGH
    
     // Set BCD decode mode for digits DIG1-DIG3, and DIG5-DIG7
     CS_Pin = 0;       // CS pin is pulled LOW
     SPI_Write_Byte(0x09);  // Select Decode Mode register
     SPI_Write_Byte(0b00001100);  // Disable BCD mode for digits DIG0, DIG1
     CS_Pin = 1;       // CS pin is pulled HIGH
     // Set display brighness
     CS_Pin = 0;       // CS pin is pulled LOW
     SPI_Write_Byte(0x0A);  // Select Intensity register
     SPI_Write_Byte(brightness);  // Set brightness
     CS_Pin = 1;       // CS pin is pulled HIGH
    
      // Set display refresh
     CS_Pin = 0;       // CS pin is pulled LOW
     SPI_Write_Byte(0x0B);  // Select Scan-Limit register
     SPI_Write_Byte(0x03);  // Select digits DIG0-DIG3
     CS_Pin = 1;       // CS pin is pulled HIGH
    
     // Enable Display-Test
     CS_Pin = 0;       // CS pin is pulled LOW
     SPI_Write_Byte(0x0F);  // Select Display-Test register
     SPI_Write_Byte(0x01);  // Enable Display-Test
     CS_Pin = 1;       // CS pin is pulled HIGH
     Delay_ms(1000);
     // Disable Display-Test
     CS_Pin = 0;       // CS pin is pulled LOW
     SPI_Write_Byte(0x0F);  // Select Display-Test register
     SPI_Write_Byte(0x00);  // Disable Display-Test
     CS_Pin = 1;       // CS pin is pulled HIGH
    
    }
    
     void Display_Value(unsigned int j, unsigned short k){
     CS_Pin = 0;          // CS pin is pulled LOW
     SPI_Write_Byte(4);       // Send thousands digit
     SPI_Write_Byte((j/100)%10);
     CS_Pin = 1;          // CS pin is pulled HIGH
    
     CS_Pin = 0;          // CS pin is pulled LOW
     SPI_Write_Byte(3);       // Send hundreds digit
     SPI_Write_Byte(((j/10)%10));
     CS_Pin = 1;          // CS pin is pulled HIGH
    
     CS_Pin = 0;          // CS pin is pulled LOW
     SPI_Write_Byte(2);       // Send tens digit
     if(k <= 1) SPI_Write_Byte(0x63); // Display Degree symbol
     if(k == 2) SPI_Write_Byte(0x00); // Blank during RH
    
     CS_Pin = 1;          // CS pin is pulled HIGH
    
     CS_Pin = 0;           // CS pin is pulled LOW
     SPI_Write_Byte(1);      // Send ones digit
     if(k == 0) SPI_Write_Byte(0x47); // Display 'F'
     if(k == 1) SPI_Write_Byte(0x4E); // Display C
     if(k == 2) SPI_Write_Byte(0x67); // Display P
     CS_Pin = 1;          // CS pin is pulled HIGH
     }
    void StartSignal(){
     DataDir = 0;   // Data port is output
     Data  = 0;
     Delay_ms(25);
     Data  = 1;
     Delay_us(30);
     DataDir = 1;   // Data port is input
    
    }
    
    unsigned short CheckResponse(){
     TOUT = 0;
     TMR1L = 0;
     TMR1H = 0;
     T1CON.TMR1ON = 1;   // start timer
     while(!Data && !TOUT);
     if (TOUT) return 0;
     else {
      TMR1L = 0;
      TMR1H = 0;
      while(Data && !TOUT);
      if (TOUT) return 0;
      else {
      T1CON.TMR1ON = 0;
      return 1;
      }
     }
    }
    
    unsigned short ReadByte(){
     unsigned short num = 0;
     DataDir = 1;
     for (i=0; i<8; i++){
      while(!Data);
      TMR1L = 0;
      TMR1H = 0;
      T1CON.TMR1ON = 1;
      while(Data);
      T1CON.TMR1ON = 0;
      if(TMR1L > 40) num |= 1<<(7-i); // If time > 40us, Data is 1
     }
     return num;
    }
    
    void interrupt(){
     if(PIR1.TMR1IF){
      TOUT = 1;
      T1CON.TMR1ON = 0; // stop timer
      PIR1.TMR1IF = 0; // Clear TMR0 interrupt flag
     }
    }
    
    void Display_Brightness(){
     ADC_OP = ADC_Read(2);
     Brightness = ADC_OP/50;
     CS_Pin = 0;        // CS pin is pulled LOW
     SPI_Write_Byte(0x0A);   // Select Intensity register
     SPI_Write_Byte(Brightness_Table[brightness]);  // Update brightness
     CS_Pin = 1;        // CS pin is pulled HIGH
    }
    
    void Wait_Nsec(){
     Delay_ms(3000);
    }
    
    void main() {
     ANSEL = 0b00000100; // RA2/AN2 is analog input
     CMCON0 = 0x07 ;   // Disbale comparators
     TRISC = 0b00001000; // PORTC All Outputs except RC3
     TRISA = 0b00001110; // PORTA All Outputs, Except RA3 and RA2
    
     INTCON.GIE = 1;  //Enable global interrupt
     INTCON.PEIE = 1;  //Enable peripheral interrupt
     // Configure Timer2 module
     PIE1.TMR1IE = 1; // Enable Timer2 interrupt
     T1CON = 0;    // Prescaler 1:1, and Timer2 is off initially
     PIR1.TMR1IF =0;  // Clear TMR INT Flag bit
     TMR1H = 0;
     TMR1L = 0;
     MAX7219_INIT();      // initialize max7219
     if(!FC_Select) Display_Value(0, 0);
     if(FC_Select) Display_Value(0, 1);
    
     do{
      NumSamples = 0;
      TempSum = 0;
      RHSum = 0;
      for (u=0; u<4; u++) {
        StartSignal();
        check = CheckResponse();
        if (!check) {
          RH = 0;
          TempC = 0;
        }
        else{
           RH_Byte1 = ReadByte();
           RH_Byte2 = ReadByte();
           T_Byte1 = ReadByte();
           T_Byte2 = ReadByte();
           CheckSum = ReadByte();
           // Check for error in Data reception
           if (CheckSum == ((RH_Byte1 + RH_Byte2 + T_Byte1 + T_Byte2) & 0xFF))
           {
            TempC = 10*T_Byte1;
            RH = 10*RH_Byte1;
            TempSum = TempSum + TempC;
            RHSum = RHSum + RH;
            NumSamples ++;
           }
           else{
              TempC = 0;
              RH = 0;
           }
        }
        Delay_ms(2000);
      } // End for loop
      RH = RHSum/NumSamples;
      TempC = TempSum/NumSamples;
      TempF = 9*TempC/5 + 320;
      Display_Brightness();
      Display_Value(RH, 2);
      Wait_Nsec();
      Display_Brightness();
      if(!FC_Select) Display_Value(TempF, 0);
      if(FC_Select) Display_Value(TempC, 1);
    
     }while(1);
    }
  2. #2
    2007/11/22
    تبریز
    2,483
    492

    پاسخ : مشکل در ساخت دماسنج و رطوبت سنج

    سلام.
    قبل از هرچيزي؛عملکرد مدار چطور هست؟ قراره چيکار بکنه؟ برنامه رو کي نوشته؟

    مورد بعدي، تو انجمن با هم ديگه دوست هستيم و به هم احترام ميذاريم؛ اما کسي وظيفه نداره کاري رو انجام بده.

    تحليل کردن اين برنامه، سخته. حوصله و وقت ميخواد. لذا تا جاييکه بشه راهنماييتون ميکنيم که کد رو اصلاح بکنين. کد رو به قطعات کوچکتري تقسيمش بکنين تا راحت تر بشه بررسي کرد و نظر داد.

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  3. #3
    2014/04/09
    63
    0

    پاسخ : مشکل در ساخت دماسنج و رطوبت سنج

    برنامه رطوبت و دما رو روی یک 7سگمنت نشون میده
    برنامه نویسی pic اصلا بلد نیستم برنامه آماده است
    دانلود کردم
    ممنونم
  4. #4
    2007/11/22
    تبریز
    2,483
    492

    پاسخ : مشکل در ساخت دماسنج و رطوبت سنج

    خب شما چي ميخواين؟ هر دو تاشون رو ميخواين؟ اگه فقط دما باشه؛ برنامه دارم واسه يه سنسور دما که نسبتا هم عتيقه بود! ولي اصل کاري نمايش دادن روي سون سگمنت هست. شما مگه روش کار با سون سگمنت و مالتي پلکس کردنش رو بلد نيستين؟ ( از مباحث اوليه و ساده ي کار با ادوات خارجي تو ميکروکنترلر هست.حالا ميکرو هرچي ميخواد باشه)

    نقل قول نوشته اصلی توسط ahmad6870
    برنامه نويسي pic اصلا بلد نيستم برنامه آماده است
    بابا مگه PIC چيه که اينجوري ميگين؟؟ غير از اينه که اين هم ميکرو هست، AVR هم ميکرو؟؟ شما برنامه نويسي بلد باشين، جفتش نه تنها يکي هست، بلکه PIC به مراتب از AVR ساده تر هم هست.

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  5. #5
    2014/04/09
    63
    0

    پاسخ : مشکل در ساخت دماسنج و رطوبت سنج

    نقل قول نوشته اصلی توسط ahmad6870
    برنامه رطوبت و دما رو روی یک 7سگمنت نشون میده
    برنامه نویسی pic اصلا بلد نیستم برنامه آماده است
    دانلود کردم
    ممنونم
    من برنامه نویسیم کلا ضعیفه مخصوصا pic
    باز بسکام یه چیزی میفهمم
    میخوام دما و رطوبت رو رو 7سگمنت نشون بده فقطم همین برنامه رو تونستم پیدا کنم که کار نمیکنه
    ممنون از لطفتون آقا شاهرخ که وقت میزارین واسه من
  6. #6
    2007/11/22
    تبریز
    2,483
    492

    پاسخ : مشکل در ساخت دماسنج و رطوبت سنج

    سنسورتون چي هست؟ همون ماژول سنسوري که هم رطوبت ميخونه و هم دما و ارتباط باهاش SPI هست؟

    در مورد برنامه نويسي، ساده ترين و مفت ترين کامپايلر PIC Basic Pro هست که همين کامپايلر من رو معتاد به PIC کرد! کار کردن باهاش خيلي خيلي خيلي ساده س.

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  7. #7
    2012/06/06
    180
    17

    پاسخ : مشکل در ساخت دماسنج و رطوبت سنج

    سلام به همگي
    شما جناب ahmad6870 دقيقا بگو ميخواي با چه سنسوري اين
    کار رو انجام بدي يا اصلا برات نوع سنسور مهم نيست ؟
    و شما ميخواي اطلاعات دما و رطوبت چطور رو سون سگمنت
    نمايش داده شه ؟ ميخواي هر کدوم روي دو سون سگمنت جداگونه
    باشه يا نه روي يه سون سگمنت به ترتيب نمايش داده شن ؟
    مهم نیست که چه مدرکی دارید ، مهم این است که چه درکی دارید ...
  8. #8
    2014/04/09
    63
    0

    پاسخ : مشکل در ساخت دماسنج و رطوبت سنج

    دوستای گلم از همتون ممنونم که قصد کمک دارین
    من سنسورم dht11 دیگه الان واسم مهم نیست نوع نمایشش روی 7سگمنت فقط دما بر حسب ساتیگراد باشه
    اگه تک 7سگمنت باشه بهتره اگه دو تام باشه مشکای نیست
    از همگی ممنونم من تا شنبه وقت دارم خیلی لطف کردین
  9. #9
    2012/06/06
    180
    17

    پاسخ : مشکل در ساخت دماسنج و رطوبت سنج

    بهتر نبود شما براي شروع از سنسورهاي ساده تر استفاده ميکردين ؟
    اين سنسور به صورت سريال و نسبتا پيچيده تبادل اطلاعات ميکنه
    فقط يک پايه براي فرستادن اطلاعات دما و رطوبت داره
    يعني اون يک پايه با ارسال کدهاي 8 بيتي به ما دما و رطوبت رو نشون ميده
    مهم نیست که چه مدرکی دارید ، مهم این است که چه درکی دارید ...
  10. #10
    2014/04/09
    63
    0

    پاسخ : مشکل در ساخت دماسنج و رطوبت سنج

    نقل قول نوشته اصلی توسط ahmad.e.c.m
    بهتر نبود شما براي شروع از سنسورهاي ساده تر استفاده ميکردين ؟
    اين سنسور به صورت سريال و نسبتا پيچيده تبادل اطلاعات ميکنه
    فقط يک پايه براي فرستادن اطلاعات دما و رطوبت داره
    يعني اون يک پايه با ارسال کدهاي 8 بيتي به ما دما و رطوبت رو نشون ميده
    یعنی کلا بیخیال شم؟ :cry:
صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 18

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

  1. پاسخ: 360
    آخرين نوشته: 2019/11/03, 08:01
  2. پروژه با دماسنج و رطوبت سنج با dht11
    توسط Masoud0711 در انجمن میکروکنترلرهای AVR
    پاسخ: 21
    آخرين نوشته: 2017/10/06, 11:49
  3. کمک به ساخت دماسنج و رطوبت سنج با AVR
    توسط ava afzar در انجمن میکروکنترلرهای AVR
    پاسخ: 100
    آخرين نوشته: 2015/01/29, 21:29
  4. کمک برای ساخت دماسنج و رطوبت سنج
    توسط ahmad6870 در انجمن میکروکنترلرهای AVR
    پاسخ: 2
    آخرين نوشته: 2014/05/20, 16:11
  5. مشکل در پروژه دماسنج و رطوبت سنج
    توسط 91421146 در انجمن میکروکنترلرهای AVR
    پاسخ: 8
    آخرين نوشته: 2014/04/03, 18:04

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

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

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

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

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