Thông báo

Tất cả đồ án đều đã qua kiểm duyệt kỹ của chính Thầy/ Cô chuyên ngành kỹ thuật để xứng đáng là một trong những website đồ án thuộc khối ngành kỹ thuật uy tín & chất lượng.

Đảm bảo hoàn tiền 100% và huỷ đồ án khỏi hệ thống với những đồ án kém chất lượng.

LUẬN VĂN TỐT NGHIỆP ĐIỆN TỬ MẠCH ĐỒNG HỒ BÁO TIẾT

mã tài liệu 301000100054
nguồn huongdandoan.com
đánh giá 5.0
mô tả 100 MB Bao gồm tất cả file,.... thuyết minh, lưu đồ và, FILE lập trình, và nhiều tài liệu liên quan kèm theo đồ án này....
giá 989,000 VNĐ
download đồ án

NỘI DUNG ĐỒ ÁN

LUẬN VĂN TỐT NGHIỆP ĐIỆN TỬ MẠCH ĐỒNG HỒ BÁO TIẾT, thuyết minh MẠCH ĐỒNG HỒ BÁO TIẾT, NGUYÊN LÝ MẠCH ĐỒNG HỒ BÁO TIẾT
 

MỤC LỤC

 

 

                                                                                                          Trang

CHƯƠNG DẪN NHẬP :                                                                     4    

PHẦN I. CƠ SỞ LÝ THUYẾT                                                            6

I. Vi điều khiển 89 C51                                                              7

II. Led 7 đoạn                                                                           36

III. IC 74HC 245                                                                      39

IV. IC HEF 4515B                                                                   40

V. IC LM 7805                                                                         40

PHẦN II. THIẾT KẾ MẠCH                                                             42

CHƯƠNG I. SƠ ĐỒ KHỐI                                                                42

CHƯƠNG II. SƠ ĐỒ NGUYÊN LÝ                                                  45

CHƯƠNG III. TÍNH TOÁN MẠCH                                                  48

I. Khối nguồn                                                                           49

II. Khối Relay                                                                           50

III. Khối hiển thị                                                                       52

IV. Mạch Reset                                                                         54

CHƯƠNG IV. CHƯƠNG TRÌNH                                                     56

CHƯƠNG KẾT LUẬN                                                                      85

CHƯƠNG DẪN NHẬP

Sự phát triển đi lên vượt bậc của ngành kỹ thuật máy tính và điện tử hiện nay đã được minh chứng cụ thể qua cuộc sống hằng ngày của chúng ta trong tất cả các lĩnh vực.

Việc ứng dụng máy vi tính vào kỹ thuật đo lường và điều khiển đã đem lại những kết quả đầy tính ưu việt. Các thiết bị, hệ thống đo lường và điều khiển ghép nối với máy tính có độ chính xác cao, thời gian thu thập số liệu ngắn, nhưng đáng quan tâm hơn là mức độ tự động hoá trong việc thu nhận và xử lý dữ liệu.

Kỹ thuật số ra đời đã khắc phục được các khuyết điểm của kỹ thuật tương tự, làm cho các bộ phận máy móc trở nên đơn giản, gọn nhẹ, ít tốn kém năng lượng và xử lý thông tin nhanh, chính xác hơn so với kỹ thuật tương tự.

Tuy vậy, nếu sử dụng các bộ điều khiển dùng các IC số chúng vẫn còn mắc một số khuyết điểm mà so với kỹ thuật vi xử lý nó vẫn tồn tại như:

- Kích thước lớn.

- Năng lượng tiêu thụ lớn.

- Tính mềm dẽo thấp, khó thay đổi.

- Khó sửa chữa, bảo trì.

Vi xử lý là một vi mạch điện tử có mật độ tích hợp cao, trong đó gồm các mạch số có khả năng nhận, xử lý và xuất dữ liệu. Đặc biệt là quá trình xử lý dữ liệu được điều khiển theo một chương trình gồm tập hợp các lệnh từ bên ngoài mà người sử dụng có thể thay đổi được một cách dễ dàng. Một vi xử lý có thể thực hiện rất nhiều yêu cầu điều khiển khác nhau.

Kỹ thuật vi xử lý ra đời với sự kết hợp giữa phần cứng và phần mềm đã làm cho hoạt động của các mạch điện trở nên mềm dẽo hơn với những phần mềm rất linh hoạt mà ta có thể sửa chữa, thay đổi hoặc bổ sung làm cho chương trình điều khiển thêm phong phú tùy theo nhu cầu của người sử dụng.

Kỹ thuật vi xử lý có tính phức tạp trong hoạt động, thiết kế nhưng lại rất kinh tế vì giá thành hạ và kích thước chiếm chỗ không nhiều, có dung lượng cao. Ngoài ra về mặt kỹ thuật cũng hơn hẳn kỹ thuật số vì quá trình hoạt động rất mềm dẽo, tốc độ xử lý cao và lại có thể mở rộng tính năng hoạt động sau này cho mạch điện. Đây là ưu điểm rất thuận lợi mà kỹ thuật vi xử lý mang lại.

Chúng em xin chân thành cảm ơn Thầy Tống Thanh Nhân đã tận tình hướng dẫn để hoàn thành luận văn này. Chúng tôi cũng xin chân thành cảm ơn các bạn bè đã đóng góp ý kiến và chỉ dẫn trong khi thực hiện đề tài.

Vì trình độ có hạn và đây la đề tài đầu tiên thực hiện một cách có hệ thống cho nên chắc chắn không thể tránh khỏi nhiều thiếu sót.

 

–

PHẦN I :

CƠ SỞ LÝ THUYẾT

 

VI ĐIỂU KHIỂN HỌ MSC-89C51       

I  CẤU TẠO VI ĐIỀU KHIỂN HỌ MSC-51

1. Giới thiệu cấu trúc phần cứng 8051

        1.1. Sơ đồ chân 8051

8051 là IC vi điều khiển (Microcontroller) do hãng Intel sản xuất. IC này có đặc điểm như sau:

  • 4k byte ROM,128 byte RAM
  • 4 Port I/O 8 bit.
  • 2 bộ đếm/ định thời 16 bit.
  • Giao tiếp nối tiếp.
  • 64k byte không gian bộ nhớ chương trình mở rộng.
  • 64k byte không gian bộ nhớ dữ liệu mở rộng.
  • Một bộ xử lý luận lý (thao tác trên các bít đơn).
  • 210 bit được địa chỉ hóa.
  • Bộ nhân / chia 4.

        Sơ lược về các chân của 8051:       

1.2. Chức năng của các chân 8051:

         Port 0: từ chân 32 đến chân 39 (P0.0 _P0.7). Port 0 có 2 chức năng: trong các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường IO, đối với thiết kế lớn có bộ nhớ mở rộng nó được kết hợp giữa bus địa chỉ và bus dữ liệu.

        Port 1: từ chân 1 đến chân 9 (P1.0 _ P1.7). Port 1 là port IO dùng cho giao tiếp với thiết bị ngoài nếu cần.

        Port 2:  từ chân 21 đến chân 28 (P2.0 _P2.7). Port 2 là một port có tác dụng kép dùng như các đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết bị dùng bộ nhớ mở rộng.

        Port 3: từ chân 10 đến chân 17 (P3.0 _ P3.7). Port 3 là port có tác dụng kép. Các chân của port này có nhiều chức năng, có công dụng chuyển đổi có liên hệ đến các đặc tính đặc biệt của 8051 như ở bảng sau  :

 

   Bit

Tên

Chức n

ăng chuyển đổi

P3.0

P3.1

P3.2

P3.3

P3.4

P3.5

P3.6

P3.7

RXD

TXD

INT0\

INT1\

T0

T1

WR\

RD\

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

Ngõ xuất dữ liệu nối tiếp.

Ngõ vào ngắt cứng thứ 0.

Ngõ vào ngắt cứng thứ 1.

Ngõ vào TIMER/ COUNTER thứ 0.

Ngõ vào của TIMER/ COUNTER thứ 1.

Tín hiệu ghi dữ liệu lên bộ nhớ ngoài.

Tín hiệu đọc bộ nhớ dữ liệu ngoài.

                   PSEN (Program store enable)

        PSEN là tín hiệu ngõ ra có tác dụng cho phép đọc bộ nhớ chương trình mở rộng và thường được nối đến chân OE\ của Eprom cho phép đọc các byte mã lệnh.

        PSEN ở mức thấp trong thời gian 8051 lấy lệnh. Các mã lệnh của chương trình được đọc từ Eprom qua bus dữ liệu, được chốt vào thanh ghi lệnh bên trong 8051 để giải mã lệnh. Khi 8051 thi hành chương trình trong ROM nội PSEN ở mức cao.

        ALE (Address Latch Enable):

        Khi 8051 truy xuất bộ nhớ bên ngoài, Port 0 có chức năng là bus địa chỉ và dữ liệu do đó phải tách các đường dữ liệu và địa chỉ. Tín hiệu ra ALE ở chân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nối chúng với IC chốt.

        Tín hiệu ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động.

        EA\ (External Access): Tín hiệu vào EA\ ở chân 31 thường được mắc lên mức 1 hoặc mức 0. Nếu ở mức 1, 8051 thi hành chương trình từ ROM nội. Nếu ở mức 0, 8051 thi hành chương trình từ bộ nhớ mở rộng. Chân EA\ được lấy làm chân cấp nguồn 21V khi lập trình cho  Eprom trong 8051.

        RST (Reset):  Khi ngõ vào tín hiệu này đưa lên mức cao ít nhất 2 chu kỳ máy, các thanh ghi bên trong được nạp những giá trị thích hợp để khởi động hệ thống. Khi cấp điện mạch phải tự động reset.

        Các ngõ vào bộ dao động X1, X2:

    Bộ tạo dao động được tích hợp bên trong 8051. Khi sử dụng 8051, người ta chỉ cần nối thêm tụ thạch anh và các tụ. Tần số tụ thạch anh thường là 12 Mh

        2. Cấu trúc bên trong của 8051

          2.1. Sơ đồ khối bên trong 8051:  

*Tổ chức bộ nhớ:

        Bộ nhớ bên trong 8051 bao gồm ROM và RAM. RAM bao gồm nhiều thành phần: phần lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng bit, các bank thanh ghi và các thanh ghi chức năng đặc biệt.

          8051 có bộ nhớ theo cấu trúc Harvard: có những vùng nhớ riêng biệt cho chương trình và dữ liệu. Chương trình và dữ liệu có thể chứa bên trong 8051 nhưng 8051 vẫn có thể kết nối với 64 k byte bộ nhớ chương trình và 64 k byte bộ nhớ dữ liệu mở rộng.

          Ram bên trong 8051 được phân chia như sau:

  • Các bank thanh ghi có địa chỉ từ 00H đến 1Fh.
  • Ram địa chỉ hóa từng bit có địa chỉ từ 20H đến 2FH.
  • Ram đa dụng từ 30H đến 7FH.
  • Các thanh ghi chức năng đặc biệt từ 80H đến FFH.

         -Ram đa dụng:

          Mọi địa chỉ trong vùng ram đa dụng đều có thể được truy xuất tự do dùng kiểu địa chỉ trực tiếp hay gián tiếp. Ví dụ để đọc nội dung ô nhớ ở địa chỉ 5FH của ram nội vào thanh ghi tích lũy A : MOV  A,5FH.

Hoặc truy xuất dùng cách địa chỉ gián tiếp qua R0 hay R1. Ví dụ 2 lệnh sau sẽ thi hành cùng nhiệm vụ như lệnh ở trên:

          MOV R0, #5FH

          MOV A , @R0

        -Ram có thể truy xuất từng bit:

          8051 chứa 210 bit được địa chỉ hóa từng bit, trong đó 128 bit chứa ở các byte có địa chỉ từ 20H đến 2FH, các bit còn lại chứa trong nhóm thanh ghi chức năng đặc biệt.

          Ý tưởng truy xuất từng bit bằng phần mềm là một đặc tính mạnh của vi điều khiển nói chung. Các bit có thể được đặt, xóa, and, or,… với 1 lệnh đơn. Ngoài ra các port cũng có thể truy xuất được từng bít làm đơn giản phần mềm xuất nhập từng bit.

          Ví dụ để đặt bit 67H ta dùng lệnh sau:     SETB    67H.

        -Các bank thanh ghi:

          Bộ lệnh 8051 hỗ trợ 8 thanh ghi có tên là R0 đến R7 và theo mặc định (sau khi reset hệ thống), các thanh ghi nàyở các địa chỉ 00H đến 07H. lệnh sau đây sẽ đọc nội dung ở địa chỉ 05H vào thanh ghi tích lũy:    MOV  A, R5.

          Đây là lệnh 1 byte dùng địa chỉ thanh ghi. Tuy nhiên có thể thi hành bằng lệnh 2 byte dùng địa chỉ trực tiếp nằm trong byte thứ 2:   MOV   A, 05H.

         

Lệnh dùng các thanh ghi R0 đến R7 thì sẽ ngắn hơn và nhanh hơn  nhiều so với lệnh tương ứng dùng địa chỉ trực tiếp.

          Bank thanh ghi tích cực bằng cách thay đổi các bit trong từ trạng thái chương trình (PSW). Giả sủ thanh ghi thứ 3 đang được truy xuất, lệnh sau đây sẽ di chuyển nội dung của thanh ghi A vào ô nhớ ram có địa chỉ 18H:     MOV    R0,  A.

        * Các thanh ghi có chức năng đặc biệt:

 8051 có 21 thanh ghi chức năng đặc biệt (SFR: Special Funtion Register) ở vùng trên của RAM nội từ địa chỉ 80H đến FFH.

Chú ý: tất cả 128 địa chỉ từ 80H đến FFH không được định nghĩa, chỉ có 21 thanh ghi chức năng đặc biệt được định nghĩa sẵn các địa chỉ.

        -Thanh ghi trạng thái chương trình:

Thanh ghi trạng thái chương trình PSW (Program Status Word ) ở địa chỉ DOH chứa các bít trạng thái như bảng sau:

Bit

Ký hiệu

Địa chỉ

Ý nghĩa

PSW.7

PSW.6

PSW.5

PSW.4

PSW.3

 

 

 

 

PSW.2

PSW.1

PSW.0

CY

AC

F0

RS1

RS0

 

 

 

 

0V

_

P

D7H

D6H

D5H

D4H

D3H

 

 

 

 

D2H

D1H

D0H

Cờ nhớ

Cờ nhớ phụ

Cờ 0

Bit 1 chọn bank thanh ghi

Bit 0 chọn bank thanh ghi

    00=bank 0: địa chỉ 00H – 07H

    01=bank 1: địa chỉ 08H – 0FH

    10=bank 2: địa chỉ 10H – 1FH

    11=bank 3: địa chỉ 18H –1FH

Cờ tràn

Dự trữ

Cờ parity chẵn lẽ.

    + Cờ nhớ:

          C = 1 nếu phép toán cộng có tràn hoặc phép toán trừ có mượn và ngược lại C = 0. Ví dụ nếu thanh ghi A có giá trị FF thì lệnh sau:    

ADD    A, #1

Phép cộng này có tràn nên bit C = 1 và kết quả trong thanh ghi A = 00H

Cờ nhớ có thể xem là thanh ghi 1 bit cho các lệnh luận lý thi hành trên bit.                    ANL   C, 25H

    + Cớ nhớ phụ:

Khi cộng các số BCD, cờ nhớ phụ AC = 1 nếu kết quả 4 bit thấp trong khoảng 0AH đến 0FH. Ngược lại AC = 0.

    + Cờ 0:

Cờ 0 là một bit cờ đa dụng dành cho các ứng dụng của người dùng.

    + Các bit chọn bankthanh ghi truy xuất:

    Các bit chọn bank thanh ghi (RS0 và RS1) xác định bank thanh ghi được truy xuất. Chúng được xóa sau khi reset hệ thống và được thay đổi bằng phần mềm nếu cần. Ví dụ lệnh sau cho phép bank thanh ghi 3 và di chuyển nội dung của bank thanh ghi R7 (địa chỉ bye 1FH) vào thanh ghi A:

                   SETB    RS1

          SETB    RS0

                   MOV     A,R7

                    -Thanh ghi B:

        Thanh ghi B ở địa chỉ F0H được dùng cùng với thanh ghi tích lũy A cho các phép toán nhân và chia. Lệnh MUL AB sẽ nhân các giá trị không dấu 8 bit trong A và B rồi trả kết quả về 16 bit trong A (byte thấp) và B (byte cao). Lệnh DIV AB sẽ chia A cho B rồi trả kết quả nguyên trong A và phần dư trong B. thanh ghi cũng có thể xem như thanh ghi đệm đa dụng.

        -Con trỏ ngăn xếp:

          Con trỏ ngăn xếp SP là một thanh ghi 8 bit ở địa chỉ 18H. Nó chứa địa chỉ của byte dữ liệu hiện hành trên đỉnh của ngăn xếp. Các lệnh trên ngăn xếp bao gồm các lệnh cất dữ liệu vào ngăn xếp và lấy dữ liệu ra khỏi ngăn xếp. Lệnh cất dữ liệu vào ngăn xếp sẽ làm tăng SP trước khi ghi dữ liệu và lệnh lấy dữ liệu ra khỏi ngăn xếp sẽ làm giảm SP. Ngăn xếp của 8051 được giữ trong ram nội và giới hạn các địa chỉ có thế truy xuất bằng địa chỉ gián tiếp, chúng là 128 byte đầu của 8051

