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

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

TIME0
:: مهندس جيد ::
تاريخ التسجيل: Mar 2012
المشاركات: 277
نشاط [ TIME0 ]
قوة السمعة:0
قديم 25-06-2012, 09:20 PM المشاركة 1   
افتراضي ممكن المساعدة في هذا الكود البسيط جدا seven seg Twitter FaceBook Google+



فمت برسم الدائرة على بروتيوس وكتابه الكود في ميكرو سي في هذا الرابط
الرجاء التحميل
http://www.4shared.com/rar/Si5EtZmE/project_7seg.html

الدائرة شغالة مية مية ولكن اريد ان اضيف عليها بعض الشغلات ولكن ماعرفت رغم المحاولات العديده

المشروع هو بكل بساطه استدعاء الممرضات او استدعاء اي احد ....

باستخدام seven segment وسته مفاتيح فقط هذا هو المشروع

يعني عندي سته مفاتيح اذا تم الضغط على المفتاح رقم واحد يظهر لي رقم واحد على العارضة السباعية
واذا تم الضغط على المفتاح رقم اثنين يظهر لي الرقم اثنين
وهكذا الى الرقم سته
هذا كله عملته ومبين لكم في المرفقات
طبعا الطريقة هي multiplexing seven segment

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

والذي زاد حيرتي ايضا انني اريد فلاش للرقم الظاهر على seven segment
اذا تم الضغط على المفتاح

اتمنى المساعده في هذا المشروع حاولت كثيرا اتمنى تنزيل الملفات المرفقة
وكتابه الكود بلغة السي ايضا

يرجى اعاده رفع الملف بعد التعديل حتى يكون الكود واضح
وشكرا لكم جميعا

اعلانات

الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
نشاط [ funky112233 ]
قوة السمعة:92
قديم 26-06-2012, 01:00 PM المشاركة 2   
افتراضي


بسم الله الرحمن الرحيم
تفضل اخى

http://www.4shared.com/rar/trwcviKU/TIME0.html?

ولكن ماذا تقصد بالفلاشر للرقم وكيف يكون الجهاز مع المريض والممرضة وبينهم اسلاك

ياريت تعطى معلومات كافية وواضحة حتى تتم مساعدتك على اكمل وجة ان شاء الله

ملوحظة الكود ممكن كيون ابسط بس هيكون اعقد شوية

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

TIME0
:: مهندس جيد ::
تاريخ التسجيل: Mar 2012
المشاركات: 277
نشاط [ TIME0 ]
قوة السمعة:0
قديم 27-06-2012, 08:43 AM المشاركة 3   
افتراضي


جزاك الله خيرا funky112233

على مجهودك الرائع

البرنامج جمل ومنسق

ولكن لماذا يظهر لي اصفار عند التشغيل

انا اريد لايظهر اي شيء على السفن سيجمنت ولكن عند الضغط على المفتاح
الاول يظهر رقم واحد وووالخ -- كما عملنا --

يعني نريد نلغي الاصفار 000000

--------------------------------------------------------------
وبالنسبة للفلاشر

انا اريد لما اضغط على المفتاح من 1 الى 6 اي واحد منهم
لا يكون الرقم الظاهر على السفن سيجمنت ثابت بل يعمل فلاش سريع
يعني يعمل ويطفئ يعمل ويطفئ وهكذا بسرعة

----------------------------------------------------------------
وبالنسبة للجهاز بين المريض والممرضه
طبعا هو يفضل يكون جهاز واير لس ولكن افكر ان اشتري الجرس الذي يكون معه
مفاتيح عديده واصوات عديده واوصله بالسفن سيجمنت
او استفيد من الواير لس الذي فيه

ولا عندك حل آخر

طبعا انا لا اريدها اسلاك

الشاشة تكون ثابته على الحائط والزر عند المريض او اي احد

وشكرا لك صراحا


الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
نشاط [ funky112233 ]
قوة السمعة:92
قديم 27-06-2012, 03:42 PM المشاركة 4   
افتراضي


بسم الله الرحمن الرحيم
تفضل اخى

http://www.4shared.com/rar/xYuN5FQN/TIME0.html?

وانا عدلت فى الدائرة ووضعت 6 زراير على البورت D وسميت كل واحد فيهم برقم من 1 الى 6 ومكتوب جنبهم Ok يعنى الممرضة لما تلاقى رقم عمال ينور اول ما تدوس على الرقم بتاعه من البورت D يفصل الرقم وبالتجربة هتشوفة

ويمكنك التعديل فى سرعه العرض للشاشات (الفلاشر) من خلال التعديل فى ارقام الانتظار delay
الموجودين تحت زى مانت عايز بس ملحوظة متخليش القيمة تعدى ال 200 مللى ثانية

وهناك زر Rest هذا لعمل اعادة تشغيل للجهاز اذا هنج لا قدر الله ولا حاجة

اما بالنسبة للارسال والاستقبال
فى طرق كثيرة جدا للعملية دى
والاقتراح بتاعك كويس وسهل
وطبق ما يحلوا لك واذا واجهتك مشكلة اطرحها وان شاء الله نقدر نساعدك


TIME0
:: مهندس جيد ::
تاريخ التسجيل: Mar 2012
المشاركات: 277
نشاط [ TIME0 ]
قوة السمعة:0
قديم 27-06-2012, 09:52 PM المشاركة 5   
افتراضي


ابدعت يا اخي ... الحق يقال

الكود الاول الي كتبته قراته مره مرتين وفهمته

ولكن الكود الاخير قراته اكثر من مره وضل هناك بعض الاشياء مافهمتها

مثل عمل فلاش في multiplexing seven segment

اجد صعوبه في ذلك وخاصة اذا كان هناك مفاتيح

انتا عملتها في هذا السطر ولكن مافهمته ياريت توضيح ممل
portc=x2;portb=segment[x3];delay_ms(10);portc=x2;portb=segment[0];delay_ms(20);}


وايضا ماذا تعني هذه
x3=x5[x1];
x2=x4[x1];





هنا لماذ السالب
signed char x1=-1;


الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
نشاط [ funky112233 ]
قوة السمعة:92
قديم 28-06-2012, 07:06 PM المشاركة 6   
افتراضي


بسم الله الرحمن الرحيم

شكرا اخى

الامر فى غاية البساطة

اولا
هذا هو الكود
كود:
char segment[] ={255,249,164,176,153,146,130};
     signed char x1=-1;
     char x2;
     char x3;
     char x4[]={32,16,8,4,2,1};
     char x5[]={0,0,0,0,0,0};
     void main () {
     adcon1=6;trisc=0;portc=0;trisb=0;portb=0;trisa=255;trisd=255;
     while(1){
           x1++;
           if (x1==6){x1=0;}
           
           if(portd.f0==1) { x5[0]=0;}
           if(portd.f1==1) { x5[1]=0;}
           if(portd.f2==1) { x5[2]=0;}
           if(portd.f3==1) { x5[3]=0;}
           if(portd.f4==1) { x5[4]=0;}
           if(portd.f5==1) { x5[5]=0;}
 ///////////////////////////////////////////////////////////////////
           if(porta.f0==1) { x5[0]=1;}
           if(porta.f1==1) { x5[1]=2;}
           if(porta.f2==1) { x5[2]=3;}
           if(porta.f3==1) { x5[3]=4;}
           if(porta.f4==1) { x5[4]=5;}
           if(porta.f5==1) { x5[5]=6;}
           
            x3=x5[x1];
            x2=x4[x1];
            
           portc=x2;portb=segment[x3];delay_ms(100);portc=x2;portb=segment[0];delay_ms(50);}
}
شرح بسيط للكود ::

كود:
  char segment[] ={255,249,164,176,153,146,130};
هذه المصوفة هى مصوفة ارقام ال7سيجمنت اى كل قيمة فيها عندما تطبق على البروت B يظهر رقم .

كود:
 signed char x1=-1;
سوف تعرف فائدة -1 فى شرح الكود .

كود:
  char x2;
     char x3;
متغيريين وستعرف فائدتهم فى شرح الكود .

كود:
char x4[]={32,16,8,4,2,1};
هذه المصوفة تتحكم فى تناوب ال7سيجمنت
حيث ان كل رقم منها يعطى كهرباء لل7سيجمنت
مثلا الرقم 1 يعنى
كود:
 0b00000001;
والرقم 32 يعنى
كود:
0b0001000;
وهكذا .... واستخدمتها فى التحكم فى البورت C .

كود:
char x5[]={0,0,0,0,0,0};
اما هذه فا فائدتها عدم اظهار 000000
ايضا سوف نغير فى ارقامها لكى نظهر الارقام وسوف تعرف الفائدة فى الشرح .

كود:
 adcon1=6;trisc=0;portc=0;trisb=0;portb=0;trisa=255;trisd=255;
دى طبعا التعريفات معروفة دى .

كود:
 x1++;
هذا المر فائدتة زيادة المتغير x1 بنسبة 1 كل مرة

كود:
if (x1==6){x1=0;}
وهذا اذا ساوى 6 يصبح 0 مرة اخرى

وهنا ياتى فائدة انى جعلته يساوى -1 فى اول البرنامج
لانة عند بداية البرنامج كما ترى اول امر هو زيادة بمقدار 1

اى اننى اذا وضعته يساوى 0 اول ما يدخل جوة جملة while هيزيد قيمتة الى 1
وطبعا انا مش عايز كدة انا عايزة يساوى 0 لهذا اول ما يبدء فى دخول جملة while سوف تصبح قيمتة 0 .

كود:
if(portd.f0==1) { x5[0]=0;}
           if(portd.f1==1) { x5[1]=0;}
           if(portd.f2==1) { x5[2]=0;}
           if(portd.f3==1) { x5[3]=0;}
           if(portd.f4==1) { x5[4]=0;}
           if(portd.f5==1) { x5[5]=0;}
