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

   

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 16-05-2014, 06:31 PM المشاركة 73   
افتراضي الشرح المكتبه السابعه حساس الحراره الرقمي DS18x20



السلام عليكم
هذه مكتبه لحساس حراره ds18x20
ارجو تحميل مشروع من هذا الرابط
http://www.qariya.info/vb/showthread.php?t=147522

اسمها
DS18x20 Programmable Resolution 1-Wire Digital Thermometer.c

تحياتي
بسم الله الرحمن الرحيم وصلى الله على محمد وال بيته الطيبين الطاهرين

في هذه مكتبه (( وهي قابله للتعديل )) تؤدي عده مهام

1- نحتاج الى التهيئه حساس في بدايه البرنامج
مثال
كود:
ds18x20_init(&porte,2,9);
حيث تلاحظون تحتاج الى البورت ورقم بن الي تم ربط فيه حساس لانه يعمل ببروتوكول one_wire
اذن حسب مثال تم ربط حساس في بورت E ورقم البن هو 2

اما 9 هو معامل دقه ويعتمد على حساس مثلا حساس ds18s20 معامل دقه =9
لاحظو الصوره
http://img02.arabsh.com/uploads/imag...444264fb0c.png
تلاحظون وجود بت مكتوب بداخله 2^-1 يعني = 0.5
كود:
static void ds18x20_init( char *port_ds18x20_ ,  char pin_ds18x20_ , unsigned short TEMP_RESOLUTION_ds18x20   )
{
  //  Set TEMP_RESOLUTION to the corresponding resolution of used DS18x20 sensor:
 //  18S20: 9 (default setting; can be 9,10,11,or 12)
 //  18B20: 12
   RES_SHIFT_ds18x20 = TEMP_RESOLUTION_ds18x20 - 8;
   port_ds18x20= port_ds18x20_;
   pin_ds18x20 =pin_ds18x20_;

}
وبتالي اخبرناه ان لدينا فارزه واحده لهذا الحساس عندها أصبحRES_SHIFT_ds18x20=1 وبتالي هذا يستخدم لعزل هذا الرقم عشري عن الرقم الصيحيح وايضا يستخدم في حساب الرقم العشري لكي يتم أضافتها الرقم صحيح
اما حساس ds18B20
http://img03.arabsh.com/uploads/imag...444264fa06.png

تلاحظون وجود اربعه مرتبات عشريه وعليه resulation=12 وعندها يصبح RES_SHIFT_ds18x20=4 وبتالي سنتعامل مع هذه فوارز العشريه

===============================================

2- داله قياس درجه الحراره
كود:
meausring_Temperature_ds18x20();
هذه الداله نحصل منها على
1- رقم صحيح لدرجه حراره من خىل متغير اسمه temp_ds18x20
2- تعطي لنا flag هل درجه حراره سالبه ام موجبه من خلال هذا متغير
s_ds18x20 قيمته =-1 اذا كانت درجه حراره temp_ds18x20 سالبه ويصبح قيمته =1 اذا كان درجه الحراره موجبه
يجب أخذ بنظر الاعتبار هذا s_ds18x20 لان في جميع الاحوال تكون temp_ds18x20 موجبه ولكي نعرف انها قيمه سالبه تختبر s_ds18x20 هل =-1 او 1
مثلا temp_ds18x20=10 فأذا كان s_ds18x20=-1 فان temp_ds18x20=-10
واذا كان flag=1 فان قيمه حراره تبقى موجبه

=========================================
3- اما بالنسبه للكسر فمتغير temp_fraction_ds18x20
ولكن يجب تقسيم temp_fraction_ds18x20 على 10000 وبعد ذلك يمكن أضافتها الى قيمه صحيحهtemp_ds18x20
يعتي بأختصار داله قياس ترجع ثلاث متغيرات
temp_ds18x20 يمثل عدد صحيح من نوع int ولكن قيمه موجبه
وكذلك temp_fraction_ds18x20 ويمثل الرقم عشري ولكن للحصول على رقم عشري يجب تقسيمه على 10000

وكذلك s_ds18x20 هو علم لمعرف هل قيمه درجه حراره موجبه ام سالبه

============================================

اخير داله خزن او قراءه درجه حراره الصغرى او العظمى
كود:
  alarm_store_ds18x20(high_temp,low_temp,1);
هذه داله تستخدم لخزن درجه الحراره الصغرى والعظمى او لقراءتهما من ذاكره ايبروم للحساس
فأذا وضعنا 1 بداله فأنه سوف يتم قراءه درجه حراره الصغرى والعظمى ويتم خزنها في متغيرات
حيث يتم خزن الحراره العظمى في high_temp , وكذلك الحراره الصغرى في low_temp
الترتيب متغيرات مهم
لو تم مراجعه منول خاص بحساس صفحه 4 لوجدنا ان ريجيستر خاص TH,TL
يتكون من 8 بت (( من bit0 -bit7)) حيث bit7 هو flag لمعرفه هل قيمه مخزونه في ريجيستر هي موجبه ام سالبه
http://img04.arabsh.com/uploads/imag...444266f001.png

وعليه تم أستخدام هذين متغيرين لخزن القيم الموجبه او سالبه في ريجيستر
flag_high_nagative هذا علم للحراره العظمى اذا كان =1 يعني قيمه موجبه واذا كان =-1 يعني قيمه سالبه

flag_low_nagative هذا علم للحراره الصغرى اذا كان =1 يعني قيمه موجبه واذا كان =-1 يعني قيمه سالبه


