• Motivation

    Bekerja keraslah, Bermimpilah lebih besar dan jadilah yang terbaik FILAB.id...
  • Motivation

    Anda saat ini adalah hasil dari pengalaman anda FILAB.id...
  • Motivation

    Kesalahan adalah bukti bahwa kamu sedang mencoba FILAB.id...
Tampilkan postingan dengan label AVR. Tampilkan semua postingan
Tampilkan postingan dengan label AVR. Tampilkan semua postingan

Kamis, 30 Juni 2016

Akses PWM Codevisionavr

Salam elektro,

TOLONG BACA DENGAN DETAIL !

Siapkan alat dan bahan :
  • Minimum sytem atmega 8
  • Variable resistor 10k 
  • Lcd 16x2 
  • Motor dc (2)
  • IC L293D 
  • Push button (2)
  • Kabel jumper disesuaikan
  • Breadboard
  • Kabel usb
  • Laptop
  • Software codevision avr 
  • Download simulasi proteus
1. Sambungkan semua komponen sesuai dengan gambar atau bisa kalian coba dulu pada software proteus isis


CATATAN !
a. Pastikan setting software sudah sesuai
b. Pastikan pin PWM terdapat pada PORTB.1 dan PORTB.2 pada atmega 8
c. Pastikan settingan crystal menggunakan 12 Mhz
d. Timer 1 dan timer 2 sama saja tinggal kalian pilih salah satu

2. Buat program seperti dibawah ini pada software codevisionavr,apabila ada yang belum tau cara menggunakan software codevision avr bisa baca disini 

Sebelum membuat program,kalian setting dulu pada codevision avr dan proteus seperti ini

Dengan menggunakan TIMER 1


Dengan menggunakan TIMER 2


Display setting



/*******************************************************
This program was created by the
CodeWizardAVR V3.12 Advanced
Automatic Program Generator
© Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : Akses PWM
Version : 
Date    : 6/30/2016
Author  : Fickry Muhammad
Company : PT LEN
Comments: 


Chip type               : ATmega8
Program type            : Application
AVR Core Clock frequency: 12.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*******************************************************/

#include <mega8.h>
#include <stdio.h>
#include <delay.h>

// Alphanumeric LCD functions
#include <alcd.h>

#define incr_speed PINC.0
#define decr_speed PINC.1

#define motor_1_forward PORTB.0
#define motor_1_reverse PORTB.3

#define motor_2_forward PORTB.4
#define motor_2_reverse PORTB.5


// Declare your global variables here

int speed = 0;
char buffer[20];

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Function: Bit7=Out Bit6=Out Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out 
DDRB=(1<<DDB7) | (1<<DDB6) | (1<<DDB5) | (1<<DDB4) | (1<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);
// State: Bit7=0 Bit6=0 Bit5=0 Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=0 
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

DDRC.0  = 0;
PORTC.0 = 1;

DDRC.1  = 0;
PORTC.1 = 1;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=(0<<CS02) | (0<<CS01) | (0<<CS00);
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 46.875 kHz
// Mode: Ph. correct PWM top=0x03FF
// OC1A output: Non-Inverted PWM
// OC1B output: Non-Inverted PWM
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer Period: 43.648 ms
// Output Pulse(s):
// OC1A Period: 43.648 ms Width: 32.725 ms
// OC1B Period: 43.648 ms Width: 0 us
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=(1<<COM1A1) | (0<<COM1A0) | (1<<COM1B1) | (0<<COM1B0) | (1<<WGM11) | (1<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (1<<CS12) | (0<<CS11) | (0<<CS10);
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x02;
OCR1AL=0xFF;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0<<AS2;
TCCR2=(0<<PWM2) | (0<<COM21) | (0<<COM20) | (0<<CTC2) | (0<<CS22) | (0<<CS21) | (0<<CS20);
TCNT2=0x00;
OCR2=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<TOIE0);

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);

// USART initialization
// USART disabled
UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);

// Analog Comparator initialization
// Analog Comparator: Off
// The Analog Comparator's positive input is
// connected to the AIN0 pin
// The Analog Comparator's negative input is
// connected to the AIN1 pin
ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);
SFIOR=(0<<ACME);

// ADC initialization
// ADC disabled
ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADFR) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);

// SPI initialization
// SPI disabled
SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);