Để khởi động SP với ngăn xếp bắt đầu tại địa chỉ 60 H, các lệnh sau đây được dùng:

                   MOV   SP,#5FH

Khi reset 8051, SP sẽ mang giá trị mặc định là 07H và dữ liệu đầu tiên sẽ được cất vào ô nhớ ngăn xếp có địa chỉ là 08 H. Ngăn xếp được truy xuất trực tiếp bằng các lệnh PUSH và POP để lưu trữ tạm thời và lấy lại dữ liệu hoặc truy xuất ngầm bằng lệnh gọi chương trình con ACALL,LCALL và các lệnh trở về (RET. RETI) để lưu trữ giá trị của bộ đếm chương trình khi bắt đầu thực hiện chương trình con và lấy lại khi kết thúc chương trình con.

        -Con trỏ dữ liệu

          Con trỏ dữ liệu DPTR được dùng để truy xuất bộ nhớ ngoài là một thanh ghi 16 bit ở địa chỉ 82H (DPL: byte thấp) và 83H (DPH: byte cao). 3 lệnh sau sẽ ghi 55H vào ram ngoài ở địa chỉ 1000H:

                                       MOV  A,#55H

                                       MOV   DPTR, #1000H

                                          MOVX @DPTR,A

        -Các thanh ghi port xuất nhập:

Các port của 8051 bao gồm port 0 ở địa chỉ 80H, port 1 ở địa chỉ 90H, port 2 ở địa chỉ A0H, và port3 ở địa chỉ B0H. tất cả các port này đều có thể truy xuất từng bit nên rất thuận tiện trong khả năng giao tiếp.

        -Các thanh ghi timer: 

          8051 có chứa 2 bộ định thời/ đếm 16 bit được dùng cho việc định thời hoặc đếm sự kiện. Timer 0 ở địa chỉ 8AH (TL0: byte thấp) và 8CH (TH0: byte cao). Timer 1 ở địa chỉ 8BH (TL1: byte thấp) và 8DH (TH1: byte cao). Việc khởi động timer được Set bởi Timer Mode (TMOD) ở địa chỉ 89H và thanh ghi điều khiển timer (TCON) ở địa chỉ 88H, chỉ có TCON được địa chỉ hóa từng bit.

        -Các thanh ghi port nối tiếp:

          8051 chứa một port nối tiếp dành cho việc trao đổi thông tin với các thiết bị nối tiếp như máy tính, modem hoặc giao tiếp nối tiếp với các IC khác. Một thanh ghi gọi là bộ đệm dữ liệu nối tiếp (SBUF) ở địa chỉ 99H sẽ giữ cả 2 dữ liệu truyền và dữ liệu nhận. Khi truyền dữ liệu thì ghi lên SBUF, khi nhận dữ liệu thì đọc SBUF. Các mode vận hành khác nhau được lập trình qua thanh ghi điều khiển port nối tiếp SCON ở địa chỉ 98H.

        -Các thanh ghi ngắt:

          8051 có cấu trúc 5 nguồn ngắt, 2 mức ưu tiên. Các ngắt bị cấm sau khi reset hệ thống và sẽ được cho phép bằng việc ghi thanh ghi cho phép ngắt (IE) ở địa chỉ A8H, cả 2 thanh ghi được địa chỉ hóa từng bit.

        -Thanh ghi điều khiển công suất:

Thanh ghi điều khiển công suất (PCON) ở địa chỉ 87H chứa các bit điều khiển.

        -Tín hiệu Reset:

          8051 có ngõ vào reset RST tác động ở mức cao trong khoảng thời gian 2 chu kỳ, sau đó xuống mức thấp để 8051 bắt đầu làm việc. RST có thể kích bằng tay bằng một phím nhấn thường mở, sơ đồ mạch reset như hình trên (hình a)

 sau khi reset hệ thống được tóm tắt như sau:

Thanh ghi

Nội dung

Đếm chương trình PC

Thanhghi tích lũy A

Thanh ghi B

Thanh ghi trạng thái

SP

DPTR

Port 0 đến Port 3

IP

IE

Các thanh ghi định thời

0000H

00H

00H

00H

07H

0000H

FFH

XXX0000 B

0XX00000 B

00H

 

Thanh ghi quan trọng nhất là thanh ghi bộ đếm chương trình PC được Reset tại địa chỉ 0000H. Khi ngõ vào RST xuống mức thấp, chương trình luôn bắt đầu tại địa chỉ 0000H của bộ nhớ chương trình. Nội dung của Ram trong chip không bị hay đổi bởi tác động của ngõ vào Reset

        c.Hoạt động thanh ghi TIMER

8051 có hai timer 16 bit, mỗi timer có bốn cách làm việc. Người ta sử dụng các timer để:

  • Định khoảng thời gian.
  • Đếm sự kiện.
  • Tạo tốc độ baud cho port nối tiếp trong 8051.

Trong các ứng dụng định khoảng thời gian, người ta lập trình timer ở những khoảng đều đặn và đặt cờ tràn timer. Cờ được dùng để đồng bộ hóa chương trình để thực hiện một tác động như kiểm tra trạng thái của các ngõ vào hoặc gửi sự kiện ra các ngõra. Các ứng dụng khác có thể sử dụng việc tạo xung nhịp đều đặn của timer để đo thời gian trôi qua giữa hai sự kiện (ví dụ đo độ rộng xung ).

Truy xuất các timer của 8051 dùng sáu thanh ghi chức năng đặc biệt cho trong bảng sau:

SFR

Mục Đích

Địa chỉ

Địa chỉ hóa từng bit

TCON

Điều khiển Timer

88H

               Có

TMOD

Chế độ Timer

89H

Không

TL0

Byte thấp của Timer 0

90H

Không

TL1

Byte thấp của Timer 1

91H

Không

TH0

Byte cao của Timer 0

92H

Không

TH1

Byte cao của Timer 1

93H

Không

Các thanh ghi chức năng của timer trong 8031.

         Thanh ghi chế độ timer (TMOD):

Thanh ghi TMOD chứa hai nhóm 4 bit dùng để đặt chế độ làm việc cho Timer 0, và Timer 1.

Bit

Tên

Timer

Mô tả

7

GATE

1

Bit mở cổng, khi lên 1 timer chỉ chạy khi INT1 ở mức cao

6

C/T

1

Bit chọn chế độ Count/Timer

    1 =  bộ đếm sự kiện

    0 =  bộ định khoảng thời gian

5

M1

1

Bit 1 của chế độ mode

4

M0

1

Bit 0 của chế độ mode

3

GATE

0

Bit mở cổng, khi lên 1 timer chỉ chạy khi INT0 ở mức cao

2

C/T

0

Bit chọn chế độ Count/Timer   

1

M1

0

Bit 1 của chế độ mode

0

M0

0

Bit 0 của chế độ mode

Tóm tắt thanh ghi chức năng TMOD.

       Thanh ghi điều khiển timer(TCON)

Thanh ghi TCON chứa các bit trạng thái và các bit điều khiển cho Timer 1, Timer 0.

Bit

Ký hiệu

Địa chỉ

Mô tả

TCON.7

TF1

8FH

Cờ báo tràn timer 1. Đặt bởi phần cứng khi tràn, được xóa bởi phần mềm, hoặc phần cứng khi bộ xử lý chỉ đến chương trình phục vụ ngắt.

TCON.6

TR1

8EH

Bit điều khiển timer 1 chạy đặt xóa bằng phần mềm để cho timer chạy ngưng.

TCON.5

TF0

8DH

Cờ báo tràn Timer 0.

TCON.4

TR0

8CH

Bit điều khiển Timer 0 chạy

TCON.3

IE1

8BH

Cờ cạnh ngắt 1 bên ngoài. Đặt bởi phần cứng khi phát hiện một cạnh xuống ở INT1 xóa bằng phần mềm họăc phần cứng khi CPU chỉ đến chương trình phục vụ ngắt.

TCON.2

IT1

8AH

Cờ kiểu ngắt 1 bên ngoài. Đặt xóa bằng phần mềm để ngắt ngoài tích cực cạnh xuống /mức thấp.

TCON.1

IE0

89H

Cờ cạnh ngắt 0 bên ngòai

TCON.0

IT0

88h

Cờ kiểu ngắt 0 bên ngoài

Tóm tắt thanh ghi chức năng TCON

Khởi động và truy xuất thanh ghi timer:

          Thông thường các thanh ghi được khởi động một lần đầu ở chương trình để đặt ở chế độ làm việc đúng. Sau đó, trong thân chương trình, các thanh ghi timer được cho chạy, dừng, các bit được kiểm tra và xóa, các thanh ghi timer được đọc và cập nhật…. theo đòi hỏi các ứng dụng.

          TMOD là thanh ghi thứ nhất được khởi động vì nó đặt chế độ hoạt động. Ví dụ, các lệnh sau khởi động Timer 1 như timer 16 bit (chế độ 1) có xung nhịp từ bộ dao động tên chip cho việc định khoảng thời gian:

MOV  TMOD, #1B

        Lệnh này sẽ đặt M1 = 1 và M0 = 0 cho chế độ 1, C/ T= 0 và GATE = 0 cho xung nhịp nội và xóa các bit chế độ Timer 0. Dĩ nhiên, timer không thật sự bắt đầu định thời cho đến khi bit điều khiển chạy TR1 được đặt lên 1.

          Nếu cần số đếm ban đầu, các thanh ghi TL1/TH1 cũng phải được khởi động. Một khoảng 100ms có thể được khởi động bằng cách khởi động giá trị cho TH1/TL1 là FF9CH:

MOV   TL1, #9CH

  MOV   TH1, #0FFH

          Rồi timer được cho chạy bằng cách đặt bit điều khiển chạy như sau:

                                SETB    TR1

Cờ báo tràn được tự động đặt lên 1 sau 100ms. Phần mềm có thể đợi trong 100 ms bằng cách dùng lệnh rẽ nhánh có điều kiện nhảy đến chính nó trong khi cờ báo tràn chưa được đặt lên 1:

                                 WAIT:   JNB   TF1, WAIT

          Khi timer tràn, cần dừng timer và xóa cờ báo tràn trong phần mềm:

                                  CLR  TR1

                                       CLR  TF1

        d. Ngắt  ( INTERRUPT)

Một ngắt là sự xảy ra một điều kiện, một sự kiện mà nó gây ra treo tạm thời thời chương trình chính  trong khi điều kiện đó được phục vụ bởi một chương trình khác.

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.

Tổ chức ngắt của 8051:

Có  5 nguồn ngắt ở 8031: 2 ngắt ngoài, 2 ngắt từ timer và 1 ngắt port nối tiếp. Tất cả các ngắt theo mặc nhiên đều bị cấm sau khi reset hệ thống và được cho phép từng cái một bằng phần mềm.

Khi có hai hoặc nhiều ngắt đồng thời, hoặc một ngắt xảy ra khi một ngắt khác đang được phục vụ, có cả hai sự tuần tự hỏi vòng và sơ đồ ưu tiên hai mức dùng để xác định việc thực hiện các ngắt. Việc hỏi vòng tuần tự thì cố định nhưng ưu tiên ngắt thì có thể lập trình được.

       -  Cho phép và cấm ngắt :

Mỗi nguồn ngắt được cho phép hoặc cấm ngắt qua một thanh ghi chức năng đặt biệt có định địa chỉ bit IE ( Interrupt Enable : cho phép ngắt ) ở địa chỉ A8H.

Bit

Ký hiệu

Địa chỉ bit

Mô tả

IE.7

EA

AFH

Cho phép / Cấm toàn bộ

IE.6

_

AEH

Không được mô tả

IE.5

ET2

ADH

Cho phép ngắt từ Timer 2 (8052)

IE.4

ES

ACH

Cho phép ngắt port nối tiếp

IE.3

ET1

ABH

Cho phép ngắt từ Timer 1

IE.2

EX1

AAH

Cho phép ngắt ngoài 1

IE.1

ET0

A9H

Cho phép ngắt từ Timer 0

IE.0

EX0

A8H

Cho phép ngắt ngoài 0

Tóm tắt thanh ghi IE

     Các cờ ngắt :

Khi điều kiện ngắt xảy ra thì ứng với từng loại ngắt mà loại cờ đó được đặt lên một để xác nhận ngắt.

Ngắt

Cờ

Thanh ghi SFR và vị trí bit

Bên ngoài 0

IE0

TCON.1

Bên ngoài 1

IE1

TCON.3

Timer 1

TF1

TCON.7

Timer 0

TF0

TCON.5

Port nối tiếp

TI

SCON.1

Port nối tiếp

RI

SCON.0

Các lọai cờ ngắt

         - Các vectơ ngắt :

          Khi chấp nhận ngắt, giá trị được nạp vào PC được gọi là vector ngắt. Nó là địa chỉ bắt đầu của ISR cho nguồn tạo ngắt, các vector ngắt được cho ở bảng sau:

Ngắt

Cờ

Địa chỉ vector

Reset hệ thống

RST

0000H

Bên ngoài 0

IE0

0003H

Timer 0

TF0

000BH

Bên ngoài 1

IE1

0013H

Timer 1

TF1

001BH

Port nối tiếp

TI và RI

0023H

Timer 2

 

002BH

Vector reset hệ thống (RST ở địa chỉ 0000H) được để trong bảng này vì theo nghĩa này, nó giống ngắt : nó ngắt chương trình chính và nạp cho PC giá trị mới.

II. TĨM TẮT TẬP LỆNH CỦA 8951 :

Các chương trình được cấu tạo từ nhiều lệnh, chúng được xây dựng logic, sự nối tiếp của các lệnh được nghĩ ra một cách hiệu quả và nhanh chóng, kết quả của chương trình khả thi.

Tập lệnh họ MSC-51 được sự kiểm tra của các mode định vị và các lệnh của chúng có các Opcode 8 bit. Điều này cung cấp khả năng 28= 256 lệnh được thi hành và một lệnh không được định nghĩa. Vài lệnh có 1 hoặc 2 byte bởi dữ liệu hoặc địa chỉ thêm vào Opcode. Trong toàn bộ các lệnh có 139 lệnh 1 byte, 92 lệnh 2 byte và 24 lệnh 3 byte.

1.Cc mode định vị (addressing Mode) :

Các mode định vị là một bộ phận thống nhất của tập lệnh. Chúng cho phép định rõ nguồn hoặc nơi gởi tới của dữ liệu ở các đường khác nhau tùy thuộc vào trạng thái của người lập trình. 8951 có 8 mode định vị được dùng như sau:

  • Thanh ghi.
  • Trực tiếp.
  • Gián tiếp.
  • Tức thời.
  • Tương đối.
  • Tuyệt đối.
  • Dài.
  • Định vị
  1. Sự định vị thanh ghi (register addressing) :
  2.  

Có 4 dãy thanh ghi 32 byte đầu tiên của RAM dữ liệu trên Chip địa chỉ 00H - 1FH, nhưng tại một thời điểm chỉ có một dãy hoạt động các bit PSW3, PSW4 của từ trạng thái chương trình sẽ quyết định dãy nào hoạt động.
Các lệnh để định vị thanh ghi được  ghi mật mã bằng cách dùng bit trọng số thấp nhất của Opcode lệnh để chỉ một thanh ghi trong vùng địa chỉ theo logic này. Như vậy 1 mã chức năng và địa chỉ hoạt động có thể được kết hợp để tạo thành một lệnh ngắn 1 byte như sau:

Register Addressing.

Một vài lệnh dùng cụ thể cho 1 thanh ghi nào đó như thanh ghi A, DPTR.... mã Opcode tự nó cho biết thanh ghi vì các bit địa chỉ không cần biết đến.

1.2 Sự định địa chỉ trực tiếp (direct addressing) :

Sự định địa chỉ trực tiếp có thể truy xuất bất kỳ giá trị nào trên Chip hoặc  thanh ghi phần cứng trên Chip. Một byte địa chỉ trực tiếp được đưa vào Opcode để định rõ vị trí được dùng như sau:
Direct Addressing

Tùy thuộc các bit bậc cao của địa chỉ trực tiếp mà một trong 2 vùng nhớ được chọn. Khi bit 7 = 0, thì địa chỉ trực tiếp ở trong khoảng 0 - 127 (00H - 7FH) và 128 vị trí nhớ thấp của RAM trên Chip được chọn.

Tất cả các Port I/O, các thanh ghi chức năng đặc biệt, thanh ghi điều khiển hoặc thanh ghi trạng thái bao giờ cũng được quy định các địa chỉ trong khoảng 128 - 255 (80 - FFH). Khi byte địa chỉ trực tiếp nằm trong giới hạn này (ứng với bit 7 = 1) thì thanh ghi chức năng đặc biệt được truy xuất. Ví dụ Port 0 và Port 1 được quy định địa chỉ trực tiếp là 80H và 90H, P0, P1 là dạng thức rút gọn thuật nhớ của Port, thì sự biến thiên cho phép thay thế và hiểu dạng thức rút gọn thuật nhớ của chúng. Chẳng hạn lệnh: MOV P1, A sự biên dịch sẽ xác định địa chỉ trực tiếp của Port 1 là 90H đặt vào hai byte của lệnh (byte 1 của port 0).

1.3 Sự định địa vị gin tiếp (Indirect addressing) :

Sự định địa chỉ gián tiếp được tượng trưng bởi ký hiệu @ được đặt trước R0, R1 hay DPTR. R0 và R1 có thể hoạt động như một thanh ghi con trỏ mà nội dung của nó cho biết một địa chỉ trong RAM nội ở nơi mà dữ liệu được ghi hoặc được đọc. Bit có trọng số nhỏ nhất của Opcode lệnh sẽ xác định R0 hay R1 được dùng con trỏ Pointer.

1.4 Sự định địa chỉ tức thời (Immediate addressing) :

Sự định địa chỉ tức thời được tượng trưng bởi ký hiệu # được đứng trước một hằng số, 1 biến ký hiệu hoặc một biểu thức số học được sử dụng bởi các hằng, các ký hiệu, các hoạt động do người điều khiển. Trình biên dịch tính toán giá trị và thay thế dữ liệu tức thời. Byte lệnh thêm vô chứa trị số dữ liệu tức thời như sau:

1.5 Sự định địa chỉ tương đối :
Sự định địa chỉ tương đối chỉ sử dụng với những lệnh nhảy nào đó. Một địa chỉ tương đối (hoặc Offset) là một giá trị 8 bit mà nó được cộng vào bộ đếm chương trình PC để tạo thành địa chỉ một lệnh tiếp theo được thực thi. Phạm vi của sự nhảy nằm trong khoảng -128 – 127. Offset tương đối được gắn vào lệnh như một byte thêm vào như sau :

Những nơi nhảy đến thường được chỉ rõ bởi các nhãn và trình biên dịch xác định Offset Relative cho phù hợp.

Sự định vị tương đối đem lại thuận lợi cho việc cung cấp mã vị trí độc lập, nhưng bất lợi là chỉ nhảy ngắn trong phạm vi -128 – 127 byte.

1.6 Sự định địa chỉ tuyệt đối (Absolute addressing) :

Sự định địa chỉ tuyệt đối được dùng với các lệnh ACALL và AJMP. Các lệnh 2 byte cho phép phân chia trong trang 2K đang lưu hành của bộ nhớ mã của việc cung cấp 11 bit thấp để xác định địa chỉ trong trang 2K (A0…A10 gồm A10…A8 trong Opcode và A7…A0 trong byte) và 5 bit cao để chọn trang 2K (5 bit cao đang lưu hành trong bộ đếm chương trình là 5 bit Opcode).
Sự định vị tuyệt đối đem lại thuận lợi cho các lệnh ngắn (2 byte), nhưng bất lợi trong việc  giới hạn phạm vi nơi gởi đến và cung cấp mã có vị trí độc lập.

1.7 Sự định vị di (Long addressing) :

Sự định vị dài được dùng với lệnh LCALL và LJMP. Các lệnh 3 byte này bao gồm một địa chỉ nơi gởi tới 16 bit đầy đủ là 2 byte và 3 byte của lệnh.

Ưu điểm của sự định vị dài là vùng nhớ mã 64K có thể được dùng hết, nhược điểm là các lệnh đó dài 3 byte và vị trí lệ thuộc. Sự phụ thuộc vào vị trí sẽ bất lợi bởi chương trình không thể thực thi tại địa chỉ khác.

1.8 Sự định địa chỉ phục lục (Index addressing) :

Sự định địa chỉ phụ lục dùng một thanh ghi cơ bản (cũng như bộ đếm chương trình hoặc bộ đếm dữ liệu) và Offset (thanh ghiA) trong sự hình thành 1 địa chỉ liên quan bởi lệnh JMP hoặc MOVC.

Index Addressing.

Các bảng của lệnh nhảy hoặc các bảng tra được tạo nên một cách dễ dàng bằng cách dùng địa chỉ phụ lục.

 

2. Cc kiểu lệnh (Instruction Types) :

8951 chia ra 5 nhóm lệnh chính:

  • Các lệnh số học.
  • Lệnh logic.
  • Dịch chuyển dữ liệu.
  • Lý luận.
  • Rẽ nhánh chương trình.

Từng kiểu lệnh được mô tả như sau:

2.1. Cc lệnh số học (Arithmetic Instruction) :

          ADD A, <src, byte>

          ADD  A, Rn          : (A)  (A) + (Rn)

          ADD  A, direct      : (A)  (A) + (direct)

          ADD  A, @ Ri       : (A)  (A) + ((Ri))

          ADD  A, # data     : (A)  (A) + # data

          ADDC         A, Rn          : (A)  (A) + (C) + (Rn)

          ADDC         A, direct      : (A)  (A) + (C) + (direct)

          ADDC         A, @ Ri       : (A)  (A) + (C) + ((Ri))

          ADDC         A, # data     : (A)  (A) + (C) + # data

          SUBB A, <src, byte>

          SUBB          A, Rn          : (A)  (A) - (C) - (Rn)

          SUBB          A, direct      : (A)  (A) - (C) - (direct)

          SUBB          A, @ Ri       : (A)  (A) - (C) - ((Ri))

          SUBB          A, # data     : (A)  (A) - (C) - # data

          INC <byte>

          INC   A                 : (A)  (A) + 1

          INC   direct           : (direct)  (direct) + 1

          INC   Ri                : ((Ri))  ((Ri)) + 1

          INC   Rn               : (Rn)  (Rn) + 1

          INC   DPTR                   : (DPTR)  (DPTR) + 1

          DEC <byte>

          DEC  A                 : (A)  (A) - 1

          DEC  direct           : (direct)  (direct) - 1

          DEC  @Ri            : ((Ri))  ((Ri)) - 1

          DEC  Rn               : (Rn)  (Rn) - 1

          MULL         AB     : (A)  LOW [(A) x (B)];có ảnh hưởng cờ OV

                                      : (B)  HIGH [(A) x (B)];cờ Cary được xóa.

          DIV   AB              : (A)  Integer Result of [(A)/(B)]; cờ OV

                                      : (B)  Remainder of [(A)/(B)]; cờ Carry xóa

          DA    A                 :Điều chỉnh thanh ghi A thành số BCD đúng trong phép cộng BCD (thường DA A đi kèm với ADD, ADDC)

  • Nếu [(A3-A0)>9] và [(AC)=1]  (A3A0)  (A3A0) + 6.
  • Nếu [(A7-A4)>9] và [(C)=1]  (A7A4)  (A7A4) + 6.

2.2 Cc hoạt đông logic (Logic Operation) :

Tất cả các lệnh logic sử dụng thanh ghi A như là một trong những toán hạng thực thi một chu kỳ máy, ngoài A ra mất 2 chu kỳ máy. Những hoạt động logic có thể được thực hiện trên bất kỳ byte nào trong vị trí nhớ dữ liệu nội mà không qua thanh ghi A.

Các hoạt động logic được tóm tắt như sau:

          ANL <dest - byte> <src - byte>

          ANL  A, Rn          : (A)  (A) AND (Rn).

          ANL  A, direct      : (A)  (A) AND (direct).

          ANL  A,@ Ri        : (A)  (A) AND ((Ri)).

          ANL  A, # data     : (A)  (A) AND (# data).

          ANL  direct, A      : (direct)  (direct) AND (A).

          ANL  direct, # data        : (direct)  (direct) AND # data.

          ORL <dest - byte> <src - byte>

          ORL  A, Rn          : (A)  (A) OR (Rn).

          ORL  A, direct      : (A)  (A) OR (direct).

          ORL  A,@ Ri        : (A)  (A) OR ((Ri)).

          ORL  A, # data     : (A)  (A) OR # data.

          ORL  direct, A      : (direct)  (direct) OR (A).

          ORL  direct, # data        : (direct)  (direct) OR # data.

          XRL <dest - byte> <src - byte>

          XRL   A, Rn          : (A)  (A)  (Rn).

          XRL   A, direct      : (A)  (A)  (direct).

          XRL   A,@ Ri        : (A)  (A)  ((Ri)).

          XRL   A, # data     : (A)  (A)  # data.

          XRL   direct, A      : (direct)  (direct)  (A).

          XRL   direct, # data        : (direct)  (direct)  # data.

          CLR  A                 : (A)  0

          CLR  C                 : (C)  0

          CLR  Bit               : (Bit)  0

          RL     A                 : Quay vòng thanh ghi A qua trái 1 bit

                                      (An + 1)  (An); n = 06

                                      (A0)  (A7)

          RLC  A                 : Quay vòng thanh ghi A qua trái 1 bit có cờ Carry

                                      (An + 1)  (An); n = 06

                                      (C)  (A7)

                                      (A0)  (C)

          RR     A                 : Quay vòng thanh ghi A qua phải 1 bit

                                      (An + 1)  (An); n = 06

                                      (A0)  (A7)

          RRC  A                 : Quay vòng thanh ghi A qua phải 1 bit có cờ Carry

                                      (An + 1)  (An); n = 06

                                      (C)  (A7)

                                      (A0)  (C)

          SWAP         A                 : Đổi chổ 4 bit thấp và 4 bit cao của A cho nhau (A3A0)(A7A4).

