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

   

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 05-02-2013, 03:48 AM المشاركة 25   
افتراضي



سوف يتم التنفيذ بالميكروكونترولر PIC16F628A مع الساعة الداخلية 4MHz , من ثم يصبح البرنامج :

كود:
//PIC16F628a // Bottom left-hand LED flashes at 2Hz void main (){ //Start CMCON=0x7; // Turn comparators off andenable pins for I/O functions TRISA=0; // Make all RA lines output TRISB=0; //Make all RB lines output PORTA=0x02; // Reset the 4017 while(1){ //Endless loop PORTB=0x01; // turn on first LED Delay_ms(250); // Call Delay 250 ms PORTB=0x0; // turn off first LED Delay_ms(250); // Call Delay250 ms } }

يقوم الميكروكونترولر بتوصيل وفصل الليد بصفة مستمرة وبين التوصيل والفصل لا يقوم بفعل أى شىء بل يستهلك الوقت ( الانتظار أو التأخير) , ويكرر هذه العملية حتى يسمح لك بمشاهدة التوصيل والفصل على شكل وميض .
يقوم الميكروكونترولر بتوصيل وفصل الليد بصفة مستمرة وبين التوصيل والفصل لا يقوم بفعل أى شىء بل يستهلك الوقت ( الانتظار أو التأخير) , ويكرر هذه العملية حتى يسمح لك بمشاهدة التوصيل والفصل على شكل وميض .
يتم تنفيذ الميكروكونترولر للبرنامج بصفة مستمرة ولا يتوقف أبدا . إذا كان الميكروكونترولر يعمل بساعة بتردد 4MHz , فإنه يقوم بتنفيذ مليون تعليمة كل ثانية ( معظم التعليمات تأخذ واحد ميكروثانية , لكن البعض مثل GOTO و RETURN تأخذ 2 ميكروثانية) .
بين توصيل الليد وفصله يحتاج الميكروكونترولر لتنفيذ 250,000 تعليمة ( تسمى تعليمات عدم فعل شىء) بحيث يكون التوصيل والفصل بطىء بما يكفى لأن نلاحظه . الحل هو إنشاء برنامج فرعى للتأخير . هذ البرنامج الفرعى لا يفعل شىء سوى الانتظار أى يجعل الكومبيوتر يستهلك الوقت لحين المهمة التالية .



اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 05-02-2013, 02:30 PM المشاركة 26   
افتراضي


التجربة رقم 3 : وميض عامود ليدات












الغرض :
وميض ليدات العامود الأول بتردد 3Hz .
الفكرة :
ما زلنا نتعامل مع العامود الأول فقط , لذلك نكتفى بوضع العداد 4017 فى حالة الإعادة reset بحيث يكون هناك خرج على المخرج الأول Q0 المخصص لتفعيل العامود الأول . هنا سوف يتم تفعيل جميع الصفوف :
كود:
PORTB=0xFF;
ثم فصلها :

كود:
PORTB=0x00;
مع استخدام التأخير الزمنى المناسب بينهما delay_ms للتمكن من ملاحظة الوميض .
لغة الأسمبلى :
كود:
;PIC16F84 and only F84 chip ;First column LEDs flashe at 2Hz
Start ORG 0x00 BSF 03,5 ;Go to page1 for setting-up the ports MOVLW 00h ;Put 00 into W MOVWF 05h ;Make all RA lines output MOVWF 06h ;Make all RB lines output BCF 03,5 ;Go to Page0 for programming MOVLW 02h ;Put 02 into W to MOVWF 05h ; Reset the 4017
Flash MOVLW 0FFh ;Put FF into W MOVWF 06h ; and output to turn on all LEDs CALL Delay ;Call Delay MOVLW 00 ;Put 00 into W MOVWF 00h ;To turn off all LEDs CALL Delay ;Call Delay GOTO Flash ;Repeat cycle
Delay MOVLW 03 MOVWF 1Ah Delay1 DECFSZ 1Bh,1 GOTO Delay1 DECFSZ 1Ch,1 GOTO Delay1 DECFSZ 1Ah,1 GOTO Delay1 RETURN
END
لغة السى والميكروكونترولر PIC16F628A مع الساعة الداخلية بتردد 4MHz :