// TWI initialization
// TWI disabled
TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);

// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTD Bit 0
// RD - PORTD Bit 1
// EN - PORTD Bit 2
// D4 - PORTD Bit 4
// D5 - PORTD Bit 5
// D6 - PORTD Bit 6
// D7 - PORTD Bit 7
// Characters/line: 16
lcd_init(16);

while (1)
      {
      // Place your code here 
      
      motor_1_reverse = 1;
      motor_2_reverse = 1;
      
      OCR1A = speed;
      OCR1B = speed; 
      
        if (incr_speed == 0)
        {
        speed = speed + 10;
        delay_ms(200);
        }
        
        if (decr_speed == 0)
        {
        speed = speed - 10;
        delay_ms(200);
        } 
        
        if (speed <= 0) speed = 0;
        
      sprintf(buffer,"Speed = %02d",speed);
      lcd_gotoxy(0,0);
      lcd_puts(buffer);
      lcd_gotoxy(0,1);
      lcd_putsf("aruselektronika");

      delay_ms(100);
      }
}
3. Compile project pada software cvavr,apabila tidak terjadi error lanjut dengan proses upload atau build all project files 

4. Download program .hex (hasil compile) pada minimum sistem menggunakan usb asp baca disini,bila menggunakan simulasi tinggal kalian masukan file .hexnya ke dalam ic baca disini

Theory Timer
Timer0
Mode Phase Correct PWM
Foc0 = Fosc/(N*512)
D = (OCR0/255)*100%

Mode Fast PWM
Foc0 = Fosc/(N*256)
D = (OCR0/255)*100%

Dimana:
Foc0 = Frekuensi output OC0
N = Skala clock (mempunyai nilai 1, 8, 64, 256 dan 1024)
D = Duty cycle
Fosc = Frekuensi clock kristal yang digunakan

Timer1
Mode Phase Correct PWM
Foc1a = Fosc/(2*N*TOP)
Foc1b = Fosc/(2*N*TOP)
D = (OCR1X/TOP)*100%

Mode Fast PWM
Foc1a = Fosc/(N*(1+TOP))
Foc1b = Fosc/(N*(1+TOP))
D = (OCR1X/TOP)*100%

Dimana:
Foc1a = Frekuensi output OC1A
Foc1b = Frekuensi output OC1B
N = Skala clock (mempunyai nilai 1, 8, 64, 256 dan 1024)
D = Duty cycle
Fosc = Frekuensi clock kristal yang digunakan
TOP = nilai maksimum counter (TCNT1), TOP mempunyai 3 buah nilai untuk kedua mode tersebut yaitu 8 bit (FF), 9 bit (1FF) dan 10 bit (3FF)

Sekarang saya akan membuat aplikasi membangkitkan sinyal PWM dengan periode 20 ms dengan duty cycle 75%, menggunakan Timer1 10 Bit Mode Fast PWM.

Dengan menggunakan kristal 12 Mhz, N = 256 dan TOP = 10 bit = 3FF = 1023

Maka akan didapat frekuensi output (Foc1x) sebesar 45,77 Hz atau jika diubah kedalam peroide 21,8 ms ≈ 20 ms

Untuk Duty cycle:
D = (OCR1X/TOP)*100%
75% = (OCR1X/1023)*100%
OCR1X = 767 = 2FF (dalam hexa) 

Untuk theory lebih lanjut kalian baca disini dan disini 

Instruction 
Jika kalian membuatnya pada simulasi,kalian coba run ,jika kalian ingin menambah kecepatan tekan tombol + speed,dan jika kalian ingin menurunkan kecepatan kalian tekan tombol - speed,lihat perubahan signal pwm pada osciloscop dan lcd 

Development
bisa kalian kembangkan,contohnya membuat robot line follower ketika robot berberlok kalian bisa atur kecepatan motornya 

Share:

Akses ADC CodevisionAVR


Salam elektro,

TOLONG BACA DENGAN DETAIL !

Siapkan alat dan bahan :
  • Minimum sytem atmega 8
  • Variable resistor 10k (3)
  • Lcd 16x2 
  • Kabel jumper disesuaikan
  • Breadboard
  • Kabel usb
  • Laptop
  • Software codevision avr 
  • Download simulasi proteus
1. Sambungkan semua komponen sesuai dengan gambar atau bisa kalian coba dulu pada software proteus isis

