مساعده في ال7-segment

wavestorm1986

New Member
السلام عليكم

اخواني الكرام جزء من مشورعي عن هو عن طريق عرض نبضات القلب بواسطه السيفن سيكمنت انا حسب معلوماتي احتاج الى decoder و pic
الحمد لله انا عندي pic16f و سوف احاول اني ابرمجه لمعرفه عدد نبضات القلب فهل من طريقه او ارشاد من المكن ان اتبعه لحل مشكلتي ؟؟


ساعدوني الله يساعدكم

دمتم بامان الله و حفظه
 
السلام عليكم

ان عملية الاظهار على السيفن سيجمنت ليس بالصعوبة التي تتصورها ... المهم في كل الموضوع :

هل تعرف كيف تقيس نبضات القلب ؟؟؟ فان كان جوابك نعم ... فان عملية الاظهار على السيفن سيجمنت سهله

جدا ..المهم هل استخدمت البيك لقياس نبضات القلب او حسابها ام استخدمت دارة خارجية ... ارجو منك

التوضيح وان شاء الله نفيد جميع الاخوة في المنتدى ان شاء الله ...ربنا يوفقك...

واخر دعوانا ان الحمدلله رب العالمين .. وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم...
 
geniusse01
اخي الكريم شكرا على المتابعه, نعم انا اعرف كيف اقيس النبضات و لكن مشكلتي هيه انني لم استخدم البيك لقياس النبضات لانني لا اعرف كيف تتم مثل هكذا خطوه ؟؟

اذا مثل ما تفضلت و قلت انها سهله فهل اجد اي دليل ممكن ان يرشدني للحل ؟؟؟

دمتم بامان الله و حفظه
 
السلام عليكم حسنا ما هي الدارة التي تستخدمها لقياس النبضات ... وانا يمكنني التعامل مع البيك لبرمجته بحيث يقوم بعد النبضات ويظهرها على السيفن سيجمنت ... الرجاء وضع الدارة التي تستخدمها للقياس ومبدا العمل حتى نستفيد من الدارة ...وانا ساساعد بالباقي ان شاء الله ...ربنا يوفقك...واخر دعوانا ان الحمدلله رب العالمين ... وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم...
 
اخي الكريم المرفق ادناه يوضح الدائره و هيه مجربه عن طريق الmultisim و بالحقيقه و تعمل بشكل بسيط و سهل ايضا
مثل ما تعرف ان كل نبضات القلب تحتاج الى electrode
فمصدر الفلوتيه شي مشابه للقلب في الفلوتيه و التردد اما اخر electrode فهو مربوط للارض ground
طبعا الدائره تبرهن ان المضخم يعمل على تضخيم الفلوتيه و اذا تريد استطيع ان ارسل لك الداتا كامله ايضا

ام الرباط في الاسفل يوضح احد الدوائر مربطوه للبيك و لكن البرمجه بلغه الاسمبلي و انا احتاج الى لغه السي
و الشي الاخر يا اخي ان الدائره في الرباط باللغه الفرنسيه و لكن اجزاء الدائره ممكن ان تفهم


سوف احمل دائرتي على الربد شير و الرباط للدائره الاخري و التي لم تجرب

http://rapidshare.com/files/345780805/ad620.bmp.html

http://pagesperso-orange.fr/fabrice.sincere/cm_electronique/projet_pic/cardiogramme/cardiogramme.htm
 
اخي الكريم المرفق ادناه يوضح الدائره و هيه مجربه عن طريق الmultisim و بالحقيقه و تعمل بشكل بسيط و سهل ايضا
مثل ما تعرف ان كل نبضات القلب تحتاج الى electrode
فمصدر الفلوتيه شي مشابه للقلب في الفلوتيه و التردد اما اخر electrode فهو مربوط للارض ground
طبعا الدائره تبرهن ان المضخم يعمل على تضخيم الفلوتيه و اذا تريد استطيع ان ارسل لك الداتا كامله ايضا

ام الرباط في الاسفل يوضح احد الدوائر مربطوه للبيك و لكن البرمجه بلغه الاسمبلي و انا احتاج الى لغه السي
و الشي الاخر يا اخي ان الدائره في الرباط باللغه الفرنسيه و لكن اجزاء الدائره ممكن ان تفهم


