JAM DIGITAL MENGGUNAKAN MIKROKONTROLLER AVR AT90S8535

/*****************************************************
This program was produced by the
CodeWizardAVR V2.03.9 Evaluation
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :jam digital menggunakan rtc dengan tampilan LCD
Version :1.0
Date : 12/25/2012
Author : mbah ddt
Company : ITATS
Comments:


Chip type : AT90S8535
AVR Core Clock frequency: 11.059200 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 128
*****************************************************/


#include <90s8535.h>
#include <stdio.h>
#include <delay.h>

#define pb1 PINB.0
#define pb2 PINB.1
#define pb3 PINB.2
#define pb4 PINB.3

#define off 0x00
#define on 0x02
#define timer TCCR0

// I2C Bus functions#asm
#asm
.equ __i2c_port=0x1B ;PORTA
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#include <i2c.h>

// DS1307 Real Time Clock functions
#include<ds1307.h>

// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
#define RTC_ADDR 0xD0

unsigned char buff[33],hour,minute,second,date,month,year,mode=1,hari=0,i;


// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
i++;
if(i==255)
{
if(mode==0)
{
rtc_get_time(&hour,&minute,&second);
rtc_get_date(&date,&month,&year);
i2c_start();
i2c_write(0xd0);
i2c_write(0x03);
i2c_start();
i2c_write(0xd1);
hari=i2c_read(0);
i2c_stop();
}

lcd_gotoxy(0,0);
lcd_putsf("Pukul");
sprintf(buff," %2d:%2d:%2d",hour,minute,second);
lcd_puts(buff);


}

}

void set_clock(void) // prosedur mengeset waktu
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Atur Waktu");
while(pb2==1)
{
lcd_gotoxy(0,1);
sprintf(buff,"[%2d]:%2d:%2d",hour,minute,second);
lcd_puts(buff);
if(pb3==0)
{
delay_ms(15);
if(pb3==0)
{
hour++;
if(hour==24)hour=0;
lcd_gotoxy(0,1);
sprintf(buff,"[%2d]:%2d:%2d",hour,minute,second);
lcd_puts(buff);
delay_ms(700);
while(pb3==0)
{
hour++;
if(hour==24)hour=0;
lcd_gotoxy(0,1);
sprintf(buff,"[%2d]:%2d:%2d",hour,minute,second);
lcd_puts(buff);
delay_ms(200);
}
}

}
if(pb4==0)
{
delay_ms(15);
if(pb4==0)
{
hour--;
if(hour==-1)hour=23;
lcd_gotoxy(0,1);
sprintf(buff,"[%2d]:%2d:%2d",hour,minute,second);
lcd_puts(buff);
delay_ms(700);
while(pb4==0)
{
hour--;
if(hour==-1)hour=23;
lcd_gotoxy(0,1);
sprintf(buff,"[%2d]:%2d:%2d",hour,minute,second);
lcd_puts(buff);
delay_ms(200);
}
}

}
}
delay_ms(15);
while(pb2==0);
while(pb2==1)
{
lcd_gotoxy(0,1);
sprintf(buff,"%2d:[%2d]:%2d",hour,minute,second);
lcd_puts(buff);
if(pb3==0)
{
delay_ms(15);
if(pb3==0)
{
minute++;
if(minute==60)minute=0;
lcd_gotoxy(0,1);
sprintf(buff,"%2d:[%2d]:%2d",hour,minute,second);
lcd_puts(buff);
delay_ms(700);
while(pb3==0)
{
minute++;
if(minute==60)minute=0;
lcd_gotoxy(0,1);
sprintf(buff,"%2d:[%2d]:%2d",hour,minute,second);
lcd_puts(buff);
delay_ms(200);
}
}

}
if(pb4==0)
{
delay_ms(15);
if(pb4==0)
{
minute--;
if(minute==-1)minute=59;
lcd_gotoxy(0,1);
sprintf(buff,"%2d:[%2d]:%2d",hour,minute,second);
lcd_puts(buff);
delay_ms(700);
while(pb4==0)
{
minute--;
if(minute==-1)minute=59;
lcd_gotoxy(0,1);
sprintf(buff,"%2d:[%2d]:%2d",hour,minute,second);
lcd_puts(buff);
delay_ms(200);
}
}

}
}
delay_ms(15);
while(pb2==0);
while(pb2==1)
{
lcd_gotoxy(0,1);
sprintf(buff,"%2d:%2d:[%2d]",hour,minute,second);
lcd_puts(buff);
if(pb3==0)
{
delay_ms(15);
if(pb3==0)
{
second++;
if(second==60)second=0;
lcd_gotoxy(0,1);
sprintf(buff,"%2d:%2d:[%2d]",hour,minute,second);
lcd_puts(buff);
delay_ms(700);
while(pb3==0)
{
second++;
if(second==60)second=0;
lcd_gotoxy(0,1);
sprintf(buff,"%2d:%2d:[%2d]",hour,minute,second);
lcd_puts(buff);
delay_ms(200);
}
}

}
if(pb4==0)
{
delay_ms(15);
if(pb4==0)
{
second--;
if(second==-1)second=59;
lcd_gotoxy(0,1);
sprintf(buff,"%2d:%2d:[%2d]",hour,minute,second);
lcd_puts(buff);
delay_ms(700);
while(pb4==0)
{
second--;
if(second==-1)second=59;
lcd_gotoxy(0,1);
sprintf(buff,"%2d:%2d:[%2d]",hour,minute,second);
lcd_puts(buff);
delay_ms(200);
}
}

}
}
delay_ms(15);
while(pb2==0);
rtc_set_time(hour,minute,second);
delay_ms(200);
while(pb2==0);
i2c_start();
i2c_write(0xd0);
i2c_write(0x03);
i2c_write(hari);
i2c_stop();
lcd_clear();
delay_ms(500);

}


