• Tidak ada hasil yang ditemukan

Sistem Monitoring Level Tekanan Gas Tabung Lpg Dengan Tampilan Lcd Dan Sms Gate Way Berbasis Atmega8535

N/A
N/A
Protected

Academic year: 2017

Membagikan "Sistem Monitoring Level Tekanan Gas Tabung Lpg Dengan Tampilan Lcd Dan Sms Gate Way Berbasis Atmega8535"

Copied!
18
0
0

Teks penuh

(1)
(2)

LAMPIRAN

Program Lengkap

(3)

#include <mega8535.h> #include <stdio.h> #include <stdlib.h> #include <delay.h> #define gas PINB.0 #define sv PORTB.1 #define aktif 0 #define non_aktif 1

int a,b,c,d,; int tekan; char tkn[8]; char vlt[8];

float tekan_gas, volt_gas; // Alphanumeric LCD functions #include <alcd.h>

#define DATA_REGISTER_EMPTY (1<<UDRE) #define RX_COMPLETE (1<<RXC)

#define FRAMING_ERROR (1<<FE) #define PARITY_ERROR (1<<UPE) #define DATA_OVERRUN (1<<DOR) #define RX_BUFFER_SIZE 8

char rx_buffer[RX_BUFFER_SIZE];

(4)

unsigned char rx_wr_index=0,rx_rd_index=0; #else

unsigned int rx_wr_index=0,rx_rd_index=0; #endif

#if RX_BUFFER_SIZE < 256 unsigned char rx_counter=0; #else

unsigned int rx_counter=0; #endif

bit rx_buffer_overflow;

void tampil_lcd(char x,char y,char flash *teks, int tunda) {

lcd_gotoxy(x,y); lcd_putsf(teks); delay_ms(tunda); }

void sms_init() {

printf("ATE0");

(5)

delay_ms(500); }

void send_sms_txt(char flash *fmtstr1, char flash *fmtstr2) {

printf("AT+CMGF=1"); putchar(0x0D);//ENTER while(getchar()!=0x0A){}; while(getchar()!=0x0A){}; delay_ms(500);

printf("AT+CMGS=\""); printf(fmtstr1);

printf("\"");

putchar(0x0D);//ENTER while(getchar()!=0x20){}; delay_ms(500);

printf(fmtstr2); putchar(0x1A);

(6)

printf("AT+CMGD=1"); putchar(0x0D);//ENTER while(getchar()!=0x0A){}; while(getchar()!=0x0A){}; delay_ms(500);

printf("AT+CMGD=2"); putchar(0x0D);//ENTER while(getchar()!=0x0A){}; while(getchar()!=0x0A){}; delay_ms(500);

printf("AT+CMGD=3"); putchar(0x0D);//ENTER while(getchar()!=0x0A){}; while(getchar()!=0x0A){}; delay_ms(500);

}

interrupt [USART_RXC] void usart_rx_isr(void) {

(7)

if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0) {

rx_buffer[rx_wr_index++]=data; #if RX_BUFFER_SIZE == 256

if (++rx_counter == 0) rx_buffer_overflow=1; #else

if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0; if (++rx_counter == RX_BUFFER_SIZE)

{

rx_counter=0;

rx_buffer_overflow=1; }

#endif } }

#ifndef _DEBUG_TERMINAL_IO_ #define _ALTERNATE_GETCHAR_ #pragma used+

char getchar(void) {

char data;

while (rx_counter==0);

(8)

if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0; #endif

#asm("cli") --rx_counter; #asm("sei") return data; }

#pragma used- #endif

#define TX_BUFFER_SIZE 8

char tx_buffer[TX_BUFFER_SIZE];

#if TX_BUFFER_SIZE <= 256

unsigned char tx_wr_index=0,tx_rd_index=0; #else

unsigned int tx_wr_index=0,tx_rd_index=0; #endif

#if TX_BUFFER_SIZE < 256 unsigned char tx_counter=0; #else

unsigned int tx_counter=0; #endif

(9)

if (tx_counter) {

--tx_counter;

UDR=tx_buffer[tx_rd_index++]; #if TX_BUFFER_SIZE != 256

if (tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0; #endif

} }

#ifndef _DEBUG_TERMINAL_IO_ #define _ALTERNATE_PUTCHAR_ #pragma used+

void putchar(char c) {

while (tx_counter == TX_BUFFER_SIZE); #asm("cli")

if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0)) {

tx_buffer[tx_wr_index++]=c; #if TX_BUFFER_SIZE != 256

if (tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0; #endif

(10)

else

#define ADC_VREF_TYPE ((0<<REFS1) | (0<<REFS0) | (0<<ADLAR)) unsigned int read_adc(unsigned char adc_input)

{

ADMUX=adc_input | ADC_VREF_TYPE; delay_us(10);

ADCSRA|=(1<<ADSC);

while ((ADCSRA & (1<<ADIF))==0); ADCSRA|=(1<<ADIF);

DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);

// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T

(11)

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

DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);

PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);

DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);

PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (0<<CS01) | (0<<CS00);

TCNT0=0x00; OCR0=0x00;

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

(12)

OCR1BL=0x00; ASSR=0<<AS2;

TCCR2=(0<<WGM20) | (0<<COM21) | (0<<COM20) | (0<<WGM21) | (0<<CS22) | (0<<CS21) | (0<<CS20);

TCNT2=0x00; OCR2=0x00;

TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<OCIE0) | (0<<TOIE0);

MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00); MCUCSR=(0<<ISC2);

UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);

UCSRB=(1<<RXCIE) | (1<<TXCIE) | (0<<UDRIE) | (1<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);

UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);

UBRRH=0x00; UBRRL=0x19;

ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);

ADMUX=ADC_VREF_TYPE;

ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (1<<ADPS1) | (0<<ADPS0);

//SFIOR=(1<<ADHSM) | (0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);

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

(13)

lcd_init(16); #asm("sei") lcd_clear();

tampil_lcd(0,0,"Tugas Akhir",0);

tampil_lcd(0,1,"Ilfa & Rudi",3000);lcd_clear(); lcd_clear();

(14)

volt_gas = tekan*0.0048; anda 50 Persen");

tampil_lcd(0,0,"Sms Terkirim",1000); anda Tersisa 30 Persen");

(15)

goto awal; anda Tersisa 20 Persen");

tampil_lcd(0,0,"Sms Terkirim",1000); anda Sudah hampir Habis segera isi ulang ");

tampil_lcd(0,0,"Sms Terkirim",1000);

goto awal; }

(16)

LAMPIRAN

Gambar Alat

(17)
(18)

LAMPIRAN

Referensi

Dokumen terkait

We present a comparison of point cloud generation and quality of data acquired by Zebedee (Zeb1) and Leica C10 devices which are used in the same building interior.. Both sensor

Based on a preliminary analysis of data acquired on board one of Hong Kong's MTRC trains, rail-bound navigation is capable of maintaining decimetre to metre-level accuracy

HARI TANGGAL WAKTU 205 AGUS

Automatic assessment of data acquisition and transmission losses has helped in quick quality tagging of browse images which is extremely useful for the users

pemberian dukungan atas penyelenggaraan pemerintahan daerah bidang politik dan hubungan antar lembaga, wawasan kebangsaan dan kewaspadaan, penanganan konflik

(e) Results from the descriptor-based registration in the Las Vegas-night video dataset (f) zoom-in area ( e.g., with certain errors inside the red circles) Figure 5:

Average scores across students in test and control group at the end of the bachelor course (fall semester 2010).. The maximum score of this test was

Bagaimana cara kalian menemukan ukuran alas dan tinggi suatu prisma segitiga siku-siku, jika yang diketahui hanya volume saja, yaitu 144 cm