سوف احمل دائرتي على الربد شير و الرباط للدائره الاخري و التي لم تجرب

http://rapidshare.com/files/345780805/ad620.bmp.html

http://pagesperso-orange.fr/fabrice.sincere/cm_electronique/projet_pic/cardiogramme/cardiogramme.htm


السلام عليكم

بما انك تعرف تفاصيل الدارة ... اريد ان اسال ؟؟؟ اولا بالنسبة للنبضات فهي ستظهر على اخر طرف في الدارة عند الطرف B اليس كذلك ؟؟؟ السؤال الثاني هل يجب ان تحسب نبضات القلب خلال دقيقة كاملة ام يمكن مثلا حساب القيمة خلال نصف ثانية وضربه بـ 2 . يعني هل ينفع القيم التقريبية ؟؟؟ لماذا لم تاخذ الكود الموجود وتستخدمه مباشرة ؟؟؟ ام مطلوب منك شرح الكود ايضا في المشروع ؟؟؟ ربنا يوفقك...

انتظر اجابتك لابدا في الكود ان شاء الله تعالى ..

واخر دعوانا ان الحمدلله رب العالمين ... وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم....
 
geniusse01
السلام عليكم
الدائره في الرباط الاول هيه دائرتي اما الثانيه فانا وجدتها في احد المنتديات
و نعم دائرتي يجب ان تربط عند الطرف B
دائرتي تعمل بشكل جيد في الرباط لاول و هيه التي يجب ان ابرمج البيك لها و لهذا لدي خيارين اما PIC16F84A او PIC16F876
اي واحد من اعلاه سيكون وافي بالغرض

اخي الكريم البرنامج يجب ان يمتب بلغه الC و ليس الاسمبلي و لانه انا لست جيدا في الاسمبلي و افضل الC للسهوله و نعم مطلوب مني الشرح الكامل للبرنامج

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

بارك الله فيك و جزاك الله كل الخير
 
geniusse01
السلام عليكم
الدائره في الرباط الاول هيه دائرتي اما الثانيه فانا وجدتها في احد المنتديات
و نعم دائرتي يجب ان تربط عند الطرف B
دائرتي تعمل بشكل جيد في الرباط لاول و هيه التي يجب ان ابرمج البيك لها و لهذا لدي خيارين اما PIC16F84A او PIC16F876
اي واحد من اعلاه سيكون وافي بالغرض

اخي الكريم البرنامج يجب ان يمتب بلغه الC و ليس الاسمبلي و لانه انا لست جيدا في الاسمبلي و افضل الC للسهوله و نعم مطلوب مني الشرح الكامل للبرنامج

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

بارك الله فيك و جزاك الله كل الخير

السلام عليكم

كيف الحال اخي الكريم ...على اعتبار ان مخرج الطرف B في دارتك هو نبضات القلب ..ساكتب لك البرنامج ان شاء الله بالميكروسي ..بحيث عند الضغط على مفتاح معين يبدا الجهاز بحساب نبضات القلب وبعد دقيقة كاملة سيظهر النتيجة على السيفن سيجمنت ... وبعدها يعود لانتظار ان تضغط على الزر ليعيد حساب النبضات من جديد ساكتب البرنامج للبيك PIC16F84A واعطيك الدارة مع الاظهار للسيفن سيجمنت على اساس 3 خانات عرض لعدد ضربات القلب.. طبعا ساستخدم كريستالة بتردد 32768 هيرتز لتسهيل الحساب ... انتظرني اليوم او غدا ان شاء الله ستكون الدارة عندك ...وسنتناقش في البرنامج ...ربنا يوفقك ويسهل امورك...

واخر دعوانا ان الحمدلله رب العالمين ... وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم...
 
السلام عليكم
بارك الله فيك يا اخي و دعائي لك بالموفقيه و النجاح و لكن عندي بعض الاستفسارت
انا استخدم الmplab و لا استخدم المايكرسي فهل عمل الاثنين هو نفس الشي ؟؟
هل البرناج سيكون بلغه السي مثل ما مطلوب مني ؟؟ ارجو ذلك


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


بانتظار مساعدتكم و جزاك الله كل خير


السلام عليكم

بالنسبة لسؤالك عن الMPLAP ... فان اي عنصر رقمي يتعامل مع الرقمين صفر وواحد ... ولا يفهم غيرها ...اما الانسان فمن الصعب عليه ان يكتب برنامج يحتوي اصفار وواحدات ... لذلك تم صناعة برامج وظيفها ان يكتب الانسان البرنامج المطلوب بصيغة معينة ومفهومة له (بحيث يقوم هذا البرنامج بتحويل هذه الصيغة المفهومة للانسان الى الاصفار والواحدات ...) هذه البرامج تدعى كومبايلر ..فكل لغه لها برنامج خاص باللغة بحيث يحولها الى لغة الاصفار والواحدات ... ان برنامح MPLAP يقوم بالتحويل من لغة الاسيمبلي الى لغة الاصفار والواحدات ..بينما كومبايلر الميكروسي يحول اللغة من الميكروسي الى لغة الاصفار والواحدات ...وهكذا كل لغة لها كومبايلر خاص بها....انا اتعامل مع الميكروسي وقد كتبت برنامج لقياس عدد النبضات ...وهو على الرابط :

http://arabsh.com/b0rgykcowl1p.html

طبعا وهو بلغة الميكروسي ...ارجو منك تجربته عمليا للتاكد منه ...فبع الاشياء قد لا تظهر الا عمليا....

البرنامج هو :

Rich (BB code):
char beat_rate=0,med,time=0;
char num[10]={126,12,182,158,204,218,250,14,254,222};
void interrupt()
{
if(intcon.f1==1)
{
beat_rate++;
intcon.f1=0;
}
if(intcon.f2==1)
{
time++;
if(time==60)
   {
     time=0;option_reg.f5=1;intcon=0;
   }
}
}
void show()
{
     med=beat_rate/100;
     portb=num[med];
     porta.f2=0;delay_ms(10);
     porta.f2=1;
     med=(beat_rate%100)/10;
     portb=num[med];
     porta.f1=0;delay_ms(10);
     porta.f1=1;
     med=beat_rate%10;
     portb=num[med];
     porta.f0=0;delay_ms(10);
     porta.f0=1;
}

void main ( )
{
trisa=0b11111000;
trisb=0b00000001;
porta=0b00000111;
tmr0=0;
option_reg=0b11100100;
intcon=0;
while(1)
{
start:
    while(porta.f3==1)
      {
      show();
      }
      beat_rate=0;
      option_reg.f5=0;
      intcon=0b10110000;
    while(intcon.f5==1)
     {
        show();
     }
    intcon=0;
    while(beat_rate!=0)
     {
      show();
      if(porta.f3==0) {delay_ms(250); tmr0=0; beat_rate=0;goto start;}
     }
}
}

لاي استفسار فانا موجود ان شاء الله....ربنا يوفقك ويسهل امورك..

واخر دعوانا ان الحمدلله رب العالمين .. وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم...
 
السلام عليكم
بارك الله فيك يا اخي
عندي بعض الاستفسارات
1- هل تتفضل حضرتك و تشرح البرنامج لي ؟ يعني الفكره ما هيه ؟ و لماذا الarray من هذا الارقام و ليس غيرها ؟
2- هل من الممكن ان اعرف ما هيه النتغيرات التي فرضتها ؟ مثلا med ??
3- ارجو من حضرتكم مساعتي لاكمال مشورعي فانا حاليا ادرس ال pic +atmel و لهذا سوف احاول جاهدا ان ابلغكم بالنتائج بعد التنفيذ
 
السلام عليكم
بارك الله فيك يا اخي
عندي بعض الاستفسارات
1- هل تتفضل حضرتك و تشرح البرنامج لي ؟ يعني الفكره ما هيه ؟ و لماذا الarray من هذا الارقام و ليس غيرها ؟
2- هل من الممكن ان اعرف ما هيه النتغيرات التي فرضتها ؟ مثلا med ??
3- ارجو من حضرتكم مساعتي لاكمال مشورعي فانا حاليا ادرس ال pic +atmel و لهذا سوف احاول جاهدا ان ابلغكم بالنتائج بعد التنفيذ


السلام عليكم

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

المتغيرات تفيدني في العمليات كاملة مثل المتغير MED الي يحسب الخانه المحددة وبعدها اخرجها على الاطراف المحددة...

المصفوفة استخدمتها بحيث تحفظ الارقام من صفر الى 9 .. اذا لم تستخدم هذه الطرقية فستحتاج الى دارة متكاملة من اجل اظهار الارقام على السيفن سيجمنت...بواسطة هذه المصفوفة استغنينا على دارة متكاملة نحتاجها...

انا انتظر منك التجربة العملية لاعطيك توضيح البرنامج...فاني لا اريد ان اعطيك شيئا يكون خاطئا...ربنا يوفقك...

واخر دعوانا ان الحمدلله رب العالمين .. وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم...
 
السلام عليكم
اخي الكريم سوف احاول ان اجعله يعمل بكل ما اقدر من معلومات , و لكن مشكلتي مثل ما قلت لك هيه في الmplab سوف احاول ان اعدل بعض الشي من البرنامج و اشغله ببرنامجي و ارجو من حضرتكم الانتظار حتى نهايه هذا الاسبوع يعني يوم الجمعه القدام بعون الله و حفظه ارد لك الخبر اليقين


بارك الله فيك
 
السلام عليكم
اخي الكريم سوف احاول ان اجعله يعمل بكل ما اقدر من معلومات , و لكن مشكلتي مثل ما قلت لك هيه في الmplab سوف احاول ان اعدل بعض الشي من البرنامج و اشغله ببرنامجي و ارجو من حضرتكم الانتظار حتى نهايه هذا الاسبوع يعني يوم الجمعه القدام بعون الله و حفظه ارد لك الخبر اليقين


بارك الله فيك


السلام عليكم

كما قلت لك ... ال MPLAB برنامج يتعامل مع الاسيمبلي ... ولن ينفع للتعامل مع الميكروسي ... وانما ستحتاج الى ميكروسي كومبايلر للتعامل مع البرنامج .... وانا اردت منك عمله عمليها حتى نتاكد من عمله وبعدها تكمل ما تريد....انت اعلم بما تريد...ربنا يوفقك...

واخر دعوانا ان الحمدلله رب العالمين ... وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم..
 
السلام عليكم
سوف افعل كل ما استطيع و اخبرك بالانتائج ليعم العلم على الجميع

بارك الله فيك
 
السلام عليكم اخي الكريم

لقد استعنت بمساعده احد اصدقائي لعمل بعض التعديلات و جعله يعمل مع الامب لاب و قد طلبو مني تفسير البرنامج و انا لست جيدا فهل من الممكن عندما تتغرغ ان تشرح لي الفكره بصوره كامله و انا بواجبي احاول منذ ان ساعدتني ان افهم البرنامج و لكن لم افلح بشكل جيد

شكرا على المساعده
 
السلام عليكم اخي الكريم

لقد استعنت بمساعده احد اصدقائي لعمل بعض التعديلات و جعله يعمل مع الامب لاب و قد طلبو مني تفسير البرنامج و انا لست جيدا فهل من الممكن عندما تتغرغ ان تشرح لي الفكره بصوره كامله و انا بواجبي احاول منذ ان ساعدتني ان افهم البرنامج و لكن لم افلح بشكل جيد

شكرا على المساعده

السلام عليكم

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

ربنا يوفقك

واخر دعوانا ان الحمدلله رب العالمين .. وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم..
 
السلام عليكم

اخي الفاضل البرنامج لا يعمل مع الدائره المرسله لك و التي هيه دائرتي فانني كما تعلم لا افهم شي في المايكروسي فطلبت من احد اصدقائي ان يجرب البرنامج في المايكروسي و لكن بعد التجربه وجدنا ان البرنامج لا يعلم و لكنه قال لي ان البرنامج يقوم بحساب دقات القلب, و نحن نتوقع المشكله اما من البرنامج او من الدائره فلهذا طلب منك ان تشرح لي الفكره و بشكل مفصل لانني احتاج الى ان افهمه لكي اصمم دائره تعمل عليه

و لكم الشكر الجزيل
 
السلام عليكم

اخي الفاضل البرنامج لا يعمل مع الدائره المرسله لك و التي هيه دائرتي فانني كما تعلم لا افهم شي في المايكروسي فطلبت من احد اصدقائي ان يجرب البرنامج في المايكروسي و لكن بعد التجربه وجدنا ان البرنامج لا يعلم و لكنه قال لي ان البرنامج يقوم بحساب دقات القلب, و نحن نتوقع المشكله اما من البرنامج او من الدائره فلهذا طلب منك ان تشرح لي الفكره و بشكل مفصل لانني احتاج الى ان افهمه لكي اصمم دائره تعمل عليه

