Wednesday, April 2, 2014

PROJEK MICROCONTROLLER 1 : PENGAWALAN NYALAAN LAMPU LED

Projek ini menerangkan perkara paling asas dalam usaha kita untuk mempelajari bidang ini.

Dengan menggunakan microcontroller, pattern nyalaan lampu LED boleh di kawal secara automatik sepenuhnya mengikut kehendak cita rasa pengguna.

SOURCE CODE : KAEDAH 1

------------------------------------------------------------------------------------------------------------

#include <18F4620.h>                
#fuses HS,NOWDT,NOLVP,NOPROTECT    
#use delay (clock=20M)              

#define LED1_ANODE      PIN_C0               // LED 1 COMMON ANODE
#define LED2_ANODE      PIN_C1               // LED 2 COMMON ANODE
#define LED3_ANODE      PIN_C2               // LED 3 COMMON ANODE
#define LED4_ANODE      PIN_C3               // LED 4 COMMON ANODE
#define LED5_ANODE      PIN_C4               // LED 5 COMMON ANODE
#define LED6_ANODE      PIN_C5               // LED 6 COMMON ANODE
#define LED7_ANODE      PIN_C6               // LED 7 COMMON ANODE
#define LED8_ANODE      PIN_C7               // LED 8 COMMON ANODE


#define LED1_CATHODE      PIN_D0               // LED 1 COMMON CATHODE
#define LED2_CATHODE      PIN_D1               // LED 2 COMMON CATHODE
#define LED3_CATHODE      PIN_D2               // LED 3 COMMON CATHODE
#define LED4_CATHODE      PIN_D3               // LED 4 COMMON CATHODE
#define LED5_CATHODE      PIN_D4               // LED 5 COMMON CATHODE
#define LED6_CATHODE      PIN_D5               // LED 6 COMMON CATHODE
#define LED7_CATHODE      PIN_D6               // LED 7 COMMON CATHODE
#define LED8_CATHODE      PIN_D7               // LED 8 COMMON CATHODE


#define BUTTON1        PIN_B0               // PRESET BUTTON 1  
#define BUTTON2        PIN_B1               // PRESET BUTTON 2
#define BUTTON3        PIN_B2               // PRESET BUTTON 3
#define BUTTON4        PIN_B3               // PRESET BUTTON 4

void main()
{

set_tris_b(0xFF);                // SET ALL PORT B AS INPUT PORT
set_tris_c(0x00);                // SET ALL PORT C AS OUTPUT PORT
set_tris_d(0x00);                // SET ALL PORT D AS OUTPUT PORT

output_b(0xFF);                  // RESET PORT B
output_c(0xFF);                  // RESET PORT C
output_d(0x00);                  // RESET PORT D


while(TRUE)                      // always repeat program

{
output_high(LED1_ANODE);
output_high(LED2_ANODE);
output_high(LED3_ANODE);
output_high(LED4_ANODE);
output_high(LED5_ANODE);
output_high(LED6_ANODE);
output_high(LED7_ANODE);
output_high(LED8_ANODE);

output_low(LED1_CATHODE);
output_low(LED2_CATHODE);
output_low(LED3_CATHODE);
output_low(LED4_CATHODE);
output_low(LED5_CATHODE);
output_low(LED6_CATHODE);
output_low(LED7_CATHODE);
output_low(LED8_CATHODE);

delay_ms(500);       // wait for 500m seconds

output_low(LED1_ANODE);
output_low(LED2_ANODE);
output_low(LED3_ANODE);
output_low(LED4_ANODE);
output_low(LED5_ANODE);
output_low(LED6_ANODE);
output_low(LED7_ANODE);
output_low(LED8_ANODE);

output_high(LED1_CATHODE);
output_high(LED2_CATHODE);
output_high(LED3_CATHODE);
output_high(LED4_CATHODE);
output_high(LED5_CATHODE);
output_high(LED6_CATHODE);
output_high(LED7_CATHODE);
output_high(LED8_CATHODE);

delay_ms(500);       // wait for 500m seconds

}
}

------------------------------------------------------------------------------------------------------------


SOURCE CODE : KAEDAH 2

----------------------------------------------------------------------------------------------------------------------------------

#include <18F4620.h>              
#fuses HS,NOWDT,NOLVP,NOPROTECT    
#use delay (clock=20M)              

#define LED1_ANODE      PIN_C0               // LED 1 COMMON ANODE
#define LED2_ANODE      PIN_C1               // LED 2 COMMON ANODE
#define LED3_ANODE      PIN_C2               // LED 3 COMMON ANODE
#define LED4_ANODE      PIN_C3               // LED 4 COMMON ANODE
#define LED5_ANODE      PIN_C4               // LED 5 COMMON ANODE
#define LED6_ANODE      PIN_C5               // LED 6 COMMON ANODE
#define LED7_ANODE      PIN_C6               // LED 7 COMMON ANODE
#define LED8_ANODE      PIN_C7               // LED 8 COMMON ANODE


#define LED1_CATHODE      PIN_D0               // LED 1 COMMON CATHODE
#define LED2_CATHODE      PIN_D1               // LED 2 COMMON CATHODE
#define LED3_CATHODE      PIN_D2               // LED 3 COMMON CATHODE
#define LED4_CATHODE      PIN_D3               // LED 4 COMMON CATHODE
#define LED5_CATHODE      PIN_D4               // LED 5 COMMON CATHODE
#define LED6_CATHODE      PIN_D5               // LED 6 COMMON CATHODE
#define LED7_CATHODE      PIN_D6               // LED 7 COMMON CATHODE
#define LED8_CATHODE      PIN_D7               // LED 8 COMMON CATHODE


#define BUTTON1        PIN_B0               // PRESET BUTTON 1  
#define BUTTON2        PIN_B1               // PRESET BUTTON 2
#define BUTTON3        PIN_B2               // PRESET BUTTON 3
#define BUTTON4        PIN_B3               // PRESET BUTTON 4


void main()
{

set_tris_b(0xFF);                // SET ALL PORT B AS INPUT PORT
set_tris_c(0x00);                // SET ALL PORT C AS OUTPUT PORT
set_tris_d(0x00);                // SET ALL PORT D AS OUTPUT PORT

output_b(0xFF);                  // RESET PORT B
output_c(0xFF);                  // RESET PORT C
output_d(0x00);                  // RESET PORT D


while(TRUE)                      // always repeat program

{

output_c(0xFF);      // all led at port c OFF
output_d(0x00);      // all led at port d OFF
delay_ms(500);       // wait for 500m seconds

output_c(0x00);      // all led at port c ON
output_d(0xFF);      // all led at port d ON
delay_ms(500);       // wait for 500m seconds

}

}

------------------------------------------------------------------------------------------------------------


LITAR SIMULASI





Monday, March 31, 2014

PENGENALAN KEPADA PIC18F4620

Microcontroller ini adalah keluaran daripada Microchip Technology..
Model ini adalah tergolong dari keluarga microcontroller 8 bit..


Secara umumnya, microcontroller ini dapat melakukan perkara-perkara asas di dalam bidang kawalan. Ianya mempunyai kapasiti untuk menyokong aplikasi asas seperti yang tertera di bawah:

1) Keluaran digital
2) Keluaran analog (PWM)
3) Penerimaan digital
4) Penerimaan analog

Selain itu, microcontroller ini di juga di lengkapi dengan kemampuan untuk aplikasi yang lain.


Jika merujuk kepada paparan pin diagram PIC18F4620, pin yang berlabel RA, RB, RC, RD dan RE mempunyai kapasiti untuk melakukan tugasan sebagai keluaran digital mahupun penerimaan digital. Tetapi, adalah harus di ingat bahawa, di dalam satu-satu masa, pin ini hanya boleh berfungsi sebagai satu tujuan sahaja. Sama ada untuk di jadikan keluaran digital ATAU penerimaan digital.

Manakala, untuk keluaran analog, ianya dapat di manipulasikan dengan menggunakan teknik "Pulse Width Modulation" atau dengan kata singkatnya PWM. PWM ini dalah beroperasi pada kemampuan 8 bit.

Untuk penerimaan analog pula, pin yang berlabel dengan AN adalah di khususkan untuk aplikasi ini. Untuk analog input, ianya adalah beroperasi pada kemampuan 10 bit.

Secara kesimpulanya, pin yang terdapat pada PIC18F4620 adalah seperti berikut:

Keluaran / Penerimaan Digital:

1) RA0, RA1, RA2, RA3, RA4 dan RA5
2) RB0, RB1, RB2, RB3, RB4, RB5, RB6 dan RB7 
3) RC0, RC1, RC2, RC3, RC4, RC5, RC6 dan RC7
4) RD0, RD1, RD2, RD3, RD4, RD5, RD6 dan RD7
5) RE0, RE1 dan RE2

Keluaran Analog (PWM):

1) CCP1
2) CCP2

Penerimaan Analog:

1) AN0, AN1, AN2, AN3, AN4, AN5, AN6, AN7, AN8, AN9, AN10, AN11 dan AN12


Rajah di bawah merupakan penerangan yang boleh di dapati daripada datasheet PIC18F4620