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

                              Đang tải...
                              X