toilet

Chia sẻ - bộ khống chế nhiệt độ | Page 6

Thảo luận trong 'Họ 8051'

Đang xem chủ đề này ( Thành viên: 0, Khách: 0)

  1. Đăng 14/8/15 #51

    thai duong Học sinh trung cấp

    Số bài viết: 85
    Đã được thích: 20
    Chào bạn tdm.
    Mình đang tập viết code và đang làm mạch giống bạn nhưng đến đây ko biết bị gì, nhờ bạn xem giúp mình, mình gửi file code và mô phỏng. thanks bạn.

    Các file đính kèm:

    #51
  2. Đăng 14/8/15 #52

    tdm Kỹ sư

    Số bài viết: 453
    Đã được thích: 424
    bạn gửi thẳng code lên đây.
    #52
  3. Đăng 14/8/15 #53

    thai duong Học sinh trung cấp

    Số bài viết: 85
    Đã được thích: 20
    CODE :
    Mã:
    #include<reg52.h>
    #include<stdio.h>
    #include<math.h>
    sbit den_do=P2^3;
    sbit den_vang=P2^1;
    sbit den_xanh=P2^2;
    sbit DQ = P3^7;
    sbit led1 = P2^4;
    sbit led2 = P2^5;
    sbit led3 = P2^6;
    sbit led4 = P2^7;
    
    unsigned int temp,i;
    unsigned int set_t=30;
    unsigned char M[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
    unsigned char donvi,chuc ;
    
    void tre(unsigned int t)
      {
    for(i=1;i<=t;++i);
      }
    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 hienthi(void)
      {     temp=ReadTemperature();
      chuc=(temp)/10;  // tach lay hang chuc
      donvi=(temp)%10;  // tach lay hang don vi
      led1=1;
      P0=M[chuc];
      tre(800);
      led1=0;
      P0=0xFF;
      led2=1;
      P0=M[donvi];
      tre(800);
      led2=0;
      P0=0xFF;
      }
    
    void ht_dat()
    {
      chuc=(set_t)/10;  // nt
      donvi=(set_t)%10;  //nt
      led3=1;
      P0=M[chuc];
      tre(800);
      led3=0;
      P0=0xFF;
      led4=1;
      P0=M[donvi];
      tre(800);
      led4=0;
      P0=0xFF;
        }
    
    void so_sanh_temp()  // ham so sanh nhiet do
    {
    if(temp==set_t)
    {
    den_vang=0;
    den_do=den_xanh=1;
    }
    else
    if(temp>set_t)
    {
    den_xanh=0;
    den_do=den_vang=1;
    }
    else
    if (temp<set_t)
    {
    den_do=0;
    den_vang=den_xanh=1;
    }
    }
    
    void main ()
    {
    IE=0x85;  // cho phep ngat ngoai 0 va ngat ngoai 1
    IP=0;    // uu tien ngat bang nhau
    IT1=IT0=1;  // ngat theo suon am
    //++++++++++++++++//
    
    den_do=den_vang=den_xanh=1;// tat toan bo den
    while(1)
    {
    temp=ReadTemperature(); // gan gia tri chuyen doi vao bien temp
    hienthi();
    ht_dat();
    so_sanh_temp();
    }
    }
    
    void ngat_int0() interrupt 0  // ham ngat ngoai 0
    {
    tre(50); // chong rung phim
    set_t++;
    }
    
    void ngat_int1() interrupt 2  // ham ngat ngoai 1
    {
    tre(50);  // chong rung phim
    set_t--;
    }
    #53
  4. Đăng 14/8/15 #54

    tdm Kỹ sư

    Số bài viết: 453
    Đã được thích: 424
    code còn nhiều vấn đề ,trước mắt sửa tạm cho bạn như vậy đã.
    bạn viết thêm chỗ gợi ý trong code.

    Mã:
    #include<reg52.h>
    #include<stdio.h>
    #include<math.h>
    sbit den_do=P2^3;
    sbit den_vang=P2^1;
    sbit den_xanh=P2^2;
    sbit DQ = P3^7;
    sbit led1 = P2^4;
    sbit led2 = P2^5;
    sbit led3 = P2^6;
    sbit led4 = P2^7;
    
    unsigned int temp,i;
    unsigned int set_t=30;
    unsigned char M[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
    unsigned char donvi,chuc ;
    
    void tre(unsigned int t)
      {
    for(i=1;i<=t;++i);
      }
    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
     unsigned int 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 ;    t<<=8;    t=t|a;     //????????????????
              t =t/16;           //???????????????? lay phan nguyen
        return t ;
    }
    //========================
    void hienthi(void)
      {    temp=ReadTemperature();
      chuc=(temp)/10;  // tach lay hang chuc
      donvi=(temp)%10;  // tach lay hang don vi
      led1=1;
      P0=M[donvi];    //????????????????
      tre(800);
      led1=0;
      P0=0xFF;
      led2=1;
      P0=M[chuc];    //??????????????????
      tre(800);
      led2=0;
      P0=0xFF;
      }
    
    void ht_dat()
    {
      chuc=(set_t)/10;  // nt
      donvi=(set_t)%10;  //nt
      led3=1;
      P0=M[chuc];
      tre(800);
      led3=0;
      P0=0xFF;
      led4=1;
      P0=M[donvi];
      tre(800);
      led4=0;
      P0=0xFF;
        }
    
    void so_sanh_temp()  // ham so sanh nhiet do
    {
    if(temp==set_t)
    {
    den_vang=0;
    den_do=den_xanh=1;
    }
    else
    if(temp>set_t)
    {
    den_xanh=0;
    den_do=den_vang=1;
    }
    else
    if (temp<set_t)
    {
    den_do=0;
    den_vang=den_xanh=1;
    }
    }
    
    void main ()
    {
    IE=0x85;  // cho phep ngat ngoai 0 va ngat ngoai 1
    IP=0;    // uu tien ngat bang nhau
    IT1=IT0=1;  // ngat theo suon am
    //++++++++++++++++//
    
    den_do=den_vang=den_xanh=1;// tat toan bo den
    while(1)
    {
    temp=ReadTemperature(); // gan gia tri chuyen doi vao bien temp
    hienthi();
    ht_dat();
    so_sanh_temp();
    }
    }
    
    void ngat_int0() interrupt 0  // ham ngat ngoai 0
    {
    tre(50); // chong rung phim
    set_t++;
    ///phai gioi han gia tri tang 
    
    }
    
    void ngat_int1() interrupt 2  // ham ngat ngoai 1
    {
    tre(50);  // chong rung phim
    set_t--;
    //phai gioi han gia tri giam
    }
    thai duong thích bài này.
    #54
  5. Đăng 14/8/15 #55

    thai duong Học sinh trung cấp

    Số bài viết: 85
    Đã được thích: 20
    Thanks bạn đã xem qua, để mình thử rồi trả lời bạn sau.
    #55
  6. Đăng 15/8/15 #56

    thai duong Học sinh trung cấp

    Số bài viết: 85
    Đã được thích: 20
    thanks bạn tdm nhiều, mạch đã chạy ok, và nhờ bạn chỉ cho mình cách lưu nhiệt độ cài đặt vào chip 24c04 được ko?
    #56
  7. Đăng 22/8/15 #57

    phongk9a1 Học sinh phổ thông

    Số bài viết: 28
    Đã được thích: 4
    không biết em hỏi câu này có ngu không
    anh cho em hỏi mạch này áp dụng vào việc gì vậy
    #57
  8. Đăng 24/8/15 #58

    thai duong Học sinh trung cấp

    Số bài viết: 85
    Đã được thích: 20
    Không biết do mạch hay do code mà cho mạch chạy khoảng 4 ngày là con 24c04 bị chết, mình thay con này lần thứ 3 rồi, ko biết như thế nào nhờ bạn tdm k.tra giùm mình được ko? thanks bạn.
    #58
  9. Đăng 24/8/15 #59

    tdm Kỹ sư

    Số bài viết: 453
    Đã được thích: 424
    1:nạp thử file này cứu mấy con 24xx đã nhé.
    2:nạp lại file cũ chạy thử.

    Các file đính kèm:

    • 24xx.rar
      Kích thước:
      1.5 KB
      Đọc:
      47
    thai duong thích bài này.
    #59
  10. Đăng 24/8/15 #60

    thai duong Học sinh trung cấp

    Số bài viết: 85
    Đã được thích: 20
    Nạp file hex này vào con 24c04 hả bạn, mình nạp vào ko được bạn à ... bạn hướng dẫn lại giùm nha.
    #60

Chia sẻ trang này