كود:
//PIC16F628a // First column LEDs flashe at 2Hz void main (){ //Start CMCON=0x7; // Turn comparators off andenable pins for I/O functions TRISA=0; // Make all RA lines output TRISB=0; //Make all RB lines output PORTA=0x02; // Reset the 4017
while(1){ //Endless loop PORTB=0xFF; // turn on all first column LEDs Delay_ms(250); // Call Delay 250 ms PORTB=0x00; // turn off all first column LEDs Delay_ms(250); // Call Delay250 ms } }


التعديل الأخير تم بواسطة : F.Abdelaziz بتاريخ 05-02-2013 الساعة 02:35 PM
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

fawzy73
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2008
المشاركات: 92
نشاط [ fawzy73 ]
قوة السمعة:
قديم 05-02-2013, 07:53 PM المشاركة 27   
Post


بارك الله فيك
واعطاك من العلم الواسع

وجعله الله في ميزان حسناتك


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 05-02-2013, 08:59 PM المشاركة 28   
افتراضي


التجربة رقم 4 إضاءة متحركة لأعلى SCAN UP










الغرض :
تحريك إضاءة ليدات العامود الأول من أسفل إلى أعلى مع التكرار .
الفكرة :
وضع القيمة "0x01=0B00000001" بسجل المنفذ PORTB . هذا يؤدى إلى جعل البت الأدنى (RB0) فى الحالة المرتفعة HIGH وتكون النتيجة إضاءة الليد الأول (السفلى) بالعامود الأول .
بعد ذلك يتم إزاحة البت "1" جهة اليسار وهذا يؤدى إلى إضاءة الليد الثانى بالعامود (0B00000010) وهكذا .
لغة الأسمبلى :

كود:
;PIC16F84 and only F84 chip ;First column of LEDs scan from bottom to top at 2Hz.
Start ORG 0x00 BSF 03,5 ;Go to page1 for setting-up the ports MOVLW 00h ;Put 00 into W MOVWF 05h ;Make all RA lines output MOVWF 06h ;Make all RB lines output BCF 03,5 ;Go to Page0 for programming MOVLW 02h ;Put 02 into W to MOVWF 05h ; Reset the 4017 Scan BCF 03h,0 ;clear the carry flag MOVLW 01h MOVWF 06h Scan1 CALL Delay RLF 06h,1 GOTO Scan1
Delay MOVLW 03 MOVWF 1Ah Delay1 DECFSZ 1Bh,1 GOTO Delay1 DECFSZ 1Ch,1 GOTO Delay1 DECFSZ 1Ah,1 GOTO Delay1 RETURN
END

لغة السى مع المترجم ميكروسى برو والميكروكونترولر PIC16F628A :

كود:
//PIC16F628A //First column of LEDs scan from bottom to top at 2Hz. char count; void main (){ //Start
TRISA=0; // Make all RA lines output TRISB=0; //Make all RB lines output PORTA=0x02; // Reset the 4017
while(1){ //Endless loop PORTB=0x01; // turn on first LED for(count=0;count<6;count++){ Delay_ms(250); // Call Delay 250 ms PORTB=PORTB<<1; // turn off first LED Delay_ms(250); // Call Delay250 ms } } }




fawzy73
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2008
المشاركات: 92
نشاط [ fawzy73 ]
قوة السمعة:
قديم 06-02-2013, 02:38 PM المشاركة 29   
افتراضي


السلام عليكم ورحمة الله
اخي العزيز

لي استفسار

حاولت ان انفذ الدائرة ولكن يتم العد اربع عدات فقط

1-2-4-7 فقط ولا يتم العد لكل الصف
فهل يوجد حل ام انا لم افهم ؟

شكرا


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 06-02-2013, 03:44 PM المشاركة 30   
افتراضي


السلام عليكم ورحمة الله
اخي العزيز

لي استفسار

حاولت ان انفذ الدائرة ولكن يتم العد اربع عدات فقط

1-2-4-7 فقط ولا يتم العد لكل الصف
فهل يوجد حل ام انا لم افهم ؟

شكرا
أخى الكريم شكرا جزيلا لك

لا أعرف كيف قمت بالتنفيذ حتى يمكننى المساعدة .

لكن

إليك البرنامج والدائرة عاملة بشكل جيد :

الرابط :
http://www.mediafire.com/?61163gz6r29786z

مع تمنياتى بدوام التوفيق


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 06-02-2013, 09:43 PM المشاركة 31   
افتراضي


التجربة رقم 5 :








الغرض :
تحريك إضاءة ليدات عامود لأعلى ولأسفل , وهو امتداد للتجربة السابقة ولكن هذه المرة نكشف تحول حالة البت bit6 إلى الحالة المرتفعة HIGH ( توصيل الليد العليا) لعكس الإزاحة وكشف تحول حالة البت bit0 إلى الحالة المرتفعة لتكرار الدورة .
لغة الأسمبلى :
كود:
;PIC16F84 and only F84 chip         
;LEDs scan up and down at 2Hz. 

  Start   ORG 0x00
             BSF 03,5             ;Go to page1 for setting-up the ports
             MOVLW 00h       ;Put 00 into W             
             MOVWF 05h       ;Make all RA lines output        
             MOVWF 06h       ;Make all RB lines output
             BCF 03,5             ;Go to Page0 for programming
             MOVLW 02h        ;Put 02 into W to
             MOVWF 05h        ;    Reset the 4017
 
  UpDown      BCF 03h,0             ;Clear the carry flag
                      MOVLW 01h          ;Turn on the bottom LED
                      MOVWF 06h          ;     and output a HIGH
                      CALL Delay
 UpDown1     RLF 06h,1              ;Shift the HIGH up the column
                      CALL Delay
                      BTFSS 06h,6         ;Has it reached the top?
                      GOTO UpDown1   ;NO
 UpDown2     RRF 06h,1             ;YES. Shift the HIGH down
                      CALL Delay
                      BTFSS 06h,0         ;Has it reached the bottom?
                      GOTO UpDown2   ;NO. 
                      GOTO UpDown1    ;YES. Repeat the cycle

 Delay     MOVLW 03
               MOVWF 1Ah
 Delay1   DECFSZ 1Bh,1
               GOTO Delay1
               DECFSZ 1Ch,1
               GOTO Delay1
               DECFSZ 1Ah,1
               GOTO Delay1
               RETURN 

               END

لغة السى والميكروكونترولر PIC16F628A مع الساعة الداخلية بتردد 4MHz :


كود:
//PIC16F628a //LEDs scan up and down at 2Hz. void main (){ //Start unsigned short count; //Loop count variable unsigned short (int) TRISA=0; // Make all RA lines output TRISB=0; //Make all RB lines output PORTA=0x02; // Reset the 4017 while(1){ //Endless loop PORTB=0x01; // turn on first LED Delay_ms(500); // Call Delay 500 ms if(PORTB.F0=1){ //Shift UP for(count =0; count <6; count ++){ PORTB=PORTB<<1; // turn off first LED Delay_ms(500); // Call Delay 500 ms } } if(PORTB.F6=1){ //Sift DOWN for(count =0;count<6; count ++){ PORTB=PORTB>>1; // turn off first LED Delay_ms(500); // Call Delay 500 ms } } } }







fawzy73
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2008
المشاركات: 92
نشاط [ fawzy73 ]
قوة السمعة:
قديم 07-02-2013, 12:05 AM المشاركة 32   
افتراضي


بارك الله فيك

وشكرا علي الرد



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