You are on page 1of 6

//---------------- ti o nhit s dng IC LM35 v ADC 0804----------------//

//--------------- Sinh vin thc hin: MC VN CHINH-------------------------//


//--------------- MC VN CHINH-NGUYN MNH HNG-PHM VN PH------------------//
//----------- NGY BT U 18/10/2013----------------------------------------//
// --------------NGY HON THNH 30/10/2013----------------------------------//
//------ khai bo th vin
#include <REGX51.H>
#include <stdio.h>
#include<string.h>
//-------- Khai bo tin x l
#define RS P3_5 //chn quy nh d liu/ lnh gi ti LCD
#define RW P3_6//RW=0 => vi iu khin vit d liu ln LCD
#define EN P3_7//RW=1 => vi iu khin c d liu t LCD
//RS=0 => code

// EN:chn cho /khng cho giao tip vi LCD: =0 cho php,=1 khng cho php

//RS=1 => data


#define LCD_PORT P1
// tm hiu chn ADC 0804
#define INTR P3_0 // INTR:li ra ngt
#define RD P3_1 // RD: li vo c RD=0 xut hin d liu trn cng ra, RD=1 khng xut hin d
liu .
#define WR P3_2 // WR:li vo ghi.

//=========================== hm to tr _ms
void delay_ms(int n)
{
int k,j;

for(k=0;k<n;k++) //time vng lp for = 8s.


{
for(j=0;j<500;j++);
}

}
//========================== hm to tr _5ms
void delay_5ms(){
int i,j;
for(i=0;i<250;i++)
for(j=0;j<4;j++){}
}
//=========================== hm to tr _15ms
void delay_15ms(){
int i,j;
for(i=0;i<250;i++)
for(j=0;j<100;j++){}
}
//============================
void LCDWriteCmd(unsigned char c) //CT con ghi d liu ln LCD
{
RS=0; // code
RW=0; // vi iu khin vit d liu ln LCD
LCD_PORT=c; // bt hin th tt con tr
EN=1;// khng cho php giao tip vi LCD
EN=0;// cho php giao tip vi LCD

delay_5ms();
}
//==============================
void LCDWriteData(unsigned char c) //CT con doc du lieu tu LCD
{
RS=1;// data
RW=0;// vi iu khin vit d liu ln LCD
LCD_PORT=c; // bt hin th tt con tr
EN=1;
EN=0;
delay_5ms();
}
//=============================
void LCDcursorxy(int x, int y) // di chuyn con tr ti v tr mong mun. x : hng, y: ct
{
if((x<1||x>2)&&(y<1||y>16)) // LCD 16 k t 2 hng
{
x=1;
y=1;
}
if(x == 1)
LCDWriteCmd(0x7F+y);
else
LCDWriteCmd(0xBF+y);
}
//===============================

void LCD_init() // Khoi tao LCD


{
delay_15ms();

LCDWriteCmd(0x38); // hai dng ma trn 5x7


LCDWriteCmd(0x0C); // bt hin th tt con tr
// LCDWriteCmd(0x06);// tng con tr
LCDWriteCmd(0x01); // Xa mn hnh LCD
}
//================================

xa mn hnh LCD

void LCD_clear()
{
LCDWriteCmd(0x01); // xa mn hnh hin th
}
//===============================
void LCD_home()
{
LCDWriteCmd(0x80);// p con tr v u dng th nht
}
//=============================
void LCD_putstr(unsigned char *s)// ghi 1 chui ln LCD
{
while (*s)
{
LCDWriteData(*s);
s++;

}
}
//============================
void HienThi_ADC(unsigned char t)

// ham hien thi du lieu ADC len LCD

{
unsigned char v;
if(t<10)
{ LCDWriteData(t+48);
}else if(t<100){
LCDWriteData(t/10+48);
LCDWriteData(t%10+48);
}else{
v=t/10;
LCDWriteData(v/10+48);
LCDWriteData(v%10+48);
LCDWriteData(t%10+48);
}
}

//========================================== ham chinh

void main (void)


{
unsigned char gt=0; //gt la bin gn cho gia tri 8bit ADC
LCD_init();

LCDWriteCmd(0x83);
LCD_putstr("8051 & ADC");
while(1)
{
WR=0; // Bat dau chuyen doi gia tri tu ADC
delay_ms(5); // Tao tre de cap nhat du lieu tu ADC
WR=1; //
while(!INTR);
RD=0; // Nhan du lieu da duoc chuyen doi
gt=P2;
LCDWriteCmd(0x01);
LCDWriteCmd(0x83);
LCD_putstr("MAC VAN CHINH:8051&ADC");
LCDWriteCmd(0xC0);
LCD_putstr("Nhiet do:");
HienThi_ADC(gt);
delay_ms(100);
}
}

You might also like