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

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

Abdulla Dahwir
:: مهندس ::
تاريخ التسجيل: Nov 2012
الدولة: لبنان
المشاركات: 18
نشاط [ Abdulla Dahwir ]
قوة السمعة:0
قديم 25-12-2012, 03:21 AM المشاركة 1   
ha أريد تحويل الbyte to bit Twitter FaceBook Google+



السلام عليكم ورحمة الله وبركاته

كيف الحال جميعاً

فقط أحبب الأستفسار عن أمر في Mikroc

أريد أن أستلم من الكمبيوتر byte عبر السيريال

هذه الbyte سيأخذها المايكرو ويحولها ل8 bit

وال8 bit أريد أخراجهم على pin واحد معين في المايكرو بالترتيب

فكيف يمكنني عمل ذلك؟
---------------------------

اعلانات

ahmad abdullah
:: مهندس متميز ::
تاريخ التسجيل: Jun 2010
الدولة: لبنان-فلسطين
المشاركات: 586
نشاط [ ahmad abdullah ]
قوة السمعة:0
قديم 25-12-2012, 11:35 AM المشاركة 2   
افتراضي


اخي شو المشروع ؟

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

Abdulla Dahwir
:: مهندس ::
تاريخ التسجيل: Nov 2012
الدولة: لبنان
المشاركات: 18
نشاط [ Abdulla Dahwir ]
قوة السمعة:0
قديم 26-12-2012, 04:17 PM المشاركة 3   
افتراضي


أريد عمل 8*8*8 led cube
أريد أرسال الbyte من الكمبيوتر للمايكرو (عبر الserial)
والمايكرو يبعتها للshift_register إسمه STP16CP05
وهم الshift register بتحكمو بالleds


ahmad abdullah
:: مهندس متميز ::
تاريخ التسجيل: Jun 2010
الدولة: لبنان-فلسطين
المشاركات: 586
نشاط [ ahmad abdullah ]
قوة السمعة:0
قديم 27-12-2012, 03:07 PM المشاركة 4   
افتراضي


اخي ليه ما بتبعت char


Abdulla Dahwir
:: مهندس ::
تاريخ التسجيل: Nov 2012
الدولة: لبنان
المشاركات: 18
نشاط [ Abdulla Dahwir ]
قوة السمعة:0
قديم 30-12-2012, 03:59 AM المشاركة 5   
ha


في بالshift register di and clk فأريد أرسال المعلومات التي أرسلت من السيريال لpin واحد موصول ب di
والثاني clk بين كل bit و bit (من di سوف يكون ثابت 0 وبعدان 1 ,id عبارة عن pule
سوف يكون على pin أخر.



يعني أرسل من الكمبيوتر حرف a
المايكرو يستلم حرف a يحولها ل byte
الbyte تقسم إلى bit
ومن تم تخزن في variable array
وأقول له (مثال تشبيها وليس بلغة البرمجة)
send bit 0
pulse
send bit 1
pulse
send bit 2
pulse
.
.
.


send bit رح يكون على portb.0 رح يرسل قيمت المعلومة لهذا الpin
(الpulse هي مثلا على portb.1) وهي عبارة عن إخراج 1 ثم الإنتظار ثم إعطاء 0 )


التعديل الأخير تم بواسطة : Abdulla Dahwir بتاريخ 30-12-2012 الساعة 04:11 AM

somood
:: مهندس جيد ::
تاريخ التسجيل: Jan 2011
الدولة: نابلس
المشاركات: 222
نشاط [ somood ]
قوة السمعة:0
قديم 30-12-2012, 06:09 AM المشاركة 6   
افتراضي


تفضل اخي جرب بهذا الكود وعدل عليه بما يناسبك
الكود بال mikroc pro for pic
انا جربت الكود على البروتس باستخدام ليدات لتوضيح الخرج على اطراف البيك وكان التجربة ناجحة ولكن يبقى ان تعدل على الكود لتخزين ماتستقبله من الكمبيوتر في المتغير وان تراعي التاخيرات الزمنية وتحسبها جيدا
كود:
char x;   // ãÊÛíÑ íãßäß Çä ÊÎÒä Ýíå ÇáÈÇíÊ ÇáÐí ÊÓÊÞÈáå ãä Çá uart

void main(){
TRISB.F0=0;
PORTB.F0=0;
TRISB.F1=0;
PORTB.F1=0;
x=154;      // ÑÞã ãÚíä ááÊÌÑÈÉ

while(1){

PORTB.F0= x.F0; // äÌÚá ÇáÈä ÇáÇæá Ýí ÇáÈæÑÊ Èí íÓÇæí ÇáÈÊ ÇáÇæá ãä ÇáãÊÛíÑ x
PORTB.F1=1;     // Ëã äÎÑÌ äÈÖÉ Úáì ÇáÈä ÇáËÇäí ãä ÇáÈæÑÊ Èí
Delay_ms(100);  // íÌÈ æÖÚ ÊÇÎíÑ ÍÊì íÊãßä ÇáãÓÌá ãä ÇáÊÞÇØ åÐå ÇáäÈÖÉ
PORTB.F1=0;
Delay_ms(100);    //  æíãßä ÇáÊÚÏíá Úáì åÐÇ ÇáÒãä ÍÓÈ ÇáÓÑÚÉ ÇáÊí ÊÑíÏ æáßä
                //  ÈãÇ íÊæÇÝÞ ãÚ ÇáãÓÌá ÇáãÓÊÎÏã æÐáß ÊÌÏå Ýí ÇáÏÇÊÇÔíÊ


PORTB.F0= x.F1;   // åßÐÇ ãÚ ÈÇÞí ÈÊÇÊ ÇáãÊÛíÑ  x
PORTB.F1=1;
Delay_ms(100);
PORTB.F1=0;
Delay_ms(100);

PORTB.F0= x.F2;
PORTB.F1=1;
Delay_ms(100);
PORTB.F1=0;
Delay_ms(100);

PORTB.F0= x.F3;
PORTB.F1=1;
Delay_ms(100);
PORTB.F1=0;
 Delay_ms(100);

PORTB.F0= x.F4;
PORTB.F1=1;
Delay_ms(100);
PORTB.F1=0;
Delay_ms(100);

PORTB.F0= x.F5;
PORTB.F1=1;
Delay_ms(100);
PORTB.F1=0;
 Delay_ms(100);

PORTB.F0= x.F6;
PORTB.F1=1;
Delay_ms(100);
PORTB.F1=0;
Delay_ms(100);

PORTB.F0= x.F7;
PORTB.F1=1;
Delay_ms(100);
PORTB.F1=0;
Delay_ms(100);

}
}


somood
:: مهندس جيد ::
تاريخ التسجيل: Jan 2011
الدولة: نابلس
المشاركات: 222
نشاط [ somood ]
قوة السمعة:0
قديم 30-12-2012, 06:12 AM المشاركة 7   
افتراضي


char x; /*ãÊÛíÑ íãßäß Çä ÊÎÒä Ýíå ÇáÈÇíÊ ÇáÐí ÊÓÊÞÈáå ãä Çá uart*/