CATATAN !
a. Pastikan setting software sudah sesuai
b. Pastikan pin AREF dan VCC sudah terhubung 
c. Pastikan settingan crystal menggunakan 12 Mhz

2. Buat program seperti dibawah ini pada software codevisionavr,apabila ada yang belum tau cara menggunakan software codevision avr bisa baca disini 

Sebelum membuat program,kalian setting dulu pada codevision avr dan proteus seperti ini




/*******************************************************
This program was created by the
CodeWizardAVR V3.12 Advanced
Automatic Program Generator
© Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : akses ADC 8 Bit
Version : 
Date    : 6/30/2016
Author  : 
Company : 
Comments: 


Chip type               : ATmega8
Program type            : Application
AVR Core Clock frequency: 12.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*******************************************************/

#include <mega8.h>
#include <delay.h>
#include <stdio.h>

// Alphanumeric LCD functions
#include <alcd.h>

// Declare your global variables here

int data_adc_1;
int data_adc_2;

int result_1;
int result_2;

char buffer_1[20];
char buffer_2[20];

// Voltage Reference: AREF pin
#define ADC_VREF_TYPE ((0<<REFS1) | (0<<REFS0) | (1<<ADLAR))

// Read the 8 most significant bits
// of the AD conversion result
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | ADC_VREF_TYPE;
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=(1<<ADSC);
// Wait for the AD conversion to complete
while ((ADCSRA & (1<<ADIF))==0);
ADCSRA|=(1<<ADIF);
return ADCH;
}

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

// Port C initialization
// Function: Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRC=(0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
// State: Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTC=(0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);

// Port D initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=(0<<CS02) | (0<<CS01) | (0<<CS00);
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Disconnected
// OC1B output: Disconnected
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10);
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: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0<<AS2;
TCCR2=(0<<PWM2) | (0<<COM21) | (0<<COM20) | (0<<CTC2) | (0<<CS22) | (0<<CS21) | (0<<CS20);
TCNT2=0x00;
OCR2=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<TOIE0);

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);

// USART initialization
// USART disabled
UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);

// Analog Comparator initialization
// Analog Comparator: Off
// The Analog Comparator's positive input is
// connected to the AIN0 pin
// The Analog Comparator's negative input is
// connected to the AIN1 pin
ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);

// ADC initialization
// ADC Clock frequency: 750.000 kHz
// ADC Voltage Reference: AREF pin
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=ADC_VREF_TYPE;
ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADFR) | (0<<ADIF) | (0<<ADIE) | (1<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);
SFIOR=(0<<ACME);

// SPI initialization
// SPI disabled
SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);

// TWI initialization
// TWI disabled
TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);

// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTD Bit 0
// RD - PORTD Bit 1
// EN - PORTD Bit 2
// D4 - PORTD Bit 4
// D5 - PORTD Bit 5
// D6 - PORTD Bit 6
// D7 - PORTD Bit 7
// Characters/line: 16
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("aruselektronika");
lcd_gotoxy(0,1);
lcd_putsf(".blogspot.com");
delay_ms(1000);
lcd_clear();

while (1)
      {
      // Place your code here
      data_adc_1  = read_adc(0);
      data_adc_2  = read_adc(1);

      result_1 = data_adc_1 * 5.0;
      result_2 = data_adc_2 * 5.0;
            
      sprintf(buffer_1,"ADC 0 = %d",result_1);
      sprintf(buffer_2,"ADC 1 = %d",result_2); 
      
      lcd_gotoxy(0,0);
      lcd_puts(buffer_1);
      lcd_gotoxy(0,1);
      lcd_puts(buffer_2); 
      delay_ms(100);
      }
}
3. Compile project pada software cvavr,apabila tidak terjadi error lanjut dengan proses upload atau build all project files 

4. Download program .hex (hasil compile) pada minimum sistem menggunakan usb asp baca disini,bila menggunakan simulasi tinggal kalian masukan file .hexnya ke dalam ic baca disini 

Instruction 
Jika kalian membuatnya pada simulasi,kalian coba run kemudian kalian putar POT-HG (variable resistor) pada simulasi lihat data yang akan tampil pada LCD 

Development
bisa kalian kembangkan,contohnya membaca sensor suhu dengan ADC 

Share:

