Adc0808 là gì

  • cho em hỏi cách kích hoạt [hay mức tích cực ]của các chân trong con ADC0808 là thế nào?[ALE,EOC,OE,START] bởi vì em có 2 cuốn sách:8051 của tăng cường và kỹ thuật vi xử lý của đỗ xuân tiến ____ đều đề cập đến ADC0808 nhưng mức tích cực của các chân [ALE,EOC,OE,START]lại khác nhau[2 cuốn sách nói khác nhau]

    vậy bác nào có kinh nghiệm làm rồi có thể chỉ giáo cho em được không?

  • bác nào bit về chân của ADC0808 cho em hỏi

    bởi con ADC0808 nay` không mô phỏng trong proteus được nên em không thể test được

  • Theo mình tốt nhất bạn hãy tải tài liệu của con ADC0808 xuống mà đọc! Chắc bạn sẽ giải đáp được thắc mắc! Chúc vui

  • www.katalog.elektroda.net
    trang này download datasheet của linh kiện với ít lần nhấn chuột nhất[nhanh hơn,nhưng ko chắc đủ,nhưng 0808 thì có]

  • Hôm nay, mình xin góp vui với anh chị em một bài viết vui về giao tiếp vi điều khiển 8051 với ADC0808 ngõ hầu sẽ đem lại nhiều lợi ích cho anh chị em:

    Thứ nhất: SƠ BỘ VỀ CHIP ADC0808


    Chúng ta xem hình ảnh về chip ADC0808:

  • Tiếp theo chúng ta xem sơ đồ chân của ADC0808 :

  • Sau đây chúng ta xem chức năng của từng chân trên CHIP ADC0808: Pin Number Description

    Chân 1 IN3 - ngõ vào tín hiệu Analog Input 3 Chân 2 IN4 - ngõ vào tín hiệu Analog Input 4 Chân 3 IN5 - ngõ vào tín hiệu Analog Input 5 Chân 4 IN6 - ngõ vào tín hiệu Analog Input 6

    Chân 5 IN7 - ngõ vào tín hiệu Analog Input 7

    Chân 6 START - chân điều khiển tín hiệu bắt đầu quá trình biến đổi ADC. Chân 7 EOC - Chân phát tín hiệu báo kết thúc quá trình chuyển đổi ADC. Chân 8 2 [-5] - Ngõ ra Tín hiệu số- Data Bit 5 Chân 9 OUT EN - Chân cho phép xuất. Chân 10 CLK - chân nhận nguồn xung Clock Chân 11 Vcc - Chân nhận điện nguồn dương Chân 12 Vref+ - Chân nhận[input] điện áp tham chiếu. Chân 13 GND - Chân nhận điện áp âm[Ground=0v]

    Chân 14 2[-7] - Ngõ ra Tín hiệu số- Data Bit 7
    Chân 15 2[-6] - Ngõ ra Tín hiệu số- Data Bit 6

    Chân 16 Vref- - Voltage Reference Negative Input

    Chân 17 2[-8] - Ngõ ra Tín hiệu số- Data bit 8 Chân 18 2[-4] - Ngõ ra Tín hiệu số- Data Bit 4 Chân 19 2[-3] - Ngõ ra Tín hiệu số- Data Bit 3 Chân 20 2[-2] - Ngõ ra Tín hiệu số- Data Bit 2

    Chân 21 2[-1] - Ngõ ra Tín hiệu số- Data Bit 1

    Chân 22 ALE - Address Latch Enable

    Chân 23 ADD C - Address Input C Chân 24 ADD B - Address Input B

    Chân 25 ADD A - Address Input A


    Chân 26 IN0 - ngõ vào tín hiệu Analog Input 0 Chân 27 IN1 - ngõ vào tín hiệu Analog Input 1

    Chân 28 IN2 - ngõ vào tín hiệu Analog Input 2

  • Như vậy ADC0808 có tất cả 8 đầu vào Analog! Và chúng ta lưu ý tầm điện áp đầu vào analog là:0-> 5v, tuy nhiên chúng ta cũng có thể chọn tầm giá trị đầu vào nhỏ hơn nhưng vẫn có thể chia với độ phân giải toàn giải - có nghĩa là có thể đạt giá trị Max255 thông qua việc điều chỉnh điện áp trên chân điện áp tham chiếu Vref.

    Và ngõ ra của ADC0808 tương thích chuẩn họ TTL.

    Last edited by MicroDuyphi; 10-03-2006, 23:46.

  • Tiếp theo chúng ta sẽ thiết kế mạch kết nối
    giữa vi điều khiển 8051 và ADC0808
    * Với 8051 chúng ta sẽ dùng PORT2 làm port nhập data của ADC808. * Vì ADC0808 có tất cả 8 cổng vào mà tại một thời điểm chúng ta chỉ có thể làm việc với 1 trong số 8 kênh ấy mà thôi, do đó chúng cần có 3 dây dùng để chọn lấy 1 ngõ vào và chúng ta sẽ chọn 3 chân của vi điều khiển 8051 là P3.2, P3.3, P3.4 để điều khiển. * Ngoài ra để có thể điều khiển được quá trình truy xuất/giao tiếp ADC thì chúng ta cũng cần thêm một số dây khác để kết nối với ADC0808 nữa, cụ thể là:

    - Chân EOC của ADC0808 sẽ kết nối với chân của 8051 P1.4 - Chân OE của ADC0808 sẽ kết nối với chân của 8051 P1.5 - Chân LE của ADC0808 sẽ kết nối với chân của 8051 P1.7 - Chân START của ADC0808 sẽ kết nối chung với chân LE

    - Chúng ta cũng cần lưu ý rằng nguồn xung clock cấp cho ADC0808 sẽ được tạo ra bởi chính chân P1.6

    của vi điều khiển 8051 thông qua việc điều khiển chương trình phần mềm.

    * Để đơn giản thìi ta sẽ dùng màn hình LCD để hiện thị thông tin và kết quả đo được. Và khi đó một số chân của vi điều khiển lại được cần đến để có thể điều khiển LCD

    - Chân E của LCD sẽ được điều khiển bởi chân P3.5 của 8051 - Chân RS của LCD sẽ được điều khiển bởi chân P3.6 của 8051

    - Chân RW của LCD sẽ được điều khiển bởi chân P3.7 của 8051

    Last edited by MicroDuyphi; 11-03-2006, 00:23.

  • Các bạn có thể download sơ đồ mạch về xem[ vì dung lượng lớn nên không thể hiển hị hết trên màn hình được].

  • Và đây là board mạch in của 8051+ADC0808+ LCD

  • Và đây là đọa code chương trình cho mạch điện trên: ; +--------------------=-=-=-=-=-=-=-=-=-=-=-----------------+ ; | Project: ADC0808 Evaluation | ; | ATMEL AT89s8252 at 11.0592MHz v1.2 |=- ; +--------------------=-=-=-=-=-=-=-=-=-=-=-----------------+ ;=============| I/O |====================================== LCD_PORT EQU P1 ; LCD 16x2 Display Port CONV_PORT EQU P2 ; ADC0808 PORT LCD_E BIT P3.5 ; LCD ENABLE pin LCD_RS BIT P3.6 ; Select either instruction or data LCD_RW BIT P3.7 ; Read/write select ; ====| ADC0808's Equates |========================== AD_OE BIT P1.5 ; Output enable AD_SC BIT P1.7 ; Start conversion AD_EOC BIT P1.4 ; End of conversion AD_ALE BIT P1.7 ; address lacth enable AD_CLK BIT P1.6 ; clock AD0 BIT P3.2 ; mutiplexer channel addressing AD1 BIT P3.3 AD2 BIT P3.4 VAR1 DATA 60H VAR2 DATA 61H ORG 0 jmp MAIN MAIN: ;--INITIALIZE A/D clr AD_OE clr AD_ALE clr AD_CLK ;-- clr LCD_RW ; Set lcd to write call _LCD_INI ; Initialize LCD mov a,#80h ; Cursor on first column, first row call _LCD_INST mov dptr,#MESSAGE01 ; LCD <- 'ADC0808 TEST' call _LCD_WRITE_STRING mov a,#0C0H ; Cursor on first column, 2nd row call _LCD_INST mov dptr,#MESSAGE02 ; LCD <- 'VALUE:' call _LCD_WRITE_STRING

    CONVERSION: mov a,#0C7h lcall _LCD_INST clr AD0 ; Set A/D multiplexer channel0 clr AD1 clr AD2 call START_CONV ; A/D conversion routine mov R3,#0 mov R2,A lcall _BINTOASC ; binary to ascii conversion routine mov A,32H ; put result with 3 digits on lcd lcall _LCD_PUT_CHAR mov A,33H lcall _LCD_PUT_CHAR mov A,34H lcall _LCD_PUT_CHAR

    jmp CONVERSION

    ;------------------------=| SUBROUTINES |=------------------------------ ; THIET LAP LCD _LCD_INI: mov a,#28h ; Interface 4 bits 2 lines 5*7 pixels call _LCD_INST mov a,#28H call _LCD_INST mov a,#06H ; call _LCD_INST mov a,#0Ch ; invisible cursor call _LCD_INST mov a,#01h ; clear LCD call _LCD_INST mov a,#03 call _DELAY_MS RET ; ----=| GHI LENH TOI LCD |=---------- ; | INPUT=A | _LCD_INST: clr LCD_RS ; Instruction command swap a ; load LSB nibble first push acc anl a,#0fH mov VAR1,a mov VAR2,LCD_PORT anl VAR2,#0f0h mov a,VAR1 orl a,VAR2 mov LCD_PORT,a pop acc setb LCD_E nop nop nop clr LCD_E swap a ; now the MSB push acc ;-- anl a,#0fH mov VAR1,a mov VAR2,LCD_PORT anl VAR2,#0f0h mov a,VAR1 orl a,VAR2 ;-- mov LCD_PORT,a pop acc setb LCD_E nop nop nop clr LCD_E call _WAIT_LCD ret ; GHI MOT BYE RTOI LCD ; | INPUT= A [ASCII] | _LCD_PUT_CHAR: setb LCD_RS ; Set lcd to data swap a ; LSB first push acc ;-- anl a,#0fH mov VAR1,a mov VAR2,LCD_PORT anl VAR2,#0f0h mov a,VAR1 orl a,VAR2 ;-- mov LCD_PORT,a pop acc setb LCD_E nop nop nop nop clr LCD_E swap a ; send MSB push acc ;-- anl a,#0fH mov VAR1,a mov VAR2,LCD_PORT anl VAR2,#0f0h mov a,VAR1 orl a,VAR2 ;-- mov LCD_PORT,a pop ACC setb LCD_E nop nop nop nop clr LCD_E call _WAIT_LCD ret ; GHI MOT CHUOI BYE TOI LCD ; | INPUT: ROM DATA POINT AT DPTR | _LCD_WRITE_STRING: clr LCD_E setb LCD_RS ; LCD data command clr a movc a,@a+dptr jz final swap a ; send LSB... push ACC ;-- anl a,#0fH mov VAR1,a mov VAR2,LCD_PORT anl VAR2,#0f0h mov a,VAR1 orl a,VAR2 ;-- mov LCD_PORT,a pop ACC setb LCD_E nop nop nop nop clr LCD_E swap a ; MSB... push ACC ;-- anl a,#0fH mov VAR1,a mov VAR2,LCD_PORT anl VAR2,#0f0h mov a,VAR1 orl a,VAR2 ;-- mov LCD_PORT,a pop ACC setb LCD_E nop nop nop nop clr LCD_E call _WAIT_LCD inc dptr jz FINAL sjmp _LCD_WRITE_STRING FINAL: ret ;--------------------------------- ; ----=| LCD delay routine |=----- ;--------------------------------- _WAIT_LCD: push acc push psw mov a,#190 djnz acc,$ pop psw pop acc ret ; +--------------------------------------------+ ; | ADC0808 conversion routine | ; | output: A | ; | input : multiplexer channel on ad0,ad1,ad2 | ; | PIN | ; | AD2 AD1 AD0 ANALOG INPUT | ; | 0 0 0 1 | ; | 0 0 1 2 | ; | 0 1 0 3 | ; | 0 1 1 4 | ; | 1 0 0 5 | ; | 1 0 1 6 | ; | 1 1 0 7 | ; | 1 1 1 8 | ; +--------------------------------------------+ START_CONV: mov CONV_PORT,#0ffh clr AD_OE ; hi Z output setb AD_ALE ; start converter [SET both SC and ALE] clr AD_ALE START_CLK: cpl AD_CLK jnb AD_EOC,START_CLK setb AD_OE mov a,CONV_PORT clr AD_OE ret ; +-----------------------------------------------------------------------; ; Use example: ; ;START: ; MOV R2,#low[1234] ; MOV R3,#high[1234] ; LCALL BINTOASC ; ; in 30h until 34h of internal RAM will be :'0','1',' 2',','3','4' [ ASCII] ; ; +----------------------------------------------------------------------- _BINTOASC: MOV R0,#30h ; R0 = POUT MOV DPTR,#TAB ; R=TAB[P] COM1: CLR A ; P <- 0 MOVC A,@A+DPTR ; R <- TAB[P] MOV R7,A INC DPTR CLR A MOVC A,@A+DPTR MOV R6,A MOV R4,#'0' ; C <- '0' SOMA: ; N <- N-R CLR C ; MOV A,R2 ; SUBB A,R6 ; MOV R2,A ; MOV A,R3 ; SUBB A,R7 ; MOV R3,A ; JC SAIDA ; If < 0 goto SAIDA INC R4 ; If >0 then C <- C +1 SJMP SOMA ; goto SOMA SAIDA: MOV A,R4 MOV @R0,A ;TABOUT [POUT] <- C MOV A,R2 ADD A,R6 ; N=N+R MOV R2,A MOV A,R3 ADDC A,R7 MOV R3,A INC R0 ; PSAIDA=PSAIDA +1 CLR A MOVC A,@A+DPTR CJNE A,#1,INCREMENTA ; TAB[P] = 1 ? RET ; If yes, END INCREMENTA: ; If No, P <- P+1 INC DPTR LJMP COM1 ; goto COM1 TAB: DW 10000 DW 1000 DW 100 DW 10 DW 1 ; |###################################| ;--=| DELAY MILISECONDS PLUS ACC VALUE |=- ; |###################################| _DELAY_MS: push ACC push B mov B,#250 DD: djnz B,$ ; ~ 500 uS @ 12 Mhz djnz B,$ ; ~ 500 uS @ 12 Mhz djnz ACC,DD pop B pop ACC ret MESSAGE01: db 'ADC0808 TEST ',0 MESSAGE02: db 'VALUE:',0

    END

    Last edited by MicroDuyphi; 11-03-2006, 01:58.

  • Nhân đây mình cũng xin báo luôn với "phidoigabay1" phần mềm Proture dư sức mô phỏng ADC0808, kể cả toàn bộ chương trình này:8051+LCD+ADC0808 nó điều mô phỏng được cả và hơn thế nữa.

  • cảm ơn nhiều tôi cũng đang cần cái này

  • Em post lại file của anh P để mọi người cùng bàn luận và dễ theo dõi trực tuyến luôn

Video liên quan

Chủ Đề