التعديل الأخير تم بواسطة : حسن هادي محمود بتاريخ 16-05-2014 الساعة 09:16 PM السبب: تكمله الموضوع
اعلانات

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 31-05-2014, 06:34 PM المشاركة 74   
افتراضي تحديث مكتبه 74hc595 تجدونها في مشروع بأسم74hc595_lib.c


السلام عليكم
هذه مكتبه لمتكامله 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 اخرى

السلام عليكم
قمت بتحديث مكتبه 74hc595 (( يفضل استخدام هذه مكتبه )) وهي تستخدم لزياده عدد output وكذلك التحكم بأي خرج
مشروع مرفق لتحكم 24 ليد (( طبعا يمكن تغير ليد باي خرج كان ))
http://www.4shared.com/rar/kR3U9foxc...ny_output.html

تحياتي

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

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 31-05-2014, 06:41 PM المشاركة 75   
افتراضي ماذا تحتاج مكتبه مكتبه 74hc595 جديده


السلام عليكم
قمت بتحديث مكتبه 74hc595 (( يفضل استخدام هذه مكتبه )) وهي تستخدم لزياده عدد output وكذلك التحكم بأي خرج
مشروع مرفق لتحكم 24 ليد (( طبعا يمكن تغير ليد باي خرج كان ))
http://www.4shared.com/rar/kR3U9foxc...ny_output.html

تحياتي
1- للتعاريف مداخل
مثال
كود:
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;
طبعا يمكن تغير البورت

2- تهيئه 74hc595
مثال
كود:
ic_74hc595_init(length);
طبعا length يمثل عدد ايسيات 74hc595 وقد قمت بتعريفه في بدايه البرنامج
كود:
#define length 3
اما كيف تستخدم
كود:
ic_74hc595(pins ,1, &my_data);
pins يعني رقم output
اما 1 او 0 فهو يعني حاله خرج هل نريده بواحد ام 0 يعني اما on او off
&my_data طبعا تمثل الخرج فمثلا لو نريد نتحكم بــ 64 بت فأن عدد عناصر مصفوفه my_data = 64/8=8
تحياتي


hamadalla31
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
المشاركات: 585
نشاط [ hamadalla31 ]
قوة السمعة:
قديم 14-06-2014, 06:02 PM المشاركة 76   
افتراضي بارك الله لك اخي الحبيب


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


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 14-06-2014, 06:21 PM المشاركة 77   
افتراضي


اخي الحبيب حسن هادي
السلام عليكم ورحمة الله وبركاته
مطلوب مني جهاز استدعاء لمستشفي
حين يضغط المريض علي الزر الذي بجوارة يكتب اسمه علي شاشة ال سي دي في غرفة التمريض ووقفت علي الأسماء تأخذ حيز كبير في الرامات لدرجة توقف الكومبيلر عن التكملة ..........فكيف اصمم مصفوفة أضع فيها الأسماء وكيف استدعيها
وجزاكم الله بكل خير
السلام عليكم
بالطبع الاسماء قابله للتغير ولكن هل هي بلغه الانكليزيه
1- ممكن أضافه رامات خارجيه sd card واستدعاءه حسب رقم الغرفه
2- او أضافه ايبروم خارجيه لدعم رام داخلي وكذلك واستدعاءه حسب رقم الغرفه
3- لابد من زياده مداخل البك لان عدد سويجات كثيره

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

طبعا موضوعك جيد وسحاول دعمك قدر مستطاع


hamadalla31
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
المشاركات: 585
نشاط [ hamadalla31 ]
قوة السمعة:
قديم 14-06-2014, 06:58 PM المشاركة 78   
افتراضي بارك الله لك اخي الحبيب


السلام عليكم
بالطبع الاسماء قابله للتغير ولكن هل هي بلغه الانكليزيه
1- ممكن أضافه رامات خارجيه sd card واستدعاءه حسب رقم الغرفه
2- او أضافه ايبروم خارجيه لدعم رام داخلي وكذلك واستدعاءه حسب رقم الغرفه
3- لابد من زياده مداخل البك لان عدد سويجات كثيره

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

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


derkaoui849
:: مهندس ::
تاريخ التسجيل: May 2006
المشاركات: 27
نشاط [ derkaoui849 ]
قوة السمعة:
قديم 22-06-2014, 01:18 AM المشاركة 79   
افتراضي


السلام عليكم
ممكن مكتب ل DS1302


derkaoui849
:: مهندس ::
تاريخ التسجيل: May 2006
المشاركات: 27
نشاط [ derkaoui849 ]
قوة السمعة:
قديم 22-06-2014, 03:21 AM المشاركة 80   
افتراضي


1- للتعاريف مداخل
مثال
كود:
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;
طبعا يمكن تغير البورت

2- تهيئه 74hc595
مثال
كود:
ic_74hc595_init(length);
طبعا length يمثل عدد ايسيات 74hc595 وقد قمت بتعريفه في بدايه البرنامج
كود:
#define length 3
اما كيف تستخدم
كود:
ic_74hc595(pins ,1, &my_data);
pins يعني رقم output
اما 1 او 0 فهو يعني حاله خرج هل نريده بواحد ام 0 يعني اما on او off
&my_data طبعا تمثل الخرج فمثلا لو نريد نتحكم بــ 64 بت فأن عدد عناصر مصفوفه my_data = 64/8=8
تحياتي
http://www.mikroe.com/click/bargraph/
في هذا المثال يشرح طريقة اخراج PWM لو ممكن تنفيد المشروع على ISIS واضافة الطريقة للمكتبة 74hc595



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