2.3 Cc lệnh rẽ nhnh :

Có nhiều lệnh để điều khiển lên chương trình bao gồm việc gọi hoặc trả lại từ chương trình con hoặc chia nhánh có điều kiện hay không có điều kiện.

Tất cả các lệnh rẽ nhánh đều không ảnh hưởng đến cờ. Ta có thể định nhản cần nhảy tới mà không cần rõ địa chỉ, trình biên dịch sẽ đặt địa chỉ nơi cần nhảy tới vào đúng khẩu lệnh đã đưa ra.

Sau đây là sự tóm tắt từng hoạt động của lệnh nhảy.

          JC     rel               : Nhảy đến “rel” nếu cờ Carry C = 1.

          JNC   rel               : Nhảy đến “rel” nếu cờ Carry C = 0.

          JB      bit, rel                   : Nhảy đến “rel” nếu (bit) = 1.

          JNB   bit, rel                   : Nhảy đến “rel” nếu (bit) = 0.

          JBC   bit, rel                   : Nhảy đến “rel” nếu bit = 1 và xóa bit.

          ACALL       addr11: Lệnh gọi tuyệt  đối trong page 2K.

                                      (PC)  (PC) + 2

                                      (SP)  (SP) + 1

                                      ((SP))  (PC7PC0)

                                      (SP)  (SP) + 1

                                      ((SP))  (PC15PC8)

                                      (PC10PC0)  page Address.

          LCALL        addr16: Lệnh gọi dài chương trình con trong 64K.

                                      (PC)  (PC) + 3

                                      (SP)  (SP) + 1

                                      ((SP))  (PC7PC0)

                                      (SP)  (SP) + 1

                                      ((SP))  (PC15PC8)

                                      (PC)  Addr15Addr0.

          RET                      : Kết thúc chương trình con trở về chương trình chính.

                                      (PC15PC8)  (SP)

                                      (SP)  (SP) - 1

                             (PC7PC0)  ((SP))

                                      (SP)  (SP) -1.

          RETI                     : Kết thúc thủ tục phục vụ ngắt quay về chương trình chính hoạt động tương tự như RET.

          AJMP          Addr11       : Nhảy tuyệt đối không điều kiện trong 2K.

                                      (PC)  (PC) + 2

                                      (PC10PC0)  page Address.

          LJMP          Addr16       : Nhảy dài không điều kiện trong 64K

                                      Hoạt động tương tự lệnh LCALL.

          SJMP          rel               :Nhảy ngắn không điều kiện trong (-128127) byte

                                      (PC)  (PC) + 2

                                      (PC)  (PC) + byte 2

          JMP @ A + DPTR:Nhảy không điều kiện đến địa chỉ (A) + (DPTR)

                                      (PC)  (A) + (DPTR)

          JZ      rel               : Nhảy đến A = 0. Thực hành lệnh kế nếu A  0.

                                      (PC)  (PC) + 2

                                      (A) = 0  (PC)  (PC) + byte 2

          JNZ   rel               : Nhảy đến A  0. Thực hành lệnh kế nếu A = 0.

                                      (PC)  (PC) + 2

                                      (A) < > 0  (PC)  (PC) + byte 2

          CJNE A, direct, rel : So sánh và nhảy đến A  direct

                             (PC)  (PC) + 3

                             (A) < > (direct)  (PC)  (PC) + Relative Address.

                             (A) < (direct)  C = 1

                             (A) > (direct)  C = 0

                             (A) = (direct). Thực hành lệnh kế tiếp

          CJNE A, # data, rel : Tương tự lệnh CJNE A, direct, rel.

          CJNE Rn, # data, rel : Tương tự lệnh CJNE A, direct, rel.

          CJNE @ Ri, # data, rel : Tương tự lệnh CJNE A, direct, rel.

          DJNE Rn, rel        : Giảm Rn và nhảy nếu Rn  0.

                                      (PC)  (PC) + 2

                                      (Rn)  (Rn) -1

                                      (Rn) < > 0  (PC)  (PC) + byte 2.

          DJNZ direct, rel    : Tương tự lệnh DJNZ Rn, rel.

2.4 Cc lệnh dịch chuyển dữ liệu :

Các lệnh dịch chuyển dữ liệu trong những vùng nhớ nội thực thi 1 hoặc 2 chu kỳ máy. Mẫu lệnh MOV <destination>, <source> cho phép di chuyển dữ liệu bất kỳ 2 vùng nhớ nào của RAM nội hoặc các vùng nhớ của các thanh ghi chức năng đặc biệt mà không thông qua thanh ghi A.

Vùng Ngăn xếp của 8951 chỉ chứa 128 byte RAM nội, nếu con trỏ Ngăn xếp SP được tăng quá địa chỉ 7FH thì các byte được PUSH vào sẽ mất đi và các byte POP ra thì không biết rõ.

Các lệnh dịch chuyển bộ nhớ nội và bộ nhớ ngoại dùng sự định vị gián tiếp. Địa chỉ gián tiếp có thể dùng địa chỉ 1 byte (@ Ri) hoặc địa chỉ 2 byte (@ DPTR). Tất cả các lệnh dịch chuyển hoạt động trên toàn bộ nhớ ngoài thực thi trong 2 chu kỳ máy và dùng thanh ghi A làm toán hạng DESTINATION.

Việc đọc và ghi RAM ngoài (RD và WR) chỉ tích cực trong suốt quá trình thực thi của lệnh MOVX, còn bình thường  RD và WR không tích cực (mức 1).

Tất cả các lệnh dịch chuyển đều không ảnh hưởng đến cờ. Hoạt động của từng lệnh được tóm tắt như sau:

          MOV A,Rn           : (A)  (Rn)

          MOV           A, direct      : (A)  (direct)

          MOV A, @ Ri       : (A)  ((Ri))

          MOV           A, # data     : (A)  # data

          MOV Rn, A          :  (Rn)  (A)

          MOV Rn, direct    :  (Rn)  (direct)

          MOV Rn, # data   :  (Rn)  # data

          MOV           direct, A      : (direct)  (A)

          MOV           direct, Rn    : (direct)  (Rn)

          MOV           direct, direct          : (direct)  (direct)

          MOV           direct, @ Ri : (direct)  ((Ri))

          MOV           direct, # data        : (direct)  data

          MOV @ Ri, A       : ((Ri))  (A)

          MOV @ Ri, direct : ((Ri))  (direct)

          MOV @ Ri, # data         : ((Ri))  # data

          MOV DPTR, # data16   : (DPTR)  # data16

          MOV A, @ A + DPTR   : (A)  (A) + (DPTR)

          MOV @ A  + PC  : (PC)  (PC) + 1

                                       (A)  (A) + (PC)

          MOVX        A, @ Ri       : (A)  ((Ri))

          MOVX        A, @ DPTR : (A)  ((DPTR))

          MOVX        @ Ri,  A      : ((Ri))  (A)

          MOVX        @ DPTR, A : ((DPTR))  (A)

          PUSH         direct : Cất dữ liệu vào Ngăn xếp

                               (SP)  (SP) + 1

                               (SP)  (Drirect)

          POP direct           : Lấy từ Ngăn xếp ra direct

                               (direct)  ((SP))

                               (SP)  (SP) - 1

          XCH  A, Rn          : Đổi chổ  nội dung của A với Rn

                                (A)  (Rn)

          XCH  A, direct      : (A)  (direct)

          XCH  A, @ Ri       : (A)  ((Ri))

          XCHD         A, @ Ri       : Đổi chổ 4 bit thấp của (A) với ((Ri))

                                      (A3A0)  ((Ri3Ri0))

2.5 Cc lệnh luận lý (boolean Instruction) :

8951 chứa một bộ xử lí luận lý đầy đủ cho các hoạt động bit đơn, đây là một điểm mạnh của  họ vi điều khiển MSC-51 mà các họ vi điều khiển khác không có.

RAM nội chứa 128 bit đơn vị và các vùng nhớ các thanh ghi chức năng đặc biệt cấp lên đến 128 đơn vị khác. Tất cả các đường Port là  bit định vị, mỗi đường có thể được xử lí như Port đơn vị riêng biệt. Cách truy xuất các bit này  không chỉ các lệnh rẽ nhánh không, mà là một danh mục đầy đủ các lệnh MOVE, SET, CLEAR, COMPLEMENT, OR, AND.

Toàn bộ sự truy xuất của bit dùng sự định vị trực tiếp với những địa chỉ từ 00H - 7FH trong 128 vùng nhớ thấp và 80H - FFH ở các vùng thanh ghi chức năng đặc biệt.

