1. THÔNG BÁO TUYỂN ADMIN DIỄN ĐÀN 2013
    Tìm kiếm nhà trọ - Ở ghép
    THÔNG BÁO BÁN ÁO SPKT.NET CHO THÀNH VIÊN DIỄN ĐÀN


    HÃY TÌM KIẾM Ở ĐÂY TRƯỚC KHI ĐẶT CÂU HỎI
    {xen:phrase loading}

Tại sao mạch đo nhiệt độ chỉ hiển thị giá trị 255

Thảo luận trong 'Đo lường-Cảm biến' bắt đầu bởi believe4me, 21 Tháng chín 2011.

  1. believe4me New Member

    Số bài viết: 3
    Đã được thích: 0
    Điểm thành tích: 0
    Chào các anh em đang làm mạch đo nhiệt độ nhưng khổ một nỗi khi mô phỏng lcd chỉ hiển thị giá trị nhiệt độ 255.cho dù có thay đổi giá trị đầu vào.có ai biết chỉ em với huhu.
    đây là code và hình mô phỏng
    cảm ơn các bác rất nhiều!
    Mã:
    #include <AT89X51.H>
    #include <stdio.h>
    #include<string.h>
    
    
    #define RS P2_0
    #define RW P2_1//RW=0 => ghi
    #define EN P2_2//RW=1 => doc
    //RS=0 => code
    //RS=1 => data
    #define lcd_PORT P0
      
    sbit EOC     = P2^4    ;
    
    sbit ALE_START     = P2^3;
    
    sbit OE = P2^5 ;
    
    
    //===========================
    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 lcd_command(unsigned char c) //CT con ghi du lieu len LCD
    {
     RS=0;
     RW=0;
     lcd_PORT=c;
     EN=1;
     EN=0;
     delay_5ms();
    }
    //==============================
    void lcd_data(unsigned char c) //CT con doc du lieu tu LCD
    {
     RS=1;
     RW=0;
     lcd_PORT=c;
     EN=1;
     EN=0;
     delay_5ms();
    }
    //=============================
    void lcd_gotoxy(int x, int y)
    {
        if((x<1||x>2)&&(y<1||y>16))
        {
            x=1;
            y=1;
        }
        if(x == 1)
            lcd_command(0x7F+y);
        else
            lcd_command(0xBF+y);
    }
    //===============================
    void lcd_init()  // Khoi tao LCD
    {
     delay_15ms();
    
    
     lcd_command(0x38);
     lcd_command(0x0C);
    // lcd_command(0x06);
     lcd_command(0x01);  // Xoa man hinh LCD
    }
    //================================
    void lcd_clear()
    {
     lcd_command(0x01);
    }
    //===============================
    void lcd_home()
    {
     lcd_command(0x80);
    }
    //=============================
    void lcd_putsf(unsigned char *s)
    {
     while (*s)
     {
      lcd_data(*s);
      s++;
     }
    }        
    //============================
    void HienThi_ADC(unsigned char t)
    {
        unsigned char v;
        if(t<10)
             lcd_data(t+48);
        else if(t<100)
         {
             lcd_data(t/10+48);
         lcd_data(t%10+48);
         }
         else
         {
            v=t/10;
         lcd_data(v/10+48);
         lcd_data(v%10+48);
         lcd_data(t%10+48);
         }
    }
    
    
    void main (void)
    {
          unsigned char gt;       //gt la bie^n' cho gia tri 8bit ADC
          lcd_init();
          lcd_command(0x83);
          lcd_putsf("khanh thoa");
          while(1)      
          {
        OE    = 1;
        ALE_START     = 1;
        ALE_START     = 0;
        while(!EOC);                //Cho cho chan P1.1 tich cuc khi chuyen doi xong
        OE=0;
        gt        = P1;
        ALE_START     = 1;
    
          lcd_command(0x01);
          lcd_command(0x83);
          lcd_putsf("DO NHIET DO");
          lcd_command(0xC0);
          lcd_putsf("Nhiet do:");
          HienThi_ADC(gt);
          delay_ms(150);
    
          }
    }
    
    [IMG]

Chia sẻ trang này