قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

فيصل الريامي
:: مهندس ::
تاريخ التسجيل: Dec 2018
المشاركات: 36
نشاط [ فيصل الريامي ]
قوة السمعة:0
قديم 20-02-2019, 08:57 AM المشاركة 1   
افتراضي مطلوب كود القراءة من حساس الحرارة DHT-22 Twitter FaceBook Google+



مساء الخير اخواني الاعزاء ..
ممكن كود قراءة من الحساس DHT-22 باستخدام Pic-16f877a ولكم جزيل الشكر ..

اعلانات

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:111
قديم 21-02-2019, 12:26 AM المشاركة 2   
افتراضي


مساء الخير اخواني الاعزاء ..
ممكن كود قراءة من الحساس DHT-22 باستخدام Pic-16f877a ولكم جزيل الشكر ..
السلام عليكم ورحمه الله

أخي مع العلم لم تذكر لغة البرمجة اللتي تستخدمها ..
وهذا مثال لكود القرأة بالغة " C " والمترجم " mikroC PRO for PIC "

تفضل أخي هذا طلبك



كود البرنامج

كود:
    
    // ENG / ABDALLA HEGAZY **
    // DATA / 2019/1/20      **
    // RH _temp. controller **

  // Lcd pinout settings
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D7 at RB5_bit;
sbit LCD_D6 at RB4_bit;
sbit LCD_D5 at RB3_bit;
sbit LCD_D4 at RB2_bit;

// Pin direction
sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D7_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB2_bit;

 unsigned char  Check, T_byte1, T_byte2,RH_byte1, RH_byte2, Ch ;
 unsigned Temp, RH, Sum ;
 //////////////////////////////
 void StartSignal(){
 TRISD.F0 = 0;    //Configure RD0 as output
 PORTD.F0 = 0;    //RD0 sends 0 to the sensor
 delay_ms(18);
 PORTD.F0 = 1;    //RD0 sends 1 to the sensor
 delay_us(30);
 TRISD.F0 = 1;    //Configure RD0 as input
  }
 //////////////////////////////
 void CheckResponse(){
 Check = 0;
 delay_us(40);
 if (PORTD.F0 == 0){
 delay_us(80);
 if (PORTD.F0 == 1)   Check = 1;   delay_us(40);}
 }
 //////////////////////////////
 char ReadData(){
 char i, j;
 for(j = 0; j < 8; j++){
 while(!PORTD.F0); //Wait until PORTD.F0 goes HIGH
 delay_us(30);
 if(PORTD.F0 == 0)
       i&= ~(1<<(7 - j));  //Clear bit (7-b)
 else {i|= (1 << (7 - j));  //Set bit (7-b)
 while(PORTD.F0);}  //Wait until PORTD.F0 goes LOW
 }
 return i;
 }
 //////////////////////////////
 void main() {
 adcon1=0x06;
 Lcd_Init();
 Lcd_Cmd(_LCD_CURSOR_OFF);        // cursor off
 Lcd_Cmd(_LCD_CLEAR);             // clear LCD

 while(1){
  StartSignal();
  CheckResponse();
  if(Check == 1){
  RH_byte1 = ReadData();
  RH_byte2 = ReadData();
  T_byte1 = ReadData();
  T_byte2 = ReadData();
  Sum = ReadData();
  if(Sum == ((RH_byte1+RH_byte2+T_byte1+T_byte2) & 0XFF)){
  Temp = T_byte1;
  Temp = (Temp << 8) | T_byte2;
  RH = RH_byte1;
  RH = (RH << 8) | RH_byte2;
  Lcd_Out(1, 6, "Temp:   . C");
  Lcd_Out(2, 2, "Humidity:   . %");
  if (Temp > 0X8000){
  Lcd_Out(1, 11, "-");
  Temp = Temp & 0X7FFF; }
  LCD_Chr(1, 12, 48 + ((Temp / 100) % 10));
  LCD_Chr(1, 13, 48 + ((Temp / 10) % 10));
  LCD_Chr(1, 15, 48 + (Temp % 10));
  LCD_Chr(2, 12, 48 + ((RH / 100) % 10));
  LCD_Chr(2, 13, 48 + ((RH / 10) % 10));
  LCD_Chr(2, 15, 48 + (RH % 10));
  }
  else{
  Lcd_Cmd(_LCD_CURSOR_OFF);        // cursor off
  Lcd_Cmd(_LCD_CLEAR);             // clear LCD
  Lcd_Out(1, 1, "Check sum error");}
  }
  else {
  Lcd_Out(1, 3, "No response");
  Lcd_Out(2, 1, "from the sensor");
  }
  delay_ms(1000);
  }
  }