Senin, 27 Juni 2016

Write Read eeprom Internal AVR CodevisionAVR

Salam elektro,sebelumnya apa kalin sudah tau apa itu EEPROM ? 

EEPROM kependekan dari Electrically Erasable Programmable Read Only Memory. Seperti halnya PROM dan EPROM, EEPROM merupakan memori non-volatile. Informasi, data atau program yang tersimpan di dalamnya tidak akan hilang walaupun komputer dimatikan, dan tidak membutuhkan daya listrik untuk mempertahankan atau menjaga informasi atau program yang tersimpan di dalamnya.
EEPROM adalah komponen yang banyak digunakan dalam komputer dan peralatan elektronik lain untuk menyimpan konfigurasi data pada peralatan elektronik tersebut. Kapasitas atau daya tampung simpan datanya sangat terbatas. Pada sistem hardware komputer, chip EEPROM umumnya digunakan untuk menyimpan data konfigurasi BIOS dan pengaturan (setting) sistem yang berhubungan dengannya.
EEPROM memiliki kelebihan tersendiri dibandingkan EPROMEEPROM dapat dihapus secara elektris menggunakan sinar ultraviolet, sehingga proses penghapusannya lebih cepat dibandingkan EPROM. Penghapusan juga dapat dilakukan secara elektrik dari papan circuit dengan menggunakan perangkat lunak EEPROM Programmer. Alat yang dapat digunakan untuk menghapus isi EEPROM disebut EEPROM Rewriter. Produk EEPROM versi awal, hanya dapat dihapus dan diisi ulang kurang lebih sebanyak 100 kali. Sedangkan produk-produk terbaru dapat dihapus dan diisi ulang (erase-rewrite) sampai ribuan kali (bahkan beberapa informasi menyebutkan mampu sampai 100 ribu kali)


TOLONG BACA DENGAN DETAIL !

Siapkan alat dan bahan :
  • Minimum system atmega 8
  • Lcd 16x2 (2)
  • Variable resistor 10k (2)
  • Pusbutton
  • Kabel jumper disesuaikan
  • Breadboard
  • Laptop
  • Software codevision avr 
  • Kabel usb
  • Download simulasi proteus
1. Sambungkan seluruh komponen dengan board minimum system

CATATAN !
1. Pastikan rangkaian minimum system sudah benar 
2. Pastikan oscilator yang dipakai 12 Mhz
3. Apabila settingan osc ic kalian belum diatur masih (default 1Mhz) bisa kalian baca disini

2. Buat program seperti dibawah ini pada software codevisionavr,apabila ada yang belum tau cara menggunakan software codevision avr bisa baca disini
/*******************************************************
This program was created by the
CodeWizardAVR V3.12 Advanced
Automatic Program Generator
© Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : akses eeprom internal 
Version : 
Date    : 6/27/2016
Author  : fickry muhammad
Company : 
Comments: 


Chip type               : ATmega8
Program type            : Application
AVR Core Clock frequency: 12.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*******************************************************/

#include <mega8.h>
#include <stdio.h>
#include <delay.h>

// Alphanumeric LCD functions
#include <alcd.h>

#define input_data_baru PINB.0

// Declare your global variables here

int eeprom *source_eeprom;
int source;
int input;
char buffer[20];
char text[20] = "Data Masuk = ";

// Call funtion eeprom 
void write_eeprom()
{                        
*source_eeprom = source;     
}

void read_eeprom()
{   
source = *source_eeprom;       
}

void main(void)
{

DDRB.0  = 0;
PORTB.0 = 1;

// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTD Bit 0
// RD - PORTD Bit 1
// EN - PORTD Bit 2
// D4 - PORTD Bit 4
// D5 - PORTD Bit 5
// D6 - PORTD Bit 6
// D7 - PORTD Bit 7
// Characters/line: 16
lcd_init(16);

// Source eeprom & read eeprom
source_eeprom = 0;
read_eeprom();

while (1)
      {
      // Place your code here
      lcd_gotoxy(0,0);
      lcd_putsf("EEprom Internal");
      sprintf(buffer,"%s %02d",text,source);
      lcd_gotoxy(0,1);
      lcd_puts(buffer);   
        if(input_data_baru == 0) input = input + 1;
        if (input > 3) input = 0;
        if(input == 1)
        {
        source = 76 ;
        write_eeprom();
        }   
        
        if(input == 2)
        {
        source = 65 ;
        write_eeprom();
        }
        
        if(input == 3)
        {
        source = 43 ;
        write_eeprom();
        }
      delay_ms(200);
      }
}
3. Compile project pada software cvavr,apabila tidak terjadi error lanjut dengan proses upload atau build all project files 

