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); }
}