Friday, November 30, 2012

7 Segment increment by switch PIC18f4550

#include <18f4550 .h=".h">
#fuses HS, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
//#fuses HS, NOWDT
#use delay(clock=20MHz)


static int8 const led_table[20] =  
//      ----           seg A
//     |    |   seg F         seg B
//     |    |
//      ----           seg G
//     |    |   seg E         seg C
//     |    |
//      ----           seg D
//
// bit7 .. bit0  ==>>   seg  None,G,A,F,D,E,C,B

// TI Driver connections:
// OUT0 -> None
// OUT1 -> Seg G
// OUT2 -> Seg A
// OUT3 -> Seg F
// OUT4 -> Seg D
// OUT5 -> Seg E
// OUT6 -> Seg C
// OUT7 -> Seg B

{
0x40,    // 0
0x79,    // 1
0x24,    // 2
0x30,    // 3
0x19,    // 4
0x12,    // 5
0x02,    // 6
0x78,    // 7
0x00,    // 8
0x10,    // 9
0x08,    // A
0x03,    // b
0x46,    // C
0x21,    // d
0x06,    // E
0x0e,    // F
};



void main() {
int8 i=0;
while(1){
if( input(PIN_A5) ){
delay_ms(500);
if( input(PIN_A5) ){
if (i>15)
      i=0;
   SET_TRIS_D(led_table[i]);
   i=i+1;
}  
}
}
}

Seven-segment display PIC18f4550

#include <18f4550 .h=".h">
#fuses HS, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
//#fuses HS, NOWDT
#use delay(clock=20MHz)


static int8 const led_table[20] =  
//      ----           seg A
//     |    |   seg F         seg B
//     |    |
//      ----           seg G
//     |    |   seg E         seg C
//     |    |
//      ----           seg D
//
// bit7 .. bit0  ==>>   seg  None,G,A,F,D,E,C,B

// TI Driver connections:
// OUT0 -> None
// OUT1 -> Seg G
// OUT2 -> Seg A
// OUT3 -> Seg F
// OUT4 -> Seg D
// OUT5 -> Seg E
// OUT6 -> Seg C
// OUT7 -> Seg B

{
0x40,    // 0
0x79,    // 1
0x24,    // 2
0x30,    // 3
0x19,    // 4
0x12,    // 5
0x02,    // 6
0x78,    // 7
0x00,    // 8
0x10,    // 9
0x08,    // A
0x03,    // b
0x46,    // C
0x21,    // d
0x06,    // E
0x0e,    // F
};



void main() {

 
while(1){
SET_TRIS_B(led_table[0]);
 delay_ms(500);
 SET_TRIS_B(led_table[1]);
 delay_ms(500);
 SET_TRIS_B(led_table[2]);
 delay_ms(500);
 SET_TRIS_B(led_table[3]);
 delay_ms(500);
 SET_TRIS_B(led_table[4]);
 delay_ms(500);
 SET_TRIS_B(led_table[5]);
 delay_ms(500);
 SET_TRIS_B(led_table[6]);
 delay_ms(500);
 SET_TRIS_B(led_table[7]);
 delay_ms(500);
 SET_TRIS_B(led_table[8]);
 delay_ms(500);
 SET_TRIS_B(led_table[9]);
 delay_ms(500);
 SET_TRIS_B(led_table[10]);
 delay_ms(500);
 SET_TRIS_B(led_table[11]);
 delay_ms(500);
 SET_TRIS_B(led_table[12]);
 delay_ms(500);
 SET_TRIS_B(led_table[13]);
 delay_ms(500);
 SET_TRIS_B(led_table[14]);
 delay_ms(500);
 SET_TRIS_B(led_table[15]);
 delay_ms(500);
}
// your program here
}

PCF8583 Real-time clock (RTC) CCS program for PIC18f4550

Download the code here

Wednesday, November 28, 2012

serial communication using PIC18f4550

//CCS C compiler
#include <18f4550 .h=".h">
#fuses HS,NOWDT
#use delay(clock=20MHz)
#use rs232(baud=9600,parity=N,xmit=PIN_B1,rcv=PIN_B2,bits=8,STOP=1)

void main()
{

while(TRUE)
{
printf("mahyar");
}