4. Download program .hex (hasil compile) pada minimum sistem menggunakan usb asp baca disini,bila menggunakan simulasi tinggal kalian masukan file .hexnya ke dalam ic baca disini 

Instruction 
Jika kalian membuatnya pada simulasi,kalian coba run kemudian kalian tekan push button 1x atau 2x atau 3x lihat data yang terakhir tampil pada lcd kemudian kalian stop simulasi pada proteus,coba kalian run kembali simulasi proteus ,lihat data yang tampil pada lcd,jika datanya masih sama berati data kalian berhasil ditulis ke eeprom internal 

Development
data yang dimasukan tidak hanya bertipe data integer,tapi bisa juga tipe data char/string 

Share:

Jumat, 27 Mei 2016

Jam Digital Manual Bascom AVR

JAM DIGITAL MANUAL
VIA AVR/BASCOM


Salam elektro,untuk kalian yang ingin mencoba membuat jam digital dengan menggunakan tampilan 7 segment,bisa kalian ikuti tutorial yang akan aruselektronika paparkan mudah mudahan bermanfaat 

TOLONG BACA DENGAN DETAIL !

Siapkan alat dan bahan :
  • Minimum system avr
  • 7 segment common anoda 0.56 inch 
  • Transistor bc547
  • Resistor 1k 
  • Kabel jumper disesuaikan
  • Breadboard
  • Kabel usb
  • Laptop
  • Software bascom avr 
  • Download schematic pdf
1. Sambungkan semua komponen dengan minimum system avr

CATATAN !
a. jika 7 segment ingin lebih cerah atur nilai r pada basic transistor atau bisa juga mengganti supply pada emmitor transistor


2. Copy paste sketch/program di bawah ini  ke dalam software arduino 
'Jam Digital Manual 4 Digit
'Programmer Fickry Muhammad 20-05-1995

$regfile = "m16def.dat"
$crystal = 12000000
Config Portc = Output
Config Portd = Output
Config Portb = Input
Portb = &HFF

Dim I As Byte
Dim Jam As Byte , Menit As Byte , Detik As Byte
Dim Men_pul As Byte , Men_sat As Byte , Det_pul As Byte , Det_sat As Byte
Dim Jam_pul As Byte , Jam_sat As Byte
Jam = 12
Menit = 33
Detik = 59
Do
Jam_pul = Jam / 10
Jam_sat = Jam Mod 10
Men_pul = Menit / 10
Men_sat = Menit Mod 10
Det_pul = Detik / 10
Det_sat = Detik Mod 10

For I = 0 To 75

Portd = &B00000001
Portc = Lookup(jam_pul , Angka)
Waitms 2
Portd = &B00000010
Portc = Lookup(jam_sat , Angka)
Waitms 2
Portd = &B00000100
Portc = Lookup(men_pul , Angka)
Waitms 2
Portd = &B00001000
Portc = Lookup(men_sat , Angka)
Waitms 2
Portd = &B00010000
Portc = Lookup(det_pul , Angka)
Waitms 2
Portd = &B00100000
Portc = Lookup(det_sat , Angka)
Waitms 2
Next

Incr Detik
If Detik > 59 Then
Detik = 0
Incr Menit
If Menit > 59 Then
Menit = 0
Incr Jam
If Jam > 23 Then
Jam = 0
End If
End If
End If

Loop
End
Angka:
Data &HC0 , &HF9 , &HA4 , &HB0 , &H99 , &H92 , &H82 , &HF8 , &H80 , &H90
3. Compile program bascom avr,apabila tidak terjadi error lanjut dengan proses upload

4. Upload program,apabila succes akan muncul tulisan flash used 100%,apabila ada yang belum tahu bagaimana cara upload code/sketch ke minimum system bisa baca disini

5. Sekarang kalian lihat tampilan pada 7 segment display

Share:
Copyright © FILAB | Powered by FILAB
Design by Fickry Muhammad | Technology by Filab.id