Thông báo

Collapse
No announcement yet.

Đo nhiệt độ ADC 0809+LM35+89C52 cần giúp đỡ?

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #16
    đã text ngon lành bác thử đoạn này xem sao ?

    #include <REGX51.H>
    #define START P3_0
    #define ALE P3_1
    #define A P3_2
    #define B P3_3
    #define C P3_4
    #define dtlcd P2
    #define adc P1

    unsigned char code MA7D[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x90,0x8 0};
    unsigned char nd;


    void delay( unsigned int t)
    { while( t--); }

    unsigned char docadc(unsigned char kenh)
    {
    A=kenh&(0x04);
    B=kenh&(0x02);
    C=kenh&(0x01);
    START=ALE=1;
    START=ALE=0;
    delay(100);
    return docadc;
    }

    void ht_nd()
    {
    nd=docadc(7);
    delay(100);
    P2=MA7D[nd/10]; P0_3=0; delay(100); P0_3=1;
    P2=MA7D[nd%10]; P0_2=0; delay(100); P0_2=1;

    }

    void main()
    {
    while(1)
    {ht_nd();
    }
    }

    Comment


    • #17
      có thể gửi cho mình nguyên lí này ko,trên này nhìn mờ quá :buiductu0@yahoo.com.vn

      Comment


      • #18
        mấy bạn giúp mình với!!!
        mình viết code chạy mô phỏng thì ok nhưng sang mạch thực tế thì chỉ đọc được giá trị nhiệt độ ban đầu; khi nhiệt độ thay đổi thì nó ko đọc tiếp!!!!! giống như là adc nó đọc 1 lần thôi ko đọc lại; code mình để nó trong vòng lặp vô tận mà ko hiểu lí do sao lun; ai zúp mình với!!
        code đây :
        #include <REGX51.H>
        #include <STDIO.H>
        #include <math.h>
        //#define VREF 5 //VREF=5V
        #define ROLE P2_0
        //Khai bao chan giao tiep ADC0808
        #define ADC0808_DATA P3 //PORT
        #define ADC0808_A P1_0 //PIN
        #define ADC0808_B P1_1
        #define ADC0808_C P1_2
        #define ADC0808_ALE P1_5
        #define ADC0808_START P1_3
        #define ADC0808_EOC P1_4
        #define ADC0808_OE P1_6
        #define ADC0808_CLK P1_7
        //Khai bao chan giao tiep LCD16x2 4bit
        #define LCD_RS P0_0
        #define LCD_RW P0_1
        #define LCD_EN P0_2
        #define LCD_D4 P0_4
        #define LCD_D5 P0_5
        #define LCD_D6 P0_6
        #define LCD_D7 P0_7

        /*****************ADC0808*********************/
        //Ham doc ADC0808 theo kenh
        unsigned char ADC0808_Read(unsigned char kenh){
        unsigned char kq;

        ADC0808_A = kenh & 0x01;
        ADC0808_B = kenh & 0x02;
        ADC0808_C = kenh & 0x04;

        ADC0808_ALE = 1;
        ADC0808_START = 1;
        ADC0808_ALE = 0;
        ADC0808_START = 0;

        while(ADC0808_EOC);
        while(!ADC0808_EOC);
        ADC0808_OE = 1;
        kq = ADC0808_DATA;
        ADC0808_OE = 0;

        return kq;
        }
        /*****************Ham delay*********************/
        void delay_us(unsigned int t){
        unsigned int i;
        for(i=0;i<t;i++);
        }
        void delay_ms(unsigned int t){
        unsigned int i,j;
        for(i=0;i<t;i++)
        for(j=0;j<125;j++);
        }
        /**************Ctr giao tiep LCD 16x2 4bit**********************/
        void LCD_Enable(void){
        LCD_EN =1;
        delay_us(3);
        LCD_EN=0;
        delay_us(50);
        }
        //Ham Gui 4 Bit Du Lieu Ra LCD
        void LCD_Send4Bit(unsigned char Data){
        LCD_D4=Data & 0x01;
        LCD_D5=(Data>>1)&1;
        LCD_D6=(Data>>2)&1;
        LCD_D7=(Data>>3)&1;
        }
        // Ham Gui 1 Lenh Cho LCD
        void LCD_SendCommand(unsigned char command){
        LCD_Send4Bit(command >>4);/* Gui 4 bit cao */
        LCD_Enable();
        LCD_Send4Bit(command); /* Gui 4 bit thap*/
        LCD_Enable();
        }
        void LCD_Clear(){// Ham Xoa Man Hinh LCD
        LCD_SendCommand(0x01);
        delay_us(10);
        }
        // Ham Khoi Tao LCD
        void LCD_Init(){
        LCD_Send4Bit(0x00);
        delay_ms(20);
        LCD_RS=0;
        LCD_RW=0;
        LCD_Send4Bit(0x03);
        LCD_Enable();
        delay_ms(5);
        LCD_Enable();
        delay_us(100);
        LCD_Enable();
        LCD_Send4Bit(0x02);
        LCD_Enable();
        LCD_SendCommand( 0x28 ); // giao thuc 4 bit, hien thi 2 hang, ki tu 5x8
        LCD_SendCommand( 0x0c); // cho phep hien thi man hinh
        LCD_SendCommand( 0x06 ); // tang ID, khong dich khung hinh
        LCD_SendCommand(0x01); // xoa toan bo khung hinh
        }
        void LCD_Gotoxy(unsigned char x, unsigned char y){
        unsigned char address;
        if(!y)address=(0x80+x);
        else address=(0xc0+x);
        delay_us(1000);
        LCD_SendCommand(address);
        delay_us(50);
        }
        void LCD_PutChar(unsigned char Data){//Ham Gui 1 Ki Tu
        LCD_RS=1;
        LCD_SendCommand(Data);
        LCD_RS=0 ;
        }
        void LCD_Puts(char *s){//Ham gui 1 chuoi ky tu
        while (*s){
        LCD_PutChar(*s);
        s++;
        }
        }
        /**************Show Temp***********************
        unsigned char Temp(unsigned char adc){//Tinh nhiet do tu adc8bit
        return ((VREF*adc)/2.56f); //Tinh nhiet do
        } */
        void TempShow(unsigned char z){ //Chuyen doi hien thi
        LCD_Puts("Nhiet do: ");
        LCD_PutChar((z/100)+48);//Tram
        LCD_PutChar((z%100/10)+48);//Chuc
        LCD_PutChar((z%100%10/1)+48);//Don vi
        LCD_Puts("'C");
        }

        /******************Ctr chinh**************************/
        unsigned char temp,dv,ch,tr,gt=0,dem=0,t;
        void main()
        {

        //Tao xung clock cho ADC0808 dung ngat timer
        TMOD=0x02; //Timer0 8bit tu nap lai
        TH0=TL0=226;//Tao ngat 20us
        TR0=1;//Khoi dong timer0
        ET0=1;//Ngat timer0
        EA=1;//Cho phep ngat cuc bo
        //init
        LCD_Init();//Khoi tao LCD
        delay_ms(200);
        LCD_Puts("Do nhiet do...");//Gui chuoi len LCD
        delay_ms(500);
        LCD_Gotoxy(2,1);
        LCD_Puts("Hoang Phuc");
        delay_ms(500);
        LCD_Clear();
        while(1)
        {

        temp=ADC0808_Read(0); //Doc ADC0
        LCD_Gotoxy(0,0);
        //temp=Temp(temp); //Tinh nhiet do
        TempShow(temp); //Hien thi nhiet do
        LCD_Gotoxy(0,1);
        LCD_Puts("NhietDoChuan:37'C ");
        delay_ms(500);//0.5s doc mot lan
        temp=0;
        LCD_Clear();
        LCD_Gotoxy(3,1);
        LCD_Puts("HetVongLap");
        delay_ms(500);
        LCD_Clear();
        // t= temp;
        // if (t<=37)
        // {
        // ROLE=0;
        // }
        // else ROLE=1;
        }
        }
        ///******************Ctr ngat timer 0************/
        void INT_Timer0()interrupt 1
        {
        //ctr phuc vu ngat tao xung clock cho ADC0808
        ADC0808_CLK=~ADC0808_CLK; //Dao bit
        }
        //THE END

        Comment

        Về tác giả

        Collapse

        nbaoic Tìm hiểu thêm về nbaoic

        Bài viết mới nhất

        Collapse

        • bqviet
          Trả lời cho Đấu tắt điện cho máy tính bảng
          bởi bqviet
          Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
          06-12-2025, 17:17
        • nguyendinhvan
          Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
          bởi nguyendinhvan
          Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
          05-12-2025, 19:59
        • afrendly
          Trả lời cho Đấu tắt điện cho máy tính bảng
          bởi afrendly
          Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
          04-12-2025, 01:27
        • nick22
          Trả lời cho Máy điện châm ?
          bởi nick22
          Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
          01-12-2025, 13:23
        Đang tải...
        X