Training Elektronika Industri

No HP : 082322992336

Trainer Microcontroller

No HP : 082322992336

team electronics indonesia

No HP : 082322992336

Interface Electric car

No HP : 082322992336

Altium designer

No HP : 082322992336

Senin, 08 Februari 2016

UKK ELEKTRONIKA INDUSTRI 2016

Contoh program UKK elektronika industri 2016 “motor stepper” menggunakan compiler M-IDE dan bahasa assembler

Cara kerja program
·            SW1 ditekan maka program akan direset
·            SW2 ditekan maka motor stepper akan berputar 90O ke kanan (searah jarum jam)
·            SW3 ditekan maka motor stepper akan berputar 180O ke kiri (berlawanan arah jarum jam)
·            SW4 ditekan maka motor stepper akan stop

Cara kerja motor stepper
Untuk memutar CW
STEPP
PIN4
PIN3
PIN2
PIN1
STEPP1
1
1
0
0
STEPP2
0
1
1
0
STEPP3
0
0
1
1
STEPP4
1
0
0
1

Untuk memutar CCW
STEPP
PIN4
PIN3
PIN2
PIN1
STEPP1
1
0
0
1
STEPP2
0
0
1
1
STEPP3
0
1
1
0
STEPP4
1
1
0
0

Gambar Rangkaian



Contoh program Sederhana

;*******************************************************
;mendefisinikan i/o atau variable
;*******************************************************
                motor           equ     P0      ;mengidentifikasi PO sebagai motor
                SW2            equ     p1.0    ;mengidentifikasi SW2 sebagai P1.0
                SW3            equ     p1.1    ;mengidentifikasi SW3 sebagai P1.1
                SW4            equ     p1.2    ;mengidentifikasi SW4 sebagai P1.2            
                Org             0000H
;------------------------------------------------------
               
;*******************************************************
;MAIN PROGRAM (pembacaan kondisi tombol)
;*******************************************************
main_prog:      MOV    Motor,#000H    ;memindah nilai 00h ke motor (semua kutup motor dimatikan)
                JNB    SW2,sub_90    ;jika SW2 sama dengan 0, maka membaca atau loncat ke sub_90
                JNB    SW3,sub_180   ;jika SW2 sama dengan 0, maka membaca atau loncat ke sub_180
                sjmp    main_prog      ;lompat pendek ke main_program
;------------------------------------------------------

;*******************************************************
;SUB PROGRAM (PEMBACAAN SW3 / PROGRAM MOTOR 90 DERAJAT)
;*******************************************************
sub_90:         MOV    R1,#3           ;R1 terisi dengan nilai 3 (mengalami pengulangan selama 3x)
loop_90:                MOV    motor,#00CH    ;kondisi kutup motor 1100
                call     delay           ;delay
                JNB    SW4,main_prog  ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
                MOV    motor,#006H    ;kondisi kutup motor 0110
                call     delay           ;delay
                JNB    SW4,main_prog  ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
                MOV    motor,#003H    ;kondisi kutup motor 0011
                call     delay           ;delay
                JNB    SW4,main_prog  ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
                MOV    motor,#009H    ;kondisi kutup motor 1001
                call     delay           ;delay
                JNB    SW4,main_prog  ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
                DJNZ   R1,loop_90     ;pengurangan hingga sama dengan 0, jika tidak maka akan selalu membaca loop_90
                MOV    motor,#000H    ;kondisi kutup motor 0000
                SJMP   main_prog      ;kembali ke main_program
                RET
;------------------------------------------------------

;*******************************************************
;SUB PROGRAM (PEMBACAAN SW4 / PROGRAM MOTOR 180 DERAJAT)
;*******************************************************
sub_180:        MOV    R1,#6           ;R1 terisi dengan nilai 6 (mengalami pengulangan selama 6x)
loop_180:       MOV    motor,#009H    ;kondisi kutup motor 1001
                call     delay           ;delay
                JNB    SW4,main_prog  ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
                MOV    motor,#003H    ;kondisi kutup motor 0011
                call     delay           ;delay
                JNB    SW4,main_prog  ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
                MOV    motor,#006H    ;kondisi kutup motor 0110
                call     delay           ;delay
                JNB    SW4,main_prog  ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
                MOV    motor,#00CH    ;kondisi kutup motor 1100
                call     delay           ;delay
                JNB    SW4,main_prog  ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
                DJNZ   R1,loop_180    ;pengurangan hingga sama dengan 0, jika tidak maka akan selalu membaca loop_180
                MOV    motor,#000H    ;kondisi kutup motor 1001
                SJMP   main_prog      ;kembali ke main_program
                RET
;------------------------------------------------------
       
;*******************************************************
;tunda
;*******************************************************        
delay:           MOV    R5,#0ffh         ;mengisi R5 dengan nilai ff
                MOV    R6,#0ffH        ;mengisi R6 dengan nilai ff
                MOV    R7,#4           ;mengisi R7 dengan nilai 4
delay_loop:     DJNZ   R5,delay_loop   ;pengurangan R5 hingga sama dengan 0, jika tidak maka akan selalu membaca delay_loop
                DJNZ   R6,delay_loop   ;pengurangan R6 hingga sama dengan 0, jika tidak maka akan selalu membaca delay_loop
                DJNZ   R7,delay_loop   ;pengurangan R7 hingga sama dengan 0, jika tidak maka akan selalu membaca delay_loop
                RET
               
                END   
;------------------------------------------------------


Informasi tambahan

  1. Jangan lupa saat membuat PCB, sediakan soket untuk input Power supply
  2. Berikan Pull Up pada P0 dengan menggunakan resistor 10K atau R pack 10K

Untuk mencoba contoh program, maka sesiakan software sebagai berikut:

  1. M-IDE Compiler
  2.  ISIS Proteus 8.2 ke atas
            Download simulasi dan program
        DOWNLOAD

Sabtu, 07 Februari 2015

Latihan UKK Elektronika Industri

CODING SEVEN SEGMENT BAHASA ASSEMBLER

SOAL/TUGAS

 Buatlah rangkaian kontrol display 7 segment dengan ketentuan
  • SW 1 ditekan maka program akan reset
  •  SW2 ditekan 7 segment menghitung 00 - 99 (7 segment tetap menyala walaupun SW2 sudah dilepas lagi. 
  • SW3 ditekan 7 segment menghitung 99 - 00 (7 segment tetap menyala walaupun SW3 sudah dilepas lagi)
Gambar 1. Gambar Rangkaian
 Gambar 1. Block diagram

Gambar 2. Diagram blok perencanaan

Gambar 2. Block diagram 


Contoh coding menggunakan M-IDE dan simulasi ISIS Proteus 7
password: faridberbagi

Coding M-IDE

 ;*******************************************************
;mendefisinikan i/o atau variable
;*******************************************************

        dispdata_satuan        equ    P2
        dispdata_puluhan    equ    P0
  
        My_number        equ    30H
      
        Org    0000H
;------------------------------------------------------
      
;*******************************************************
;MAIN PROGRAM (pembacaan kondisi tombol)
;*******************************************************
main_prog:    MOV    P0,#0C0H
        MOV    P2,#0c0H
        mov    My_number,#0
        JNB    P1.0,up_A
        JNB    P1.1,down_A
        sjmp    main_prog  
;------------------------------------------------------

;*******************************************************
;mejadikan number start 0 atau 99 sebelum di up atau down
;*******************************************************
up_A:        mov    a, My_number
        Cjne    A,#99, up
        mov    My_number,#0FFH
        sjmp    up
      
down_A:        mov    a, My_number
        Cjne    A,#0, down
        mov    My_number,#99H
        sjmp    down
;------------------------------------------------------

;*******************************************************
;running up
;*******************************************************
up:        inc     My_number        ;nilai ditambah
        JNB    P1.1,down
        Call    BCD
        call    delay
        mov    a, My_number
        Cjne    A,#99, up
        mov    My_number,#0FFH        ;jika nilai sama 00 maka nilai sama dengan 255
        SJMP    up      
;------------------------------------------------------

;*******************************************************
;running down
;*******************************************************
down:        dec     My_number        ;nilai pdikurangi
        JNB    P1.0,up
        Call    BCD
        call    delay
        mov    a, My_number
        Cjne    A,#00, down        ;jika nilai tidak sama 00 maka kembali ke down
        mov    My_number,#100        ;jika nilai sama 00 maka nilai sama dengan 100
        SJMP    down  
;------------------------------------------------------

;*******************************************************
;conversi hex to desimal
;*******************************************************      
BCD:        Mov     A,My_number
        Mov     B,#10
        Div    AB            ;pembagian A/10
        call    Seg_conv
        mov    dispdata_puluhan, A    ;puluhan
        mov    A,B
        call    Seg_conv
        mov    dispdata_satuan, A    ;satuan
        Ret
;------------------------------------------------------

;*******************************************************
;data aray seven segment
;*******************************************************
Seg_conv:    inc     A
        Movc    A, @A+PC
        RET
      
        DB    0C0H    ;angka 0
        DB    0F9H    ;angka 1
        DB    0A4H    ;angka 2
        DB    0B0H    ;angka 3
        DB    099H    ;angka 4
        DB    092H    ;angka 5
        DB    082H    ;angka 6
        DB    0F8H    ;angka 7
        DB    080H    ;angka 8
        DB    090H    ;angka 9
;------------------------------------------------------

;*******************************************************
;tunda
;*******************************************************
delay:        MOV    R5,#0ffh
        MOV    R6,#0ffH
        MOV    R7,#2
delay_loop:    DJNZ    R5,delay_loop
        DJNZ    R6,delay_loop
        DJNZ    R7,delay_loop
        RET
      
        END  
;------------------------------------------------------


 

Minggu, 13 April 2014

percobaan Push Button AVR ATmega8535


  PERCOBAAN PUSH BUTTON
-          Percobaan 1 (Menyalakan LED dengan Push Button)
#include <mega8535.h>
#include <delay.h>
void main(void)
{
PORTB=0x00;
DDRB=0xff;
PORTD=0x00;
DDRD=0x00;
while (1)
      {
        PORTB=~PIND;
      }
}
-          Percobaan 2 (Geser Led ke kanan dengan push button)
#include <mega8535.h>
#include <delay.h>
void main(void)
{
int a,i;
PORTB=0x00;
DDRB=0xff;
PORTD=0x00;
DDRD=0x00;
while (1)
      {
        if(PIND.0==0)
        {
         a=0x01;
         for(i=7;i>=0;i--)
         {
          a=((a>>1)|(a<<7));
          PORTB=a;
          delay_ms(30);
         }
        }
        if(PIND.0==1)
        {
         PORTB=0x00;
        }                                                                     
      }
}
-          Percobaan 3 (Geser Led ke kiri dengan push button)
#include <mega8535.h>
#include <delay.h>
void main(void)
{
int a,i;
PORTB=0x00;
DDRB=0xff;
PORTD=0x00;
DDRD=0x00;
while (1)
      {
        if(PIND.0==0)
        {
         a=0x7f;
        for(i=0;i<=7;i++)
        {
         a=((a<<1)|(a>>7));
         PORTB=~a;
         delay_ms(30);
        }
        }
        if(PIND.0==1)
        {
         PORTB=0x00;
        }
      }
}
-          Percobaan 4 (Geser Led kanan kiri dengan push button)
#include <mega8535.h>
#include <delay.h>

void main(void)
{
int a,i;
PORTB=0x00;
DDRB=0xff;
PORTD=0x00;
DDRD=0x00;
while (1)
      {
       if(PIND.0==0)
        {
         a=0x01;
         for(i=7;i>=0;i--)
         {
          a=((a>>1)|(a<<7));
          PORTB=a;
          delay_ms(30);
         }
        }
        if(PIND.0==1)
        {
         PORTB=0x00;
        }
  
        if(PIND.1==0)
        {
         a=0x7f;
         for(i=0;i<=7;i++)
         {
          a=((a<<1)|(a>>7));
          PORTB=~a;
          delay_ms(30);
         }
        }
        if(PIND.1==1)
        {
         PORTB=0x00;
        }
      }
}