Thông báo

Collapse
No announcement yet.

LCD 2x16

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

  • LCD 2x16

    Em dùng AVR kết nối với LCD, sử dụg codevision để lập trình thì nó đã có hẳn cái thư viện lcd.h. Bên trong nó hỗ trợ hết rồi và mình chỉ có việc sài nó thôi. Em muốn hiểu về cơ chế làm việc của lcd, nghĩa là mình có thể hoàn toàn lập trình với nó mà không cần dùng đến lcd.h (như mấy bác sài 89 với lcd ấy mà). các bác chỉ em với. Thanks very much
    Phone: 0978536011

  • #2
    Vậy thì bạn hãy bê luôn đoạn code của 89 sang cho avr. Chỉnh sủa một chút cho đúng với AVR (như việc đặt cấu hình cho chân). Như vậy là chạy oke luôn. So sánh với Datasheet của LCD. Bạn thấy không có j khác biệt. Hoặc nếu muốn xem cái thằng AVR nó viết cho LCD thế nào thì hãy vào thư mục cài đặt C:\cvavr\lib. Sau đó mở cái file LCD.lib ra bạn sẽ thấy ngay. Trong thư mục này cũng có rất nhiều mã code đó.
    Thân mến!
    "Tiền có thể mua được đồng hồ, nhưng không mua được thời gian. Vì vậy chúng ta hãy biết quí trọng thời gian hơn"

    Comment


    • #3
      cái đó em mở ra rồi, họ chèn nhiều mã ASM quá mà asm thì em chẳng hiểu gì cả. Bác có code 89 cho em xin cũng được
      Phone: 0978536011

      Comment


      • #4
        Đôi khi bạn cũng cần tận dụng tối đa vi điều khiển. Mà các chương trình mẫu của codevision thì lại hơi chiếm dụng tài nguyên.
        Dưới đây là sơ đồ mạch giao tiếp tiny2313 với LCD16x2. Chỉ dùng có 6 chân (nếu dùng chương trình mẫu của code vision thì mất nguyên 1 cổng).

        Code giao tiếp như sau:
        Code:
        /*****************************************************
        This program was produced by the
        CodeWizardAVR V1.24.2c Standard
        Automatic Program Generator
        © Copyright 1998-2004 Pavel Haiduc, HP InfoTech s.r.l.
        http://www.hpinfotech.ro
        e-mail:office@hpinfotech.ro
        
        Project : 
        Version : 
        Date    : 2/8/2007
        Author  : Dung                            
        Company :                                 
        Comments: 
        
        
        Chip type           : ATtiny2313
        Clock frequency     : 11.059200 MHz
        Memory model        : Tiny
        External SRAM size  : 0
        Data Stack size     : 32
        *****************************************************/
        
        #include <tiny2313.h>
        
        #define LINE1_ADDR 0x00 // Start of line 1 in the DD-Ram
        #define LINE2_ADDR 0x40 // Start of line 2 in the DD-Ram
        /* Display-Commands */
        #define CLEAR_DISPLAY 	0x01 // Clear entire display and set Display Data Address to 0
        #define DD_RAM_PTR 	0x80 // Address Display Data RAM pointer
        #define DISP_INIT 	0x28 // 4 bit 2 lines
        #define INC_MODE 	0x06 // Display Data RAM pointer incremented after write
        #define DISP_ON		0x0C
        #define CURSOR_ON	0x04
        #define CURSOR_OFF	0x00
        #define DISP_OFF	0x08       
        #define Left		0x10
        #define Right		0x14
        
        
        
        // Declare your global variables here
        
        
        const  char Disp1[]="\nTvao:       (oC)";
        const  char Disp2[]=  "Tchenh:     (oC)";
        const  char Disp3[]="\nDat tham so:    ";
        const  char Disp4[]="\n  TEMPERATURE   ";
        const  char Disp5[]=  "    MONITOR     ";
        
        //***************************************************************************
        /*
        * Waits for some time so the 7066 can do the last command
        */
        void wait (unsigned int time) {
        int i;
        for (i = 0; i < time ;i++){
        }
        }
        /*
        * WriteInstrReg: Write to Instruction Register of LCD Display Device
        */
        static void WriteInstrReg (unsigned char Instr) {
        PORTB.2 = 0; // select instruction register
        PORTB.3 = 1; // give operation start signal
        wait(45); // wait
        PORTB = (PORTB&0x0F)|(Instr&0xF0); // write instruction
        PORTB.3 = 0;        
        wait(45); // wait
        PORTB.3 = 1; // give operation start signal
        wait(45); // wait
        PORTB = (PORTB&0x0F)|((Instr<<4)&0xF0); // write instruction
        PORTB.3 = 0;
        
        //PORTB| = 0xf0; // DATA_PORT is input [prevent I/O-Port from damage]
        }
        
        /*
        * WriteDataReg: Write to Data Register of LCD Display Device
        */
        static void WriteDataReg (unsigned char val) {
        PORTB.2 = 1; // select instruction register
        PORTB.3 = 1; // give operation start signal
        wait(45); // wait
        PORTB = (PORTB&0x0F)|(val&0xF0); // write instruction
        PORTB.3 = 0;        
        wait(45); // wait
        PORTB.3 = 1; // give operation start signal
        wait(45); // wait
        PORTB = (PORTB&0x0F)|((val<<4)&0xF0); // write instruction
        PORTB.3 = 0;
        }
        /*****************************************************************/
        void GotoXY(unsigned char x,unsigned char y)
        {
        char position;
        	if (x==1){
        		position=LINE1_ADDR | DD_RAM_PTR;
        		WriteInstrReg(position|y); 
        	}else{
        		position=LINE2_ADDR | DD_RAM_PTR;
        		WriteInstrReg(position|y); 	
        	}
        }
        /*****************************************************************/
        
        #define _ALTERNATE_PUTCHAR_
        #pragma used+
        void putchar (char c) {
        
        if (c == '\n') {
          WriteInstrReg (LINE1_ADDR | DD_RAM_PTR); // place to start of line 1
        }
        else {
          WriteDataReg (c);
        }
        
        }  
        #pragma used-
        /*****************************************************************/
        
        
        // Standard Input/Output functions
        #include <stdio.h>
        #include <delay.h>
        
        
        
        
        /***************************************************************************/
        /*
        * Clear_Display: Write 0x20 to Display RAM
        */
        static void Clear_Display (void) {
        WriteInstrReg (CLEAR_DISPLAY);
        wait(2000);
        }
        
        /*****************************************************************/
        
        void InitLCD(void)	{ 
        wait(40000);
        PORTB.2 = 0; // select instruction register
        PORTB.3 = 1; // give operation start signal
        wait(45); // wait
        PORTB = PORTB|0x20; // write instruction
        PORTB.3 = 0;        
        wait(45); // wait
        WriteInstrReg(DISP_INIT);	//4 bits 1 line
        WriteInstrReg(0x08);
        Clear_Display();
        wait(2000);
        WriteInstrReg(INC_MODE);
        wait(45);
        WriteInstrReg (LINE1_ADDR | DD_RAM_PTR);   // place to start of line 1
        WriteInstrReg (DISP_ON);
        }     
        void main(void)
        {
        // Declare your local variables here
        unsigned char count=1;
        unsigned char buttoncnt,i,c,buff[9];     
        // Crystal Oscillator division factor: 1
        CLKPR=0x80;
        CLKPR=0x00;
        
        // Input/Output Ports initialization
        // Port A initialization
        // Func2=In Func1=In Func0=In 
        // State2=T State1=T State0=T 
        PORTA=0x00;
        DDRA=0x00;
        
        // Port B initialization
        // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=In Func0=In 
        // State7=0 State6=0 State5=1 State4=1 State3=1 State2=1 State1=P State0=P 
        PORTB=0x03;
        DDRB=0xFC;
        
        // Port D initialization
        // Func6=In Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=In 
        // State6=P State5=0 State4=0 State3=0 State2=0 State1=1 State0=P 
        PORTD=0x43;
        DDRD=0x3E;
        
        // Timer/Counter 0 initialization
        // Clock source: System Clock
        // Clock value: Timer 0 Stopped
        // Mode: Normal top=FFh
        // OC0A output: Disconnected
        // OC0B output: Disconnected
        //TCCR0A=0x00;
        //TCCR0B=0x00;
        //TCNT0=0x00;
        //OCR0A=0x00;
        //OCR0B=0x00;
        
        // Timer/Counter 1 initialization
        // Clock source: System Clock
        // Clock value: Timer 1 Stopped
        // Mode: Normal top=FFFFh
        // OC1A output: Discon.
        // OC1B output: Discon.
        // Noise Canceler: Off
        // Input Capture on Falling Edge
        //TCCR1A=0x00;
        //TCCR1B=0x00;
        //TCNT1H=0x00;
        //TCNT1L=0x00;
        //ICR1H=0x00;
        //ICR1L=0x00;
        //OCR1AH=0x00;
        //OCR1AL=0x00;
        //OCR1BH=0x00;
        //OCR1BL=0x00;
        
        // External Interrupt(s) initialization
        // INT0: Off
        // INT1: Off
        // Interrupt on any change on pins PCINT0-7: Off
        //GIMSK=0x00;
        //MCUCR=0x00;
        
        // Timer(s)/Counter(s) Interrupt(s) initialization
        //TIMSK=0x00;
        
        // Universal Serial Interface initialization
        // Mode: Disabled
        // Clock source: Register & Counter=no clk.
        // USI Counter Overflow Interrupt: Off
        //USICR=0x00;
        
        // USART initialization
        // Communication Parameters: 8 Data, 1 Stop, No Parity
        // USART Receiver: On
        // USART Transmitter: Off
        // USART Mode: Asynchronous
        // USART Baud rate: 9600
        UCSRB=0x18;
        UCSRC=0x06;
        UBRRH=0x01;
        UBRRL=0x1F;
        
        // Analog Comparator initialization
        // Analog Comparator: Off
        // Analog Comparator Input Capture by Timer/Counter 1: Off
        // Analog Comparator Output: Off
        ACSR=0x80;
        
        // Global enable interrupts
        #asm("cli")
        
        InitLCD();
        printf(Disp4);
        GotoXY(2,0);      
        printf(Disp5);
        for(i=0;i<100;i++) wait(50000);
        Clear_Display();
        printf(Disp3);
        WriteInstrReg (LINE2_ADDR | DD_RAM_PTR);
        printf(Disp2);
        PrintTc(Tc);
        while (1)
              {           
        
              // Place your code here
        
        	for(i='A';i<'G';i++) lcd_putchar(i);
        	lcd_putchar('\n');
        	delay_ms(10000);
        	printf("Hello Mr Dung");
        	delay_ms(10000);
        	
              };
        }
        AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
        Xem thêm tại Online Store ---> Click here
        Mob: 0982.083.106

        Comment


        • #5
          mình vẫn chưa rõ lắm về cách sử dụng thư viện lcd.h để lập trình với codevisionAVR.Bạn có thể làm giúp một ví dụ cho mình rõ hơn đc ko? yêu cầu đặt ra là hiển thị dòng chữ " hello" ở giữa màn hình.Viết đầy đủ code từ đầu tới cuối ấy nha,đừng trich dẫn 1 đoạn là mình thua đó.Cám ơn trước nhé

          Comment


          • #6
            quên mất.Viết cho ATmega8 nha.Dùng LCD 2x16.Sử dụng lcd.h đó

            Comment


            • #7
              Nguyên văn bởi thehomeland Xem bài viết
              quên mất.Viết cho ATmega8 nha.Dùng LCD 2x16.Sử dụng lcd.h đó
              Trời, muốn hiểu bản chất thì bác phải tự tìm hiểu chứ bắt người ta viết code là thế nào? Cần kíp lắm thì mới làm vậy thôi bác ạ, bác tìm datasheet con DM0802 về mà đọc, nó nói rõ hết nguyên lý hoạt động của LCD đấy! Nếu không chịu tìm hiểu phần cứng thì suôt ngày bác chỉ đốt LCD mà thôi! Chúc bác thành công!
              Nỏ biết chữ mần răng ký được??!! Thôi nhé.

              Comment


              • #8
                Nguyên văn bởi thangktvta Xem bài viết
                Trời, muốn hiểu bản chất thì bác phải tự tìm hiểu chứ bắt người ta viết code là thế nào? Cần kíp lắm thì mới làm vậy thôi bác ạ, bác tìm datasheet con DM0802 về mà đọc, nó nói rõ hết nguyên lý hoạt động của LCD đấy! Nếu không chịu tìm hiểu phần cứng thì suôt ngày bác chỉ đốt LCD mà thôi! Chúc bác thành công!
                ban nói rất đúng. Nếu bỏ chút thời gian cùng lắm là 1 ngày, ta có thể hiểu và viết được chương trình đơn giản cho nó. Nhưng vơi thời buổi hiện đại này, internet đầy như vậy, việc tìm một đoạn code search trên WEB thì đầy mà. Chúng ta cần phải tự tìm hiểu một chút, tự tìm code, sau do tự làm, mắc mớ lúc đó mới nên hỏi, vi lúc đó có rất nhiều thắc mắc để hỏi,
                sẽ hiểu ra được rất nhiều. Còn một khi không chịu tìm hiểu, chỉ có hỏi và hỏi xin và xin thì sẽ chỉ biết được mỗi cái đó, sang cái khác lại đi hỏi. Như vậy thì chỉ bao giờ tiến bộ được.
                "Tiền có thể mua được đồng hồ, nhưng không mua được thời gian. Vì vậy chúng ta hãy biết quí trọng thời gian hơn"

                Comment


                • #9
                  Cám ơn lời khuyên của các bạn.Nhưng mà mình cũng đã lập trình cho LCD bằng các lệnh thông thường đc rồi.Chỉ có điều là vẫn ko biết sử dụng các hàm trong lcd.h như thế nào thôi.Mình muốn xem một ví dụ để biết rõ hơn cách sử dụng chúng.Chứ về nguyên lý hoạt động LCD thì mình cũng nắm sơ sơ rồi.
                  Cái thắc mắc của mình là tại sao lúc mình sử dụng các hàm trong lcd.h nó lại báo lỗi ở phần giải mã asm.Có lẽ là mình khai báo sai chân vi xử lý,ko phù hợp với các hàm của lcd.h chăng?Tự tìm hiểu nguyên nhân nhưng mà ko hiểu nên mới hỏi thế thôi.
                  Các bạn giúp mình tí đê

                  Comment


                  • #10
                    Nguyên văn bởi thehomeland Xem bài viết
                    Cám ơn lời khuyên của các bạn.Nhưng mà mình cũng đã lập trình cho LCD bằng các lệnh thông thường đc rồi.Chỉ có điều là vẫn ko biết sử dụng các hàm trong lcd.h như thế nào thôi.Mình muốn xem một ví dụ để biết rõ hơn cách sử dụng chúng.Chứ về nguyên lý hoạt động LCD thì mình cũng nắm sơ sơ rồi.
                    Cái thắc mắc của mình là tại sao lúc mình sử dụng các hàm trong lcd.h nó lại báo lỗi ở phần giải mã asm.Có lẽ là mình khai báo sai chân vi xử lý,ko phù hợp với các hàm của lcd.h chăng?Tự tìm hiểu nguyên nhân nhưng mà ko hiểu nên mới hỏi thế thôi.
                    Các bạn giúp mình tí đê
                    Bạn dùng thư viện lcd.h thì sao không dùng luôn công cụ tự động tạo mã của CV luôn đi ( CodewizardAVR ) trong đó có 2 tùy chọn cổng nối với LCd là B, D. cứ đấu như chỉ dẫn của CodewizardAVR là được, các hàm của nó thì bác xông thẳng vào thư viện Lcd.h tìm là thấy ...
                    Nhưng mà chú ý vụ fuse bit nếu bác có ý định đấu LCD vào PortB, còn nếu chọn PortD thì không ảnh hưởng Hòa bình

                    Comment


                    • #11
                      Nguyên văn bởi thehomeland Xem bài viết
                      Cám ơn lời khuyên của các bạn.Nhưng mà mình cũng đã lập trình cho LCD bằng các lệnh thông thường đc rồi.Chỉ có điều là vẫn ko biết sử dụng các hàm trong lcd.h như thế nào thôi.Mình muốn xem một ví dụ để biết rõ hơn cách sử dụng chúng.Chứ về nguyên lý hoạt động LCD thì mình cũng nắm sơ sơ rồi.
                      Cái thắc mắc của mình là tại sao lúc mình sử dụng các hàm trong lcd.h nó lại báo lỗi ở phần giải mã asm.Có lẽ là mình khai báo sai chân vi xử lý,ko phù hợp với các hàm của lcd.h chăng?Tự tìm hiểu nguyên nhân nhưng mà ko hiểu nên mới hỏi thế thôi.
                      Các bạn giúp mình tí đê
                      1. Cách dùng các hàm trong lcd.h thì bác có thể mở help ra mà đọc, có đủ hết từ lập trình mức thấp đến mức cao.
                      2. Lỗi biên dịch asm có nhiều nguyên nhân, dễ bị nhất đó là có khi nào đó bác mở lcd.h ra và vô tình thay đổi một chữ bất kì nào đó thế là bị lỗi, hoặc do phần mềm, do Window..... vân vân và vân vân...
                      Nỏ biết chữ mần răng ký được??!! Thôi nhé.

                      Comment


                      • #12
                        Ví dụ với ATmega16 nhé,mình có đoạn code sau:
                        #include <mega16.h>
                        #include <delay.h>
                        // Alphanumeric LCD Module functions
                        #asm
                        .equ __lcd_port=0x15 ;PORTC
                        #endasm
                        #include <lcd.h>
                        //hien thi dong chu "hello"
                        void main(void)
                        {
                        lcd_init(16);
                        lcd_clear();
                        lcd_gotoxy(0,0);
                        lcd_putsf("hello");
                        while (1) ;
                        }
                        Có lỗi gì ở đây vậy?lúc mô phỏng trên proteus mình thấy chân E của lcd lúc nào cũng ở mức 0,tất nhiên là ko hiển thị đc gì rồi.mà chân PORTD.6 và .7 thì ko có tín hiệu.bạn nào giúp mình với.
                        Làm thử theo trong phần help cũng thấy thế.Chỉ giùm nhé

                        Comment


                        • #13
                          Nguyên văn bởi thehomeland Xem bài viết
                          Ví dụ với ATmega16 nhé,mình có đoạn code sau:
                          #include <mega16.h>
                          #include <delay.h>
                          // Alphanumeric LCD Module functions
                          #asm
                          .equ __lcd_port=0x15 ;PORTC
                          #endasm
                          #include <lcd.h>
                          //hien thi dong chu "hello"
                          void main(void)
                          {
                          lcd_init(16);
                          lcd_clear();
                          lcd_gotoxy(0,0);
                          lcd_putsf("hello");
                          while (1) ;
                          }
                          Có lỗi gì ở đây vậy?lúc mô phỏng trên proteus mình thấy chân E của lcd lúc nào cũng ở mức 0,tất nhiên là ko hiển thị đc gì rồi.mà chân PORTD.6 và .7 thì ko có tín hiệu.bạn nào giúp mình với.
                          Làm thử theo trong phần help cũng thấy thế.Chỉ giùm nhé
                          Muốn hỏi bạn một câu: Bạn kết luận rằng nó ko làm việc được chỉ vì bạn mô phỏng nó ko đc?
                          Thế thì bạn xin sang học CNTT đi chứ học điện tử làm gì.
                          AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
                          Xem thêm tại Online Store ---> Click here
                          Mob: 0982.083.106

                          Comment


                          • #14
                            Nguyên văn bởi VNarmy Xem bài viết
                            Muốn hỏi bạn một câu: Bạn kết luận rằng nó ko làm việc được chỉ vì bạn mô phỏng nó ko đc?
                            Thế thì bạn xin sang học CNTT đi chứ học điện tử làm gì.
                            Hơi bị dị ứng đấy anh Army đâu phải dân IT nào cũng mô phỏng.

                            Sông dài, Thuyền lớn, Biển rộng bao la.
                            Tháo neo ngôn ngữ, lèo lái con thuyền kiến thức nhân loại.

                            Comment


                            • #15
                              hic.Tui đang mắc phần lập trình ,muốn hỏi để học cho nhanh chứ có phải là chỉ để mô phỏng như mấy bác nói đâu.Xem ra mấy bác muốn tui phải tự mày mò đây.Cám ơn các bác đã ko khích đểu tui để tui tự học nhá.Lên đây hỏi chỉ mất công chờ thui

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              • vi van pham
                                Trả lời cho Tự tìm công thức tính lưu lượng gió quạt điện dân dụng
                                bởi vi van pham
                                Dinhthuong ơi! cơ hội làm giàu của cháu đến rồi.

                                Trên thế giới toàn bộ : "Chân Vịt" cho tàu bè đều là cánh to, nó hao nhiên liệu, ma sát làm hư hao. Nay cháu sx chân vịt cánh nhò cho thế giới sử dụng, chân vịt của cháu...
                                Hôm qua, 21:25
                              • bqviet
                                Trả lời cho nguồn switching
                                bởi bqviet
                                Thông tin cá nhân bqv xin phép tránh nêu ở diễn đàn. Nghề nghiệp thì bao năm nay vẫn thế thôi : điện - điện tử - tự động hóa - IT. Làm ơn đừng hâm mộ, nhỡ có dịp gặp thật thì lại thất vọng vì thực tế không như mình nghĩ. Bqv xét...
                                Hôm qua, 21:16
                              • mèomướp
                                Trả lời cho Tự tìm công thức tính lưu lượng gió quạt điện dân dụng
                                bởi mèomướp
                                Dạ chú dinh... cứ xét hệ tại 1 thời điểm thì sẽ dễ hiểu hơn ạ, với cánh to thì mặt tiếp xúc lớn hơn, lực tác động vào đồng thời nhiều không khí hơn, nhìu không khí cùng chuyển động thì sẽ tạo lưu lượng gió lớn hơn ạ...
                                Hôm qua, 18:49
                              • mèomướp
                                Trả lời cho nguồn switching
                                bởi mèomướp
                                Dạ cháu hỏi lại chị hàng xóm nhà cháu rồi ạ, chị ấy bảo anh thợ sửa điều hòa tâm sự với chị ấy nên hông nhầm đâu ạ. Chú bq... hông tin thì có thể xem video này ạ
                                https://youtu.be/dvU8ZcvgYH4?si=15Sd_j3uxuWah9PR
                                Hôm qua, 17:30
                              • dinhthuong80
                                Trả lời cho Tự tìm công thức tính lưu lượng gió quạt điện dân dụng
                                bởi dinhthuong80
                                Cảm ơn bác ạ, nhờ chủ đề này, nhờ bác nhiệt tình chia sẻ mà mọi người biết thêm nhiều kiến thức về quạt điên, thiết bị điện tưởng chừng rất đơn giản chỉ chuyển điện thành cơ.

                                Tuy nhiên, chỗ in đậm cháu không đồng...
                                Hôm qua, 17:00
                              • bqviet
                                Trả lời cho nguồn switching
                                bởi bqviet
                                Hình như bạn mèomướp lộn chút. Mạch nguồn xung vốn chạy 220V, muốn chuyển sang chạy 110V thì có thể dùng mạch nhân áp; hoặc thậm chí chẳng phải làm gì nếu đó là nguồn xung flyback đầu vào dải rộng. Chứ mạch nguồn vốn chạy 110V hoặc 100V nay muốn chuyển sang chạy 220 thì phải thay một mớ đấy....
                                Hôm qua, 16:16
                              • milan
                                Trả lời cho nguồn switching
                                bởi milan
                                Đại ca bqviet năm nay bao nhiêu tuổi rồi, làm nghề gì nhỉ.
                                Ngày xưa em hâm mộ anh nhất diễn đàn mà chưa có dịp gặp....
                                Hôm qua, 11:51
                              • mèomướp
                                Trả lời cho nguồn switching
                                bởi mèomướp
                                Dạ ai lại làm như chú bq... ạ. một số dòng điều hòa của nhật bên trong nó có mạch nhân áp thì bỏ qua mạch ấy là chạy 220v được ạ. Còn máy hàn thì cháu hông biết nó có thể làm vậy ko, chú tháo ra xem mạch mới biết được ạ...
                                Hôm qua, 07:09
                              • tuyennhan
                                Trả lời cho Tự tìm công thức tính lưu lượng gió quạt điện dân dụng
                                bởi tuyennhan
                                Senko này là sử dụng cánh nhỏ đầu tiên , hình dáng đẹp giá vừa phải nhưng lại thiết kế sai ở chổ thêm nối tiếp cầu chì nhiệt vào đàu dây chung mô tơ , sử dụng lâu quạt tăng nhiệt cầu chì đứt thế là hết xài dù những linh kiện...
                                Hôm qua, 07:07
                              • vi van pham
                                Trả lời cho Tự tìm công thức tính lưu lượng gió quạt điện dân dụng
                                bởi vi van pham
                                Tất ca kiến thức về quạt của tôi do thầy hiệu trưởng Nguyễn Hồng Lam tốt nghiệpp kỹ sư bên Mỹ giảng dạy. Cánh quạt cong cũng là thầy dạy , nó tạo khí động học.

                                Tôi đã dùng ngôn ngữ bình dân để thuyết minh cho mọi người...
                                Hôm qua, 01:36
                              Đang tải...
                              X