ADC0804

Màu nền
Font chữ
Font size
Chiều cao dòng

1.1 Vi điều khiển 89C52

1.1.1Tổng quan về 89C52    

        89C52 là họ IC vi điều khiển do hãng INTEL sản xuất, nó là phiên bản mới của 8051, các sản phẩm 89C52 thích hợp cho những ứng dụng vi điều khiển. Việc sử lý trên byte và các toán số học ở cấu trúc dữ liệu nhỏ được thực hiện bằng nhiều chế độ truy xuất dữ liệu nhanh trên RAM nội.

         89C52 cung cấp những đặc tính chuẩn như :

-   ROM ( bộ nhớ chương trình ) : là loại bộ nhớ không mất dữ liệu khi mất nguồn cung cấp, có dung lượng 8 Kbytes dùng để lưu giữ các mã lệnh của chương trình ( phần mềm ứng dụng )

  - RAM: ( bộ nhớ dữ liệu ) có dung lượnglà 256 Bytes để lưu dữ liệu như biến số, hằng số, bộ đệm truyền thông…

  - 32 đường dẫn

  - 3 bộ timer/couter : 26 bit thực hiện chức năng định thời và đếm sự kiện

  - Serial port : là cổng truyền thông nối tiếp, truyền song song ( tức là có khả năng vừa truyền vừa nhận số liệu tại cùng một thời điểm ), với phương thức truyền không đồng bộ

   - WDT ( wath dog timer ) : để phục hồi hoạt động của CPU khi nó bị treo

   - Tần số hoạt động : từ 0 Hz đến 24 MHz

 1.1.2/ Sơ đồ chân và chức năng các chân của 89C52

   - Port 0 ( từ P0.0 – P0.7 ) :

           Port 0 có địa chỉ 80H, gồm 8 chân ( từ chân 39-32 ), ngoài chức năng suất nhập, port còn là bus dữ liệu và địa chỉ ( AD0-AD7 ), chức năng náy sẽ được sử dụng khi 89C52 giao tiếp với các thiết bị ngoài có các kiến trúc bus như là các vi mạch nhớ, mạc PIO…

   - Port 1 (từ P1.0 – P1.7 ) :  

           Có địa chỉ 90H, gồm 8 chân (từ chân 1- 8 ), có chức năng xuất nhập theo bit và theo byte

   - Port 2 (từ P2.0 – P2.7 ) :

           Có địa chỉ 0AH, gồm 8 chân (từ chân 21 – 28 ), là cổng vào ra, là byte cao của bit địa chỉ khi sử dụng bộ nhớ ngoài

   - Port 3 ( từ P3.0 – P3.7 ) :

      Có địa chỉ 0BH, gồm 8 chân ( từ chân 10 – 17 ), mỗi chân trên port 3 ngoài chức năng nhập còn có chức năng riêng. Các chức năng được thể hiện qua bảng sau :

           BIT

          TÊN

       CHỨC NĂNG

          P3.0

         RXT

Ngõ vào dữ liệu nối tiếp

          P3.1

         TXD

Ngõ ra dữ liệu nối tiếp

          P3.2

         INT0/

Ngõ vào ngắt thứ 0

          P3.3

         INT1/

Ngõ vào ngắt thứ 1

           P3.4

         T0

Ngõ vào T/C 0

           P3.5

         T1

Ngõ vào T/C 1

           P3.6

         WR/

Chân ghi dữ liệu

           P3.7

         RD/

Chân đọc dữ liệu

  - Chân PSEN (program store enable) : là chân điều khiển đọc chương trình ở bộ nhớ ngoài. Nó được nối với chân /OE để cho phép đọc các byte mã lệnh trên ROM ngoài. /PSEN sẽ ở mức thấp trong thời gian đọc mã lệnh, khi thực hiện đọc mã lệnh ở ROM nội thì /PSEN ở mức cao

  - Chân ALE (address latch anable) : là tín hiệu điều khiển chốt địa chỉ có tần số bằng 1/6 tần số dao động của vi điều khiển

  - Chân /EA (external access) : tín hiệu /EA cho phép chọn bộ nhớ chương trình trong hay ngoài vi điều khiển. Nếu /EA ở mức cao thì vi điều khiển thi hành chương trình trong ROM nội. Nếu /EA ở mức thấp thi vi điều khiển thi hành chương trình bộ nhớ ngoài

  - Chân RST (reset) : ngõ vào RST trên chân 9, khi tín hiệu này được đưa lên mức cao các thanh ghi trong bộ vi điều khiển được tải những giá trị thích hợp để khởi động hệ thống.

      

       - Chân X1, X2 (chân số 18, 19 ) : dùng để tạo xung nhịp cho vi điều khiển

  - Chân Vcc, GND : cấp nguồn cho vi điều khiển (Vcc = 5VDC)

1.1.3/ Bộ nhớ chương trình

  - Khi /EA = 1 :  + ROM ngoài 56 Kbyte có địa chỉ từ 2000H đến FFFFH 

                           +  Rom trong 8 byte có địa chỉ từ 0000H đến 1FFFH

  - Khi /EA = 0 : ROM ngoài gồm 64 Kbyte có địa chỉ từ 0000H đến FFFFH

1.1.4/ Bộ nhớ dữ liệu

-         RAM trong : 256 byte

ØTruy nhập gián tiếp : dùng cho các thanh ghi đặc biệt, có địa chỉ từ 80H đến FFH

ØTruy nhập trực tiếp hoặc gián tiếp : địa chỉ 00H đến 7FH, được chia làm nhiều phần :

        + Phần 00H- 1FH có 32 byte bao gồm 4 dãy thanh ghi, mỗi bank có 8 thanh ghi là R0- R7

        b/ Phần 20H – 2FH có 16 byte được đánh giá địa chỉ theo bit (có 128 bit)

- RAM ngoài : gồm 64 Kbyte có địa chỉ từ 0000H đến FFFFH

1.1.5/ Các thanh ghi chức năng

 

      BIT

     KÍ HIỆU

     ĐỊA CHỈ

              MÔ TẢ

PSW7

       CY

     D07H

Cờ nhớ

PSW6

       AC

     D06H

Cờ nhớ phụ

PSW5

       F0

     D05H

Cờ dành cho người dùng

PSW4

       RS1

     D04H

Dùng để lựa chọn thanh ghi sử dụng

PSW3

       RS0

     D03H

Dùng để lựa chọn thanh ghi sử dụng

PSW2

      OV

     D02H

Cờ tràn

PSW1

        -

     D01H

Không dùng(dự trữ)

PSW0

       P

     D00H

Cờ chẵn lẻ

1.1.6/ Thanh ghi ngắt (interrupt)

        Các ngắt đóng một vai trò quan trọng trong thiết kế và cài đặt các ứng dụng vi điều khiển. Chúng cho phép hệ thống đáp ứng bất đồng bộ với một sự kiện và giải quyết sự kiện đó trong khi một chương trình khác đang thực thi.

a/ Tổ chức ngắt :

       - Ngắt tràn của T0, T1 : được phát ra bởi bit TF0, TF1 khi bộ đếm của các timer bị tràn. TF0, TF1 được xóa bởi phần mềm trước khi kết thúc chương trình con phục vụ ngắt

       - ngắt cổng truyền thông nối tiếp : ngắt đươc hát ta bởi RI hoặc TI dựng lên lúc hoàn thành nhận hoặc truyền một byte dữ liệu

       - Ngắt bên ngoài vi điều khiển : khi có tín hiệu ngắt từ 2 chân INT0, INT1 thì các cờ IE0, IE1 dựng lên yêu cầu phục vụ ngắt

     - Ngắt của timer 2: ngắt được phát ra khi bit TF2 dựng lên do bộ đếm của timer 2 tràn hoạc bit EXF2 dựng do có sườn xuống ở chân T2EX

      - Thanh ghi cho phép ngắt IE

ØEA : cho phép/ cấm tất cả các ngắt

ØET2 : cho phép/ cấm ngắt T2

ØES: cho phép/ cấm ngắt của cổng truyền thông nối tiếp

ØET1 : cho phép/ cấm ngắt T1

ØEX1 : cho phép/ cấm ngắt ngoài INT1

ØET0 : cho phép/ cấm ngắt T0

ØEX0 : cho phép/ cấm ngắt ngoài INT0

b/ Mức ưu tiên ngắt

      -  Mỗi nguồn gây ngắt có thể lập trình ở một trong nhiều mức ưu tiên ngắt bằng cách dặ các giá trị xác định cho thanh ghi ưu tiên ngắt IP. Trong trường hợp nếu xảy ra 2 yêu cầu ngắt trở lên tại cùng một thời điểm thì ngắt có mức ưu tiên cao sẽ đươc phục vụ trước, sai đó sẽ tiếp tục thực hiện các ngắt có mức ưu tiên thấp hơn

        Thanh ghi IP :

      -

     -

PT2

PS

PT1

X1

PT0

PX0

ØPT2 : đặt mức ưu tiên cao nhất cho ngắt T2

ØPS : đặt mức ưu tiên cao nhất cho ngắt truyên thông nối tiếp

ØPT1 : đặt mức ưu tiên cao nhất cho ngắt T1

ØPX1 : đặt mức ưu tiên cao nhất cho ngắt ngoài INT1

ØPT0 : đặt mức ưu tiên cao nhất cho ngắt T0

ØPX0 : đặt mức ưu tiên cao nhất cho ngắt ngoài INT0

- Mức ưu tiên mặc định :

  STT

Nguồn gây ngắt

Mức ưu tiên

STT

Nguồn gây ngắt

Mức ưu tiên

   1

IE0

Cao nhất

  4

TF1

Cao nhất

   2

TF0

Cao nhất

  5

RI + TI

Cao nhất

   3

IE1

Cao nhất

  6

TF2 + EXF2

Thấp nhất

1.2 Giới thiệu về cảm biến nhiệt độ LM35

Cảm biến nhiệt LM35D là một mạch tích hợp nhận tín hiệu nhiệt độ từ môi trường bên ngoài sau đó chuyển thành tín hiệu điện dưới dạng dòng điện hay điện áp. Dựa vào đặc tính rất nhạy của các bán dẫn với nhiệt độ, tạo ra điện áp hoặc dòng điện tỷ lệ thuận với nhiệt độ tuyệt đối. Đo tín hiệu điện ta biết được giá trị của nhiệt độ cần đo. Sự tác động của nhiệt độ tạo ra điện tích tự do và các lỗ trống trong chất bán dẫn. Bằng sự phá vỡ các phân tử, bứt các electron thành dạng tự do di chuyển qua vùng cấu trúc mạng tinh thể tạo sự xuất hiện các lỗ trống. Làm cho tỷ lệ điện tử tự do và lỗ trống tăng lên theo quy luật hàm mũ với nhiệt độ.

Ngõ ra của LM35D là dạng điện áp thay đổi theo nhiệt độ bên ngoài với độ nhạy 10mv/10C

Sai số cực đại 1.50C khi nhiệt độ lớn hơn 1000C.

       Phạm vi sử dụng: 00 C ≥ t0C ≤ 1000 C

1.2.1 Trong bài này chúng tôi sử dụng con LM35DZ

 

* Đặc điểm:

+  Dải nhiệt độ biến đổi: 0 đến 100 độ

+Nhiệt độ ra thẳng thang đo Celcius nghĩa là ở 25 độ C điện áp ra là 0.25V

+ Tương ứng 10mV/độ C

+ Đảm bảo độ chính xác 0.5 độ C tại nhiệt độ 25 độ C.

+ Làm việc với nguồn nuôi 4V đến 30V

+ Trở kháng ra thấp 0.1 với tải 1mA

+ Khả năng tự làm nóng thấp, 0.08 độ C trong không khí.

 

*Cách mắc: đơn giản là nối chân +Vs với nguồn và chân GND với đất chân OUTPUT nối với chân Vin+ của ADC0804

 

 

1.2.2 Ghép nối LM35 với ADC0804

 

                                

1.3  Giới thiệu về ADC 0804

1.3.1 Mô tả chân ADC0804

Chip ADC0804 là bộ chuyển đổi tương tự- số thuộc họ ADC800 của hãng National Semiconductor. Chip có điện áp nuôi +5V và độ phân giải 8 bit. Thời gian chuyển đổi là thời gian mà bộ ADC cần để chuyển một đầu vào tương tự thành một số nhị phân. Đối với ADC0804 thì thời gian chuyển đổi phụ thuộc vào tần số đồng hồ được cấp tới chân CLK R (pin 19) và CLK IN (pin 4) và không bé hơn 110μs

Các chân khác có các chức năng:

ØCS (Chip select):

       Chân số 1 là chân chọn chip, đầu vào tích cực mức thấp được sử dụng để kích hoạt chip ADC 0804. Để truy cập chip ADC thì chân này phải ở mức thấp           .

ØRD (Read):

Chân số 2 là một tín hiệu vào, tích cực mức thấp. Các bộ chuyển đổi đầu vào tương tự thành số nhị phân và giữ nó vào một thanh ghi bên trong. RD được sử dụng để xuất dữ liệu đã được chuyển đổi tới đầu ra của ADC0804.

Khi CS = 0 nếu có một xung cao xuống thấp áp đến chân RD thì dữ liệu ra dạng số 8 bit được đưa tới chân dữ liệu (DB0- DB7).

ØWR (Write):

Chân số 3 là chân vào tích cực mức thấp được dùng để báo cho ADC biết bắt đầu quá trình chuyển đổi. Khi việc chuyển đổi hoàn tất thì chân INTR được ADC hạ xuống mức thấp.

Khi CS = 0 nếu có một xung từ thấp lên cao áp đến chân WR thì quá trình chuyển đổi được thực hiện.

ØCLK IN và CLK R:

CLK IN là chân vào nối tới đồng hồ ngoại được sử dụng để tạo thời gian. Tuy nhiên ADC cũng có một bộ tạo xung đồng hồ riêng thì các chân CLK IN và CLK R được nối tới một tụ điện và một điện trở. Khi đó tần số được xác định bằng biểu thức:

      Ở đây R=10KΩ, C= 150pF suy ra tần số f = 606 kHz và thời gian chuyển đổi là 110μs.

ØNgắt INTR (Interupt):

Chân số 5 là chân tích cực mức thấp. Bình thường chân này ở trạng thái cao và khi việc chuyển đổi hoàn tất thì nó xuống thấp để báo cho CPU biết là dữ kiệu chuyển đổi sẵn sàng để lấy đi. Sau khi INTR xuống thấp, cần đặt CS = 0 và gửi một xung cao xuống thấp tới chân RD để đưa dữ liệu ra.

ØV­­in­(+) và Vin(-):

Chân số 6 và chân số 7 đây là đầu vào tương tự vi sai, trong đó V­­in ­= V­­in­(+) - Vin(-). Thông thường Vin(-) được nối với đất và Vin(+) được dùng làm đầu vào tương tự và sẽ được chuyển đổi về dạng số.

      Ø Vcc:

Chân số 20 là chân nguồn +5V. Chân này còn được dùng làm điện áp tham chiếu khi đầu vào Vref/2 để hở.

ØVref/2:

Chân số 9 là chân điện áp đầu vào được dùng làm điện áp tham chiếu. Nếu chân này để hở thì điện áp đầu vào tương tự cho ADC nằm trong dải 0 +5V. Chân Vref/2 được dùng để thực hiện các điện áp đầu ra khác 0 +5V.

Vref/2 (V)

Vin(V)

Kích thước bước (mV)

Hở

0-5

5/256=19.53

2.0

0-4

4/256=15.62

1.5

0-3

3/256=11.71

1.28

0-2.56

2.56/256=10

1.0

0-2

2/256=7.81

0.5

0-1

1/256=3.90

         

Chú ý: Do tín hiệu ra của cảm biến nhiệt (LM35D) có độ phân giải là 10mV, do đó ta cũng phải chọn độ phân giải của bộ biên đổi sau cho phù hợp. Có nhiều cách để lựa chọn cho phù hợp, ở mạch này chúng tôi chọn độ phân giải của bộ biến đổi ADC0804 là 10mV. Chính vì thế trước khi đưa dữ liệu qua bộ biến đổi chúng tôi phải cho qua biến trở để đảm bảo điện áp đầu vào là 2,56v tương ứng với độ phân giải là 10mv để nhiệt độ hiển thị ra tương đối chính xác.

ØD0- D7:

ØD0- D7 (chân 18- 11) là các chân ra dữ liệu số (D7 là bit cao nhất MSB và D0 là bit thấp nhất LSB). Các chân này được đệm 3 trạng thái và dữ liệu đã được chuyển đổi chỉ được truy cập khi chân CS = 0 và chân RD đưa xuống mức thấp.

1.3.2 Quá trình chuyển đổi của chip ADC0804

Chip ADC0804 bắt đầu thực hiện quá trình chuyển đổi khi có một sự thay đổi mức logic từ thấp lên cao (xung cạnh lên) tại chân WR, trong khi chân CS ở mức thấp và chân RD ở mức cao. Sau khi thực hiện xong quá trình chuyển đổi thì chân INTR được ADC0804 kéo xuống mức thấp (mức thấp là 0, mức cao là 1). Toàn bộ quá trình chuyển đổi được mô tả như sau:

Quá trình chuyển đổi của chip ADC0804

             1.3.3 Quá trình đọc dữ liệu từ chip ADC0804

Quá trình đọc dữ liệu được thực hiện khi có một sự thay đổi mức logic từ cao xuống thấp (xung cạnh xuống) tại chân RD, trong khi chân CS ở mức thấp và chân WR ở mức cao. Quá trình này cũng được mô tả bằng sơ đồ sau:

 

 

 

 

 

 

 

 

 

1.3.4 Nguyên lý đo và chuyển đổi tương tự/số của ADC

          Khi nhiệt độ môi trường thay đổi làm cho trở kháng của cảm biến LM35 thay đổi dẫn đến điện áp đầu vào Vin của ADC thay đổi. Điện áp Vin vào ADC sẽ được so sánh với Ud của ADC. Ud có thể thay đổi từ 0V đến 2(Vref/2).

Ban đầu Ud = 0, nếu Vin > Ud khi đó Ud sẽ được cộng thêm một giá trị  là  . , trong đó :

 đồng thời giá trị bộ đếm tăng thêm 1. Quá trình so sánh cứ như vậy đến khi nào Ud =Vin thì dừng. Khi đó giá trị của bộ đếm chính là giá trị thập phân. Giá trị thập phân này sẽ được đưa qua một bộ giải mã, giải mã ra nhị phân rồi đưa ra các chân AD0 – AD7.

                    Đánh giá độ chính xác của phép đo

          Khả năng tự làm nóng của LM35DZ trong không khí là 0,1oC.

          Cảm biến LM35 có hệ số nhiệt là 10mV/oC, do đó sai số về nhiệt độ của LM35DZ sẽ là 0,5oC. Khi đó điện áp đầu vào Vin sẽ được làm tròn lên hoặc xuống . Khi Vin đi vào so sánh với điện áp Ud của ADC, ta nhận thấy rằng mức điện áp của ADC là 10mV nên sai số mà nó gây ra là 0,5mV tương ứng với giá trị nhiệt độ là 0,5oC.

          Vậy sai số tổng cộng của hệ thống là 1.1oC.

 Do vậy  nhiệt độ thưc tế của ta sẽ là : treal = tđo 1,1 oC.

Phương pháp mà ta dùng ở đây là phương pháp vi phân bậc thang.

Độ chính xác của ADC0804 bị giới hạn bởi tần số lấy mẫu (thường là 600->640KHz) và số bít của dữ liệu đầu ra (8 bít) tương ứng với tối đa là 256 mức điện áp có thể chuyển đổi và so sánh,ngoài ra  điện áp đưa vào chân Vref/2 cũng quyết định điện áp vi phân bậc thang trong phép chuyển đổi của ADC.Nếu điện áp đưa vào chân này là 1.28 V thì điện áp so sánh max là 2x1.28= 2.56 V kết hợp với dải nhiệt độ chuyển đổi của LM35DZ là từ 0->100oC ( vẫn nhở hơn 255) nên mỗi bước điện áp ứng với 2.56/256=10mV.Điện áp Vref/2 càng lớn thì bước điện áp bậc thang càng lớn do đó độ chính xác của phép đo càng nhỏ hay nói cách khác ta mắc phải một sai số lớn hơn

Để tăng độ chính xác của phép đo lên ta có thể dùng một cảm biến khác có độ chính xác cao hơn, có thể giảm điện áp đưa vào chân Vref/2 để giảm bước điện áp vi phân bậc thang của ADC, Tuy nhiên, khi bước điện áp của ADC và cảm biến không đồng nhất thì sẽ gây khó khăn cho quá trình xử lý dữ liệu đưa ra khâu hiển thị hoặc có thể gây ra sai số.Tùy thuộc vào phép hiện thị mà người ta có thể đặt giá trị điện áp cho chân Vref/2 sao cho hợp lý.

 

Bạn đang đọc truyện trên: Truyen2U.Pro

#kun