Elektronik / Mikrodenetleyici Projeleri/

LM35 ile Sıcaklık Ölçümü ve Grafik Lcd Menü Tasarımı

Öncelikle bu devreyi tasarlarken http://www. elektrotekno.com/ about48473.html linkindeki örnek üzerinden hareket ettim. Özellikle devreyi paylaşan lapry nickli arkadaşıma teşekkür ederim.

Bu devre CCS C derleyicisi kullanılarak LM35 ısı sensörünün kullanımı ve Grafik LCD üzerinde menü tasarımını içermektedir. Özellikle grafik LCD üzerinde menü seçimi vs. konularda internet üzerindeki nadir örneklerdendir. (Ben bu zamana kadar bu şekilde menü kontrolü olan örnek bir devre bulamadım :D) HDM64GS12.c Driver dosyasında bazı değişikler yaptım çalışma esnasında bir problem çıkarsa bu dosyayı CCS C program dizininde Drivers klasörüne kopyalayın.

Maalesef sadece sıcaklık ölçen ve menüyü ekranda gösteren kod bloğunu paylaşabiliyorum. Diğer kısımları kendiniz programlayabilir veya menüden kaldırabilirsiniz.

Herkese Kolay Gelsin

İsis simülasyon görüntüleri

lm35 ccs pic16f877 grafik lcd  termometre glcd lm35 termometre ccs isis test

Tüm proje dosyaları: LM35 ile Sıcaklık Ölçümü ve Grafik Lcd Menü Tasarımı

Dosya indirme LINK listesi (TXT formatında) link-7813.zip şifre-pass: 320volt.com

Termometre.c yazılımı

#include <16f877A.h>
#device adc=10
#device *=16
#FUSES NOWDT        //No Watch Dog Timer
#FUSES HS           //High speed Osc (> 4mhz)
#FUSES NOPROTECT    //Code not protected from reading
#FUSES NOBROWNOUT   //Reset when brownout detected
#FUSES NOPUT        //No Power Up Timer
#FUSES NODEBUG      //No Debug mode for ICD
#FUSES NOLVP        //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#use delay(clock=20000000)
#include 
#include 
#use fast_io(A)

int yuk;
int menu;
int ekran;
char t10[] = "10";
char t20[] = "20";
char t30[] = "30";
char t40[] = "40";
char t50[] = "50";
char t60[] = "60";

char derece[]= "C";
char tmp[]= "SICAKLIK";
char tmp1[]= "AYARLAR";
char tmp2[]= "GRAFiK";
char tmp3[]= "GiRiSLER";
char tmp4[]= "CIKISLAR";
char tmp5[]= "KAPAT";
char yazi[5];

unsigned long int temperature;
float value;
int ciz;

