Home » » Mạch ổn định nhiệt độ LM35

Mạch ổn định nhiệt độ LM35

Written By Điện Tử ChipKool on February 22, 2020 | 2:45 PM



1. Sơ đồ nguyên lý



2. Code C:

Code tham khảo:
 ///////////////////////////////////////////////////     DAI HOC SPKT HUNG YEN                //////////////////////////////////////
///////////////////////////////////////////////////      KHOA: DIEN-DIEN TU                    ///////////////////////////////
//////////////////////////////////////////////////  NGUOI THUC HIEN: VUONG DUY MINH           /////////////////////////////////////////////
/////////////////////////////////////////////////       WEBSITE: SPKTHY.COM                   ///////////////////////////////////////////////
#include <AT89X51.H>
#include <stdio.h>
#include<string.h>

#define RS P3_5
#define RW P3_6//RW=0 => ghi
#define EN P3_7//RW=1 => doc
//RS=0 => code
//RS=1 => data
#define LCD_PORT P1
#define ok P0_5
#define tang P0_6
#define giam P0_7
#define DEN P0_0
#define QUAT P0_1
#define INTR P3_0
#define RD P3_1
#define WR P3_2
#define CAI_DAT P3_3
int mh,gt,m;

//===========================
void delay_ms(int n)
{
    int k,j;
    for(k=0;k<n;k++)
    {
        for(j=0;j<500;j++);
    }

}
//==========================
void delay_5ms(){
int i,j;
for(i=0;i<250;i++)
for(j=0;j<4;j++){}
}
//===========================
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 du lieu len LCD
{
 RS=0;
 RW=0;
 LCD_PORT=c;
 EN=1;
 EN=0;
 delay_5ms();
}
//==============================
void LCDWriteData(unsigned char c) //CT con doc du lieu tu LCD
{
 RS=1;
 RW=0;
 LCD_PORT=c;
 EN=1;
 EN=0;
 delay_5ms();
}
//=============================
void LCDcursorxy(int x, int y)
{
    if((x<1||x>2)&&(y<1||y>16))
    {
        x=1;
        y=1;
    }
    if(x == 1)
        LCDWriteCmd(0x7F+y);
    else
        LCDWriteCmd(0xBF+y);
}
//===============================
void LCD_init()  // Khoi tao LCD
{
 delay_15ms();

 LCDWriteCmd(0x38);
 LCDWriteCmd(0x0C);
// LCDWriteCmd(0x06);
 LCDWriteCmd(0x01);  // Xoa man hinh LCD
}
//================================
void LCD_clear()
{
 LCDWriteCmd(0x01);
}
//===============================
void LCD_home()
{
 LCDWriteCmd(0x80);
}
//=============================
void LCD_STRING(unsigned char *s)
{
    while(*s) //den NULL thi thoi
    {
        LCDWriteData(*s);
        s++;
    }
}   
   
void LCD_putstr(unsigned char *s)
{
 while (*s)
 {
  LCDWriteData(*s);
  s++;
 }
}     
//============================
void HienThi_ADC(unsigned char t)
{
 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);
  }
}

//==========================================
void setup()
{
LCDWriteCmd(0x01);
while(1)
{
LCDWriteCmd(0x80);
LCD_putstr("Cai dat nhiet do");
LCDWriteCmd(0xC0);
LCD_putstr("On dinh tai:");
HienThi_ADC(mh);
if(ok==0) break;
if(    tang==0)
{
mh++;if(mh>100) mh=100;      delay_ms(5);
}
if(giam==0)
{
mh--;  if(mh<0) mh=0; delay_ms(5);
}
}
LCDWriteCmd(0x01);
}
//////////////////////
void main (void)
{
mh=28;       //gt la bie^n' cho gia tri 8bit ADC
LCD_init(); 
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(0x80);
      LCD_putstr("On dinh tai:");
       HienThi_ADC(mh);
      LCDWriteCmd(0xC0);
      LCD_putstr("Nhiet do:");
      HienThi_ADC(gt);
      LCD_STRING(" oC");
        delay_ms(10);
        if(gt==mh) P0=0X00;
        if(gt>mh)
      {
      QUAT=1;
      DEN=0;
      }
      if(gt<mh)
      {
      QUAT=0;
      DEN=1;
      }
      if(CAI_DAT==0)
      {setup();
      }
   
}
}
Chúc các bạn thành công!




( Nguyên lý + Code chuẩn) Link Mediafire

------------------------------------------------------------------------------------
DV1 - Nhận vẽ mạch thuê ONLINE Altium Designer/ Orcad 9.2/ Protues nhanh trong ngày



-----------------------------------------------------------------------------------

DV2 - Mua linh kiện về làm mạch nhanh - Miễn phí Ship




DV3 - Kênh youtube chia sẻ kiến thức điện tử thực hành ngay


DV4 - Kênh cộng đồng Facebook Điện Tử ChipKool




eChipKool - Chia sẻ kiến thức Kết Nối đam mê điện tử

0 comments :

Post a Comment

Bạn đọc hãy giúp chúng tôi xây dựng cộng đồng bằng cách để lại bình luận, chúng tôi luôn đón nhận mọi ý kiến của các bạn:
» Bình luận nghiêm túc và không chứa các liên kết quảng cáo.
» Vui lòng không Spam nhận xét với mọi hình thức.
» Rất mong bạn đề tên cho nhận xét của chính mình - Bằng cách chọn vào Tên/URL và điền tên bạn vào (Phần URL có thể bỏ trống ).

- Bạn có thể chèn Link nhạc (NCT), video(Youtube),Hình ảnh vào comment bằng cú pháp:
+ [youtube] Link video Youtube [/youtube].
+ [img] Link ảnh( định dạng PNG, JPG,GIF) [/img]
+Chèn link liên kết: <a href="LINK" rel="nofollow">Name</a>
-Bạn copy mã bên cạnh biểu tượng chèn vào nhận xét để bày tỏ cảm xúc!!

Search This Blog