هذه اختبرات البورت D وعند الضغط على اى زرار سوف يجعل قيمة x5 تساوى 0
وطبعا دة على حسب الترتيب فى المصفوفة .

اما هذا

كود:
if(porta.f0==1) { x5[0]=1;}
           if(porta.f1==1) { x5[1]=2;}
           if(porta.f2==1) { x5[2]=3;}
           if(porta.f3==1) { x5[3]=4;}
           if(porta.f4==1) { x5[4]=5;}
           if(porta.f5==1) { x5[5]=6;}
فهو يغير المصوفة على حسب كل زرار برقمة يعنى رقم 1 يجعل اول خانة فى المصوفة يساوى 1 ورقم 2 يجعل ثانى خانة تساوى 2 وهكذا....

كود:
x3=x5[x1];
اما هذا فهو عصب العملية كلها
هنا جعل x3 تساوى الرقم الذى سوف يوضع فى المصوفة بتاعت ارقام ال 7سيجمنت
سوف اوضح اكثر

هنا جعلت x3 تساوى الرقم الذى يكون فى خانة المصوفة x5 على حسب مقدار x1

بمعنى اذا ضغط انت على زر من الازرار البورت A سوف يغير من قيمة خانة فى المصفوفة كما فى الاعلى وليكن الخانة الاولى
كود:
if(porta.f0==1) { x5[0]=1;}
هنا اصبحت الخانة الاولى من المصفوفة x5 تساوى 1

اذن لما x1 يساوى 0 اى الخانة الاولى فى المصوفة سوف تكون x3 =1
وهذا كله من اجل اختيار الارقام التى سوف تظهر على 7 سيجمنت .

اما هذا
كود:
x2=x4[x1];
فهى نفس الكلام
زى الى فوق لكن الفرق ان x4 مصفوفة مسؤلة عن الاطراف بتاعت بورت C
يعنى بنتحكم فى انهى شاشة هيظهر عليها العرض زى ما قولت فوق


ناتى داله العرض وهى التى تجعلا لفلاش يحدث
كود:
 portc=x2;portb=segment[x3];delay_ms(100);portc=x2;portb=segment[0];delay_ms(50);
وهى مقسمة لجزئين اول جزء
كود:
 portc=x2;portb=segment[x3];delay_ms(100);
وهنا يتم جعل PORTC يساوى x2 زى ما قولتلك فوق
ويتم جعل PORTB يساوى x3 علشان يعرض زى ما قولتلك
وبعد كدة امر انتظار

وكل هذا طبيعى اما ما يحدث الفلاشر هو هذا المر
كود:
portc=x2;portb=segment[0];delay_ms(50);
وهنا جعلت البورت سى هو هو ولكن جعلت ال7سيجمنت تساوى 0 اى لا تعرض شىء

وهنا يحدث انها تظهر الرقم وبعد ذلك تغلقة ويتم ذلك باستمرار على مدار 6 ارقام

وكل هذا ايضا مع اختبار الازرار بسرعه
ولهذا قلت لك لا تاخر الوقت عن 200 مللى حتى يتم اختبار الازرار بسرعه

وفائدة عمل زيادة x1 باستمرار انه فى كل مرة سوف يعرض رقم محدد
يعنى x1 بتساوى 2 يبقى ترتيب الرقم 2 فى المصفوفة x5 مثلا 3 وهذا بعض ان ضغط على الزرار اذن x3 تساوى 3 اذن ترتيب الرقم 3 فى المصوفة segment هو 176 وهذا ما سوف يعرض وهكذا مع البروت C

واذا لم تفهم تابع المشاركة القادمة واعذرنى انا عارف شرحى صعب
وغير مفهوم


الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
نشاط [ funky112233 ]
قوة السمعة:92
قديم 28-06-2012, 07:16 PM المشاركة 7   
افتراضي


ببساطة خالص
انا خليت البرنامج يعرض ال 6 ارقام كلها ورا بعض
ويختبر اذا تم الضغط على الزرار ولا لاء
واذا تم الضغط تتغير قيمة المتغير الذى تعرض قميته على 7سيجمنت
وهكذا كل رقم يعرض وفى البداية كلهم 000000
فاذا تغير واحد منهم سوف يعرض 000400 هذا هو القصد والباقى اصفار كما هما
والى بيقوم بدور انوا يعرض فى كل مرة رقم منهم هو x1 وعلشان كدة بزود قيمتة كل مرة ولحد ما يوصل ل6 وبرجعه من الاول تانى بس كدة بكل بساطة


TIME0
:: مهندس جيد ::
تاريخ التسجيل: Mar 2012
المشاركات: 277
نشاط [ TIME0 ]
قوة السمعة:0
قديم 28-06-2012, 10:58 PM المشاركة 8   
افتراضي


جزاك الله خيرا و آسف اذا غلبتك

تحياتي لك

وشكرا على الشرح الجميييييييييييل

إضافة رد

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

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

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


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

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