menu_ekran(int8 menum){
switch(menum){
case 0:
glcd_rect(0,1,60,21,yes,ON);//---       //SICAKLIK buton kısmı
glcd_rect(0,23,60,42,yes,off);//---
glcd_rect(0,23,60,42,NO,ON);//---
glcd_rect(0,44,60,63,yes,off);
glcd_rect(0,44,60,63,NO,ON);//---

glcd_rect(67,1,127,21,yes,off);//---
glcd_rect(67,1,127,21,NO,ON);//---
glcd_rect(67,23,127,42,yes,off);//---
glcd_rect(67,23,127,42,NO,ON);//---
glcd_rect(67,44,127,63,yes,off);
glcd_rect(67,44,127,63,NO,ON);//---

glcd_text57(7,7,tmp,1,off);
glcd_text57(10,29,tmp1,1,on);
glcd_text57(13,51,tmp2,1,on);
glcd_text57(74,7,tmp3,1,on);
glcd_text57(74,29,tmp4,1,on);
glcd_text57(84,51,tmp5,1,on);
menu=0;break;
case 1:
glcd_rect(0,1,60,21,yes,off);//---       //AYARLAR buon kısmı
glcd_rect(0,1,60,21,NO,ON);//---
glcd_rect(0,23,60,42,yes,on);//---
glcd_rect(0,44,60,63,yes,off);
glcd_rect(0,44,60,63,no,ON);//---
glcd_text57(7,7,tmp,1,on);
glcd_text57(10,29,tmp1,1,off);
glcd_text57(13,51,tmp2,1,on);
menu=1;break;
case 2:
glcd_rect(0,1,60,21,yes,off);//---      //GRAFİK buton kısmı
glcd_rect(0,1,60,21,no,on);
glcd_rect(0,23,60,42,yes,off);//---
glcd_rect(0,23,60,42,NO,ON);//---
glcd_rect(0,44,60,63,yes,on);//---
glcd_rect(67,1,127,21,yes,off);//---
glcd_rect(67,1,127,21,NO,ON);//---

glcd_text57(74,7,tmp3,1,on);
glcd_text57(7,7,tmp,1,on);
glcd_text57(10,29,tmp1,1,on);
glcd_text57(13,51,tmp2,1,off);
menu=2;break;
case 3:
glcd_rect(67,1,127,21,yes,on);//---       //GİRİŞLER buton kısmı
glcd_rect(67,23,127,42,yes,off);//---
glcd_rect(67,23,127,42,NO,ON);//---
glcd_rect(0,44,60,63,yes,off);
glcd_rect(0,44,60,63,no,ON);//---

glcd_text57(13,51,tmp2,1,on);
glcd_text57(74,7,tmp3,1,off);
glcd_text57(74,29,tmp4,1,on);
menu=3;break;
case 4:
glcd_rect(67,1,127,21,yes,off);//---       //ÇIKIŞLAR buton kısmı
glcd_rect(67,1,127,21,NO,ON);//---
glcd_rect(67,23,127,42,yes,on);//---
glcd_rect(67,44,127,63,yes,off);
glcd_rect(67,44,127,63,NO,ON);//---

glcd_text57(74,7,tmp3,1,on);
glcd_text57(74,29,tmp4,1,off);
glcd_text57(84,51,tmp5,1,on);
glcd_text57(13,51,tmp2,1,on);
menu=4;break;
case 5:
glcd_rect(0,1,60,21,yes,off);//---       //KAPAT buton kısmı
glcd_rect(0,1,60,21,NO,ON);//---
glcd_rect(67,23,127,42,yes,off);//---
glcd_rect(67,23,127,42,NO,ON);//---
glcd_rect(67,44,127,63,yes,on);
glcd_rect(0,44,60,63,yes,off);
glcd_rect(0,44,60,63,no,ON);//---

glcd_text57(74,7,tmp3,1,on);
glcd_text57(74,29,tmp4,1,on);
glcd_text57(84,51,tmp5,1,off);
glcd_text57(7,7,tmp,1,on);
glcd_text57(13,51,tmp2,1,on);
menu=5;break;
}}
void main(){
   setup_psp(psp_disabled);
   setup_spi(spi_ss_disabled);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(t1_disabled);
   setup_timer_2(t2_disabled,0,1);
   setup_adc_ports(AN0_AN1_VSS_VREF);
   setup_adc(adc_clock_internal);
   setup_ccp1(ccp_off);
   setup_ccp2(ccp_off);
   SET_TRIS_A(0b00001111);
   set_tris_c(0x0f);
   set_adc_channel( 0 );
   delay_us(20);

glcd_init(on);
delay_ms(1250);
menu=0;

ekran:
//-------Ekran Bölmeleri---------//
glcd_circle(5,58,5,yes,on);      //
glcd_rect(3,56,127,60,NO,ON);    //
glcd_text57(10,48,t10,1,on);     //
glcd_text57(30,48,t20,1,on);     //
glcd_text57(50,48,t30,1,on);     //
glcd_text57(70,48,t40,1,on);     //
glcd_text57(90,48,t50,1,on);     //
glcd_text57(110,48,t60,1,on);    //
glcd_text57(20,3,tmp,2,on);      //
glcd_rect(1,1,127,19,NO,ON);    //
//-------------------------------//



while(1){
   temperature = read_adc();
   ciz= (temperature/10)-2;
   value = (temperature*0.1)-0.2;
   glcd_rect(7,57,ciz*2,59,yes,on); // Temperature bari ciziliyor
   sprintf(yazi,"%4.1f",value);
   if(value<100)
   {
   glcd_circle(90,25,2,no,off);
   glcd_circle(90,25,3,no,off);
   glcd_circle(85,25,2,no,off);
   glcd_circle(85,25,3,no,off);
   glcd_circle(85,25,2,NO,on);
   glcd_circle(85,25,3,NO,on);
   glcd_text57(95,22,derece,3,off);
   glcd_text57(90,22,derece,3,on);      //

   glcd_text57(18,22,yazi,3,ON);
   delay_ms(1000);
   glcd_text57(18,22,yazi,3,OFF);
   }
   else if(value>99)
   {    //
   glcd_text57(90,22,derece,3,off);
   glcd_text57(95,22,derece,3,on);
   glcd_circle(85,25,2,no,off);
   glcd_circle(85,25,3,no,off);
   glcd_circle(90,25,2,no,off);
   glcd_circle(90,25,3,no,off);
   glcd_circle(90,25,2,NO,on);
   glcd_circle(90,25,3,NO,on);
   glcd_text57(6,22,yazi,3,ON);
   delay_ms(1000);
   glcd_text57(6,22,yazi,3,OFF);
   }
   glcd_rect(7,57,ciz*2,59,yes,off);

//---------------------MENU-------------------------//
ekran=0;
if(input(PIN_C0)==0){
if(ekran==0){
glcd_init(on);
menu_ekran(0);
while(1){
if(input(PIN_C1)==0){
if(menu==0){
menu=6;
}
menu=menu-1;
menu_ekran(menu);
delay_ms(100);
}
if(input(PIN_C2)==0){
if(menu==6){
menu=0;
menu=menu-1;
}
menu=menu+1;
menu_ekran(menu);
delay_ms(100);
}

ekran=1;
delay_ms(200);
if(input(PIN_C0)==0){
if(menu==5){
ekran=0;
glcd_init(on);
goto ekran;
}}}}}}}

//}
  1. FxDev 2009/08/22
  2. Konyalı 2009/08/22
  3. Şükrü 2009/08/22
  4. Konyalı 2009/08/23
  5. Mahmut 2009/11/13

Yorum

Soru: