• Tidak ada hasil yang ditemukan

HASIL DAN PEMBAHASAN

4.3.7. Perangkat Lunak

Penulisan program perangkat lunak yang dilakukan oleh penulis adalah dengan menggunakan bahasa C, sedangkan compiler yang digunakan untuk membuat bahasa pemrograman tersebut adalah CodeVisionAVR Evaluation V2.04.5b (CVAVR EV2.04.5b). Digunakannya bahasa C dan juga software CVAVR EV2.04.05b, karena bahasa C sangat mudah untuk dimengerti dan dipahami oleh penulis didalam penulisan program “Pengukur Tekanan Darah (Tensimeter) Digital berbasis Mikro ATMega8535”.

Compiler CodeVisionAVR merupakan compiler bahasa C untuk AVR. Compiler

ini cukup mudah didalam penggunaannya, juga didukung berbagai fitur yang sangat membantu dalam pembuatan software untuk pembuatan program. CVAVR ini juga dapat mengimplementasikan semua bahasa C yang sesuai dengan arsitektur AVR, bahkan

terdapat beberapa keunggulan tambahan untuk memenuhi keunggulan spesifik dari AVR. Selain pustaka standar bahasa C, CVAVR juga mempunyai pustaka tambahan seperti Alphanumeric LCD Modules, Delays, SPI, dan lain sebagainya. CVAVR juga mempunyai program generator yang memungkinkan kita membuat program dengan cepat.

Berdasar pada diagram alir pada gambar 3.15, maka uraian dari program “Pengukur Tekanan Darah (Tensimeter) Digital berbasis Mikro ATmega 8535” adalah sebagai berikut:

4.3.4.1.Inisialisasi

Blok ini berfungsi sebagai pendefenisian dari mikrokontroler, LCD, dan juga

ADC. Adapun pendefinisian darimikrokontroler,LCD,ADCadalah sebagai berikut:

; ---; INISIALISASI

;

---#include <mega8535.h> //preposesor ATMega8535

// Alphanumeric LCD Module functions #asm

.equ __lcd_port=0x15 //pendefinisian bahwa LCD terhubung port C #endasm

#include <lcd.h> //menyertakan fungsi pustaka lcd.h #include <stdio.h> //menyertakan fungsi pustaka stdio.h #include <delay.h> //menyertakan fungsi pustaka delay.h #include <math.h> //menyertakan fungsi pustaka math.h

#define ADC_VREF_TYPE 0x00 //definisi tipe ADC yang digunakan yaitu ADC 10 bit

//pendeklarasian variabel umum unsigned char buff[33];

void lcd_putint (unsigned int dat) { sprintf(buff,"%d",dat); lcd_puts(buff); } void main(void) {

// pendeklarasian variabel dari pengukur tekanan darah

float adc1; //adc1

float vout; //vout

unsigned int mmHg; //nilai mmHg

unsigned int distolik; //nilai distolik unsigned int sistolik; //nilai sistolik

unsigned int count; //delay counter sekaligus pengecekan S dan D

unsigned char n; unsigned char lonjakan; unsigned char selesai;

PORTA=0x00; //inisialisasi port A

DDRA=0x00;

PORTB=0x00; //inisialisasi port B

DDRB=0x04;

PORTC=0x00; //inisialisasi port C

DDRC=0x00;

PORTD=0x00; //inisialisasi port D

DDRD=0x20;

ADMUX=ADC_VREF_TYPE; //ADC inisialisasi ADCSRA=0x85;

SFIOR&=0xEF;

4.3.4.2.Tampilan Awal

Blok ini berfungsi untuk menampilkan tampilan awal (judul) dari pengukur tekanan darah (tensimeter) digital berbasis ATMega 8535, yaitu “TENSIMETER” pada baris pertama dan juga “DIGITAL” pada baris keduaLCD(Liquid Crystal Display).

; ---; TAMPILAN AWAL ; ---{ // LCD module initialization lcd_init(16); //tampilan awal LCD

lcd_putsf("TENSIMETER"); //tulis “TENSIMETER”

lcd_gotoxy(6,1); //menuju LCD baris kedua kolom keenam lcd_putsf("DIGITAL"); //tulis “DIGITAL”

delay_ms(1000); //tampilkan judul setelah 1 sekon

lcd_clear(); //bersihkan LCD

}

4.3.4.3.Baca Nilai Tekanan

Pada blok ini berfungsi sebagai pembaca nilai tekanan darah dari pengukur tekanan darah (tensimeter) digital berbasis ATMega 8535. Pada baca nilai tekanan darah ini ADC membaca nilai tekanan dari tegangan keluaran setelah penguatan 380 kali. Adapun program dari baca nilai tekanan adalah sebagai berikut :

; ---; BACA NILAI TEKANAN

;

---while (mmHg == 0) //tunggu sampai ada masukan ADC

{

adc1=read_adc(0); // nilai adc1

//ambil nilai adc1 dari hasil baca adc(0) vout=(adc1*3.55)/1024; //besarnya nilai vout

//vout = nilai adc1 dikalikan 3,55

//3,55 merupakan tegangan puncak nilai tekanan saat 250mmHg

mmHg= vout *67; //besarnya nilai mmHg

//nilai mmHg adalah hasil vout dikali 67 //nilai 67 merupakan skala pengali hasil

perhitungan }

4.3.4.4.Tampilan Nilai Tekanan pada LCD

Blok ini berfungsi sebagai penampil nilai tekanan dengan satuan mmHg baris pertama padaLCDdan penampil nilai sistolik dan diastolik pada baris keduaLCD.

; ---; TAMPILKAN NILAI TEKANAN KE LCD (mmHg) ; ---while (1) { n=0; sistolik =0; distolik =0; mmHg =0;

lcd_gotoxy(0,0); //set LCD pada baris pertama kolom kesatu lcd_putsf("TEKANAN= mmHg"); //tulis “TEKANAN= mmHg” pada LCD

lcd_gotoxy(8,0); //set LCD pada baris pertama kolom

kedelapan

lcd_putint(mmHg); //masukkan nilai dari mmHg pada LCD baris pertama kolom kedelapan

while (mmHg == 0) //tunggu sampai ada masukan ADC {

adc1=read_adc(0); vout=(adc1*3.55)/1024; mmHg= vout *67; }

4.3.4.5.Baca Lonjakan Tekanan

Blok ini berfungsi untuk membaca adanya lonjakan tekanan sistolik maupun diastolik.

; ---; ADA LONJAKAN TEKANAN

;

---{

lonjakan =0;

while (lonjakan == 0) {

lcd_gotoxy(0,0); //set LCD pada baris pertama kolom kesatu lcd_putsf("TEKANAN= mmHg");

lcd_putint(mmHg); count = 700; while (count != 0)

{

if (PIND.3 = 1) //bernilai high menandakan adanya lonjakan //masukan berasal dari port D.3

{ lonjakan =1; count =0 } Else { lonjakan=0; } count = count -1;

adc1=read_adc(0); //pembacaan ADC

vout=(adc1*3.55)/1024; mmHg= vout *67; } } } }

