Nghiên cứu về Vi điều khiển 8051: Thiết kế Đồng hồ thời gian thực trên LED 7 thanh

MỤC LỤC

Bộ vi điều khiển DS5000 từ hãng Dalas Semiconductor

Việc nạp chương trình trong hệ thống (in-system) của DS5000 thông qua cổng nối tiếp của PC làm cho nó trở thành một hệ thống phát triển tại chỗ lý tưởng. Khi một sản phẩm được thiết kế và được hoàn thiện tuyệt đối thì phiên bản OTP của 8051 được dùng để sản xuất hàng loạt vì giá thành một đơn vị sản phẩm sẽ rẻ hơn.

Họ 8051 từ hãng Philips

Các phiên bản OTP của 8051 là các chíp 8051 có thể lập trình được một lần và được cung cấp từ nhiều hãng khác nhau. Các phiên bản Flash và NV-RAM thường được sử dụng để phát triển sản phẩm mẫu.

Tổ chức bộ nhớ bên trong của 8051

Các thanh ghi trong 89S52 được định dạng như một phần của RAM trên chip vì vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi bộ đếm chương trình và thanh ghi lệnh vì các thanh ghi này hiếm khi bị tác động trực tiếp). Cờ nhớ thường nó được dùng cho các lệnh toán học: C =1 nếu phép toán cộng có sự tràn hoặc phép trừ có mượn và ngược lại C = 0 nếu phép toán cộng không tràn và phép trừ không có mượn.

Hoạt động định thời .1 Giới thiệu

Các thanh ghi của bộ định thời

    T2CON.6 EXF2 CEH Cờ ngắt ngoài Timer 2, TXF2=1 khi xảy ra sự nạp lại hoặc thu nhận, EXF2=1 cũng gây ra ngắt do Timer 2 nếu như ngắt này được lập trình cho phép, EXF2 được xóa bởi phần mềm. T2CON.3 EXEN2 CBH Bit điều khiển hoạt động của Timer 2, khi EXEN2=1 việc nạp lại hoặc thu nhận (capture) diễn ra khi có sự chuyển trạng thái từ 1 sang 0 ở chân T2EX nếu T2 không sử dụng để cung cấp tốc độ baud cho cổng nối tiếp.

    Các chế độ của bộ định thời - Chế độ 0

    T2MOD.1 T2OE Cho phép đầu ra khi sử dụng Timer 2 để tạo xung T2MOD.0 DCEN Bit cho phép Timer 2 hoạt động như bộ đếm tiến/lùi * Thanh ghi này không định địa chỉ bit. Chế độ 0 là chế độ định thời 13 bit, chế độ này tương thích với các bộ vi điều khiển trước đó, trong các ứng dụng hiện nay chế độ này không còn thích hợp. Bộ Timer thứ nhất với nguồn xung clock được lấy từ bộ chia tần trên chip hoặc từ bộ tạo xung bên ngoài qua chân T0 tùy thuộc vào giá trị của bit C-/T0.

    Khi Timer 0 được tách thành hai Timer 8 bit thì Timer 1 vẫn có thể hoạt động bình thường ở các chế độ 0, 1, 2, tuy nhiên khi xảy ra tràn cờ TF1 không được thiết lập bằng 1. Như vậy trong trường hợp này Timer 1 chỉ có thể sử dụng cho các ứng dụng không cần đến ngắt (TF1=1), chẳng hạn như tạo tốc độ baud cho port nối tiếp.

    Hình 1.3  Hoạt động của Timer 0 và Timer 1 ở chế độ 0
    Hình 1.3 Hoạt động của Timer 0 và Timer 1 ở chế độ 0

    Các nguồn xung Clock

    Cổng nối tiếp .1 Giới thiệu

    Các chế độ hoạt động - Chế độ 0

    Khi truyền/nhận các byte dữ liệu 8bit,bit có giá trị thấp nhất(LSB) được truyền/nhận trước tiên và bit MSB được truyền/nhận sau cùng.Việc truyền dữ liệu được bắt đầu bằng việc ghi một byte dữ liệu vào SBUF còn việc nhận dữ liệu được bắt đầu khi bit REN đã được đặt ở mức 1 và cờ thu RI= 0. Dữ liệu được truyền nối tiếp trên chân TXD và nhận nối tiếp trên chân RXD, chế độ này cung cấp cho AT89S52 một công cụ giao tiếp với máy tính qua cổng Com. Khi sử dụng các bộ Timer cung cấp tốc độ baud cho cổng nối tiếp thì thạch anh có tần số 11,0592 MHz được khuyến cáo nên dùng vì với tần số này sẽ tạo được tốc độ baud chuẩn sai số 0%.

    Chế độ này, cổng nối tiếp hoạt động như một bộ UART 9 bit, một khung truyền gồm 11 bit, trong đó bắt đầu bằng bit Start, tiếp theo là 8 bit dữ liệu, tiếp theo là bit dữ liệu thứ 9 ( là bit TB8 nếu là khung truyền, là bit RB8 nếu là khung nhận ), cuối cùng là bit Stop. Thông thường khởi động thanh ghi TMOD ở chế độ tự động nạp lại 8 bit (mode 2) và đặt giá trị nạp lại thích hợp vào thanh ghi TH1 để có tốc độ tràn đúng, từ đó tạo ra tốc độ baud.

    Bảng 1.15  Bảng tốc độ baud khác nhau
    Bảng 1.15 Bảng tốc độ baud khác nhau

    Ngắt và xử lý ngắt .1 Giới thiệu

    Xử lý ngắt

    + (Trạng thái của ngắt hiện hành được lưu giữ lại) + Các ngắt được chặn lại ở mức ngắt. + Các ngắt này xuất hiện khi cờ ngắt phát TI hoặc cờ ngắt thu RI được set bằng 1. + Cờ gây ra ngắt ở port nối tiếp không được xóa bởi phần cứng khi CPU trỏ tới ISR.

    + Việc chọn các ngắt loại tác động mức hay cạnh được lập trình thông qua các bit IT0 và IT1 của TCON. + Các cờ gây ngắt IE0, IE1 tự động được xóa khi CPU trỏ tới ISR tương ứng.

    Bảng 1.20  Các Vector ngắt
    Bảng 1.20 Các Vector ngắt

    CÁC LINH KIỆN LIÊN QUAN

    Tìm hiểu về IC thời gian thực DS1307 .1 Giới thiệu

      Tất cả các phần mềm lập trình hay các thanh ghi của chip điều khiển đều sử dụng mã nhị phân thông thường, không phải mã BCD, do đó cần phải viết các chương trình con để quy đổi từ số thập lục phân (hoặc thập phân thường) sang BCD. Bit cao nhất, bit 7, trong thanh ghi này là 1 điều khiển có tên CH (Clock halt – treo đồng hồ ), nếu bit này được set bằng 1 bộ dao động trong chip bị vô hiệu hóa, đồng hồ không hoạt động. Sau khi DS1307 nhận dạng được địa chỉ và bit ghi thì master sẽ gửi một địa chỉ thanh ghi tới DS1307, tạo ra một con trỏ thanh ghi trên DS1307 và master sẽ truyền từng byte dữ liệu cho DS1307 sau mỗi bit acknowledge nhận được.

      Sau đó, mới START lại rồi ghi lại 0D1H (lúc này mới thông báo là sẽ đọc từ DS1307 ), tiếp theo cứ đọc bình thường ( thanh ghi đọc được sẽ là thanh ghi có địa chỉ mới vừa ghi vào), tiếp tục đọc thì địa chỉ cần đọc sẽ tự động tăng lên cho đến khi STOP I2C. Nhìn vào lưu đồ chúng ta thấy, thanh ghi= 02H, là địa chỉ của thanh ghi giờ trong con DS1307, như vậy, mục đích của việc định nghĩa ô nhớ thanh ghi là để xác định địa chỉ thay đổi giá trị trong ô nhớ RAM của DS1307.

      Hình 2.6  Tổ chức theo bit của các thanh ghi
      Hình 2.6 Tổ chức theo bit của các thanh ghi

      Vi điều khiển AT89S52 .1 Giới thiệu

      • Sơ đồ chân và chức năng các chân của AT89S52 .1 Sơ đồ chân của AT89S52

        Các chân này được đệm ba 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. Đối với 8051, chức năng duy nhất của Port 1 là chức năng xuất nhập cùng Port khác, Port 1 có thể xuất nhập theo bit và theo byte. /Psen 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.

        Khi tớn hiệu này được đưa lên mức cao trong ít nhất 2 chu kì máy, các thanh ghi trong bộ nhớ vi điều khiển được tải những giá trị thích hợp để khởi động lại hệ thống. AT89S52 có một bộ dao động trên chíp, nó thường được nối với bộ dao động thạch anh có tần số lớn nhất là 33MHz, thông thường là 12MHz.

        Hình 2.18  Cấu trúc của các chân trên Port0
        Hình 2.18 Cấu trúc của các chân trên Port0

        IC ghi dịch 74HC595 .1 Giới thiệu

        • Sơ đồ chân và chức năng các chân .1 Sơ đồ chân

          Khi ở mức cao, tất cả các đầu ra của 74HC595 trở về trạng thái cao trở, không có đầu ra nào được cho phép. Nếu dùng nhiều 74HC595 mắc nối tiếp nhau thì chân này đưa vào đầu vào của con tiếp theo khi đã dịch đủ 8 bit. Khi có một xung clock tích cực ở sườn dương (từ 0 lên 1)thì 1 bit được dịch vào IC.

          Khi có một xung clock tích cực ở sườn dương thì cho phép xuất dữ liệu trên các chân output.

          Led 7 đoạn .1 Giới thiệu

            Nếu led 7 đoạn có Cathode (cực -) chung, đầu chung này được nối xuống Ground (hay Mass), các chân còn lại dùng để điều khiển trạng thái sáng tắt của các led đơn, led chỉ sáng khi tín hiệu đặt vào các chân này ở mức 1. Phần cứng được kết nối với 1 Port bất kì của Vi điều khiển, để thuận tiện cho việc xử lí về sau phần cứng nên được kết nối như sau: Px.0 nối với chân a, Px.1nối với chân b, lần lượt theo thứ tự cho đến Px.7 nối với chân h. Để kết nối nhiều led 7 đoạn vào vi điều khiển thực hiện như sau: nối tất cả các chân nhận tín hiệu của tất cả các led 7 đoạn (chân abcdefgh) cần sử dụng vào cùng 1 Port, trong ví dụ, 8 led 7 đoạn có các chân nhận tín hiệu cùng được nối với P0.

            Dựng cỏc ngừ ra cũn lại của vi điều khiển điều khiển ON/OFF cho led 7 đoạn, mỗi ngừ ra điều khiển ON/OFF cho 1 led 7 đoạn (ON: led 7 đoạn được cấp nguồn để hiển thị, OFF: led 7 đoạn bị ngắt nguồn nên không hiển thị được). Thời gian ON/OFF chỉ trong khoảng vài chục às, và tại mỗi thời điểm chỉ cú một led 7 đoạn hiển thị số của chính nó, vì vậy mắt người thấy 3 led 7 đoạn không sáng đứt quãng, mà sáng liên tục, mỗi led hiển thị 1 số riêng của nó.

            Hình 2.25  Sơ đồ chân 7 SEG-COM-ANODE và hình ảnh minh họa 2.5.2  Kết nối với vi điều khiển
            Hình 2.25 Sơ đồ chân 7 SEG-COM-ANODE và hình ảnh minh họa 2.5.2 Kết nối với vi điều khiển

            THIẾT KẾ MẠCH ĐIỆN

            Mạch sử dụng 2 rơ-le làm việc điều khiển động cơ bơm nước hoạt động. LM35 là họ cảm biến nhiệt mạch tích hợp chính xác cao có điện áp đầu ra tỷ lệ tuyến tính với nhiệt độ theo thang độ Celsius. Họ cảm biến này không yêu cầu căn chỉnh ngoài vì vốn nó đã được căn chỉnh.

            ADC0804

            Thời gian chuyển đổi được định nghĩa 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 và CLK IN và khụng bộ hơn 110às. - WR (Write): Chân số 3, đây 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.

            Nếu CS = 0 khi WR tạo ra xung cao xuống thấp thì bộ ADC0804 bắt đầu quá trình chuyển đổi giá trị đầu vào tương tự Vin thành số nhị phân 8 bit. Bình thường chân này ở trạng thái cao và khi việc chuyển đổi tương tự số hoàn tất thì nó chuyển xuống mức thấp để báo cho CPU biết là dữ liệu chuyển đổi sẵn sàng để lấy đi.

            Khối hiển thị;

            7SEGQ

            RVCC

            Phân tích khối nguồn

            LED1

            LEDC2

            CON2

            Phân tích khối đọc cảm biến nhiệt độ

            VCC20

            3INTR

            VIN+6

            VIN -7

            VREF/29

            CLK IN4

            CLK R19

            ADC0804C7

            WR INTR

            GNDGND

            SƠ ĐỒ NGUYÊN LÝ

            P1.5/MOSI6

            P1.6/MISO7

            P1.7/SCK8

            RESET9

            RXD/P3.010

            TXD/P3.111

            INT0/P3.212

            INT1/P3.313

            XTAL118

            XTAL219

            PSEN

            29ALE/PROG

            30EA/VPP

            10KLED1

            INTR

            MODE

            DOWN C4

            104GND

            104VCC

            LED2

            LED LED3

            LED LED4

            330VCC

            GNDA2

            MẠCH IN