لاحظ في الكود العلمات الخضراء يمكنك تحديد طرف توصيل الحساس بتغيير البورت و رقم البن


ملفات البرنامج والمحكاة للتحميلhttp://www.mediafire.com/file/8aq23y...DHT22.rar/file


متابع معك في أي استفسار بخصوص هذا الحساس


التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 21-02-2019 الساعة 12:40 AM
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:111
قديم 21-02-2019, 12:48 AM المشاركة 3   
افتراضي


السلام عليكم ورحمه الله

أخي هذا كود لطريقة حفظ وقرأة القيم من الحساس DHT22 في ذاكرة ايبروم


كود:
  void main() {
    TRISD = 254; PORTD =0;
 
   // OSCCON =  0X70;       // Set internal oscillator at 8MHz
    ADCON1 = 0x0F;        // Configure AN pins as digital
    Lcd_Init();
    Lcd_Cmd(_LCD_CURSOR_OFF);        // cursor off
    Lcd_Cmd(_LCD_CLEAR);             // clear LCD
    Lcd_Out(1, 6, "Temp:   . C");
    Lcd_Out(2, 2, "Humidity:   . %");

     while(1){

      X=377;
        
      X1= X / 100 % 10;
      X2=  X / 10 % 10;
      X3= X % 10;

     EEPROM_Write(0,X1); delay_ms(50);
     EEPROM_Write(1,X2); delay_ms(50);
     EEPROM_Write(2,X3); delay_ms(50);

     X1=  EEPROM_Read(0); delay_ms(50);
     X2=  EEPROM_Read(1); delay_ms(50);
     X3=  EEPROM_Read(2); delay_ms(50);
        
      Temp= X1*100+ X2*10+  X3 ;
       
      LCD_Chr(1, 12, 48 + ((Temp / 100) % 10));
      LCD_Chr(1, 13, 48 + ((Temp / 10) % 10));
      LCD_Chr(1, 15, 48 + (Temp % 10));
       
   }
   }

بالتوفيق


فيصل الريامي
:: مهندس ::
تاريخ التسجيل: Dec 2018
المشاركات: 36
نشاط [ فيصل الريامي ]
قوة السمعة:0
قديم 21-02-2019, 03:55 PM المشاركة 4   
افتراضي


شكرا لك اخي الكريم عبدلله
وااااااضح جدا


فيصل الريامي
:: مهندس ::
تاريخ التسجيل: Dec 2018
المشاركات: 36
نشاط [ فيصل الريامي ]
قوة السمعة:0
قديم 21-02-2019, 04:13 PM المشاركة 5   
افتراضي


السلام عليكم ورحمه الله

أخي مع العلم لم تذكر لغة البرمجة اللتي تستخدمها ..
وهذا مثال لكود القرأة بالغة " C " والمترجم " mikroC PRO for PIC "

تفضل أخي هذا طلبك



كود البرنامج

كود:
    
    // ENG / ABDALLA HEGAZY **
    // DATA / 2019/1/20      **
    // RH _temp. controller **

  // Lcd pinout settings
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D7 at RB5_bit;
sbit LCD_D6 at RB4_bit;
sbit LCD_D5 at RB3_bit;
sbit LCD_D4 at RB2_bit;

