Gambar 38 Rangkaian kontrol suhu ruangan dengan display LCD






1.Kondisi
Gambar 38 Rangkaian kontrol suhu ruangan dengan display LCD


2.Gambar Rangkaian



3. Flowchart

4.Koding Program
// LCD module connections
sbit LCD_RS at RB2_bit;
sbit LCD_EN at RB3_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;

sbit LCD_RS_Direction at TRISB2_bit;
sbit LCD_EN_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;
// End LCD module connections

int t;                                  // deklarasi variabel t
char a;                                 // deklarasi variabel a
char lcd[] = "111 Degree";              // deklarasi array lcd dan diisi

void main()
{
ADCON0.ADCS0=0;                                  // ADCS0, ADCS1 & ADCS2 bersama sama menentukan kecepatan clock
ADCON0.ADCS1=1;                                  // jika 0 1 1 maka kecepatannya  Fosc/64
ADCON1.ADCS2=1;
ADCON0.CHS0=0;                                   // CHS0, CHS1 & CHS2 bersama-sama menentukan pin
ADCON0.CHS1=0;                                   // jika 0 0 0  maka pin yang digunakan adalah RA0/AN0
ADCON0.CHS2=0;
ADCON0.ADON=1;                                   // mengaktifkan konverter A/D
ADCON1.ADFM=1;                                   // menyatakan 10 bit terdiri dari 8 bit ADRESL dan 2 bit ADRESH
ADCON1.PCFG0=0;                                  // PCFG0, PCFG1, PCFG2 & PCFG3 bersama sama menetukan
ADCON1.PCFG1=0;                                  // apakah pin digunakan sebagai input analog atau input digital
ADCON1.PCFG2=0;                                  // jika 0000 maka semua pin sebagai input Analog
ADCON1.PCFG3=0;

  Lcd_Init();                                    // inisialisasi LCD
  Lcd_Cmd(_LCD_CURSOR_OFF);                      // matikan cursor LCD

  do
  {
    Lcd_Cmd(_LCD_CLEAR);                         // bersihkan layar LCD
    Lcd_out(1,1, "Temperature:");                // cetak "Temperature" di layar LCD
    t = ADC_Read(0);                             // mendapatkan nilai input analog

    t = t * 0.4887;                              // menyesuaikan nilai derjat dengan input analog
    a = t%10;                                    // mendapatkan nilai satuan suhu
    lcd[2] = a + '0';                            // mengganti nilai satuan array

    t = t/10;
    a = t%10;                                    // mendapatkan nilai puluhan suhu
    lcd[1] = a + '0';                            // mengganti nilai puluhan array

    t = t/10;
    a = t%10;                                    // mendapatkan nilai ratusan suhu
    lcd[0] = a + '0';                            // mengganti nilai ratusan array

    Lcd_out(2,1,lcd);                            // mencetak nilai suhu pada layar LCD
    Delay_ms(100);                               // delay 100 ms
  }while(1);                                     // looping

}


5.Download Program dan Rangkaian



No comments:

Post a Comment