Bit Carry C trong thanh ghi PSW\ của từ trạng thái chương trình và được dùng như một sự tích lũy đơn của bộ xử lí luận lý. Bit Carry cũng là bit định vị và có địa chỉ trực tiếp vì nó nằm trong PSW. Hai lệnh CLR C và CLR CY đều có cùng tác dụng là xóa bit cờ Carry nhưng lệnh này mất 1 byte còn lệnh sau mất 2 byte.

Hoạt động của các lệnh luận lý được tóm tắt như sau:

          CLR  C       : Xóa cờ Carry xuống 0. Có ảnh hưởng cờ Carry.

          CLR  BIT    : Xóa bit xuống 0. Không ảnh hưởng cờ Carry

          SET   C       : Set cờ Carry lên 1. Có ảnh hưởng cờ Carry.

          SET   BIT    : Set bit lên 1. Không ảnh hưởng cờ Carry.

          CPL  C       : Đảo bit cờ Carry. Có ảnh hưởng cờ Carry.

          CPL  BIT    : Đảo bit. Không ảnh hưởng cờ Carry.

          ANL  C, BIT         : (C)  (C) AND (BIT) : Có ảnh hưởng cờ Carry.

          ANL  C, /BIT        : (C)  (C) AND NOT (BIT):Không ảnh hưởng cờ Carry.

          ORL  C, BIT         : (C)  (C) OR (BIT) : Tác động cờ Carry.

          ORL  C, /BIT        : (C)  (C) OR NOT (BIT) : Tác động cờ Carry.

          MOV C, BIT         : (C)  (BIT) : Cờ Carry bị tác động.

          MOV BIT, C         : (BIT)  (C) : Không ảnh hưởng cờ Carry.

2.6 Cc lệnh xen vo (Miscellamous Instruction) :

NOP : Không hoạt động gì cả, chỉ tốn  1 byte và 1 chu kỳ máy. Ta dùng để delay những khoảng thời gian nhỏ.

Led 7 đoạn :

Là linh kiện hiển thị bằng cách sử dụng các led ghép chung để khi hoạt động chúng có thể hiển thị biểu diễn một con số ,một kí hiệu nhìn thấy được trong ứng dụng này sử dụng led 7 đoạn anod chun

 

