Thông báo

Collapse
No announcement yet.

Co bac nao biet ve giao tiep ADC voi 8051 chi em voi

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

  • #16
    goi minh` nua
    Khó nhất trên đời làm trang nam tử
    Ý chí vững vàng mà tình cảm lại mênh mang

    Comment


    • #17
      có bác nào viết chương trình này bằng Keil C không giúp đệ với?

      Comment


      • #18
        toàn lũ lười biếng,không lo lam chi lo xin xỏ mà không biết ngượng,các bác cao thủ làm ơn đừng dễ dãi cho sẵn tùm lum,làm mấy em nó liệt não hết.

        Comment


        • #19
          Tôi có một số ví dụ về giao tiếp C51 với ADC (parallel, serial) của hãng Texas, viết bằng Keil/C. Mạch rất đơn giản (chip ADC không phải ghép thêm các component ngoài), đặc biệt với loại giao tiếp serial rất tiết kiêm pin của VĐK. Có kèm theo cả sơ đồ mạch điện, source code.
          Các bác có thể tham khảo tại link:
          http://www.diendandientu.com/diendan...d?thread=10222
          0912666017

          Comment


          • #20
            Nguyên văn bởi linhnc308 Xem bài viết
            ADC08004 và ADC0809 tôi đều đã làm rồi, chỉ đơn giản thôi, kô biết cậu luusang dung loại nào, Đây thôi đua ra một ví dụ cho 0809.

            #include <sfr51.inc> ;Chen files chua cac dinh nghia ve thanh ghi trong 8051
            ;CT giao tiep voi ADC0809 va cam bien LM35D
            ;Ket noi giua ADC0809 va MCU AT89S52
            ; P3.5 = RD
            ; P3.6 = Start
            ; P3.7 = Output_enable
            ; P1(0..7) = D0 -> D7
            ;********************************************
            ;Ket noi cac den LED7 thanh voi AT89S52
            ;a...g = P0
            ;P2.0 = LED1 Chu C
            ;P2.1 = LED2 ky tu do
            ;P2.3 = LED3 Hang don vi
            ;P2.4 = LED4 hang chuc
            ;43H - Dia chi RAM chua so hang chuc
            ;42h - Dia chi RAM chua so hAng don vi
            ;40h,41h - Dia chi RAM chua ky hieu do C
            ;*******************************************
            ; Dinh nghia cac bien tai day

            Out_data bit P3.7
            Start bit P3.6

            ORG 0000h ; Dia chi bat dau cua Rom
            LJMP MAIN
            ORG 0003h
            LJMP Read_ADC0809 ; Dia chi bat dau vecto ngat ngoai
            ;ORG 000BH ; Vector ngat Timer0
            ;LJMP T0ISR
            ;ORG 001BH ; Vector ngat Timer1
            ;LJMP T1ISR

            ORG 0030H ; Dia chi bat dau Chuong trinh chinh
            MAIN: ; Khoi tao cac gia tri ban dau
            ;SETB IT0 ; TAC DONG CANH AM (cho chan P3.2 la chan vao cua ngat ngoai)
            ; Khi co xung tu cao xuong thap thi ngat xay ra
            ;MOV TMOD,#11H ; CHE DO 16 BIT cho Timer0 va Timer1
            ;MOV IE,#81H ; Gan 81h vao thanh ghi IE la thanh ghi cho phep ngat
            ; Cho phep cac ngat hoat dong (ngat ngoai,ngat do Timer0,1)
            MOV P1,#0FFH ; Thiet lap P1 la chan vao du lieu
            MOV P3,#0FFH
            MOV DPTR,#LED7SEG ; Dua DPTR tro toi bang giai ma hien thi cho LED7
            SETB P0.0 ; Tat het tat ca cac LED
            SETB P0.1
            SETB P0.2
            SETB P0.3
            CLR Start
            CLR Out_data
            MOV 40H,#C6H ; Chu C
            MOV 41H,#9CH ; Ky tu do
            ;acall send_start
            ;acall Read_ADC0809
            mov R6,#0
            BACK:
            ;inc r6
            ;cjne r6,#200,next
            acall send_start
            acall read_0809
            ;mov r6,#0
            next: ; Goi chuong trinh hien thi
            LCALL DISPLAY ; Goi chuong trinh con hien thi ra LED7
            SJMP BACK ; Chuan bi cho qua trinh chuyen doi tiep theo
            Read_ADC0809:
            nop
            nop
            nop
            nop
            nop
            HERE: JB P3.2, HERE ; Doi cho qua trinh chuyen doi xong(100us)
            setb out_data ; Dua xung muc thap toi chan RD - cho phep doc du lieu tu ADC(Xuat ra D0..D7)
            nop
            nop
            MOV A,P1 ; Dua du lieu 8bit tu P1 den thanh ghi A
            LCALL BIN2BCD ; tra bang, doi BCD -> LED 7 doan
            clr out_data
            ret

            DISPLAY:
            MOV P2,40H
            CLR P0.0 ;Bat LED1
            ACALL DELAY
            SETB P0.0 ;TAT LED 1

            MOV P2,41H
            CLR P0.1
            ACALL DELAY
            SETB P0.1 ;TAT LED 2

            MOV P2,42H ; LED1 Hang don vi
            CLR P0.2 ; ba^.t LED1 sa'ng
            ACALL DELAY ; delay
            SETB P0.2 ; ta('t LED1

            MOV P2,43H ; LED2 hang chuc
            CLR P0.3 ; ba^.t LED2 sa'ng
            ACALL DELAY ; delay
            SETB P0.3 ; ta('t LED2
            RET

            BIN2BCD:;Chuong trinh chuyen doi tu so hex sang BCD
            ; gia tri doc tu ADC lu trong thanh ghi A
            clr c
            subb a,#139
            clr c
            rlc a
            mov b,#10
            div ab
            mov 42H,b
            mov 43H,a

            MOV A,42h ; Lay thong tin LED7 cua so don vi
            MOVC A,@A+DPTR
            MOV 42h,A
            MOV A,43H ; Lay ma LED7 cua so hang chuc
            MOVC A,@A+DPTR
            MOV 43H,A
            RET
            Send_start:
            SETB Start
            nop
            nop
            nop
            CLR Start
            acall delay120us
            ret
            delay120us:
            MOV TH1,#HIGH(-120)
            MOV TL1,#LOW(-120)
            SETB TR1
            JNB TF1,$
            CLR TR1
            CLR TF1
            RET
            ;*********************************************
            DELAY: ; Tao tre trong qua trinh quet cac LED7 Thanh
            MOV R1,#2 ; Thoi gian quet moi LED la 2x255us
            LOOP: MOV R0,#50 ; Nguyen tac quet LED la cac LED duoc quet lien tiep nhau trong thoi gian rat ngan
            loop2: DJNZ R0,LOOP2 ; Do su luu anh tren vong mac nguoi nen ta thay cac LED nhu sang lien tuc
            DJNZ R1,LOOP ; Thoi gian quet tuy thuoc ham DELAY, gia tri R1 cang lon thi cac LED se nhap nhay
            RET ; Toi thieu phai dam bao du 24hinh/giay

            Tao_am: ;Bat dau chuong trinh ngat tao am hieu 500Hz tai chan P0.6
            MOV R7,#20 ;Khi ngat ngoai xay ra thi chuong trinh EX0ISR duoc goi, NAp 20 vao thanh ghi R7
            SETB TF0 ; Bat co ngat TF0
            SETB TF1 ; Bat co ngat TF1
            SETB ET0 ; Cho phep ngat boi Timer0 hoat dong
            SETB ET1 ; Cho phep ngat boi Timer1 hoat dong
            RETI ; Tro ve chuong trinh chinh
            ; De su dung ngat noi chan P0.7 voi chan P3.2, con chan P0.6 noi ra loa ben ngoai
            ; se tao ra am hieu 500Hz trong 1 giay
            T0ISR: ;Ngat do Timer0
            CLR TR0 ; Xoa TR0, tam ngung, khong cho bo dinh thoi Tomer0 hoat dong
            DJNZ R7,SKIP ; Giam R7 di 1 va nhay nay R7 =0
            CLR ET0
            CLR ET1
            LJMP EXIT
            SKIP:
            MOV TH0,#HIGH(-50000) ;Nap gia tri ban dau cho TH0 va TL0
            MOV TL0,#LOW(-50000)
            SETB TR0
            EXIT: RETI

            T1ISR: ;Ngat do Timer1
            CLR TR1
            MOV TH1,#HIGH(-1250)
            MOV TL1,#LOW(-1250)
            CPL P0.6
            SETB TR1
            RETI

            LED7SEG:
            DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
            DB 88H,0C6H,86H,8EH,82H,89H,7FH,FFH
            END

            Chuong trinh dung Reaads51 để dịch ra files HEX.
            Còn với ADC0804 thì cứ xem datasheet sẽ có lập trình phù hợp. Nói chung tất cả các loại ADC.
            o day bac co dung mach khuêch đại không vậy

            Comment


            • #21
              em đang làm đồ án đo nhiệt độ với con adc 0804 +LM35d làm mãi mà không chạy hổng biết tại sao ? ai giúp với

              Comment


              • #22
                Mình đã làm mạch đo và không chế nhiệt độ với 2 con đó rồi.Đến giờ vẫn chạy ok.
                Giúp có cafe caphao gi ko bạn?
                Ko chạy vì lý do gì bạn cứ hỏi mình sẽ góp ý.
                Bạn nói chung chung thế thì bó tay.

                Comment


                • #23
                  em đang làm đồ án về mạch đo và hiền thị nhiệt độ dùng led 7.
                  cảm biến +khuếch đại+ adc+ ...=led7
                  nhưng em ko hiểu lắm anh có thể nói rõ cho em biết:
                  -tại sao pải dùng mạch khuếch đại mà ko nối trực tiếp luôn.
                  -điện áp sau khi khuếch đại là bao nhiêu để đưa vào adc
                  -mạch không dùng vxl hoặc vdk có được ko/
                  -nếu có thể thì nói rõ nguyên lý của cái mạch này thi càng tốt.
                  cảm ơn anh rất nhiều

                  Comment


                  • #24
                    Người ta khuếch đại để có điện áp lớn hơn một tí để cho con adc nhận biết chuẩn hơn
                    Lúc trước mình làm ko có khuếch đại(dùng LM35).Có lẻ hiển thị chưa chính xác lắm.Tốt nhất nên khuếch đại lên khoảng vài lần(hay là khoảng 4 lần đi,Với lm35) cho chắc.
                    Trong chương trình ta sẽ đọc giá trị áp này rồi chia lại hệ số khuếch đại để hiển thị giá trị nhiệt độ.
                    Tất nhiên bạn có thể dùng IC số(ko dùng VDK) rồi.
                    Nhưng là dân VDK thì nên dùng nó cho khỏe chứ.
                    Mình cũng đang thiết kế lại mạch nhiệt độ dùng cảm biến LM35 cộng thêm khuếch đại nữa xem thế nào.
                    Các cao thủ nào có kinh nghiệm về vấn đề này xin chỉ giáo thêm.
                    Nếu ko dùng khuếch đại thì kết quả nhiệt độ có chấp nhận được ko?
                    Thanks!

                    Comment


                    • #25
                      Mà nghĩ kỹ lại thấy cũng kỳ kỳ
                      Ta chỉ cần khuếch đại khi tín hiệu áp đưa về rất nhỏ thôi.
                      Chứ con lm35 này xuất áp 10mv/1 độ.
                      Nếu khuếch đại lớn quá không khéo áp sẽ vượt hơn 5v khi đo nhiệt độ hơi lớn
                      Như vậy chắc giá trị hiển thị sẽ sai rồi.
                      Tùy trường hợp mà mới nên dùng thêm mạch kd hay ko phải ko mấy bác?
                      Mong nhận được ý kiến.

                      Comment


                      • #26
                        Nguyên văn bởi tc8051 Xem bài viết
                        Mà nghĩ kỹ lại thấy cũng kỳ kỳ
                        Ta chỉ cần khuếch đại khi tín hiệu áp đưa về rất nhỏ thôi.
                        Chứ con lm35 này xuất áp 10mv/1 độ.
                        Nếu khuếch đại lớn quá không khéo áp sẽ vượt hơn 5v khi đo nhiệt độ hơi lớn
                        Như vậy chắc giá trị hiển thị sẽ sai rồi.
                        Tùy trường hợp mà mới nên dùng thêm mạch kd hay ko phải ko mấy bác?
                        Mong nhận được ý kiến.
                        gửi bạn tc8051. minh lam nhu chương trình của bạn rùi mừ chạy cứ sao sao ấy, bạn có thể cho mình xin mạch mô phỏng proteu của bạn được ko thank! zicokim@gmail.com
                        SPECIAL_ONE
                        CÔ ĐƠN VÌ ĐIỆN TỬ

                        Comment


                        • #27
                          Help !!!

                          Nguyên văn bởi tc8051 Xem bài viết
                          Mình đã làm mạch đo và không chế nhiệt độ với 2 con đó rồi.Đến giờ vẫn chạy ok.
                          Giúp có cafe caphao gi ko bạn?
                          Ko chạy vì lý do gì bạn cứ hỏi mình sẽ góp ý.
                          Bạn nói chung chung thế thì bó tay.
                          CHÀO BẠN!
                          MÌNH CŨNG ĐANG LÀM CÁI HIỂN THỊ NHIỆT ĐỘ DÙNG LM35D VÀ ADC0804 BẰNG 89C51
                          PHẦN CỨNG THÌ OK RỒI, CÒN PHẦN MỀM THÌ CHƯA ỔN NHIỆT ĐỘ HIỂN THỊ RA LED 7 ĐOẠN CHƯA MỊN, Ở HÀNG ĐƠN VỊ NHÌN KHÔNG THẤY ĐƯỢC, MÌNH ĐÃ THỬ NHIỀU CÁCH NHƯ CHO THỜI GIAN ĐỌC AD TĂNG LÊN 5s THẬM CHÍ 10s ĐỌC 1 LẦN NHƯNG NÓ VẪN SÁNG NHẤP NHÁY VÀ HIỂN THỊ CHƯA RỎ CHỈ Ở HÀNG CHỤC TẠM ĐƯỢC THÔI.
                          GIỜ RỐI QUÁ KHÔNG BIẾT SAO? BẠN CÓ THẺ GÓP Ý GIÚP MÌNH KHÔNG ? CÁM ƠN CẬU TRƯỚC NHA!

                          ĐƯỜNG ĐI KHÓ,
                          KHÔNG KHÓ VÌ NGĂN SÔNG CÁCH NÚI
                          MÀ CHỈ SỢ LÒNG NGƯỜI NGẠI NÚI E SÔNG !

                          Comment


                          • #28
                            cho em hỏi giao tiếp giữa icl7109 với 8051 như thế nào,và cho em xin code được không.

                            Comment


                            • #29
                              Bác linhnc308 ơi..giúp em giao tiếp vs bộ nhớ ngoài 16kB vs.!!

                              Comment


                              • #30
                                bạn biết trong protues ICL7109 lấy ra mô phỏng như thế nào k? tìm cả buổi sáng mà k ra em nó (dùng proteus 7.10 sp0), nếu dc bạn có thể cho mình tham khảo đồ án của bạn k? do mình cug đang làm đề tài về ICL7109

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X