Contoh Dasar Pemrograman Kalkulator Dengan Microcontroller AVR C Codevision Dgn Simulasi
-
Upload
yogianastradanuwijaya -
Category
Documents
-
view
897 -
download
69
description
Transcript of Contoh Dasar Pemrograman Kalkulator Dengan Microcontroller AVR C Codevision Dgn Simulasi
Contoh Dasar Pemrograman Kalkulator dengan microcontroller AVR C Codevision dgn simulasi proteusSep 15
Posted by pccontrol
Berikut ini contoh Program Kalkulator untuk Operasi aritmetik sederhana antara operand1 dan operand 2 hasil = operand1 operator operand2 Operator yg digunakan : X(kali), / (bagi), + (tambah), dan – (kurang) Contoh operasi aritmatik : hasil = 34 X 2 keterangan: 34 adalah operand1 X adalah operator 2 adalah operand2 Rangkaian Simulasi dengan Proteus
Flowchart Program
Ringkasan Program
12345678910111213141516171819
/*****************************************************CodeWizardAVR V1.24.8d ProfessionalChip type : ATmega16*****************************************************/#include <mega16.h>#include &amp;lt;delay.h&amp;gt;#include &amp;lt;lcd.h&amp;gt;#include &amp;lt;stdlib.h&amp;gt;#include &amp;lt;math.h&amp;gt;#define scanKeypad 1#define stopScan 0
// Alphanumeric LCD Module functions#asm.equ __lcd_port=0x15 ;PORTC#endasm#include &amp;lt;lcd.h&amp;gt;
int bacaKeyPad(void);float kalkulator(void); int operand1 = 0 , operand2 = 0 ;
20212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
float hasil = 0 ;char kode=0 , bufferLCD[50] ; void main(void){
PORTA=0x00;DDRA=0x0F;
PORTC=0x00;DDRC=0x00;
lcd_init(20);while (1){kalkulator();};}
//==================int bacaKeyPad(void){char StatusBaca = scanKeypad ;while(StatusBaca==scanKeypad){
PORTA.0 = 1 ;PORTA.1 = 0 ;PORTA.2 = 0 ;PORTA.3 = 0 ;if(PINA.4 == 1){return 7 ; StatusBaca = stopScan;}if(PINA.5 == 1){return 8 ; StatusBaca = stopScan;}if(PINA.6 == 1){return 9 ; StatusBaca = stopScan;}if(PINA.7 == 1){return 10; StatusBaca = stopScan;}//==========================================PORTA.0 = 0 ;PORTA.1 = 1 ;PORTA.2 = 0 ;PORTA.3 = 0 ;if(PINA.4 == 1){return 4 ; StatusBaca = stopScan;}if(PINA.5 == 1){return 5 ; StatusBaca = stopScan;}if(PINA.6 == 1){return 6 ; StatusBaca = stopScan;}if(PINA.7 == 1){return 11; StatusBaca = stopScan;}//==========================================PORTA.0 = 0 ;PORTA.1 = 0 ;PORTA.2 = 1 ;PORTA.3 = 0 ;if(PINA.4 == 1){return 1 ; StatusBaca = stopScan;}if(PINA.5 == 1){return 2 ; StatusBaca = stopScan;}if(PINA.6 == 1){return 3 ; StatusBaca = stopScan;}if(PINA.7 == 1){return 12; StatusBaca = stopScan;}//==========================================PORTA.0 = 0 ;PORTA.1 = 0 ;PORTA.2 = 0 ;PORTA.3 = 1 ;
66676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
if(PINA.4 == 1){return 15; StatusBaca = stopScan;}if(PINA.5 == 1){return 0 ; StatusBaca = stopScan;}if(PINA.6 == 1){return 14; StatusBaca = stopScan;}if(PINA.7 == 1){return 13; StatusBaca = stopScan;}StatusBaca = scanKeypad ;}}//==========================float kalkulator(void){int StatusBaca = scanKeypad ;kode = bacaKeyPad();if( kode &amp;lt; 10 ) // kalau angka 0-9 ditekan{operand1 = (operand1*10)+ kode ;
itoa(kode , bufferLCD); // rubah kode ke ASCIIlcd_puts(bufferLCD); //tampilkan kode operand1 yg ditekandelay_ms(50);}//==========================if( kode &amp;gt; 9 &amp;amp;&amp;amp; kode &amp;lt; 16 ) // jika ditekan 10,11,12,13,14,15 (X, -, +, atau /){
if(kode == 10)lcd_putchar('/') ;if(kode == 11)lcd_putchar('X') ;if(kode == 12)lcd_putchar('-') ;if(kode == 13)lcd_putchar('+') ;operator = kode; // simpan operator yg dipilih
{kode = bacaKeyPad();
if( kode &amp;lt; 10 ){operand2 = (operand2*10)+kode ;
itoa(kode , bufferLCD); // rubah kode ke ASCIIlcd_puts(bufferLCD); //tampilkan kode operand2 yg ditekandelay_ms(50);
}else if(kode == 14) //jika ditekan &quot;=&quot; laksanakan operasi{lcd_putchar('=');
if(operator == 10){ // jika ditekan '/'hasil = operand1 / operand2 ;}if(operator == 11){ // jika ditekan 'X'hasil = operand1 * operand2 ;}
112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
if(operator == 12){ // jika ditekan '-'hasil = operand1 - operand2 ;}if(operator == 13){ // jika ditekan '+'hasil = operand1 + operand2 ;}
ftoa(hasil , 1 , bufferLCD); // rubah hasil ke string ( string adalah array berisi ascii diakhiri NULL )lcd_puts(bufferLCD); // print hasil ke LCDdelay_ms(100);kode = 0 ;StatusBaca = stopScan ;}}}//==============================
return 0;}
Perbaikan kesalahan tampilan kode pada tulisan diatas
Berikut ini foto hasil dari kode kalkulator sederhana diatas yg di terapkan pada microcontroller AVR board.
About these ads
http://suparno-mikrokontroler.blogspot.co.id/2012/03/calculator-digital.html