# $$$$$تحكم في 4 لمبات عن طريق الكمبيوتر [مشروع كامل] (الكود بالسي+البروتس+كود#c)$$$$$$



## #MAAM# (23 أبريل 2011)

*بسم الله الرحمن الرحيم*​ *مشروع التحكم في 4 لمبات عن طريق **الكمبيوتر من خلال المنفذ التسلسلي*​ *الجزء الاول: الجزء الالكتروني*​*[FONT=&quot]





[/FONT]*​

*(1**الدائرة الوسيطة بين المكيروكنترولر والمنفذ التسلسلي:*​ 



​


----------



## #MAAM# (23 أبريل 2011)

الدائرة بسيطة جدا بتوصيل max232 كما في الصورة طبقا للداتا شيت وأضفت هنا inverter لغرض المحاكاة فقط )أي إنه في التطبيق العملي المفروض ما نوصلش هذا (inverter

(2الدائرة الوسيطة بين المكيروكنترولر واللمبات بإستخدام الريلاي​


----------



## #MAAM# (23 أبريل 2011)

*الجزء الثاني: البرنامج الخاص بالمتحكم*​ *1) دالة التهيئة للمنفذ التسلسي *​*void serial_init(void)*


```
void serial_init(void){
                           TMOD = 0x20;   // timer 1 8-bit auto-reload
  [RIGHT]جعل الريجيستر الخاص بالتايمر يستخدم تايمر واحد في مود واحد 8 بت ويتم إعادة تحميلة عندما يمتلئ[/RIGHT]
                           SCON = 0x50;    // Tx and Rx enable
  [RIGHT]وهو الريجيستر الخاص بالسيريال بورت وتحديد كيفية الاتصال[/RIGHT]
                           TL1 = 0xFD;               // Baud Rate 9600 8-n-1
  [RIGHT]وهو لتحديد سرعة الاتصال مع السيريال بورت[/RIGHT]
                           TH1 = 0xFD;               // Reload count
                           TR1 = 1;           // Start timer
  }
```
*2) دالة الاستقبال من المنفذ التسلسي*​ *unsigned char uart_receive(void)*

```
unsigned char uart_receive(void)
  {
                           while(!RI);
  [RIGHT]الفكرة هنا أنه في حالة استقبال داتا من خلال المنفذ  التسلسي فإن RI يكون بواحد وبالتالي فأنا أضعه هنا في الشرط بحيث إنه عندما  أستقبل داتا تكون RI بواحد وبالتالي يكون نفيها ! بصفر وبالتالي أخرج من  الشرط while[/RIGHT]
                           RI = 0;
  [RIGHT]أجعلها بصفر هنا حتى أستطيع معرفة إستقبال داتا جديدة[/RIGHT]
                           return(SBUF);
  [RIGHT]حيث إن الداتا المستقبلة توضع في الريجيستر SBUF وبالتالي أرجعها من خلاله[/RIGHT]
  }
```
 *[FONT=&quot]3) الدالة الرئيسية
[/FONT]*​ *void main(void)*

```
{unsigned char x;
  int i;
  serial_init();
  while(1)
  {
  x=uart_receive();
  [RIGHT]أضع الداتا التي استقبلها من المنفذ التسلسلي في هذا المتغير[/RIGHT]
  switch(x)
  {
  case 'a': 
  [RIGHT]في حالة إستقبال حرف a فإني أقوم بتشغيل اللمبة[/RIGHT]
  {led1=1;
  for(i=0;i<10000;i++)
                           _nop_();
  break;}
  case 'b':
  [RIGHT]في حالة إستقبال حرف b فإني أقوم بإطفاء اللمبة .................. وهكذا في بقية المشروع[/RIGHT]
  {led1=0;
  for(i=0;i<1000;i++)
                           _nop_();
  break;}
  case 'c':
  {led2=1;
  for(i=0;i<1000;i++)
                           _nop_();
  break;}
  case 'd':
  {led2=0;
  for(i=0;i<1000;i++)
                           _nop_();
  break;}
  case 'e':
  {led3=1;
  for(i=0;i<1000;i++)
                           _nop_();
  break;}
  case 'f':
  {led3=0;
  for(i=0;i<1000;i++)
                           _nop_();
  break;}
  case 'g':
  {led4=1;
  for(i=0;i<1000;i++)
                           _nop_();
  break;}
  case 'h':
  {led4=0;
  for(i=0;i<1000;i++)
                           _nop_();
  break;}
  }
  }
  }
```


----------



## #MAAM# (23 أبريل 2011)

*الجزء الثالث: الجزء الخاص بالكمبيوتر

*


​


----------



## #MAAM# (23 أبريل 2011)

كتبت البرنامج بالسي شارب وهذه هيه الواجهه تتكون من 8 أزرار للتحكم في اللمبات وزرار للاتصال و combo box لتحديد com الذي سأتصل من خلاله​ 1) زرار connect​

```
serialPort1.PortName = comboBox1.Text;
```
 وهذا الامر للتحكم بإسم البورت الذي يتم الاتصال من خلاله​ 
```
serialPort1.Open();
```
 وهذا لفتح السيريال بورت​ 2) combobox​ وهو يحتوي على أسماء البورت​

```
COM1
  COM2
  COM3
  COM4
  COM5
  COM6
```
 3) أزرار التحكم في اللمبات​ [FONT=&quot]وكل لمبة لها زرار تشغيل وإطفاء


[/FONT]​


----------



## #MAAM# (23 أبريل 2011)

*كيفية التشغيل*
​1) تشغيل البرنامج الخاص بالسيريال بورت
2) اضغط على add pair وجعل COM2 و COM4 مع بعض
3) تشغيل البرنامج الخاص بالكمبيوتر
4) إختار COM4 منcombobox اللي على الشمال
5) إضغط على connect
6) افتح الدائرة ببرنامج البروتس وإبدأ المحاكاة
7) تحكم في 4 لمبات كما تشاء

تم بفضل الله.


----------



## #MAAM# (23 أبريل 2011)

*التحميل

*المشروع كامل بالشرح من

هنا
أو
هنا
أو
هنا​


----------



## م.رائد الجمّال (29 أبريل 2011)

مشكور و بارك الله فيك


----------



## نور الهدى 20 (30 أبريل 2011)

مشكور على المجهود الرائع
انا عايزه اعمل تحكم باجهزه المنزل لكن باستخدام الموبيل 
ممكن حد يساعدنى ويقولى ابدأ منين بالظبط


----------



## ghazwani (1 مايو 2011)

بارك الله فيك

ياليت شرح لتوصل بعد تنصب البرنامج

تحياتي


----------



## ahmood (6 مايو 2011)

بارك الله فيك


----------



## Omar Mekkawy (6 مايو 2011)

السلام عليكم
مجهود رائع و بارك الله فيك​


----------



## #MAAM# (9 مايو 2011)

ghazwani قال:


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



لم افهم قصدك يا أخي ........... ممكن توضح أكتر



نور الهدى 20 قال:


> مشكور على المجهود الرائع
> انا عايزه اعمل تحكم باجهزه المنزل لكن باستخدام الموبيل
> ممكن حد يساعدنى ويقولى ابدأ منين بالظبط



للأسف لم أعمل مشروع من هذا من قبل ............ ولكن إن شاء الله لما أعمله هضعه هنا على المنتدى وشكرا على المرور


----------



## #MAAM# (9 مايو 2011)

عمر خالد حامد قال:


> السلام عليكم
> مجهود رائع و بارك الله فيك​



وبارك الله فيك يا أخي



ahmood قال:


> بارك الله فيك



وبارك الله فيك يا أخي


----------