// Declare your global variables here

//void siaga(void)
//{


//}

void main(void)
{

PORTB=0xFF;// port b sebagai input pull up

PORTD=0x00; //port D berlogika 0
DDRD=0xFF; //Arah data port D output

timer=off;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;


// I2C Bus initialization
i2c_init();

// DS1307 Real Time Clock initialization
// Square wave output on pin SQW/OUT: Off
// SQW/OUT pin state: 0
rtc_init(0,0,0);

// LCD module initialization
lcd_init(16);

// Global enable interrupts
#asm("sei")


delay_ms(1000);
timer=on;
mode=0;


while (1) //Program utama
{

//Setting waktu

if(pb1==0)
{
delay_ms(15);
if(pb1==0)
{
while(pb1==0);
mode=1;
timer=off;
set_clock();
timer=on;
mode=0;
}
}
if(pb2==0)
{
delay_ms(15);
if(pb2==0)
{
while(pb2==0);
mode=0;

}
}
if(pb3==0)
{
delay_ms(15);
if(pb3==0)
{
while(pb3==0);
sprintf(buff,"pb_3");

}
}
if(pb4==0)
{
delay_ms(15);
if(pb4==0)
{
while(pb4==0);
sprintf(buff,"pb_4");


}
}










};
}

Minggu, 30 Desember 2012

Driver seven segmen menggunakan codevision



/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.5 Standard
Automatic Program Generator
© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date    : 28/12/2012
Author  : DODIT                           
Company : ITATS                           
Comments:


Chip type           : ATmega16
Program type        : Application
Clock frequency     : 8.000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 256
*****************************************************/

#include
#include
// Declare your global variables here
//void display(angka):
//unsigned char bin7seg(unsigned char c/*,char status*/);

unsigned char bin7seg(unsigned char c/*,char status*/)
{
 //char d7seg_dt_off[10]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};   //CK
// char d7seg_dt_on[10]= {0XBF,0X86,0XDB,0XCF,0XE6,0XED,0XFD,0X87,0XFF,0XEF};
 char d7seg_dt_off[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90}; //CA
// char d7seg_dt_on[10]= {0XBF,0X86,0XDB,0XCF,0XE6,0XED,0XFD,0X87,0XFF,0XEF};
//if (status)
        return d7seg_dt_off[c];
//else
//        return d7seg_dt_off[c];
}
void display(int angka)
{
char i;
unsigned char sat.pul.rat,rib;

rib=angka/1000;
angka%=1000;
rat=angka/100;
angka%=100;
pul=angka/10;
sat=angka%10;

for(i=0;i<20 i="i" p="p">

        {
        PORTC=bin7seg(rib); 
        //PORTB=0xFE;
        //PORTB=0x7F;
        PORTB.3=0;
        PORTB.2=1;
        PORTB.1=1;
        PORTB.0=1;
        delay_ms(5);
        //
            PORTC=bin7seg(rat);
           // PORTB=0xFB;
            //PORTB=0xBF;
            PORTB.3=1;
            PORTB.2=0;
            PORTB.1=1;
            PORTB.0=1;
            delay_ms(5);
            //
                PORTC=bin7seg(pul);
                // PORTB=0xEF;
                //PORTB=0xDF;
                PORTB.3=1;
                PORTB.2=1;
                PORTB.1=0;
                PORTB.0=1;
                delay_ms(5);
            //
        PORTC=bin7seg(sat);   // satuan
        // PORTB=0xBF;
       //PORTB=0xEF;
        PORTB.3=1;
        PORTB.2=1;
        PORTB.1=1;
        PORTB.0=0;
        delay_ms(5);
      
       }
}
void main(void)
{
// Declare your local variables here
 int i=0;
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0xFF;
DDRA=0xFF;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0xFF;
DDRB=0xff;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0xff;
DDRC=0xff;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0xff;
DDRD=0xff;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

while (1)
      {
     
      for(i=0;i<10 i="i" p="p">
         {
           display(i);
         //  delay_ms(500);
         }
      };
}