Thông báo

Collapse
No announcement yet.

Adc_voi_pic_16f877a

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

  • Adc_voi_pic_16f877a

    Chào các bác!
    các bác cho em hỏi ti!
    em dùng pic16f877a nhưng em gặp vấn đề là!
    khi đọc ADC một kênh thì làm được!
    nhưng khi em muốn đọc nhiều hơn 1 kênh (2,3 kênh hoặc nhiều hơn) thì em không làm được!
    mong các bác chỉ giúp!
    các bác có đoạn code nào thì porst lên cho em với!
    thanks!@

  • #2
    PIC16F877 chỉ có 1 Modul ADC. Khi bạn cần chuyển đổi các chân tín hiệu vào cần đo ( Kênh ) thì bạn cần chú ý đến mấy thanh ghi cơ bản sau là ổn : Thanh ghi TRISx tương ứng với chân mà bạn chọn chân đó là tín hiệu Analog cần đo. Giá trị TRISx này cần phải set lên 1. Tiếp đến là các thanh ghi ADCON0 và ADCON1. khi bạn đọc kênh khác thì bạn phải chắc chắn là các thanh ghi trên đã được xác lập với giá trị thích hợp.
    Tốt nhất bạn nên Post code lên thì sẽ rõ hơn.

    Kích từ, điều tốc, nhiệt độ , mức dầu, bảo vệ, đo mực nước, thông báo lũ...cho nhà máy Thủy Điện

    Comment


    • #3
      Nguyên văn bởi tran truong Xem bài viết
      Chào các bác!
      các bác cho em hỏi ti!
      em dùng pic16f877a nhưng em gặp vấn đề là!
      khi đọc ADC một kênh thì làm được!
      nhưng khi em muốn đọc nhiều hơn 1 kênh (2,3 kênh hoặc nhiều hơn) thì em không làm được!
      mong các bác chỉ giúp!
      các bác có đoạn code nào thì porst lên cho em với!
      thanks!@
      Đã trả lời một câu hỏi tương tự ở picvietnam rồi, bạn xem ở đây nhé (post #7 và #8):
      http://www.picvietnam.com/forum//showthread.php?p=18426

      Thân,
      Biển học mênh mông, sức người có hạn

      Comment


      • #4
        Đoạn code sau khi thay đổi trị CHANEL bạn sẽ thay đổi kênh ADC


        HTML Code:
        ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        	;CAC BIEN DUNG CHO ADC
        ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        CHANEL				;BIEN LUU TRI SO CHANEL :	.0	.1	.2	.3	.4	
        TEMP_ISR			;Bien trung gian
        ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        .
        .
        .
        .
        .
        .
        
        ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        							;CHUONG TRINH DOC ADC : READ_ANALOG
        ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        READ_ANALOG
        
        					MOVLW	.4
        					MOVWF	PCLATH
        					MOVF	CHANEL, W				;THIET LAP CHANEL TREN ADCON0
        					CALL	TABLE_CHANEL
        
        					MOVWF	ADCON0		
        					BSF		ADCON0,ADON				;DAT ADC O CHE DO : ON
        					MOVLW	.70
        					MOVWF	TEMP_ISR
        ACQUILOOP			DECFSZ	TEMP_ISR,F
        					GOTO	ACQUILOOP
        					BSF		ADCON0,GO				;SET BIT COLAYMAU : GO =1
        CONVERTLOOP			BTFSC	ADCON0,GO				;CHO DEN KHI PHAN CUNG XOA BIT COLAYMAU : GO =0
        					GOTO	CONVERTLOOP
        					BSF		STATUS,RP0				;QUA BANK1
        					MOVF	ADRESL,W				;LAY GIA TRI KET QUA BYTE THAP VAO W
        					BCF		STATUS,RP0				;TRO VE BANK0
        					MOVWF	L_BYTE					;LUU W VAO L_BYTE
        					MOVF	ADRESH,W
        					MOVWF	H_BYTE					;LUU GIA TRI BYTE CAO VAO H_BYTE
        					BCF		ADCON0,ADON				;DAT ADC VE CHE DO : OFF
        
        
        EXIT_ANALOG			RETURN
        
        
        
        				ORG	400
        ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        ;									PHU LUC
        ;	CAC BANG DUNG TRONG TINH TOAN:
        ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        TABLE_CHANEL
        					ADDWF	PCL, F
        					RETLW	B'10000000'		;CHANEL=0
        					RETLW	B'10001000'		;CHANEL=1
        					RETLW	B'10010000'		;CHANEL=2
        					RETLW	B'10100000'		;CHANEL=3
        					RETLW	B'10101000'		;CHANEL=4

        Comment


        • #5
          Vâng cảm ơn các bác!
          em thử làm xem sao????

          Comment


          • #6
            setup_adc_ports(AN0_AN1_AN3);
            setup_adc(ADC_CLOCK_INTERNAL);

            Nếu muốn đọc toàn bộ, thì dùng lệnh setup_adc(ALL_ANALOG).
            Lệnh trên cho CCS sẽ setup Adc đọc 3 kênh.
            Đọc giá trị từng kênh:
            Code:
            set_adc_channel(0);  // chọn kênh 0
            delay_us(10);
            adc0 = read_adc();
            
            set_adc_channel(1);  // chọn kênh 1
            delay_us(10);
            adc1 = read_adc();
            Bám vào phần Help của CCS để nắm hết các lệnh, hàm.
            Ethernet-RS232, PIC Webserver, RFID Reader
            CallerID, Cảnh báo BTS, ...
            0988006696
            linhnc308@gmail.com
            http://linhnc308.blogspot.com

            Comment


            • #7
              Vâng!
              nhưng em có đoạn code thế này! Em dùng 6 kênh analog còn chân ra2 làm vref-, ra3 làm vref+; không biết sai ở đâu mà không sao đọc được! khi hiển thị lên lcd thì chỉ thấy hiện các số cố định. khi thay đổi biến trở đê thay đổi điện áp đầu vào thì vẫn không có hiện tượng gì????
              các bác giúp em với!
              thanks!
              Code:
              #include <16f877a.h>
              #include <def_877a.h>
              #device *16ADC =8
              #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
              #use delay(clock=8000000)
              #include <lcd_lib_4bit.c>
              #include <math.h> 
              
              float value1,value2;
              int16 a,b;
              int8 a1,a2,a3,a4,b1,b2,b3,b4;
              void main()
              {
              trisa=0x3f;
              trise=0x07;
              
                setup_adc_ports(AN0_AN1_AN4_AN5_AN6_AN7_VREF_VREF );
              //  setup_adc(ADC_CLOCK_INTERNAL);
               setup_adc(ADC_CLOCK_DIV_2); 
              while(1)
              {
               set_adc_channel(0);
                 delay_ms(1);
               value1 = (float)read_adc();
               delay_ms(1);
               a=(int16)(value1*5000)/255;
               a1= a/1000+48;
               a2=(a-a1*1000)/100+48;
               a3=(a-a1*1000-a2*100)/10+48;
               a4= (int8)a%10+48;
               lcd_putcmd(0x80);
                  lcd_putchar(a1);
                  lcd_putchar(a2);
                  lcd_putchar(a3);
                  lcd_putchar(a4);
               set_adc_channel(2);
                 delay_ms(1);
              value2 = (float)read_adc();
                delay_ms(1);
               b=(int16)(value2*5000)/255; 
               b1= b/1000+48;
               b2=(b-b1*1000)/100+48;
               b3=(int8)(b-b1*1000-b2*100)/10+48;
               b4= (int8)b%10+48;
                lcd_putcmd(0xC0);
                  lcd_putchar(b1);
                  lcd_putchar(b2);
                  lcd_putchar(b3);
                  lcd_putchar(b4);
                  delay_ms(300);
               lcd_putcmd(0x01); 
              }
              }
              Last edited by tran truong; 29-08-2008, 23:20.

              Comment

              Về tác giả

              Collapse

              tran truong Tìm hiểu thêm về tran truong

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

              Collapse

              • mèomướp
                Trả lời cho Sửa bộ nguồn DC 60V 45A
                bởi mèomướp
                Dạ hông dám làm thì chắc chắn sẽ mãi ko thể làm được đâu ạ. Nguồn xung dân dụng vài kw giờ rất nhìu ạ, sạc ô tô điện, máy hàn, lò vi sóng, âm ly... tùy chất lượng mà độ phức tạp sẽ khác nhau ạ. Và cái giá phải trả về kinh tế...
                Hôm qua, 13:11
              • tuyennhan
                Trả lời cho Sửa bộ nguồn DC 60V 45A
                bởi tuyennhan
                Sửa dạng này thì chuyên còn không dám chắc khộng cháy nổ với linh kiện bán ngoài chợ nói gì khộng chuyên .
                Hôm qua, 09:25
              • tuyennhan
                Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                bởi tuyennhan
                Đúng rồi chọn mua theo tai . ca thì phải toàn dải nhạc thì chỉ cao và thấp thé nên loa ca thì nghe nhạc không hay và ngược lại .
                Muốn ca và nhạc đều hay thì phải dúng 2 giàn , còn nếu chỉ có 1 thì phải chỉnh sửa lại sao cho ca và nhạc đều được không quá dở ....
                Hôm qua, 09:10
              • Ng.Phuong.5
                Vấn đề in lỗ khoan ra pdf ở Orcad 9.2
                bởi Ng.Phuong.5
                Vấn đề cũ: khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau. Mặc dù có linh kiện phần Drill là 1mm, có linh kiện thì là 3mm. Cho em hỏi cách sửa phần này ở Orcad 9.2 với ạ.
                Mấy con...
                09-01-2025, 19:44
              • viettinh
                Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                bởi viettinh
                Bác nói đúng quá. Cơ mà muốn mua hàng chính hãng, hàng thương hiệu mà tai lại hợp hàng tầu mới khổ chứ.
                Đang tính mua cái loa tầu nữa cột đằng sau loa này, Loa sony chỉ để hát nhép thôi, có dc k các bác ...
                09-01-2025, 18:12
              • nguyendinhvan
                Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                bởi nguyendinhvan
                Theo tôi thì khi hpj sản xuất ra cái loa đó, đã có nhiều chuyên gia kỹ thuật hiệu chỉnh, tính toán các phần tử kỹ lưỡng rồi.
                Bây giờ tính toán hiệu chỉnh lại cần có đội ngũ tương đương với nhà sản xuất.
                Cách đơn giản...
                09-01-2025, 00:04
              • mèomướp
                Trả lời cho Sửa bộ nguồn DC 60V 45A
                bởi mèomướp
                Dạ cháu có ý tốt muốn động viên chú ấy ngâm cứu khoa học thôi ạ. Về phần kiểm tra dao động thì chú ấy chưa biết thì sẽ tìm hiểu được là cần những gì ạ, chắc chắn là khi hướng dẫn phần ấy các cô chú nào đó sẽ lưu ý cần loại sò công suất ra tránh cháy nổ rồi ạ....
                08-01-2025, 19:02
              • tuyennhan
                Trả lời cho Sửa bộ nguồn DC 60V 45A
                bởi tuyennhan
                Chủ thớt hỏi có kiểm tra được dao động mà không cấp nguồn thì rõ trình ở mức nào mà mèo còn xúi ngâm cứu nữa ác vậy ....
                08-01-2025, 15:43
              • tuyennhan
                Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                bởi tuyennhan
                Loa bass đấu trực tiếp không qua phân tần để thành loa toàn dải xem có thoát tiếng khộng , nếu không thoát cần phải sửa lại mạch cs hay âm sắc nếu đủ trình còn nếu thoát ca hay nhưng chưa vừa ý vì bass kém chăc thì đấu lại như cũ và đấu thêm loa mid treble bên ngoài .
                08-01-2025, 15:28
              • mèomướp
                Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                bởi mèomướp
                Dạ loa tép bé xíu như ngón chân cái thôi ạ. Thiếu gì chỗ để đâu. Quan trọng là gắn thêm nó loa nghe ok hay ko thôi ạ...
                08-01-2025, 11:44
              Đang tải...
              X