التدريب رقم 2 : خطوة إلى الامام : الأضواء المتحركة البسيطة :
منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر :: الميكروكونترولر PIC والبرجة بلغة السى والمترجم مسكروسى برو :: الميكروكونترولر PIC والبرمجة بلغة السى والمترجم ميكروسى برو
صفحة 1 من اصل 1
التدريب رقم 2 : خطوة إلى الامام : الأضواء المتحركة البسيطة :
بعد أن تناولنا البيانات وأنواعها والمتغيرات وكذلك الحلقات يمكننا متابعة التدريبات .
التدريب رقم 2 : خطوة إلى الامام : الأضواء المتحركة البسيطة :
الدائرة الكهربية :
الغرض :
استخدام جميع أطراف الخرج للميكروكونترولر PIC12F675 .
سوف يتم استخدام المذبذب الداخلى ووقف تمكين MCLR .
ملحوظة :
الطرف "4" عند عدم تمكين MCLR يمكن استخدامه كمدخل فقط ولا يمكن استخدامه كمخرج .
تتبع الخطوات التالية :
1- نبدأ بتعريف المنفذ GPIO بالأسم السهل المستعار OUTPUT . وإعلان متغير عمومى "i" يستخدم كعداد لحلقات for .
2- تحديد إعدادات سجلات ومنافذ الميكروكونترولر . يفضل إنشاء دالة تضم هذه الإعدادات بحيث يسهل تعديلها عند الرغبة , علاوة على تنظيم البرنامج بما يسهل تتبعه .
3- الأضاء المتحركة يمكن أن تاخذ نماذج متعددة مثل:
أ- الحركة جهة اليسار ، أى إضاءة الليد بأقصى اليمين ثم الذى يليه جهة اليسار وهكذا . بالطبع يفضل وضع النموذج بدالة مستقلة كما يلى :
العبارات الرئيسية المستخدمة مثل ((1<<4 ، هذه العبارة هى مجرد أخد قيمة الواحد "1" إزاحة البتات جهة اليسار أربع مرات بحيث يكون الرقم "4" هو نفسه موقع البت الرابعة . يتم ترقيم البتات فى البايت من "7" إلى "0" من جهة اليسار إلى جهة اليمين وحيث أن (1<<0)=1, (1<<1)=2, (1<<2)=4, (1<<3)=8 وهكذا ، لذلك فإن ذلك يعطى طريقة سهلة لتحديد البت بشكل "منفرد" فى البايت كما أن ذلك سهل القراءة أيضا . إذا أردت تحديد البت الخامسة "5" يمكنك كتابة GPIO = 32; ( أو 0x20 بالسداسى عشر) ، ولكن GPIO = (1<<5) أسهل بكثير فى القراءة .
4- نكرر الخطوة السابقة لنموذج آخر , وليكن الحركة جهة اليمين كما يلى :
5- الآن انتهت جميع المكونات الرئيسية للبرنامج وجاء وقت الدخول إلى الدالة الرئيسية وتحديد الشكل المطلوب وعدد مرات تكرارة عن طريق اختيار الدوال المناسبة ، وهنا مثال لذلك ولكن يمكنك إجراء التعديلات المناسبة :
البرنامج :
التدريب رقم 2 : خطوة إلى الامام : الأضواء المتحركة البسيطة :
الدائرة الكهربية :
الغرض :
استخدام جميع أطراف الخرج للميكروكونترولر PIC12F675 .
سوف يتم استخدام المذبذب الداخلى ووقف تمكين MCLR .
ملحوظة :
الطرف "4" عند عدم تمكين MCLR يمكن استخدامه كمدخل فقط ولا يمكن استخدامه كمخرج .
تتبع الخطوات التالية :
1- نبدأ بتعريف المنفذ GPIO بالأسم السهل المستعار OUTPUT . وإعلان متغير عمومى "i" يستخدم كعداد لحلقات for .
- الكود:
#define OUTPUT GPIO
char i;
2- تحديد إعدادات سجلات ومنافذ الميكروكونترولر . يفضل إنشاء دالة تضم هذه الإعدادات بحيث يسهل تعديلها عند الرغبة , علاوة على تنظيم البرنامج بما يسهل تتبعه .
- الكود:
void init_port(void)
{
ANSEL = 0x00; //set port as digital I/O , not analog input
CMCON = 0x07; //shut off the comparator
TRISIO = 0x00; //all output
GPIO = 0x00; //make all pins low "0"
}
3- الأضاء المتحركة يمكن أن تاخذ نماذج متعددة مثل:
أ- الحركة جهة اليسار ، أى إضاءة الليد بأقصى اليمين ثم الذى يليه جهة اليسار وهكذا . بالطبع يفضل وضع النموذج بدالة مستقلة كما يلى :
- الكود:
void move_left(void)
{
OUTPUT=1; delay_ms(250); //GP0 ON
OUTPUT=(1<<1); delay_ms(250); // GP1 ON
OUTPUT=(1<<2); delay_ms(250); // GP2 ON
//Note : GP3 : Input only
OUTPUT=(1<<4); delay_ms(250); // GP4 ON
OUTPUT=(1<<5); delay_ms(250); // GP5 ON
OUTPUT=0; delay_ms(250); // All OFF
}
العبارات الرئيسية المستخدمة مثل ((1<<4 ، هذه العبارة هى مجرد أخد قيمة الواحد "1" إزاحة البتات جهة اليسار أربع مرات بحيث يكون الرقم "4" هو نفسه موقع البت الرابعة . يتم ترقيم البتات فى البايت من "7" إلى "0" من جهة اليسار إلى جهة اليمين وحيث أن (1<<0)=1, (1<<1)=2, (1<<2)=4, (1<<3)=8 وهكذا ، لذلك فإن ذلك يعطى طريقة سهلة لتحديد البت بشكل "منفرد" فى البايت كما أن ذلك سهل القراءة أيضا . إذا أردت تحديد البت الخامسة "5" يمكنك كتابة GPIO = 32; ( أو 0x20 بالسداسى عشر) ، ولكن GPIO = (1<<5) أسهل بكثير فى القراءة .
4- نكرر الخطوة السابقة لنموذج آخر , وليكن الحركة جهة اليمين كما يلى :
- الكود:
void move_right(void)
{
OUTPUT=(1<<5); delay_ms(250); // GP5 ON
OUTPUT=(1<<4); delay_ms(250); // GP4 ON
//Note : GP3 : Input only
OUTPUT=(1<<2); delay_ms(250); // GP2 ON
OUTPUT=(1<<1); delay_ms(250); // GP1 ON
OUTPUT=1; delay_ms(250); //GP0 ON
OUTPUT=0; delay_ms(250); // All OFF
}
وكذلك لنموذج وميض جميع الليدات :
void blink_all()
{
OUTPUT=0x37; delay_ms(250); //ALL ON
OUTPUT=0x00; delay_ms(250); //ALL OFF
}
5- الآن انتهت جميع المكونات الرئيسية للبرنامج وجاء وقت الدخول إلى الدالة الرئيسية وتحديد الشكل المطلوب وعدد مرات تكرارة عن طريق اختيار الدوال المناسبة ، وهنا مثال لذلك ولكن يمكنك إجراء التعديلات المناسبة :
- الكود:
void main()
{
init_port();
while(1)
{
for(i=0;i<5;i++)
{
move_left();
move_right();
}
for(i=0;i<5;i++)
{
blink_all();
}
}
}
البرنامج :
- الكود:
//EX2:Moving light using PIC12F675
//4MHz internal clock
//Master Clear : Disable
//Eng:F.Abdelaziz
//Date :05-03-2016*/
//define Output port
#define OUTPUT GPIO
char i;
void init_port(void)
{
ANSEL = 0x00; //set port as digital I/O , not analog input
CMCON = 0x07; //shut off the comparator
TRISIO = 0x00; //all output
GPIO = 0x00; //make all pins low "0"
}
void move_left(void)
{
OUTPUT=1; delay_ms(250); //GP0 ON
OUTPUT=(1<<1); delay_ms(250); // GP1 ON
OUTPUT=(1<<2); delay_ms(250); // GP2 ON
//Note : GP3 : Input only
OUTPUT=(1<<4); delay_ms(250); // GP4 ON
OUTPUT=(1<<5); delay_ms(250); // GP5 ON
OUTPUT=0; delay_ms(250); // All OFF
}
void move_right(void)
{
OUTPUT=(1<<5); delay_ms(250); // GP5 ON
OUTPUT=(1<<4); delay_ms(250); // GP4 ON
//Note : GP3 : Input only
OUTPUT=(1<<2); delay_ms(250); // GP2 ON
OUTPUT=(1<<1); delay_ms(250); // GP1 ON
OUTPUT=1; delay_ms(250); //GP0 ON
OUTPUT=0; delay_ms(250); // All OFF
}
void blink_all()
{
OUTPUT=0x37; delay_ms(250); //ALL ON
OUTPUT=0x00; delay_ms(250); //ALL OFF
}
//main function
void main()
{
init_port();
while(1)
{
for(i=0;i<5;i++)
{
move_left();
move_right();
}
for(i=0;i<5;i++)
{
blink_all();
}
}
}
مواضيع مماثلة
» أساس عمل الأضواء المتحركة (الجراى) chase base
» التدريب رقم 3 : إنشاء عداد ثنائى تصاعدى 3 بت :
» برمجة الميكروكونترولر PIC بلغة لسى مع المترجم ميكروسى برو خطوة بخطوة :
» كيفية البدء فى عمل شاشة ليد ماتريكس ناجحة والبرمجة بلغة السى مع المترجم ميكروسى برو :
» التدريب الرابع : التحكم فى محرك باستخدام مفتاحى دخل
» التدريب رقم 3 : إنشاء عداد ثنائى تصاعدى 3 بت :
» برمجة الميكروكونترولر PIC بلغة لسى مع المترجم ميكروسى برو خطوة بخطوة :
» كيفية البدء فى عمل شاشة ليد ماتريكس ناجحة والبرمجة بلغة السى مع المترجم ميكروسى برو :
» التدريب الرابع : التحكم فى محرك باستخدام مفتاحى دخل
منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر :: الميكروكونترولر PIC والبرجة بلغة السى والمترجم مسكروسى برو :: الميكروكونترولر PIC والبرمجة بلغة السى والمترجم ميكروسى برو
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى