Thông báo

Collapse
No announcement yet.

Xuất tín hiệu từ adc --> lcd

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

  • Xuất tín hiệu từ adc --> lcd

    E muốn đưa tín hiệu vào bộ ADC con mega16 thông wa biến trở, sau đó cho hiển thị điện áp ra LCD 16x2, nhờ mọi người giúp e viết chương trình. cảm ơn.

  • #2
    mọi ng đọc xong thì giúp dùm em đi, sao hok thấy ai trả lời ji hết

    Comment


    • #3
      Nguyên văn bởi yeunhan777 Xem bài viết
      E muốn đưa tín hiệu vào bộ ADC con mega16 thông wa biến trở, sau đó cho hiển thị điện áp ra LCD 16x2, nhờ mọi người giúp e viết chương trình. cảm ơn.
      Bạn phải nói rõ bạn dùng cụ thể vào ứng dụng gì.Nếu đơn giản chỉ là làm để học thì bạn nên tự nghiên cứu rồi viết chương trình và post lên diễn đàn để mọi người có thể sửa giúp bạn.Qua đó bạn sẽ dễ hình dung chương trình mình viết và học được nhiều hơn.Đây là tài liệu bạn có thể tham khảo: cdtvn.net/attachments/418_giaotrinhAVR.pdf

      :

      Comment


      • #4
        Em cần xuất tín hiệu từ AD ra LCD để dùng cho đồ án tuyến tính hóa tin hiệu, điều chỉnh b/trở cho xuất điện áp ra LCD. CD: vặn b/trở min (hiện 0v) - max (hiện 5v). mong mọi người giúp đỡ.

        Comment


        • #5
          Bạn đã viết được thế nào rồi, đưa lên rồi mọi người cùng góp ý để hoàn thiện như thế dễ tiếp thu hơn. Bạn dùng C hay ASM? Nếu dùng C thì trong Codevision đã có sẵn thư viện cả rồi, nếu dùng C với WinAVR thì bạn lên trang hocavr.com cũng có hướng dẫn chi tiết và code mẫu.
          Chúc vui!

          Comment


          • #6
            Mình đã viết bài "xin được chỉ giáo", có code lun, nhưng chưa hoàn chỉnh, mọi ng ghé wa giúp dùm. cảm ơn

            Comment


            • #7
              mình củng đang làm chuyển đổi ADC dùng Atmage16, mình làm ma chưa xong, cần tài liệu liên quan tới, mình mói down bạn qchien mình đọc rất dẽ hiểu, mong các bạn co tài liệu thi chuyển đổi ADC của AVR thi up lên cho minh tham khao nha" thank?"

              Comment


              • #8
                ADC1.zip
                Bạn nên đọc và tìm hiểu trước, mình cũng twj tìm hiểu và viết rất nhanh code đơn giản để đo điện áp từ bộ trở chia.
                Xem code đầy đủ và mô phỏng bằng proteus.
                Nếu có ích, hãy click thanks nhé
                Điện tử KME,cung cap linh kien SMD, Sensor, dat hang linh kien dien tu...
                Số 2, Ngõ 53, Dịch Vọng, Cầu Giấy, hà Nội

                Comment


                • #9
                  thank ban minh cung tìm hiểu tới chỏ đó rồi, bài của bạn củng giúp cho mình nhieu, mình dang tìm hieu để biến đổi giá trị điện thành giá trị nhiệt độ, má nó cứ nhảy lung tung, khi thi 3 do, chỉnh tiếp nó ko lên 4 , 5 mà nhảy lên số khác minh ko bjt xu sao nua?

                  Comment


                  • #10
                    Theo mình đoán, bạn đang test trên mạch thật nên thấy hiện tượng này và bạn cũng chưa làm nhiều về cái này nhỉ.
                    Nếu trong mô phỏng, bạn sẽ thấy rất tuyến tính, đơn giản vì là lý tưởng không giốngi trong môi trường thực tế, 99% bạn dùng nhiệt điện trở (NTC) .
                    Một số vần đề cần lưu ý:
                    - Thuật toán, công thức tính nhiệt độ từ điện áp đã chuẩn chưa
                    - Nguồn REF, điện áp chuẩn (điện áp dùng cấp cho bộ chia điện trở) có ổn định không, bạn nên sử dụng tụ lọc và diode zener để đảm bảo điện áp này thật phẳng. Nếu có thể, mua 1 con LDO công suất nhỏ (thường gọi là REF) để làm điện áp chuẩn này
                    - Khi chuyển đổi áp -> nhiệt độ, hãy lấy trung bình một số lượng mẫu phù hợp, như vậy nhiệt độ chuyển đổi sẽ ko bị dao động nhiều.
                    Hy vọng những kinh nghiệm này sẽ giúp ích cho bạn

                    THANKS
                    Khang Minh Electronic
                    Điện tử KME,cung cap linh kien SMD, Sensor, dat hang linh kien dien tu...
                    Số 2, Ngõ 53, Dịch Vọng, Cầu Giấy, hà Nội

                    Comment


                    • #11
                      hj, cho mình hỏi? đoạn code của mình khi xuất ra LCD no chi hiện 3f v, nhu cua pan vay, ranh thi giúp minh thu nha: thank

                      /************************************************** ***
                      This program was produced by the
                      CodeWizardAVR V1.24.6 Standard
                      Automatic Program Generator
                      © Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l.
                      http://www.hpinfotech.com
                      e-mail:office@hpinfotech.com

                      Project :
                      Version :
                      Date : 7/1/2011
                      Author : F4CG
                      Company : F4CG
                      Comments:


                      Chip type : ATmega16L
                      Program type : Application
                      Clock frequency : 4.000000 MHz
                      Memory model : Small
                      External SRAM size : 0
                      Data Stack size : 256
                      ************************************************** ***/

                      #include <mega16.h>
                      #include <stdlib.h>
                      #include <stdio.h>
                      #include <delay.h>
                      // Alphanumeric LCD Module functions
                      #asm
                      .equ __lcd_port=0x15 ;PORTC
                      #endasm
                      #include <lcd.h>

                      #define FIRST_ADC_INPUT 0
                      #define LAST_ADC_INPUT 7
                      unsigned int adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
                      #define ADC_VREF_TYPE 0x00

                      // ADC interrupt service routine
                      // with auto input scanning
                      interrupt [ADC_INT] void adc_isr(void)
                      {
                      register static unsigned char input_index=0;
                      // Read the AD conversion result
                      adc_data[input_index]=ADCW;
                      // Select next ADC input
                      if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT))
                      input_index=0;
                      ADMUX=(FIRST_ADC_INPUT|ADC_VREF_TYPE)+input_index;
                      // Start the AD conversion
                      ADCSRA|=0x40;
                      }

                      // Declare your global variables here

                      void main(void)
                      {
                      unsigned int val;
                      float value;
                      char str[16];
                      // Declare your local variables here

                      // Input/Output Ports initialization
                      // Port A initialization
                      // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                      // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                      PORTA=0x00;
                      DDRA=0x00;

                      // Port B initialization
                      // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                      // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                      PORTB=0x00;
                      DDRB=0x00;

                      // Port C initialization
                      // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                      // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                      PORTC=0x00;
                      DDRC=0x00;

                      // Port D initialization
                      // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                      // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                      PORTD=0x00;
                      DDRD=0x00;

                      // Timer/Counter 0 initialization
                      // Clock source: System Clock
                      // Clock value: Timer 0 Stopped
                      // Mode: Normal top=FFh
                      // OC0 output: Disconnected
                      TCCR0=0x00;
                      TCNT0=0x00;
                      OCR0=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
                      // Timer 1 Overflow Interrupt: Off
                      // Input Capture Interrupt: Off
                      // Compare A Match Interrupt: Off
                      // Compare B Match Interrupt: Off
                      TCCR1A=0x00;
                      TCCR1B=0x00;
                      TCNT1H=0x00;
                      TCNT1L=0x00;
                      ICR1H=0x00;
                      ICR1L=0x00;
                      OCR1AH=0x00;
                      OCR1AL=0x00;
                      OCR1BH=0x00;
                      OCR1BL=0x00;

                      // Timer/Counter 2 initialization
                      // Clock source: System Clock
                      // Clock value: Timer 2 Stopped
                      // Mode: Normal top=FFh
                      // OC2 output: Disconnected
                      ASSR=0x00;
                      TCCR2=0x00;
                      TCNT2=0x00;
                      OCR2=0x00;

                      // External Interrupt(s) initialization
                      // INT0: Off
                      // INT1: Off
                      // INT2: Off
                      MCUCR=0x00;
                      MCUCSR=0x00;

                      // Timer(s)/Counter(s) Interrupt(s) initialization
                      TIMSK=0x00;

                      // Analog Comparator initialization
                      // Analog Comparator: Off
                      // Analog Comparator Input Capture by Timer/Counter 1: Off
                      ACSR=0x80;
                      SFIOR=0x00;

                      // ADC initialization
                      // ADC Clock frequency: 125.000 kHz
                      // ADC Voltage Reference: AREF pin
                      // ADC Auto Trigger Source: None
                      ADMUX=FIRST_ADC_INPUT|ADC_VREF_TYPE;
                      ADCSRA=0xCD;

                      // LCD module initialization
                      lcd_init(16);

                      // Global enable interrupts
                      #asm("sei")

                      while (1)
                      {
                      // Place your code here
                      val = adc_data[0];
                      value = val;
                      value = value/1024*5;
                      lcd_clear();
                      lcd_gotoxy(0,0);
                      sprintf(str,"%2.3f",value);
                      lcd_puts(str);
                      lcd_putsf("V");

                      delay_ms(500);
                      };
                      }

                      Comment


                      • #12
                        mình coi giống đoạn text của ban, cú phap sprintf(str,"%2.3f",value); ma no cha ra gj hết,

                        Comment


                        • #13
                          Chào bạn,
                          Sorry, mấy hôm nay bận quá nên không có thời gian đọc bài của mọi người.Cái này đơn giản thôi bạn, do bạn cấu hình khi complie chưa đúng. Bạn vào setting khi compile, trong cái chọn thiết lập sprintf , printf bạn hãy chọn float thay vì integer....lựa chọn dưới cùng ý, khi đó stdio mới giúp bạn xuất chuối số thực ra.
                          bạn xem trong câu hình ví dụ của mình sẽ thấy rõ vấn đề.
                          Thân,

                          Khang Minh Electronics
                          http;//kme.com.vn
                          Điện tử KME,cung cap linh kien SMD, Sensor, dat hang linh kien dien tu...
                          Số 2, Ngõ 53, Dịch Vọng, Cầu Giấy, hà Nội

                          Comment


                          • #14
                            mình vao setting kiếm ma ko thay cai ban chi dau ca, thay co 4 muc editor ,debugger, programmer, terminal thoi , minh co kem phai anh theo day, con cái bạn chi thì mình chưa kiếm ra ban ak. thank nhieu nha

                            Comment


                            • #15
                              mình hiểu ý bạn Khang Minh là vào project -> configure -> c complier là sẽ thấy.
                              thân!

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              • dinhthuong80
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi dinhthuong80
                                Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.

                                Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...
                                hôm nay, 14:51
                              • dinhthuong80
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi dinhthuong80
                                Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.

                                Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...
                                hôm nay, 14:39
                              • dinhthuong80
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi dinhthuong80
                                Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.

                                Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...
                                hôm nay, 14:28
                              • bqviet
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi bqviet
                                Đúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
                                Hôm qua, 20:26
                              • mèomướp
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi mèomướp
                                Dạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
                                Hôm qua, 12:32
                              • vi van pham
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi vi van pham
                                Những lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).

                                Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...
                                20-02-2025, 21:31
                              • bqviet
                                Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )
                                bởi bqviet
                                Thiết nghĩ thi thoảng bác lên đây chia xẻ ít kinh nghiệm cũng vui rồi. Còn chuyện con người sinh lão bệnh tử là thường, sống cùng với quy luật đó thôi. Bqv nhớ trước đây bác từng kể về chuyện rang chì ô-xít bằng chảo để phục hồi bình điện, đấy cũng là thành quả đáng nể phục ở thời kỳ thiếu thốn đó.
                                20-02-2025, 17:22
                              • dinhthuong80
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi dinhthuong80
                                Tiếng Anh, Đình Thường phải nói là rất tệ, khiến việc giao tiếp đời thường thôi cũng khó chứ nói gì về kĩ thuật.

                                Nhân tiện, nhờ các bạn, các bác xem giúp thư ĐT viết thế này liệu có thể gửi tới địa chỉ nhận hay chăng,...
                                20-02-2025, 11:52
                              • vi van pham
                                Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )
                                bởi vi van pham
                                Uống rượu 1 mình, thấy trang này nhớ lại cách đây vài chục năm hàn thiếc với inox cực kỳ khó, phải dùng acid Hcl tác dụng lên kẻm Zn để có Zncl2 làm thuốc trợ hàn, lúc đó làm gì có acid Hcl và thuốc trợ hàn?

                                Cái khó bó cái...
                                19-02-2025, 23:05
                              • nhathung1101
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi nhathung1101
                                Nếu chú tâm thì học tiếng Việt cũng đủ rồi, thừa sức làm việc rồi.

                                Học tiếng Anh cũng chỉ phụ trợ để đọc thêm tài liệu, hướng dẫn.

                                Nhưng có hiểu điều đó không mới là vấn đề. Khi mà học ngoại ngữ để đi đạp xích lô đón khách???...
                                19-02-2025, 21:27
                              Đang tải...
                              X