View Single Post
Old 05-05-2011, 11:40 AM   #11
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi thanhchung89 View Post
ko có ai giúp vậy?
thôi thì để tôi chèn giúp bạn vài dòng lệnh để code hoàn chỉnh vậy.
Code:
#include <16F877A.h>
#include <def_877a.h>
#device *=16 adc=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
#include <lcd_lib_4bit.c> // Thu vien ham cho LCD

int8 low,high,min,max,i,sida=0xaa;
int1 do_F;
float value;
#define nut1 RC2
#define nut2 RC3
#define nut3 RC4
#INT_EXT
void test()
   {
   if (do_F == 1) do_F=0;
   else do_F=1;
   }
   void banphim(void);
   void convert_bcd(int8 x);
   
//-----------------------------------------------------------------
void main()
   {
   min =0;      //nhiet do mim 
   max =40;    //nhiet do max 
   do_F =0 ;
   i = 10 ;
   trisa = 0xFF;
   trisb = 0x01;
   trisc = 0b00011100;
   output_low(pin_C0);
   output_low(pin_C1);
    //==== Khoi tao cho ngat ngoai===============================================
   enable_interrupts (INT_EXT);
   ext_int_edge(H_TO_L);
   enable_interrupts (GLOBAL);
   //=========== Khoi tao che do cho bo ADC=====================================
   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_INTERNAL);
   LCD_init();
   LCD_putcmd(0x01);
   LCD_putchar("do_nhiet_do:");
   LCD_putcmd(0xC0);
   LCD_putchar("cho ty nhe ...");
   delay_us(10);// Lay mau nhiet do lan dau tien
   value=(float)read_adc();
   value = (value - 558.5)/2.048; // For 5V supply
   // value = (value - 754.8)/2.048; // For 3.7V Supply
   // value = (value - 698.2)/2.048; // For 4V supply
   convert_bcd(value); // Tach so tram, chuc, donvi de hien thi len LED 7
   delay_ms(100);
   LCD_putcmd(0xC0);
   LCD_putchar("Ok               ");
   delay_ms(100);
   while(1)
      {
      banphim();
      if (i==10)
         {
          if(sida==0xaa)
          {
         value = read_adc();
         value=(value-558.5)/2.048;
         
         if (do_F==1) 
            value=1.8*value+32;
         convert_bcd(value);

         LCD_putcmd(0xC0);
         printf(LCD_putchar,"Nhiet do la:");
         LCD_putchar(high); LCD_putchar(low);
         
         if (do_F==0) 
            printf(LCD_putchar," C");
         else 
            printf(LCD_putchar," F");
         i=0;
          }
          else
          {
          }
         }//
        
   if (value <= max & min <=value) 
       {
          output_high(pin_C1);
       }
        else output_low(pin_C1);
   if(value > max ||value < min)
          output_high(pin_C0);
       else output_low(pin_C0); 
      i++;
      }
   }
//The End=======================================================================
void convert_bcd(int8 x)
   {
   low=x%10;      //chia lay phan du, so hang don vi
   high=x/10;     //tach hang tram va hang chuc
   low = low + 0x30;
   high = high + 0x30;
   }
void banphim()
{ 
if (nut1 == 0)
{
sida=~sida;
if(sida!=0xaa)
{
LCD_putcmd(0x01);
LCD_putchar("nhap nhiet do:");
LCD_putcmd(0xC0);
printf(LCD_putchar,"gia tri MAX:%d",max);
}
 else
 {
 LCD_putcmd(0x01);
 LCD_putchar("do_nhiet_do:");
 value = read_adc();
         value=(value-558.5)/2.048;
         
         if (do_F==1) 
            value=1.8*value+32;
         convert_bcd(value);

         LCD_putcmd(0xC0);
         printf(LCD_putchar,"Nhiet do la:");
         LCD_putchar(high); LCD_putchar(low);
         
         if (do_F==0) 
            printf(LCD_putchar," C");
         else 
            printf(LCD_putchar," F");
 }
while(nut1 == 0)
{
}
}
else if (nut3 == 0)
{
  if(sida!=0xaa)
  {
  max = max - 1;
  LCD_putcmd(0xC0);
  printf(LCD_putchar,"gia tri MAX:%d",max);
  }
else
   {
   }
   while(nut3 == 0)//cho nha phim
   {
    }
   delay_ms(10);//chong nay phim
}
else if (nut2 == 0)
{
  if(sida!=0xaa)
  {
  max = max +1;
  LCD_putcmd(0xC0);
  printf(LCD_putchar,"gia tri MAX:%d",max);
  }
   else
   {
   }
   while(nut2 == 0)//cho nha phim
   {
    }
   delay_ms(10);//chong nay phim
}
else
{
}
}
http://www.youtube.com/watch?v=nvtwwuzRkZI
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.

thay đổi nội dung bởi: tdm, 05-05-2011 lúc 11:53 AM.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn