0% found this document useful (0 votes)
28 views8 pages

Code Báo Cháy

Uploaded by

thanhto2k3
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
28 views8 pages

Code Báo Cháy

Uploaded by

thanhto2k3
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 8

#include <REGX51.

H>
#include <stdio.h>
sbit DQ = P3^7; //Khai bao chan cam bien
void delay_us(unsigned int Time);
void delay_ms(unsigned int Time);
#define LINE_1 0x80
#define LINE_2 0xC0
#define CLEAR_LCD 0x01
#define TRUE 1
#define FALSE 0
unsigned char Lcd_Buff[15];
char mode=0;
float tmp, nhiet;
sbit khoi = P1^1;
sbit dkchuong = P1^4;
sbit dkden = P1^5;
sbit dkphunnuoc = P1^6;
void lcd1602_enable(void);
void lcd1602_send_4bit_data ( unsigned char cX );
void lcd1602_send_command (unsigned char cX );
void lcd1602_init (void );
void lcd1602_gotoxy(unsigned char x, unsigned char y);
void lcd1602_clear(void);
void lcd1602_putchar ( unsigned int cX );
void lcd1602_puts (char *s);
// Cac chan du lieu cua LCD --------------------------------------------

#define LCD_D4 P0_4


#define LCD_D5 P0_5
#define LCD_D6 P0_6
#define LCD_D7 P0_7
// PORT1 ------------------------------------------------------------------- //
Chan du lieu cua DS18b20
//#define DQ P1_2
// PORT2
-------------------------------------------------------------------- // Cac
chan dieu khien cua LCD -----------------------------------------
#define LCD_RS P2_2
#define LCD_RW P2_3
#define LCD_E P2_4
void lcd1602_enable(void) // Ham tao xung ENABLE
{
LCD_E=1;
delay_us(3);
LCD_E=0;
delay_us(5);
}

// ---------------------------------------------------------------------
// ====ham gui 4 bit bit du lieu ra LCD====
void lcd1602_send_4bit_data ( unsigned char cX )
{
LCD_D4 = cX & 0x01;
LCD_D5 = (cX>>1)&1;
LCD_D6 = (cX>>2)&1;
LCD_D7 = (cX>>3)&1;
}
// ---------------------------------------------------------------------
// ====Ham Gui 1 Lenh Cho LCD====
void lcd1602_send_command (unsigned char cX )
{
lcd1602_send_4bit_data ( cX >>4 ); // gui 4 bit cao
lcd1602_enable() ;
lcd1602_send_4bit_data ( cX ); // gui 4 bit thap
lcd1602_enable() ;
}
// ---------------------------------------------------------------------
// ====Ham Khoi Tao LCD ====
void lcd1602_init ( void )
{
lcd1602_send_4bit_data ( 0x00 );
delay_ms(200);
LCD_RS=0;
LCD_RW=0;
LCD_E=0; // che do gui lenh

lcd1602_send_4bit_data ( 0x03 ); // ket noi 8 bit


lcd1602_enable() ;
lcd1602_enable () ;
lcd1602_enable () ;
lcd1602_send_4bit_data ( 0x02 ); // ket noi 4
bit lcd1602_enable() ;
lcd1602_send_command( 0x2C ); //giao thuc 4
bit,hien thi 2 hang,ki tu 5x8
lcd1602_send_command( 0x80);
lcd1602_send_command( 0x0C); // cho phep
hien thi man hinh
lcd1602_send_command( 0x06 ); //tang ID,
khong dich khung hinh
lcd1602_send_command( CLEAR_LCD ); //xoa toan bo
khung hinh
}
// ---------------------------------------------------------------------
// ====Ham Thiet Lap Vi Tri Con Tro====
void lcd1602_gotoxy(unsigned char x, unsigned char y)
{
unsigned char address;
if(!y)
address = (LINE_1+x);
else
address = (LINE_2+x);
delay_ms(3);
lcd1602_send_command(address);
delay_ms(1);
}
// ---------------------------------------------------------------------
//====Ham Xoa Man Hinh LCD====
void lcd1602_clear(void)
{
lcd1602_send_command( CLEAR_LCD );
delay_us(300);
}
// ---------------------------------------------------------------------
// ====Ham Gui 1 Ky Tu Len LCD====
void lcd1602_putchar ( unsigned int cX )
{
LCD_RS=1;
lcd1602_send_command( cX );
LCD_RS=0;
}
// ---------------------------------------------------------------------
// ====Ham Gui 1 Chuoi Ky Tu Len LCD ====
void lcd1602_puts(char *s)
{
while (*s)
{
lcd1602_putchar(*s);
s++;
}
}
//====CHUONG TRINH DELAY====
void delay_ms(unsigned int Time)
{
unsigned int i,j,t;
t=Time;
for(i=0;i<t;i++)
{
for(j=0;j<125;j++);
}
}
void delay_us(unsigned int Time)
{
unsigned int i,j;
for(i=0;i<Time;i++)
{
for(j=0;j<2;j++);
}
}
void delay_18B20(unsigned int i)
{
while(i--);
}
//====KHOI TAO CAM BIEN====
void Init_DS18B20()
{
unsigned char x=0;
DQ = 1;
delay_18B20(8);
DQ = 0;
delay_18B20(80);
DQ = 1;
delay_18B20(14);
x=DQ;
delay_18B20(20);
}

//====DOC MOT BYTE====


ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ = 0; //Cho duong DQ xuong muc thap
dat>>=1;
DQ = 1; //Cho duong DQ len muc cao
if(DQ)
dat|=0x80;
delay_18B20(4);
}
return(dat);
}
//====CHUONG TRINH GHI 1BYTE ====
void WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0;
DQ = dat&0x01;
delay_18B20(5);
DQ = 1;
dat>>=1;
}
}
//========================
//=CHUONG TRINH DOC NHIET DO TU CAM BIEN
ReadTemperature(void)
{
unsigned char a=0;
unsigned char b=0;
unsigned int t=0;
Init_DS18B20();
WriteOneChar(0xCC);
WriteOneChar(0x44);
delay_18B20(100);
Init_DS18B20();
WriteOneChar(0xCC);
WriteOneChar(0xBE);

a=ReadOneChar();

b=ReadOneChar();

t = (b*256+a)*25;

return( t >> 2 );

//========================
void select_mode(void)
{
if((nhiet>=45) && (khoi==FALSE))
mode=1;
if((nhiet<45) && (khoi==FALSE))
mode=0;
if((nhiet<45) && (khoi==TRUE))
mode=2;
if((nhiet<45) && (khoi==FALSE))
mode=0;
if((nhiet>=45) && (khoi==TRUE))
mode=3;
if((nhiet<45) && (khoi==FALSE))
mode=0;
}
void dieu_khien(void)
{
select_mode();
switch(mode)
{
case 0:
dkden=TRUE;
dkchuong=TRUE;
dkphunnuoc=TRUE;
break;
case 1:
dkden=FALSE;
dkchuong=TRUE;
dkphunnuoc=TRUE;
break;
case 2:
dkden=TRUE;
dkchuong=FALSE;
dkphunnuoc=TRUE;
break;
case 3:
dkden=FALSE;
dkchuong=FALSE;
dkphunnuoc=FALSE;
break;

//====CHUONG TRINH CHINH=====


main()
{
P1=0xf0;
P2=0x00;
P3=0x00;
lcd1602_init();
while(1)
{
tmp = ReadTemperature();
nhiet=tmp/100;
sprintf(Lcd_Buff," TEMP: %.0f^C",nhiet);
lcd1602_gotoxy(1,0);
lcd1602_puts(Lcd_Buff);
delay_ms(10);
dieu_khien();
}
}

You might also like