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

   

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 20-03-2014, 04:46 PM المشاركة 17   
Unhappy



السلام عليكم
يؤسفني كثيرا لانه لايوجد أحد يرغب بمشاركه في هذا الموضوع فهو موضوع عام وغايه منه تسهيل الكثير من مشكلات لانه بصراحه اعاده كتابه الكود لنفس موضوع لعده مرات يعتبر امر مملا لانه اذا كنت اريد استخدم عنصر ثابت مثلا STH1x فلماذا اكتب الكود مره اخرى في كل مشروع استخدم هذا حساس
لذا أجدد دعوتي لجميع الاخوه تقديم مالديهم من معلومات كمكتبه نتعامل معها بشكل اساسي أعتقد انه سوف يصبح البرمجه سهل جدا ولكم رائي

اعلانات

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 20-03-2014, 05:01 PM المشاركة 18   
افتراضي الجزء الثاني مكتبه STH1X


السلام عليكم
وجدت هذه مكتبه لــ STH1X قمت بتعديل عليه بشكل بسيط وهذه مكتبه بترجعلك حراره ورطوبه
http://arabsh.com/files/0c3344486df2...sth1x-rar.html
او
https://www.mediafire.com/?k7orwcb2wai1yf7

مكتبه بحاجه الى هذه التعريفات
1- التعريف الاتجاهات
كود:
//SHT11 connections
sbit SDA_ at RC4_bit;                 // Serial data pin
sbit SCL_ at RC3_bit;                 // Serial clock pin

sbit SDA_direction  at TRISC4_bit;        // Serial data direction pin
sbit SCL_direction at TRISC3_bit;        // Serial clock direction pin
طبعا بلون احمر متغير حسب البورت الذي تريد استخدامه

2- تعريف المتغيرات
تحتاج الى هذين مصفوفين
كود:
char Temperature[] = "000.00";
char Humidity[]    = "000.00";
3- طريقه استخدامها
تكتب هكذا
كود:
Read_SHT1X(1);
النتيجه بترجعلك قيمه مخزونه في مصفوفه مثلا حراره تنخزن في Temperature
ملاحظه مهمه كل رقم بالمصفوفه هو باسكي كود
طبعا يمكنك التعديل على مكتبه كأن ترجعلك قيمه كامله وليست في مصفوفه
قم بالتعديل على كود مكتبه ضمن داله القراءه


كود:
static void Read_SHT1X(char compensation)
{
//  INTCON = 0;                      // disable all interrupts

  SDA_Direction = 0;
  SCL_Direction = 0;                 // SCL is output


     // measuring temperature
    SOt = Measure(0x03);        // function for measuring (command 0x03 is for temperature)

     // measuring humidity
    SOrh = Measure(0x05);       // function for measuring (command 0x05 is for humidity)

// calculating temperature
// Ta_res = D1 + D2 * SOt
    if(SOt > D1){                     // if temperature is positive
                 Ta_res = (SOt * D2) - D1;        // calculate temperature
                 negative=1;
                }
    else {                            // else (if temperature is negative)
           Ta_res = D1 - (SOt * D2);        // calculate temperature
           negative=-1;
           Temperature[0]='-'; //mark negative
          }

// calculating humidity
// Rh_res = C1 + C2 * SOrh + C3 * SOrh^2
    sth1x_temp = SOrh * SOrh* C3/ 100000  ;            // calculate humidity
    Rh_res = SOrh * C2 / 100 - sth1x_temp - C1;         // calculate humidity
    Rh_true=((T2*SOrh)/1000)+T1;
   if( compensation==1)
                       {
                         Rh_true =(negative*Ta_res/100-25)*Rh_true;
                         Rh_true=Rh_true+Rh_res;        //calc. temperature compensated Humidity
                        }
   else Rh_true= Rh_res;
   
   if( Rh_true>=10000)Rh_true=10000;// 100%
   else if(Rh_true<100)Rh_true=100; //~ 1%
// preparing temperature for LCD
    if(negative==1)Temperature[0] = (Ta_res / 10000) + 48;  // example: Temperature[0] = 12345 / 10000 = 1, 1 + 48 = '1' - ASCII
    Temperature[1] = ((Ta_res % 10000) / 1000) + 48;           // example: Temperature[1] = 12345 % 10000 = 2345, Temperature[6] = 2345 / 1000 = 2, 2 + 48 = '2' - ASCII
    Temperature[2] = ((Ta_res % 1000) / 100) + 48;             // example: Temperature[2] = 12345 % 1000 = 345, Temperature[7] = 345 / 100 = 3, 3 + 48 = '3' - ASCII
    Temperature[4] = ((Ta_res % 100) / 10) + 48;               // example: Temperature[3] = 12345 % 100 = 45, Temperature[9] = 45 / 10 = 4, 4 + 48 = '4' - ASCII
    Temperature[5] = (Ta_res % 10 )+ 48;                    // example: Temperature[4] = 12345 % 10 = 5, 5 + 48 = '5' - ASCII

// preparing humidity for LCD
    Humidity[0] = Rh_true / 10000 + 48;                  // example: Humidity[0] = 12345 / 10000 = 1, 1 + 48 = '1' - ASCII
    Humidity[1] = Rh_true % 10000 / 1000 + 48;           // example: Humidity[1] = 12345 % 10000 = 2345, Humidity[6] = 2345 / 1000 = 2, 2 + 48 = '2' - ASCII
    Humidity[2] = Rh_true % 1000 / 100 + 48;             // example: Humidity[2] = 12345 % 1000 = 345, Humidity[7] = 345 / 100 = 3, 3 + 48 = '3' - ASCII
    Humidity[4] = Rh_true % 100 / 10 + 48;               // example: Humidity[3] = 12345 % 100 = 45, Humidity[9] = 45 / 10 = 4, 4 + 48 = '4' - ASCII
    Humidity[5] = Rh_true % 10 + 48;                    // example: Humidity[4] = 12345 % 10 = 5, 5 + 48 = '5' - ASCII

// delete unnecessary digits (zeros)
    if (Temperature[0] == '0')                             // if Temperature[5] = '0' then
      Temperature[0] = ' ';                                // insert blank character to Temperature[0]
    if (Temperature[0] == ' ' && Temperature[1] == '0')    // if Temperature[5] is blank and Temperature[1] = '0' then
      Temperature[1] = ' ';                                // insert blank character to Temperature[1]

    if (Humidity[0] == '0')                             // if Temperature[0] = '0' then
      Humidity[0] = ' ';                                // insert blank character to Temperature[0]
    if (Humidity[0] == ' ' && Humidity[1] == '0')       // if Temperature[1] is blank and Temperature[1] = '0' then
      Humidity[1] = ' ';                                // insert blank character to Temperature[1]

}

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 20-03-2014, 05:17 PM المشاركة 19   
افتراضي الجزء الثالث مكتبه 74HC595


السلام عليكم
هذه مكتبه لمتكامله 74hc595
http://arabsh.com/files/0c3344486df7...hc595-rar.html

او
https://www.mediafire.com/?tf1bj2y0k8046pg
هذه مكتبه تحتاج الى
1- الاتجاهات
كود:
extern sfr sbit ds ;
extern sfr sbit sh_cp;
extern sfr sbit st_cp ;
extern sfr sbit ds_dir ;
extern sfr sbit sh_cp_dir ;
extern sfr sbit st_cp_dir  ;
مثال
كود:
sbit ds  at RA1_bit;
sbit sh_cp at RA0_bit ;
sbit st_cp at RA2_bit ;
sbit ds_dir at TRISA1_bit;
sbit sh_cp_dir at TRISA0_bit;
sbit st_cp_dir  at TRISA2_bit;
مصفوفه لخزن البيانات

طريقه استخدامها
(ic_74hc595(num ,1,&my_data
num يعني رقم البن وموجود في متكامله
1 يعني اجعل هذا البن وهو num مساوي الى 1 ولجعله =0 نغير 1 الى 0
&my_data وهي مصفوفه ابعادها مساويه الى عدد متكاملات مضروبه في 8 او عدد pins مستخدمه
راجعو مثال فهو يوضح متكامله

الغايه منها:
1- زياده عدد اخراجات الى مضاعفات 8
2- التحكم بشكل مستقل في اي pin دون التأثير على pins اخرى


hamadalla31
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
المشاركات: 585
نشاط [ hamadalla31 ]
قوة السمعة:
قديم 20-03-2014, 05:45 PM المشاركة 20   
افتراضي


بسم الله ماشاء الله تبارك الله ربي يزيدك من علمه وفضله الواسع


hamadalla31
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
المشاركات: 585
نشاط [ hamadalla31 ]
قوة السمعة:
قديم 26-03-2014, 12:36 PM المشاركة 21   
x6 بارك الله لك واثابك بكل ماتحب من خيري الدنيا والأخرة


بارك الله لك اخي الكريم
وزادك من علمه وفضله

اخي الحبيب حين راجعت البرنامج الخاص بالساعة و هو يعمل بصورة جيدة جدا

لم افهم بعض النقاط
حسب معلوماتي ان البرنامج يدور في دالة void main () ولم اجد إستدعاء لأي دالة خاصة لمتكاملة الساعة DS1307 ومع ذلك الساعة تعمل جيدا ويتم تحديث الوقت فكيف يتم ذلك هل الإعلان عن مكتبة الساعة يكفي؟
يوجد خرج للمتكاملة DS1307 يمكن برمجته لأخذ تردد ا هرتز في الثانية فكيف ابرمجه وكيف استفيد من اشارة صباح ومساء لعرضها


هل يمكنني توصيل EEPROM وحساس حرارة رقمي علي نفس الخطين كما رايتها في احدي المنتديات ام الأفضل ان نضع كل جهاز علي خط بمفرده
وجزاكم الله بكل خير


merzouk_rdz
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2014
الدولة: Algeria
المشاركات: 56
نشاط [ merzouk_rdz ]
قوة السمعة:
قديم 26-03-2014, 02:54 PM المشاركة 22   
افتراضي شكرا للمكتبة 1307ds


شكرا جزيل الشكر لتقديمك هذه المكتبة التي تصبح مبدأ لمكتبات اخرى جديدة و ذلك لتسهيل البرمجة أكثر فأكثر.


الصورة الرمزية كرار العامري
كرار العامري
:: مهندس متواجد ::
تاريخ التسجيل: Oct 2010
الدولة: العراق
المشاركات: 159
نشاط [ كرار العامري ]
قوة السمعة:
قديم 27-03-2014, 02:35 AM المشاركة 23   
افتراضي


السلام عليكم ورحمة الله وبركاته
اخي حسن هادي محمود
جزاك الله كل خير على هذه المعلومات القيمة والتي انا بحاجة ماسة لها وخصوصا اني اعمل مشروع ساعة الكترونية بالمتحكم pic وما اخرني عن تنفيذ المشروع عمليا هو المتكاملة DS1307 حيث اني لم اجدها
ولكن وبحمد الله تعالى عثرت على RTC في بغداد بعد عناء طويل
وبنفس الوقت طلبتها من موقع الامزون حيث ان لي صديق هناك قام بشرائها لي وهي قادمة الي بالطريق
اشكرك اخي على ما قدمته واشكرك على ما ستقدمه لي ولكل الاخوان في هذه القرية الغنية بالعقول والعلم ، وانا متابع جيد لهذا الموضوع من بدايته
اثابك الله على ما تقدمه لنا وجعله في ميزان حسناتك وننتظر المزيد من ابداعاتك


وما توفيقي إلا بالله العلي العظيم


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 27-03-2014, 10:09 AM المشاركة 24   
افتراضي


بارك الله لك اخي الكريم
وزادك من علمه وفضله

اخي الحبيب حين راجعت البرنامج الخاص بالساعة و هو يعمل بصورة جيدة جدا

لم افهم بعض النقاط
حسب معلوماتي ان البرنامج يدور في دالة void main () ولم اجد إستدعاء لأي دالة خاصة لمتكاملة الساعة DS1307 ومع ذلك الساعة تعمل جيدا ويتم تحديث الوقت فكيف يتم ذلك هل الإعلان عن مكتبة الساعة يكفي؟
يوجد خرج للمتكاملة DS1307 يمكن برمجته لأخذ تردد ا هرتز في الثانية فكيف ابرمجه وكيف استفيد من اشارة صباح ومساء لعرضها


هل يمكنني توصيل EEPROM وحساس حرارة رقمي علي نفس الخطين كما رايتها في احدي المنتديات ام الأفضل ان نضع كل جهاز علي خط بمفرده
وجزاكم الله بكل خير
السلام عليكم
أعتذر أخي لم أشاهد هذه مشاركه
بالنسبه أستدعاء داله خاصة لمتكاملة الساعة DS1307 أكيد موجوده وألا كيف تعمل فألاعلان عن داله DS1307 وحدها لايكفي فلابد من أستدعائها
انا لاعرف بالضبط أي برنامج تقصد فهل أقصد مشروع الي أستخدمت فيها متكامله 74hc595
أعطني فقط كود داله main لاشرح لك كيف تم أستدعاء الداله خاصة لمتكاملة DS1307
=============================================
طبعا مكتبه خاصة لمتكاملة DS1307 فهي تعمل بنظامين 12 و 24 فأذا أختاريت نظام 12 فهي بترجعلك متغير أسمه k_12_24 فهذا له قيمتين
اذا كان k_12_24=0 فهذا يعني الوقت صباحا او ِAM
اذا كان k_12_24=1 فهذا يعني الوقت مساءا او ِPM
شاهد هذا الكود والموجود ضمن المكتبه
كود:
 if(kw_12_24==24)k_12_24=24;//for system 24
 else if(kw_12_24==12)// for system 12
                    {
                    
                     if(hours <= 12 )
                                     {
                                       k_12_24=0; // this mean AM,
                                       if(hours==0)hours=1;
                                     }
                     if(hours >= 13)
                                {
                                 k_12_24=1;//this mean PM,
                                 hours = hours -12;
                                }
                     }
=================================================
نعم يمكن ربط عده أجهزه وأعتقد يصل العدد الى 32 جهاز يمكنك ربطه عبر سلكين فقط طبعا الاجهزه المذكوره تعمل ضمن البروتوكول I2C
طبعا لكل جهاز عنوان خاص به وبتالي لن تعمل الاجهزه في وقت واحد وانما دائما يعمل جهاز واحد فقط



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