User Tag List

+ Trả lời chủ đề
Hiện kết quả từ 1 tới 5 của 5

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

  1. #1
    svBK's Newbie
    Tham gia ngày
    Aug 2011
    Bài gửi
    4

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

    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);
    
          }
    }
    Ấn vào hình để xem hình to hơn

Tên:	mạch.jpg
Xem:	16
KT :	100,5 KB
ID :	2223

  2. #2
    Tội Nhân Thiên Cổ Avatar của Thiên Tình Hận
    Tham gia ngày
    Jan 2009
    Bài gửi
    2.228

    Mặc định Re: Tại sao mạch đo nhiệt độ chỉ hiển thị giá trị 255

    nếu có thể, phiền bạn đính kèm luôn file design .DSN cho anh em dễ soi
    This I Love - Guns N' Roses

    http://x3xx3x4.googlepages.com/Hacked.gif

    contact me:
    Y!M : no1gun_n_roses
    Mobile: null
    Blog: http://aDungz.wordpress.com

  3. #3
    Điều hành viên Avatar của thích nghịch điện
    Tham gia ngày
    Jul 2011
    Bài gửi
    529

    Mặc định Re: Tại sao mạch đo nhiệt độ chỉ hiển thị giá trị 255

    Bạn thử thay biến "gt" trong câu: "HienThi_ADC(gt);" bằng các giá trị khác xem lcd hiển thị có ngon ko đã.
    nếu lúc nào cũng 255 --> hàm HienThi_ADC(); có vấn đề,
    nếu hàm HienThi_ADC(); ngon rồi bạn hãy thay HienThi_ADC(gt); thành là HienThi_ADC(P1); xem

  4. #4
    Điều hành viên Avatar của hunterXhunter_1990
    Tham gia ngày
    Dec 2009
    Bài gửi
    482

    Mặc định Re: Tại sao mạch đo nhiệt độ chỉ hiển thị giá trị 255

    up hết cả lên để mọi người còn dễ check chứ. ai mà ngồi vẽ lại sơ đồ được
    TODAY is a NEW DAY!!!!

  5. #5
    Điều hành viên Avatar của thích nghịch điện
    Tham gia ngày
    Jul 2011
    Bài gửi
    529

    Mặc định Re: Tại sao mạch đo nhiệt độ chỉ hiển thị giá trị 255

    chủ thớt đã tìm được câu trả lời trên dientuvietnam.net

+ Trả lời chủ đề

Thông tin chủ đề

Users Browsing this Thread

Hiện có 1 người đọc bài này. (0 thành viên và 1 khách)

Chủ đề tương tự

  1. Trả lời: 0
    Bài cuối: 20-09-2011, 12:08 PM
  2. Kho giáo trình Nhiệt lạnh
    Gửi bởi truongthephuc trong mục VIỆN KH&CN NHIỆT LẠNH
    Trả lời: 0
    Bài cuối: 06-03-2010, 09:06 AM
  3. Trả lời: 5
    Bài cuối: 06-04-2009, 01:43 PM
  4. Giúp đỡ em làm đồ án thông tin chứng khoán với cảm ơn nhiều nhiều
    Gửi bởi mr_cuong trong mục Thư viện mã nguồn
    Trả lời: 0
    Bài cuối: 22-03-2008, 08:46 AM
  5. Trả lời: 0
    Bài cuối: 05-05-2004, 04:25 AM

Từ khóa (Tag) của chủ đề này

Quyền viết bài

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình


About svBK.VN

    Bách Khoa Forum - Diễn đàn thảo luận chung của sinh viên ĐH Bách Khoa Hà Nội. Nơi giao lưu giữa sinh viên - cựu sinh viên - giảng viên của trường.

Follow us on

Twitter Facebook youtube