fix kodingan

Download Fix Kodingan

If you can't read please download the document

Upload: amirsyah-rayhan-mubarak

Post on 16-Dec-2015

15 views

Category:

Documents


4 download

DESCRIPTION

coding c

TRANSCRIPT

/*************************************************************************** ** ** ** This is program Fire Alarm ** ** Smart Home ** ** By Group 2 ** ** Microcontroller and Microprocessor project ** ** ** ** ** **************************************************************************//*Program ini menggunakan Nuvoton NUC 140VE3CN sebagai mikrokontroller. Dengan menggunakan sensor IR Flame sebagai pendeteksi api yang disambungkan pin GPA6, program akan memberi peringatan jika terdapat kebakaran dan akan menghidupkan buzzer, LED dan peringatan melalui LCD, serta akan member sinyal low ke pin GPC 12 yang disambungkan ke lampu sebagai indikator pelistrikan yang mati akibat terdeteksi kebakaran.*/#include //standard input output library#include "NUC1xx.h"#include "LCD_Driver.h" //LCD header#include "DrvADC.h"//ADC header#include "DrvGPIO.h" //LED library#include "DrvSYS.h"//LED library#include "ScanKey.h" //Button Matrix header#include "scanpad.h" //Button Matrix headerint reset=0 ;//flag resetint result ;//flag detectedint key ;//variabel key pertamaint pad ;//variabel key kedua/*------------------------------------------------------------------------*//* Subrutin InitADC *//*------------------------------------------------------------------------*/void InitADC(void){/* Step 1. GPIO initial */GPIOA->OFFD|=0x00800000; //Disable digital input pathSYS->GPAMFP.ADC6_AD7=1; //SeAD=t ADC function colok di pin PA6/* Step 2. Enable and Select ADC clock source, and then enable ADC module */SYSCLK->CLKSEL1.ADC_S = 2; //Select 22Mhz for ADCSYSCLK->CLKDIV.ADC_N = 1; //ADC clock source = 22Mhz/2 =11Mhz;SYSCLK->APBCLK.ADC_EN = 1; //Enable clock sourceADC->ADCR.ADEN = 1;//Enable ADC module/* Step 3. Select Operation mode */ADC->ADCR.DIFFEN = 0; //single end inputADC->ADCR.ADMD = 0; //single mode/* Step 4. Select ADC channel */ADC->ADCHER.CHEN = 0x40;/* Step 5. Enable ADC interrupt */ADC->ADSR.ADF =1; //clear the A/D interrupt flags for safeADC->ADCR.ADIE = 1;/* Step 6. Enable WDT module */ADC->ADCR.ADST=1;}void OpenPad(void){uint8_t i;/* Initial key pad */for(i=0;iPWRCON.XTL12M_EN = 1 ; //enable clock (12MHz)SYSCLK->CLKSEL0.HCLK_S = 0 ; //select clock (12MHz)LOCKREG();InitADC();Initial_pannel(); //call initial pannel functionclr_all_pannal();DrvGPIO_ClrBit(E_GPD, 14) ; //backlight LCDDrvGPIO_ClrBit(E_GPC, 15) ; //default pin GPC15 highDrvGPIO_Open(E_GPB, 11, E_IO_OUTPUT) ; //inisialisasi output buzzerDrvGPIO_Open(E_GPC, 12, E_IO_OUTPUT) ; //inisialisasi output ledwhile(1){print_lcd(0,"FIRE ALARM") ;print_lcd(2,"Press 1 to ") ;print_lcd(3, "Standby Alarm ") ;key=Scanpad();if(key==1){while(1){result=0;while(ADC->ADSR.ADF==0) ; //wait till conversion is doneADC->ADSR.ADF=1; //write 1 to clearprint_lcd(0, "SENSOR STANDBY ");print_lcd(1," ");print_lcd(2," ");print_lcd(3," ");int nilai=ADC->ADDR[6].RSLT& 0xFFF; //variabel nilai adalah nilai ADC yang dibaca sensorif(nilai>300&&reset==1)//apabila nilai ADC bernilai lebih dari 300 api tidak terdeteksi{reset=0;//flag direset agar menampilkan LCD yang berbeda saat direset tapi masih terdeteksi api}if(nilai>300){DrvGPIO_ClrBit(E_GPC, 15); //apabila tidak terdeteksi api,lampu menyala}if (nilaiADCR.ADST=1;//restart adc sample}}}}