و لكم الشكر الجزيل


السلام عليكم

شرح البرنامج كالتالي:

طبعا في بداية البرنامج يتم تعريف متغيرات وهي عدد نبضات القلب (وهي على الاكثر عدد مكون من 3 خانات فقط) ومتغير وسيط للعمليات الحسابية ومتغير من اجل حساب الوقت TIME وهو يعد الثواني حتى نحصل على 60 ثانية اي دقيقة كاملة ...طبعا هناك مصفوفة اسمها num[10] وظيفتها ان تقوم باخراج الارقام من 0 الى 9 على السيفن سيجمنت...ولو لم تكن موجودة لاضطررنا ان نضع دارة مفكك ترميز للتحويل من النظام الباينري الى النظام العشري....

الان يوجد عندنا 3 فقرات :

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

ويقوم بحساب الوقت اعتمادا على التايمر زيرو الداخلي للمؤقت ...حيت ان التايمر يحسب الوقت داخليا...طبعا كل مرة يصل تطبيق البرنامج هنا يكون قد مرت ثانية ..وهذا يزيد متغير TIME حتى يصل الى دقيقة اي 60 ثانية)... عندها يقوم بايقاف عملية حساب الوقت...

هذا هو برنامج المقاطعة الذي يستخدم لحساب عدد نبضات القلب ولحساب الزمن وهو ثانية واحدة...

طبعا الفقرة التالية SHOW() هو برنامج فرعي ...كل وظيفته انه يقوم باخراج القيمة الموجودة في المتغير BEAT_rate على السيفن سيجمنت...حيث ياخذ القيمة الموجودة في المتغير ويقسمها على 100 ليحصل على خانة المئات...وبعدها ياخذ الباقي ليحصل على خانة العشرات...وبعدها ياخذا باقي القمية على 10 للحصول على خانة الاحاد ...طبعا بما ان لدينا اطراف محدودة فان هذا البرنامج يقوم باخراج خانة المئات لفترة محددة ثم يطفئها ويفعل خانة العشرات لفترة معينة ثم يطفئها...ويفعل خانة الاحاد لفترة محددة ثم يطفئها ولان العين لا تلاحظ الحركات السريعة فان العرض يظهر كانه مستمر ولا يوجد فيه تقطيع...

طبعا البرنامج الرئيسي Main():

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

الان كما قلت سابقا ينتظر البرنامج ان تضغط المفتاح PORTA3 ..بعدها يبدا في عملية حساب نبضات القلب ....عند الانتهاء من عملية الحساب فانه يقوم باخراج النتيجة على السيفن سيجمنت... وينتظر منك ان تضغط porta3 حتى يعود عالى البداية وتبدا عملية حساب نبضات القلب من جديد وهكذا...

هذا ملخص البرنامج واي نقطة غير مفهومة يمكنك ان تسال عليها...ربنا يوفقك...

واخر دعوانا ان الحمدلله ر ب العالمين ... وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم..
 
السلام عليكم
باراك الله فيك و في الجهود المبذوله

لقد فهمت البرنامج بشكل اوضح الان و لدي بعض الاسئله من الممكن ان تغير شي في البرنامج
1- في الجزء الاخير main اذا لم نضغط على الزر فانه سوف لن ينفذ العمليات الحاسبيه فهل هذا معناه ان الزر هو active high ??و اذا حاولت ان اجعله active low ?يعني انه يقوم بالحاسبات دائما و يتوقف عن ضغط الزر فكيف ذلك
2-هناك delay(125) فملاذا هذا التاخير ؟ نعم اذا لن نضغط سوف لن يحسب دقات القلب و يعود مره اخرى الى start و لكن لماذا هذا الرقم بالذات
3- لقد حملت اكثر من دائره لتصميم البرنامج لها فاي واحد كانت في حساباتك ؟؟؟
4- بصوره مختصره
البرنامج يقوم بحساب دقات القلب بالدقيقه يعني كل دقيقه تتكون من 60 ثانيه فهو فالرقم الذي يجب ان يظهر اذا كان الانسان في حاله راحه هو 60 دقه في الدقيقه الكامله فهل هذا ملخص صحيح ؟؟

شكرا اخي الكريم
 
عودة
أعلى