Led 7 đoạn là loại chỉ báo thông dụng .Đèn có 7 đoạn mang tên a,b,c,d,e,f,g xếp thành hình số 8 , phần phụ đèn là một chấm sáng để chỉ dấu phẩy thập phân .Tùy theo tổ hợp các đoạn sáng mà ta có các số và chữ khác nhau .Đèn led 7 đoạn có nhiều cỡ ( thường khỏang ½ đến vài cm ) từng đoạn và 4màu ( cam , đỏ , xanh, vàng ) đã đượ chế tạo dòng qua led từ 10mA ->40 mA mỗi đoạn tùy loại tùy cõ( thường tính được hạn dòng cho mỗi đọan led (10mA/led)

Về phương diện led 7 đoạn có hai loại

Loại Anod chung

Loại catod chung ( để làm giảm số day nối ra ngoài )

Loại Anod chung

R: giới hạn dong qua led

Tất cảcác anod được nối chung lại bean trong led và được đưa ra ngoài bởi hai chân .Khi sử dụng mắ chân chung vào nguồn

Loại có catod chung

Một số IC giải mã thường dùng cho led 7 doạn:

7446A, 7447A , 7448, 74L47, 74LS48

Họ logic hay 4511, 4513 ,họ CMOS

Tất cả các catod được nối chung với nhau bên trong con led .Khi sử dụng nối chân này xuống mass

-Sử dụng loại Anod chung với :
                   +Imin =40mA;   Vmin =1.5V
                  +Imax=160mA:  Vmax =3V
–LED phát sáng với dòng thuận qua nó.
–LED yêu cầu điện áp thấp và rất bền
–Dòng thuận ra của các phần tử bán dẫn TTL,CMOD đủ để kích sáng Led

-LED không nháy nếu dòng điện qua nó có tần số lớn hơn hoặc bằng 50Hz.

-Có thể điều khiển LED theo logic mức cao hoặc thấp.
–có hai phương pháp giải mã để LED 7 đoạn giao tiếp với vi điều khiển AT89C51.
+ Giải mã bằng phần cứng:
   Thiết kế cho việc giải mã từ BCD sang thập phân cần thiết là sử dụng vi mạch giải mã và kích dèn LED 7 đoạn MC 14499 của Motorola ,vi mạch này chứa bên trong nhiều mạch cần thiết cho việc kích LED 7 đoạn  .Sử dụng IC 4515 là vi mạch giải mã từ BCD sang LED 7 đoạn ,ngõ vào là mã nhị phân BCD, ngõ ra là LED 7đoạn tác động mức thấp.

-Bảng mã LED 7 đoạn :
 

Số thập phân

0

1

2

3

4

5

6

7

8

9

Số Hex

h

g

f

E

D

C

B

A

C0H

1

1

0

0

0

0

0

0

F9H

1

1

1

1

1

0

0

1

A4H

1

0

1

0

0

1

0

0

B0H

1

0

1

1

0

0

0

0

99H

1

0

0

1

1

0

0

1

92H

1

0

0

1

0

0

1

0

82H

1

0

0

0

0

0

1

0

F8H

1

1

1

1

1

0

0

0

80H

1

0

0

0

0

0

0

0

90H

1

0

0

1

0

0

0

0

-Bảng mã quét led 7 đoạn:
 

Vị trí led

Số hex

Mã nhị phân

1

FEH

1

1

1

1

1

1

1

0

2

FDH

1

1

1

1

1

1

0

1

3

FBH

1

1

1

1

1

0

1

1

4

F7H

1

1

1

1

0

1

1

1

5

EFH

1

1

1

0

1

1

1

1

6

DFH

1

1

0

1

1

1

1

1

7

BFH

1

0

1

1

1

1

1

1

8

7FH

0

1

1

1

1

1

1

1

+Giải mã bằng phần mềm:
Nguồn lập trình có thể viết các byte lệch và xuất trực tiếp các byte ra port bên ngoài ,và led 7 đoạn được giao tiếp với port.
 IV.    IC74HC245:

-Đây là IC có chức năng đệm dòng (dòng điện khi qua mạch sẽ được tăng lên) thuộc họ TTL(Vmax=5V)
–74245 có khả năng đệm hai chiều vào hoặc ra và được điều khiển bằng chân số 1 (chân DIR:Direct).
–Được thiết kế với  8 đường dữ liệu ra vì vậy có thể dùng để giao tiếp với các port ngoài của AT89C51(1port có 8 bít tương dữ liệu).
V. IC HEF 4515B:
Là một IC giải mã / giải đa hợp 1 đường – 16 đường, có 4 ngõ vào địa chỉ A0-A3, một ngõ vào cho phép chốt (EL) và một ngõ vào cho phép tác động mức thấp E. 16 ngõ ra ( O0 O15tác động mức thấp .
mức cao tại chân E sẽ khiến tất cả các ngõ ra ở mức cao . Ngõ vào cho phép(E) không ảnh hưởng đến trạng thái của mạch chốt . Khi IC 4515 được sử dung như một mạch giải đa hợp chân E là ngõ vào dữ liệu và A0 –A3 là các ngõ vào địa chỉ.
Nhiệm vụ các chân :
A0 – A3 :các ngõ vào địa chỉ
E :ngõ vào cho phép ,tác động mức thấp
EL : ngõ vào cho phép chốt
O0  -   O15 :Các ngõ ra tác động mức thấp
VI.  IC  ỔN ÁP LM 7805:
- LM 7805 là IC ổn áp theo kiểu nối tiếp vì phần tử điều khiển được ghép nối tiếp với tải bên ngoài .
–Sơ đồ khối của mạch IC ổn áptheo kiểu nối tiếp
                                                 

-Mạch nguồn sử dụng IC ổn áp này có thể cung cấp được áp 1 chiều đầu ra ổn định ngay cả khi giá tri5 đầu vào thay đổi.

-IC ổn áp LM 7805 có các thông số sau:

          + Vin =8V- 20V

          + I0= 5mA –1mA

          + P0=15W

          + VOUT/ VIN    khi Vi =7.5V-25V

                                       I0 =0.5A

                 Là VOUT min =3mA  (0.06%)

                       VOUTtmax = 100mV(2%)

         +Ib(dòng tiêu thụ) :4mA-8mA.

 

PHẦN II :

THIẾT KẾ MẠCH

CHƯƠNG I: SƠ ĐỒ KHỐI

I.SƠ ĐỒ KHỐI MẠCH ĐỒNG HỒ BÁO TIẾT:

II.GIẢI THÍCH NHIỆM VỤ TỪNG KHỐI:

     1.   Khối nguồn :

Tạo điện áp 5VDC ổn định để cung cấp cho các khối.

2. Khối thu nhận xử lý dữ liệu:  nhận dữ liệu bên ngoài để xử lý và điều khiển chương trình.

3. Khối hiển thị : Dúng dể hiển thị giờ, phút ,thứ ngày ,tháng và năm trên hệ thống Led 7 đoạn.
 

CHƯƠNG III: TÍNH TOÁN MẠCH

I. KHỐI NGUỒN:
1. Sơ đồ nguyên lý:

  1. .Nguyên lý hoạt động:
    Bán kỳ dương:
    Tại bán kỳ dương thì V13>0 nên diode D1 và D3 dẫn còn Diode D2 và D4 bị phân cực nghịch nên không dẫn.
    Bán kỳ âm:
    Tại bán kỳ âm thì V13<0 nên Diode D2 và D4 dẫn ,còn Diode D1 và D3 lại ngưng dẫn.
    – Như vậy ở 2 bán kỳ liên tiếp thì tại chân số 4 luôn dương.
    –Tụ C2 sẽ nạp và xả ở mỗi bán kỳ và đồng thời loại bỏ tín hiệu xoay chiều (xung nhiễu).
    –Chân số 1 của Ic LM7805 sẽ nhận điện áp ngõ vào và tạo ra điện áp 5VDC ở ngõ ra là chân số 3
    3. Tính toán mạch :
    +Điện áp trung bình:

     =  (V)
    +Điện áp ngược đặt lên Diode:
              Vdiode =12V
         Chọn C2  =2200µF/50V.
    II,KHỐI ĐIỀU KHIỂN RELAY:
    1. Sơ đồ nguyên lý:

    2.Nguyên lý hoạt động:Khi  port 3.0 của AT 89C51 ở mức cao thì transistor Q đựơc phân cực thuận suy ra transistor Q dẫn bão hoa suy ra Vce ở mức thấp, khi đó Relay và led có điện ,led có điện sẽ phát sáng để báo hiệu là relay  cũng có điện . Khi Relay có điện thì tiếp điểm thường hở của relay sẽ đóng lại và cấp điện cho động cơ hoạt động .Diode mắc song song với relay và được phân cực nghịch có tác dụng nối tắt điện áp ngược nhằm bảo vệ cho transistor không bị hư.

3. Tính toán mạch:
-Transistor mã hiệu D468 loại NPN có các thông số sau:
          +Pmax   =   900mW
          +Vce max  =  30V
          + Imax   =   1A
          +     =   60
_Relay 5V
–Diode mã hiệu 4007 được nối với cuộn dây Relay đẻ noi tắt điện áp ngược  do cuộn dây sinh ra khi transistor mất điện với mục đích  bảo vệ transistor khỏi quá áp.
–R2 phân cực cho transistor.
–R1 hạn dòng cho Led. dâ
–Led báo transistor đang dẫn điện và đông thời báo cuộn y Relay đang có điện.
– Chọn  Vled= 1,7 V
               Iled = 7mA
-Vì dòng qua Relay Il   ≤ 100mA
nên ta chọn Ic= IR1 + Il = 60 mA
IR1 = ILED = 7mA
   R1  =      5V-Vled   
                     7mA  
    R1=0,47K = 470Ω
    IL = IC – IR1
     = 60mA – 7mA
     IL = 53mA
Tìm RB :    Ta có :IC =  IB
    IB =  =    =  1mA
Mặt khác : 5V  =  IB x  RB  + VBE
  RB  =    =  4.3K
chọn RB  =  4.7 K

III.KHỐI HIỂN THỊ:
1.Phương pháp quét LED:
Để hiện thị những con con số trên led 7 đoạn ( số thập phân ) ta phải giải mã các số dạng  nhị phân tương ứng .Vì led 7 đoạn loại anod chung nê ta xuất các số nhị phân ở mức thấp ( mức 0 ) cho con số cần hiển thị và xuất tín hiệu mức cao kích led dẫn.
  Vd: để led sáng số 2 dạng thập phân thì ta cho chân catod của các đoạn a,b,d,e,g   tích cực ở mức thấp và các đoạn c,f sẽ tắt ( vì kích ở mức cao ) . sau đó chọn  anod ở mức 1 để kích dẫn led  
  Phương pháp:
-Tại  1 thời điểm chỉ có 1 led sáng . Mắt chỉ phân biệt được những tần số  chớpb dưới 24Hz.
–Như vậy muốn tạo ãnh liên tục thì các phần tử ảnh xuất hiện tối thiểu 30 lần /1s.
         +chọn dữ liệu cho Katod
         +chọn dữ liệu cho Anod
         +call delay
         +làm lại cho Led kế tiếp
         +sau khi  đủ số Led cần thiết thì trở về làm lại cho Led đầu tiên vì tần số  qúet rất nhanh tức khoảng  thời gian rất ngắn do đó mắt ta sẽ nhìn thấy những con số dạng thập phân hiển thị trên Led.
2.Tính toán mạch kích led 7 đọan:

..................................

mov 24h,#01h

          mov 25h,#00h

          ljmp b22

 

b27:  

          cjne a,#10,b2241

          mov 24h,#0

          inc 25h

b2241:        ljmp b22

 

b28:

          cjne a,#1,b29

          inc 28h

          mov a,28h

          cjne a,#9,b2251

 

          mov 28h,#2

b2251:        ljmp b22

 

b29:

          cjne a,#6,b22

          mov p2,#0ffh

          setb p1.3

                lcall bao

b22:   lcall gma

          lcall hthi

exit1:

            reti

;@@@@@@@@@@@@@@@@@@@@@

bao:  

          clr p1.0

          lcall delay

          setb p1.0

          lcall delay

          clr p1.0

;-----------------------------------------------------------------------

exit_bao:

          ret

 

;chuong trinh delay bao

delay:

del3:  mov r5,#200

del2:  mov r4,#200

del1:  djnz r4,del1

          djnz r5,del2

ret

;--------------------------------------------------------------------

PHẦN IV:

THI CÔNG VÀ KẾT LUẬN PHẦN THI CÔNG

1. GIAI ĐOẠN CHUẨN BỊ:

Để tiến hành giai đoạn thi công, đầu tiên ta phải lựa chọn linh kiện được sử dụng. Các IC được test trước khi dùng, sử dụng linh kiện mới, tụ điện và điện trở được chọn có sai số 1%. Sử dụng một testboard cho việc cân chỉnh sửa chửa và thay đổi được dễ dàng.

  • Chuẩn bị một VOM, tần số kế để đo đạc
  • Chuẩn bị một bộ nguồn chuẩn xác có điện áp 5V, 12V (sử dụng nguồn máy tính)

2.  GIAI ĐOẠN VẼ MẠCH IN:

Để thiết kế mạch in ta có thể sử dụng phần mềm để trợ giúp như: ORCAD hay EAGLE. Có thể vẽ trực tiếp bằng viết lông dầu, sơn hay có thể đặt làm bằng công nghệ in lụa.

3.  GIAI ĐOẠN LẮP RÁP:

Thứ tự lắp ráp: Để quá trình thi công tiến hành thuận lợi, sai sót sơ xuất hay hư hỏng linh kiện là thấp nhất thì cần phải có thứ tự lắp ráp như sau:

  • Kiểm tra mạch in với sơ đồ nguyên lý
  • Lắp ráp cơ bản như đế IC, pinhead …..
  • Lắp ráp từng khối bằng cách ráp ở ngoài trước bằng testboard, sửa chữa cân chỉnh trước khi ráp vào mạch 
  • Viết chương trình phần mềm, nạp và chạy thử chương trình
  • Lắp ráp hoàn chỉnh, kiểm tra và chạy thử. Ghi nhận kết quả để có phương án sửa chữa khi có sai sót

           CHƯƠNG  KẾT LUẬN

  • Với đề tài nó đã giúp cho chúng em hiểu rõ hơn những cái mà chúng em còn  thắc mắc . Đồng thời củng cố lại những kiến thức mà chúng em đã học trong suốt thời gian qua . Với sự hướng dẫn, chỉ bảo của thầy  nhóm đã cố gắng trình bày đầy đủ những yêu cầu của tập đồ án như : giới thiệu các cơ sở lý thuyết có liên quan tới mạch ,giải thích nguyên lý hoạt động .
  • Mặc dù còn nhiều hạn chế và thiếu xót nhưng qua đồ án này đã giúp cho chúng em đánh giá được năng lực của chính mình .
  • HIMột lần nữa chúng em xin chân thành cảm ơn thầy  và tất cả bạn bè đã chỉ bảo và góp ý để chúng em có thể hoàn thành đồ án này .

LUẬN VĂN TỐT NGHIỆP ĐIỆN TỬ MẠCH ĐỒNG HỒ BÁO TIẾT, thuyết minh MẠCH ĐỒNG HỒ BÁO TIẾT, NGUYÊN LÝ MẠCH ĐỒNG HỒ BÁO TIẾT
 

Close