void main(){
TRISB.F0=0;
PORTB.F0=0;
TRISB.F1=0;
PORTB.F1=0;
x=154; /* ÑÞã ãÚíä ááÊÌÑÈÉ */

while(1){

PORTB.F0= x.F0; /* äÌÚá ÇáÈä ÇáÇæá Ýí ÇáÈæÑÊ Èí íÓÇæí ÇáÈÊ ÇáÇæá ãä ÇáãÊÛíÑ x*/
PORTB.F1=1; /* Ëã äÎÑÌ äÈÖÉ Úáì ÇáÈä ÇáËÇäí ãä ÇáÈæÑÊ Èí */
Delay_ms(100); /* íÌÈ æÖÚ ÊÇÎíÑ ÍÊì íÊãßä ÇáãÓÌá ãä ÇáÊÞÇØ åÐå ÇáäÈÖÉ*/
PORTB.F1=0;
Delay_ms(100); /* æíãßä ÇáÊÚÏíá Úáì åÐÇ ÇáÒãä ÍÓÈ ÇáÓÑÚÉ ÇáÊí ÊÑíÏ æáßä*/
/* ÈãÇ íÊæÇÝÞ ãÚ ÇáãÓÌá ÇáãÓÊÎÏ&#227 ; æÐáß ÊÌÏå Ýí ÇáÏÇÊÇÔí&# 202; */


PORTB.F0= x.F1; // åßÐÇ ãÚ ÈÇÞí ÈÊÇÊ ÇáãÊÛíÑ x */
PORTB.F1=1;
Delay_ms(100);
PORTB.F1=0;
Delay_ms(100);

PORTB.F0= x.F2;
PORTB.F1=1;
Delay_ms(100);
PORTB.F1=0;
Delay_ms(100);

PORTB.F0= x.F3;
PORTB.F1=1;
Delay_ms(100);
PORTB.F1=0;
Delay_ms(100);

PORTB.F0= x.F4;
PORTB.F1=1;
Delay_ms(100);
PORTB.F1=0;
Delay_ms(100);

PORTB.F0= x.F5;
PORTB.F1=1;
Delay_ms(100);
PORTB.F1=0;
Delay_ms(100);

PORTB.F0= x.F6;
PORTB.F1=1;
Delay_ms(100);
PORTB.F1=0;
Delay_ms(100);

PORTB.F0= x.F7;
PORTB.F1=1;
Delay_ms(100);
PORTB.F1=0;
Delay_ms(100);

}
}
كود:



somood
:: مهندس جيد ::
تاريخ التسجيل: Jan 2011
الدولة: نابلس
المشاركات: 222
نشاط [ somood ]
قوة السمعة:0
قديم 30-12-2012, 06:14 AM المشاركة 8   
افتراضي


كود:
char x;   /*متغير يمكنك ان تخزن فيه البايت الذي تستقبله من ال uart*/

void main(){
TRISB.F0=0;
PORTB.F0=0;
TRISB.F1=0;
PORTB.F1=0;
x=154;      /* رقم معين للتجربة */

while(1){

PORTB.F0= x.F0; /* نجعل البن الاول في البورت بي يساوي البت الاول من المتغير x*/
PORTB.F1=1;     /* ثم نخرج نبضة على البن الثاني من البورت بي */
Delay_ms(100);  /* يجب وضع تاخير حتى يتمكن المسجل من التقاط هذه النبضة*/
PORTB.F1=0;
Delay_ms(100);    /*  ويمكن التعديل على هذا الزمن حسب السرعة التي تريد ولكن*/
                /*  بما يتوافق مع المسجل المستخدم وذلك تجده في الداتاشيت */


PORTB.F0= x.F1;   // هكذا مع باقي بتات المتغير  x  */
PORTB.F1=1;
Delay_ms(100);
PORTB.F1=0;
Delay_ms(100);

PORTB.F0= x.F2;
PORTB.F1=1;
Delay_ms(100);
PORTB.F1=0;
Delay_ms(100);

PORTB.F0= x.F3;
PORTB.F1=1;
Delay_ms(100);
PORTB.F1=0;
 Delay_ms(100);

PORTB.F0= x.F4;
PORTB.F1=1;
Delay_ms(100);
PORTB.F1=0;
Delay_ms(100);

PORTB.F0= x.F5;
PORTB.F1=1;
Delay_ms(100);
PORTB.F1=0;
 Delay_ms(100);

PORTB.F0= x.F6;
PORTB.F1=1;
Delay_ms(100);
PORTB.F1=0;
Delay_ms(100);

PORTB.F0= x.F7;
PORTB.F1=1;
Delay_ms(100);
PORTB.F1=0;
Delay_ms(100);

}
}

إضافة رد

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

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

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


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

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