// Pin direction
sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D7_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB2_bit;

 unsigned char  Check, T_byte1, T_byte2,RH_byte1, RH_byte2, Ch ;
 unsigned Temp, RH, Sum ;
 //////////////////////////////
 void StartSignal(){
 TRISD.F0 = 0;    //Configure RD0 as output
 PORTD.F0 = 0;    //RD0 sends 0 to the sensor
 delay_ms(18);
 PORTD.F0 = 1;    //RD0 sends 1 to the sensor
 delay_us(30);
 TRISD.F0 = 1;    //Configure RD0 as input
  }
 //////////////////////////////
 void CheckResponse(){
 Check = 0;
 delay_us(40);
 if (PORTD.F0 == 0){
 delay_us(80);
 if (PORTD.F0 == 1)   Check = 1;   delay_us(40);}
 }
 //////////////////////////////
 char ReadData(){
 char i, j;
 for(j = 0; j < 8; j++){
 while(!PORTD.F0); //Wait until PORTD.F0 goes HIGH
 delay_us(30);
 if(PORTD.F0 == 0)
       i&= ~(1<<(7 - j));  //Clear bit (7-b)
 else {i|= (1 << (7 - j));  //Set bit (7-b)
 while(PORTD.F0);}  //Wait until PORTD.F0 goes LOW
 }
 return i;
 }
 //////////////////////////////
 void main() {
 adcon1=0x06;
 Lcd_Init();
 Lcd_Cmd(_LCD_CURSOR_OFF);        // cursor off
 Lcd_Cmd(_LCD_CLEAR);             // clear LCD

 while(1){
  StartSignal();
  CheckResponse();
  if(Check == 1){
  RH_byte1 = ReadData();
  RH_byte2 = ReadData();
  T_byte1 = ReadData();
  T_byte2 = ReadData();
  Sum = ReadData();
  if(Sum == ((RH_byte1+RH_byte2+T_byte1+T_byte2) & 0XFF)){
  Temp = T_byte1;
  Temp = (Temp << 8) | T_byte2;
  RH = RH_byte1;
  RH = (RH << 8) | RH_byte2;
  Lcd_Out(1, 6, "Temp:   . C");
  Lcd_Out(2, 2, "Humidity:   . %");
  if (Temp > 0X8000){
  Lcd_Out(1, 11, "-");
  Temp = Temp & 0X7FFF; }
  LCD_Chr(1, 12, 48 + ((Temp / 100) % 10));
  LCD_Chr(1, 13, 48 + ((Temp / 10) % 10));
  LCD_Chr(1, 15, 48 + (Temp % 10));
  LCD_Chr(2, 12, 48 + ((RH / 100) % 10));
  LCD_Chr(2, 13, 48 + ((RH / 10) % 10));
  LCD_Chr(2, 15, 48 + (RH % 10));
  }
  else{
  Lcd_Cmd(_LCD_CURSOR_OFF);        // cursor off
  Lcd_Cmd(_LCD_CLEAR);             // clear LCD
  Lcd_Out(1, 1, "Check sum error");}
  }
  else {
  Lcd_Out(1, 3, "No response");
  Lcd_Out(2, 1, "from the sensor");
  }
  delay_ms(1000);
  }
  }
لاحظ في الكود العلمات الخضراء يمكنك تحديد طرف توصيل الحساس بتغيير البورت و رقم البن


ملفات البرنامج والمحكاة للتحميلhttp://www.mediafire.com/file/8aq23y...DHT22.rar/file


متابع معك في أي استفسار بخصوص هذا الحساس
أخي عبدالله هل ضروري زمن التاخير واحد ثانيه في نهايه الكود وما فائدته؟؟ اعذرني فأنا مبتديء


الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:111
قديم 21-02-2019, 11:16 PM المشاركة 6   
افتراضي


أخي عبدالله هل ضروري زمن التاخير واحد ثانيه في نهايه الكود وما فائدته؟؟ اعذرني فأنا مبتديء
هذا زمن أعادة القرأه من الحساس .. وبهذا يتم أخذ عينه من درجة الحراره والرطوبه بدقة كل واحد سانيه وهوا زمن مناسب يمكن الإستغناء عنه ولكن الأفضل ان يكون موجود لكي تلاحظ التغيرات السريعه اللتي تحدث في الحراره والرطوبه

بالتوفيق


فيصل الريامي
:: مهندس ::
تاريخ التسجيل: Dec 2018
المشاركات: 36
نشاط [ فيصل الريامي ]
قوة السمعة:0
قديم 22-02-2019, 12:26 AM المشاركة 7   
افتراضي


هذا زمن أعادة القرأه من الحساس .. وبهذا يتم أخذ عينه من درجة الحراره والرطوبه بدقة كل واحد سانيه وهوا زمن مناسب يمكن الإستغناء عنه ولكن الأفضل ان يكون موجود لكي تلاحظ التغيرات السريعه اللتي تحدث في الحراره والرطوبه

بالتوفيق
شكرا لك أخي عبدالله وجزاك الله خيرا

احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 1 اعجاب
شكراً عبدالله حجازى ( شكر العضو على هذه المشاركة )
اعجاب عبدالله حجازى ( أعجبته المشاركة )

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:111
قديم 22-02-2019, 12:36 AM المشاركة 8   
افتراضي


شكرا لك أخي عبدالله وجزاك الله خيرا
بالتوفيق ان شاء الله

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 01:56 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025