4.3.4.6.Tampilan Sistolik dan Diastolik

Blok ini berfungsi untuk menampilkan nilai sistolikmaupun diastolik pada LCD, nilai lonjakan tekanan tersebut dimasukkan pada “S/D = / mmHg”.

; ---; TAMPILAN NILAI SISTOLIK DAN DIASTOLIK ;

---{

// Place your code here n=0;

sistolik =0; distolik =0;

mmHg =0;

lcd_gotoxy(0,1); //set LCD pada baris kedua kolom kesatu lcd_putsf("S/D= / mmHg"); //tulis “S/D= / mmHg” pada LCD baris

kedua kolom kesatu

lcd_gotoxy(4,1); //set LCD pada baris kedua kolom keempat lcd_putint(sistolik); //masukkan nilai sistolik pada baris kedua

kolom keempat

lcd_gotoxy(8,1); //set LCD pada baris kedua kolom kedelapan lcd_putint(distolik); //masukkan nilai diastolik pada baris kedua

kolom kedelapan }

4.3.4.7.Indikator LED

Blok ini berfungsi sebagai pendeteksi ditemukannya tekanan sistolik maupun

diastolik, dengan menyalakan LED dan kemudian mematikan LED saat kedua lonjakan

tekanan tersebut ditemukan. LED akan terus menyala jika hanya salah satu lonjakan tekanan tersebut ditemukan.

; ---; INDIKATOR LED NYALA DAN PADAM ; ---} n=n+1; //increament if (n == 1) //saat n bernilai 1 { sistolik = mmHg;

PORTB.2=1; //led pada port B.2 nyala

lcd_gotoxy(4,1); //set LCD pada baris kedua kolom keempat lcd_putint(sistolik); //masukkan nilai sistolik

}

else if (n == 2) {

distolik = mmHg;

PORTB.2=0; //led pada port B.2 padam

lcd_gotoxy(8,1); lcd_putint(distolik);

selesai = 1; }

}

4.3.4.8.Indikator Buzzer

Blok ini berfungsi sebagai indikator bahwa proses pengukur tekanan darah (tensimeter) digital berbasis mikro ATMega8535 telah selesai, sehingga jika akan melakukan pengukuran lagi harus mereset alat dari awal.

; ---; BUZZER AKTIF SESAAT

;

---}

while (PIND.2 == 1) //saat port D.2 aktif {

PORTD.5 = 1; //buzzer pada port D.5 aktif

delay_ms(30); //delay selama 30 milisekon

PORTD.5 = 0; //buzzer pada port D.5 mati

delay_ms(50); }

}

Dokumen terkait