1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Giáo trình Kỹ thuật vi điều khiển (Nghề Điện tử dân dụng): Phần 2 - CĐ nghề Vĩnh Long

105 18 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 105
Dung lượng 8,06 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

(NB) Giáo trình Kỹ thuật vi điều khiển (Nghề Điện tử dân dụng): Phần 2 do CĐ nghề Vĩnh Long biên soạn nhằm trình bày kiến thức cơ bản về cổng nối tiếp, ngắt và phần mềm hợp ngữ. Để hiểu rõ hơn, mời các bạn tham khảo chi tiết nội dung giáo trình này.

Trang 1

- Thực hiện cổng truyền thông nối tiếp đúng yêu cầu kỹ thuật;

- Thực hiện thu phát dữ liệu nối tiếp bằng 8051 đạt yêu cầu kỹ thuật

Nội dung:

1 Mở đầu

Máy tính truyền dữ liệu theo hai phương pháp: truyền dữ liệu song song và truyền dữ liệu nối tiếp

❖ Truyền song song: Sử dụng nhiều dây dẫn để truyền dữ liệu giữa các

thiết bị có khoảng cách gần nhau (khoảng vài mét) Phương pháp này cho phép truyền dữ liệu với tốc độ cao nhờ sử dụng nhiều dây dẫn để truyền dữ liệu đồng thời nên tại một thời điểm có thể truyền được nhiều

bit thông tin nhưng khoảng cách truyền thì có nhiều hạn chế

❖ Truyền nối tiếp: Sử dụng một dây dẫn để truyền dữ liệu (một dây phát

đi và một dây thu về) giữa các thiết bị có khoảng cách xa nhau (khoảng vài trăm mét trở lên) Phương pháp này sẽ truyền dữ liệu với tốc độ chậm hơn (so với phương pháp truyền song song) vì chỉ sử dụng một dây dẫn để truyền dữ liệu nên tại một thời điểm chỉ có thể truyền được một bit thông tin nhưng khoảng cách truyền thì không bị hạn chế như ở

phương pháp song song

Chip 8051 có một port nối tiếp (serial port) với các tính năng như sau:

Trang 2

141

❖ Lưu ý: Ở trường hợp đặc trưng thứ hai thì dữ liệu thứ nhất sẽ không bị

mất nếu CPU đọc xong dữ liệu thứ nhất trước khi dữ liệu thứ hai được nhận đầy đủ

2.Thanh ghi điều khiển

Các thanh ghi chức năng đặc biệt của port nối tiếp:

❖ SBUF (Serial Buffer Register): thanh ghi đệm của port nối tiếp

❖ SCON (Serial Control Register): thanh ghi điều khiển port nối tiếp

Đại lượng đặc trưng cho tốc độ truyền dữ liệu nhanh hay chậm là tốc độ baud

(baud rate) hay còn gọi là tần số hoạt động của port nối tiếp có thể là giá trị cố định

hay thay đổi tùy theo yêu cầu của người lập trình Khi chế độ tốc độ baud thay đổi được sử dụng, bộ định thời 1 cung cấp xung clock tốc độ baud và ta phải lập trình sao cho phù hợp Ở phiên bản chip 8031/8052, bộ định thời 2 cũng có thể được lập trình

để cung cấp xung clock tốc độ baud

3 Chế độ làm việc

+ Thanh ghi SBUF

Thanh ghi SBUF (Serial Buffer Register): được dùng để lưu giữ dữ liệu cần phát đi

và dữ liệu đã nhận được Việc ghi dữ liệu vào thanh ghi SBUF sẽ nạp dữ liệu để phát

đi và việc đọc dữ liệu từ thanh ghi SBUF sẽ truy xuất dữ liệu đã thu được

Thanh ghi SBUF bao gồm 2 thanh ghi:

Thanh ghi phát (bộ đệm phát): dùng để lưu giữ dữ liệu cần phát đi

Thanh ghi thu (bộ đệm thu): dùng để lưu giữ dữ liệu đã nhận được

Cấu trúc của thanh ghi SBUF:

Trang 3

142

Ví dụ: Các lệnh ghi dữ liệu vào SBUF và đọc dữ liệu từ SBUF

+ Thanh ghi SCON

Thanh ghi SCON (Serial Control Register): chứa các bit dùng để điều khiển chế độ hoạt động và báo trạng thái của port nối tiếp

Cấu trúc của thanh ghi SCON:

Trang 4

143

Các chế độ của port nối tiếp:

Trước khi sử dụng port nối tiếp cần phải:

Ví dụ: Khởi động port nối tiếp ở chế độ 1, cho phép port thu dữ liệu từ chân RxD

SM0 = 0, SM1 = 1 → cho phép port hoạt động ở chế độ 1

REN = 1 → cho phép port nối tiếp được phép thu dữ liệu

Trang 5

144

TI = 1 → chuẩn bị port nối tiếp sẵn sàng phát dữ liệu qua chân TxD

RI = 0 → chuẩn bị port nối tiếp sẵn sàng thu dữ liệu qua chân RxD

3.1.Thanh ghi dịch 8 bit

+ Chế độ 0 – Thanh ghi dịch 8 bit:

Quá trình phát dữ liệu:

❖ Quá trình khởi động: Ghi dữ liệu cần phát vào SBUF Việc phát dữ

liệu bắt đầu: Dữ liệu từ SBUF được dịch ra chân RxD đồng thời với các

xung clock dịch bit được gởi ra chân TxD (mỗi bit được truyền đi trên chân RxD trong 1 chu kỳ máy)

Trang 6

145

❖ Giản đồ thời gian phát dữ liệu:

Quá trình thu dữ liệu:

❖ Quá trình khởi động: Set bit cho phép thu (REN=1) → Xóa cờ ngắt thu (RI=0) Việc thu dữ liệu bắt đầu: Các xung clock dịch bit được gởi ra

chân TxD và dữ liệu từ thiết bị bên ngoài được dịch vào chân RxD bởi các xung clock dịch bit này (việc dịch dữ liệu vào chân RxD xảy ra ở cạnh lên của xung clock dịch bit)

❖ Giản đồ thời gian thu dữ liệu:

Ứng dụng: Một ứng dụng khả thi của chế độ 0 (chế độ thanh ghi dịch bit) là mở

rộng thêm các ngõ ra cho chip 8051 Một vi mạch thanh ghi dịch nối tiếp – song song

có thể được nối với các chân TxD và RxD của chip 8051 để cung cấp thêm 8 đường xuất (xem hình vẽ bên dưới) Các thanh ghi dịch bit khác có thể ghép cascade với thanh ghi dịch bit đầu tiên để mở rộng thêm nữa

Trang 7

146

3.2 Chế độ UART 8 bit có tốc độ baud thay đổi

+ Chế độ 1 – UART 8 bit có tốc độ baud thay đổi:

Trong chế độ 1, port nối tiếp của 8051 hoạt động như một bộ thu phát không đồng bộ 8 bit có tốc độ baud thay đổi (UART -Universal Asynchronous Receiver Transmitter)

UART là một bộ thu phát dữ liệu nối tiếp với mỗi ký tự dữ liệu được đứng trước bởi một bit START (logic 0) và được đứng sau bởi một bit STOP (logic 1) Thỉnh thoảng, một bit chẵn lẽ (Parity bit) được chèn vào giữa bit dữ liệu sau cùng và bit stop Hoạt động chủ yếu của UART là biến đổi dữ liệu phát từ song song thành nối tiếp và biến đổi dữ liệu thu từ nối tiếp thành song song

Hình vẽ khuông dạng dữ liệu khi được sử dụng ở chế độ UART:

Khuông dạng của một dữ liệu khi sử dụng chế độ UART 8 bit:

Trang 8

147

Quá trình phát dữ liệu:

❖ Quá trình khởi động: Ghi dữ liệu cần phát vào SBUF Việc

phát dữ liệu bắt đầu: Dữ liệu từ SBUF được dịch ra chân TxD (theo

thứ tự: Start bit → 8 bit data (D0 D7) → Stop bit) → cờ TI=1

❖ Tốc độ baud: do người lập trình thiết lập và được qui định bởi tốc độ tràn của

Timer 1

❖ Thời gian của 1 bit trên đường truyền: bằng nghịch đảo của tốc độ baud (1 /

Baud rate)

❖ Cờ ngắt phát TI = 1: khi bit stop được xuất hiện trên chân TxD

Quá trình thu dữ liệu:

❖ Quá trình khởi động: Một sự chuyển trạng thái từ mức 1 xuống mức 0 tại chân RxD (tức xuất hiện bit Start) Việc thu dữ liệu bắt đầu: 8 bit dữ liệu được dịch vào

trong SBUF (theo thứ tự: D0→D1→…→D7) → Stop bit (bit thứ 9) được đưa vào bit RB8 (thuộc thanh ghi SCON) → cờ RI=1

Trang 9

148

❖ Tốc độ baud: do người lập trình thiết lập và được qui định bởi tốc độ tràn của Timer 1

❖ Hai điều kiện bắt buộc để thực hiện quá trình thu dữ liệu như trên:

• RI = 0 → Yêu cầu này có nghĩa là chip 8051 đã đọc xong dữ liệu trước đó

và xoá cờ RI

• (SM2 = 1 và Stop bit = 1) hoặc SM2 = 0 → chỉ áp dụng trong chế độ

truyền thông đa xử lý Yêu cầu này có nghĩa là không set cờ RI bằng 1 trong chế độ truyền thông đa xử lý khi bit dữ liệu thứ 9 là 0

❖ Cờ ngắt thu RI = 1: khi 8 bit dữ liệu đã được nạp vào SBUF

Lưu ý: Trường hợp các tín hiệu nhiễu xuất hiện trên đường truyền (làm cho đường

truyền xuất hiện mức thấp) dẫn đến làm cho bộ thu nhận dạng sai, cho đó là sự xuất hiện của START bit (logic 0) và tiến hành thực hiện quá trình thu dữ liệu, từ đó dẫn đến kết quả nhận vào sẽ không đúng Để tránh điều này xảy ra thì khi đường truyền có

sự chuyển trạng thái từ 1 xuống 0, bộ thu yêu cầu mức 0 này phải được duy trì trên đường truyền trong một khoảng thời gian xác định Nếu không đảm bảo được như thế,

bộ thu được giả sử rằng đã nhận được nhiễu thay vì nhận được START bit hợp lệ Lúc

đó bộ thu sẽ được thiết lập lại, quay về trạng thái nghỉ và chờ sự chuyển trạng thái từ 1 xuống 0 kế tiếp trên đường truyền

3.3.UART 9 bit với tốc độ baud cố định

(Tương tự như UART 8 bit, chỉ khác ở số bit dữ liệu là 9 bit)

Trang 10

149

Khuông dạng của một dữ liệu khi sử dụng chế độ UART 9 bit:

3.4.Chế độ UART với tốc độ baud cố định

+ Chế độ 3 – UART 9 bit có tốc độ baud thay đổi:

(Tương tự như UART 9 bit, chỉ khác ở tốc độ baud có thể thay đổi)

Khuông dạng của một dữ liệu khi sử dụng chế độ UART 9 bit:

4 Khởi tạo và truy suất thanh ghi PORT nối tiếp

Trong các chế độ truyền dữ liệu nối tiếp của 8051 đã nêu trên thì trên thực tế sử dụng, để thực hiện việc thu và phát dữ liệu nối tiếp giữa chip 8051 với các thiết bị

Trang 11

150

khác (8051, máy tính, các thiết bị SPI,…) thường người lập trình chỉ sử dụng hai chế

độ sau : Mode 1 (UART 8 bit có tốc độ baud thay đổi) hoặc Mode 3 (UART 9 bit có tốc độ baud thay đổi) Còn hai chế độ còn lại thì rất ít sử dụng khi cần truyền dữ liệu nối tiếp Cho nên ở đây chúng ta chỉ xem xét đến trình tự thực hiện việc lập trình (bao gồm thao tác khởi động và điều khiển thu/phát dữ liệu) để 8051 có thể truyền (phát) và nhận (thu) dữ liệu thông qua port nối tiếp theo hai chế độ UART nêu trên

WAIT: JNB TI, WAIT

❖ Xoá cờ ngắt phát TI (chuẩn bị cho lần phát dữ liệu tiếp theo):

Trang 12

151

(2): Giá trị dùng để qui định chế độ hoạt động của Timer 1 (dùng để tạo tốc độ

baud cho việc truyền dữ liệu nối tiếp) Để đơn giản trong việc lập trình, ta có thể khởi động thanh ghi TMOD theo như trình bày dưới đây (chủ yếu ở đây ta chỉ cần sử dụng

Timer 1 ở Mode 2 – Chế độ 8 bit tự động nạp lại):

Mode 2: (2)… = 20H

(3): Giá trị dùng để qui định tốc độ baud cho port nối tiếp Giá trị này phụ

thuộc vào tần số thạch anh, bit SMOD và tốc độ baud mà người lập trình mong muốn

(xem thêm “Bảng tính tốc độ baud cho port nối tiếp” như trên đã trình bày)

(3)… = M

)1(

Osc

f M

Trong đó: fOsc (Hz): tần số thạch anh

Baud rate (bps): tốc độ baud của port nối tiếp

(4): Dữ liệu cần phát đi thông qua port nối tiếp Dữ liệu này có thể là nội dung của một ô nhớ, thanh ghi hoặc một giá trị tức thời

Nên nhớ rằng, nếu có yêu cầu thì bit gửi kèm theo (ví dụ như bit Parity) cần phải thêm vào trước khi tiến hành quá trình phát dữ liệu (Mode 1: kèm thêm vào vị trí

của bit D7, Mode 3: kèm thêm vào vị trí của bit TB8)

Trang 13

(1): Xem thêm “Lập trình 8051 truyền (phát) dữ liệu nối tiếp”

(2): Xem thêm “Lập trình 8051 truyền (phát) dữ liệu nối tiếp”

(3): Xem thêm “Lập trình 8051 truyền (phát) dữ liệu nối tiếp”

(4): Địa chỉ của một ô nhớ, thanh ghi mà dữ liệu thu được từ port nối tiếp sẽ lưu giữ vào trong đó

Nên nhớ rằng, nếu có yêu cầu thì bit gửi kèm theo (ví dụ như bit Parity) cần phải được xử lý trước khi tiến hành việc cất dữ liệu thu được (Mode 1: nằm tại vị trí

của bit D7, Mode 3: nằm tại vị trí của bit RB8)

5 Truyền thông đa xử lý

Giao tiếp nối tiếp có nghĩa là truyền dữ liệu từng chút một tại một thời điểm, khi

truyền thông song song, số lượng bit có thể được truyền tại một thời điểm phụ thuộc vào số lượng dòng dữ liệu có sẵn để liên lạc

Hai phương thức giao tiếp nối tiếp là

• Truyền thông đồng bộ: Chuyển dữ liệu hàng loạt trong cấu trúc khung tại

Giao tiếp không đồng bộ

Giao tiếp nối tiếp không đồng bộ được sử dụng rộng rãi để truyền byte theo định

hướng

Cấu trúc khung trong giao tiếp không đồng bộ:

thấp

chúng tôi sử dụng gói dữ liệu 8 bit, luôn được gửi sau bit START

cho biết kết thúc khung Stop bit luôn logic cao

Trong khung giao tiếp nối tiếp không đồng bộ, bit START đầu tiên được theo sau bởi byte dữ liệu và ở bit STOP cuối cùng, tạo thành một khung 10 bit Đôi khi bit cuối cùng cũng được sử dụng như bit chẵn lẻ

Trang 14

• Sau khi hệ thống reset thì bit SMOD = 0 (chế độ mặc định)

• Vì thanh ghi PCON không được định địa chỉ từng bit, nên để tăng gấp đôi tốc độ baud (tức làm cho SMOD=1) ta phải thực hiện bằng những dòng lệnh sau:

7 Bài tập

- Ứng dụng port nối tiếp trong lập trình điều khiển thiết bị ngoại vi

+ Sơ đồ nguyên lý

Trang 15

154

Hình 0.1: Sơ đồ nguyên lý khối LED đơn (Point LED)

Hình 0.2: Sơ đồ nguyên lý khối nút nhấn (Momentary Switch)

❖ Sơ đồ bố trí linh kiện

Hình 0.3: Khối LED đơn (Point LED)

Hình 0.4: Khối nút nhấn (Momentary Switch)

BÀI THỰC HÀNH

Nội dung: Viết chương trình, mô phỏng và lắp ráp mạch điều khiển truyền dữ

liệu thông qua port nối tiếp Thay đổi trạng thái của các LED tại vi điều khiển 2 (Slave) theo trạng thái của các nút nhấn tại vi điều khiển 1 (Master)

Lưu đồ giải thuật:

❖ Bước 1: Vẽ lưu đồ giải thuật của chương trình điều khiển

D22 LED D23 LED

LED

D27 LED

J3 BARLED2

1 3 5 7

D25 LED D21

LED D19 LED

D31 LED D30 LED D12

LED D10 LED

D24 LED D7

LED

1 3 5 7 9

D8 LED

D26 LED D9

LED

1 3 5 7 9

D15 LED D2

LED

D20 LED D14

LED

J5 BARLED4

1 3 5 7 J2

BARLED1

1 3 5 7

D5 LED

J4 BARLED3

1 3 5 7

D32 LED D3

LED

D11 LED

1 3 5 7 9

D16 LED D6

LED

D18 LED D17 LED

D28 LED

KEY 0

SW6 KEY 4 SW4

KEY 2

SW9 KEY 7 SW3

KEY 1

SW7 KEY 5

J25

POWER

1 3

SW8 KEY 6

J26

PUSH KEY

1 3 5 7

VCC

KEY1

KEY7

KEY0 KEY3 KEY5 KEY2 K5

K2 K4

K7

K0 VCC

K7 K5 K3 K1

Trang 16

155

Hình 0.5: Lưu đồ giải thuật của chương trình

Chương trình điều khiển:

Sử dụng phần mềm Topview Simulation để thực hiện việc viết chương trình và

biên dịch, kiểm tra lỗi cú pháp của chương trình

❖ Bước 2: Khởi động phần mềm Topview Simulation

❖ Bước 3: Mở chức năng soạn thảo một chương trình mới và đặt tên tập tin chương trình là: S1_MASTER.ASM và S1_SLAVE.ASM

❖ Bước 4: Viết chương trình điều khiển dưới đây vào máy tính

Chương trình cho vi điều khiển Master:

ORG 00H

MOV TMOD,#20H ; Timer 1, Mode 2 (Auto reload)

MOV TH1,#-3 ; Baud rate = 9600

MOV SCON,#50H ; Data = 8 bit, Stop = 1 bit

SETB TR1 ; Kich hoat Timer 1

AGAIN:

MOV A,P0 ; Lay du lieu tu SW

SJMP AGAIN ; Thuc hien lai

; Truyen du lieu noi tiep, Data = ACC

SEND:

Trang 17

156

MOV SBUF,A ; Lay du lieu

JNB TI,$ ; Cho truyen xong du lieu

CLR TI ; Xoa co bao, san sang cho lan truyen tiep theo

RET ; Quay ve

; -

END

Chương trình cho vi điều khiển Slave:

ORG 00H

MOV TMOD,#20H ; Timer 1, Mode 2 (Auto reload)

MOV TH1,#-3 ; Baud rate = 9600

MOV SCON,#50H ; Data = 8 bit, Stop = 1 bit

SETB TR1 ; Kich hoat Timer 1

AGAIN:

MOV P1,A ; Xuat len LED

SJMP AGAIN ; Thuc hien lai

; Nhan du lieu noi tiep, ACC = Data

RECV:

JNB RI,$ ; Cho nhan xong du lieu

MOV A,SBUF ; Cat du lieu nhan vao thanh ghi A

CLR RI ; Xoa co bao, san sang cho lan nhan tiep theo

RET ; Quay ve

; -

END

❖ Bước 5: Lưu chương trình trên vào máy tính

❖ Bước 6: Thực hiện biên dịch và kiểm tra lỗi chương trình

• Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh khắc phục các lỗi này Nguyên nhân phát sinh lỗi thông thường do cú pháp của các lệnh không chính xác, cần phải được kiểm tra lại Sau khi hoàn tất việc hiệu chỉnh sai sót thì quay trở về thực hiện từ Bước 5

• Nếu không có lỗi xuất hiện thì phần mềm sẽ tự động tạo tập tin mã máy

với tên là: S1_MASTER.HEX, S1_SLAVE.HEX và thực hiện tiếp theo

các phần nội dung dưới đây

Mô phỏng hoạt động:

Sử dụng phần mềm ISIS 7 Professional (Protues 7.10) để thực hiện việc mô phỏng

quá trình hoạt động của hệ thống vi điều khiển

❖ Bước 7: Khởi động phần mềm ISIS 7 Professional (Protues 7.10)

❖ Bước 8: Vẽ sơ đồ thiết kế mạch mô phỏng điều khiển truyền dữ liệu thông qua port nối tiếp như Hình 5.4.4 dưới đây

Trang 18

157

Hình 0.6: Sơ đồ nguyên lý mô phỏng hệ thống điều khiển

 Mạch mô phỏng này đã được thiết kế sẵn và lưu trong máy tính với tên tập tin

là: SerialPort_1.DSN Vì thế người học có thể tự vẽ thiết kế mạch mô phỏng hoặc lấy mạch mô phỏng có sẵn trong cơ sở dữ liệu của môn học

❖ Bước 9: Chọn tập tin chương trình cần mô phỏng (tập tin mã máy đã được tạo ra từ Bước 6) cho hệ thống vi điều khiển: S1_MASTER.HEX,

về thực hiện từ Bước 5 (do giải thuật chương trình không chính xác) hoặc Bước 8 (do mạch mô phỏng vẽ không chính xác)

• Nếu không có lỗi xuất hiện thì thực hiện tiếp theo các phần nội dung dưới đây

+ Lắp mạch và nạp chương trình điều khiển

P0.7M

P0.0M

P0.0M P0.2M P0.4M P0.6M

P0.7M P0.5M P0.3M P0.1M

P0.7S

P0.0S

P0.0S P0.2S P0.4S P0.6S

P0.7S P0.5S P0.3S P0.1S

D0M D0M D1M D1M D2M D2M D3M D3M D4M D4M D5M D5M D6M D6M D7M D7M

P2.1S P2.3S P2.5S

P2.4M

P2.6M

A1 C1 E1 G1

A1 C1 E1 G1 P2.0M

P2.2M

A2 C2 E2 G2

A2 C2 E2 G2

P2.4S P2.6S

A3 C3 E3 G3

A3 C3 E3 G3 P2.0S

P2.2S

A4 C4 E4 G4

A4 C4 E4 G4

XTAL2 18 XTAL1 19

ALE 30 EA 31 PSEN 29

RST 9

P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34P0.6/AD6 33P0.7/AD7 32

P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8

P3.0/RXD 10P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13P3.4/T0 14P3.7/RD 17P3.6/WR 16P3.5/T1 15 P2.7/A15 28

P2.0/A8 21P2.1/A9 22 P2.2/A10 23P2.3/A11 24P2.4/A12 25 P2.5/A13 26 P2.6/A14 27

2 4 6 8

ALE 30

EA 31 PSEN 29RST 9

P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32

P1.0 1P1.1 2 P1.2 3 P1.3 4P1.4 5P1.5 6 P1.6 7P1.7 8

P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD

17 P3.6/WR

16 P3.5/T115

P2.7/A15 28

P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27

2 4 6 8

D1

R3

330 +5V

D2

R4

330 +5V

D3

R5

330 +5V

D4

R6

330 +5V

D5

R7

330 +5V

D6

R8

330 +5V

D7

R9

330 +5V

1B 12B 2 3B 3 4B 45B 56B 6 7B 78B 8

1C 18 2C 17 3C 16 4C 15 5C 14 6C 13 7C 12 8C 11

COM 10

U2

ULN2803

2 4 6 8

1

RP3

10K

+5V +5V

1B 1 2B 2 3B 3 4B 4 5B 5 6B 6 7B 7 8B 8

1C 182C 17 3C 16 4C 155C 146C 13 7C 128C 11

COM 10

U3

ULN2803

2 4 6 8

1

RP4

10K

+5V +5V

D8

R10

330 +5V

D9

R11

330 +5V

D10

R12

330 +5V

D11

R13

330 +5V

D12

R14

330 +5V

D13

R15

330 +5V

QB 12C

2 QC 11 D

6 QD 10 BI/RBO 4

QE 9RBI 5

QF 15LT

7 QA 13 B 1

QB 12C

2 QC 11 D

6 QD 10 BI/RBO 4

QE 9RBI

5 QF 15 LT

Trang 19

158

Sử dụng các khối "Microcontroller Unit Slot", "Point LED", "Momentary

Switch" và "Power Supply" có sẵn trên mô hình thực hành vi điều khiển để lắp ráp

mạch theo thiết kế bên trên

❖ Bước 11: Kết nối các khối trên mô hình như Hình 5.4.5 để tạo thành hệ

thống mạch điều khiển như bên trên

• Tắt nguồn AC cấp cho mô hình thực hành

Hình 0.7: Sơ đồ kết nối mạch trên mô hình

Sử dụng phần mềm Flash Magic để thực hiện việc nạp chương trình cho vi điều

khiển P89V51RB2 trên mô hình thực hành

❖ Bước 12: Bật nguồn AC cấp cho mô hình thực hành

❖ Bước 13: Khởi động phần mềm Flash Magic

❖ Bước 14: Kiểm tra cấu hình phần mềm (loại vi điều khiển, cổng COM, tốc

độ truyền, chuẩn giao tiếp,

❖ Bước 15: Chọn tập tin chương trình điều khiển (tập tin mã máy đã được tạo

ra từ Bước 6): S1_MASTER.HEX, S1_SLAVE.HEX

❖ Bước 16: Nạp chương trình vào vi điều khiển

❖ Bước 17: Nhấn nút "Master Reset" ở khối "Microcontroller Unit Slot" để

chạy chương trình và quan sát trực tiếp kết quả trên mô hình thực hành

• Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh khắc phục các lỗi này Nguyên nhân phát sinh lỗi thường do việc lắp ráp phần cứng không chính xác hoặc các linh kiện bị hư hỏng, cần phải được kiểm tra lại Sau khi hoàn tất việc kiểm tra và hiệu chỉnh sai sót thì quay trở về thực hiện từ Bước 15

• Nếu không có lỗi xuất hiện thì hoàn tất bài thực hành

BÀI TẬP THỰC HÀNH

Nội dung: "Chương trình, mô phỏng và lắp ráp mạch điều khiển truyền dữ liệu

thông qua port nối tiếp Thay đổi trạng thái của các LED tại vi điều khiển 2 (Slave) theo trạng thái của các nút nhấn tại vi điều khiển 1 (Master) và ngược lại"

Trang 20

159

Lưu đồ giải thuật:

Chương trình cho vi điều khiển Master:

ORG 00H

MOV TMOD,#20H ; Timer 1, Mode 2 (Auto reload)

MOV TH1,#-3 ; Baud rate = 9600

MOV SCON,#50H ; Data = 8 bit, Stop = 1 bit

SETB TR1 ; Kich hoat Timer 1

AGAIN:

MOV P1,A ; Xuat len LED

SJMP AGAIN ; Thuc hien lai

; Truyen du lieu noi tiep, Data = ACC

SEND:

MOV SBUF,A ; Lay du lieu

JNB TI,$ ; Cho truyen xong du lieu

CLR TI ; Xoa co bao, san sang cho lan truyen tiep theo

RET ; Quay ve

; Nhan du lieu noi tiep, ACC = Data

RECV:

MOV A,P0 ; Lay du lieu tu SW

JNB RI,RECV ; Cho nhan xong du lieu

MOV A,SBUF ; Cat du lieu nhan vao thanh ghi A

CLR RI ; Xoa co bao, san sang cho lan nhan tiep theo

RET ; Quay ve

Trang 21

160

MOV TH1,#-3 ; Baud rate = 9600

MOV SCON,#50H ; Data = 8 bit, Stop = 1 bit

SETB TR1 ; Kich hoat Timer 1

AGAIN:

MOV P1,A ; Xuat len LED

SJMP AGAIN ; Thuc hien lai

; Truyen du lieu noi tiep, Data = ACC

SEND:

MOV SBUF,A ; Lay du lieu

JNB TI,$ ; Cho truyen xong du lieu

CLR TI ; Xoa co bao, san sang cho lan truyen tiep theo

RET ; Quay ve

; Nhan du lieu noi tiep, ACC = Data

RECV:

MOV A,P0 ; Lay du lieu tu SW

JNB RI,RECV ; Cho nhan xong du lieu

MOV A,SBUF ; Cat du lieu nhan vao thanh ghi A

CLR RI ; Xoa co bao, san sang cho lan nhan tiep theo

RET ; Quay ve

; -

END

BÀI TẬP ỨNG DỤNG

Bài 1: Viết chương trình điều khiển truyền dữ liệu thông qua port nối tiếp hoạt

động như sau: Ban đầu 8 LED của vi điều khiển Slave tắt hết Thực hiện nhấn một trong các nút nhấn của vi điều khiển Master để chọn lựa kiểu hiển thị trên 8 LED của

vi điều khiển Slave (chỉ thực hiện kiểu hiển thị 1 lần, không lặp lại)

o Nhấn nút “KEY8/MASTER”: 8 LED đơn “D0-D7/SLAVE” sáng tắt

o Nhấn nút “KEY9/MASTER”: 8 LED đơn “D0-D7/SLAVE” sáng đuổi từ trái sang phải

o Nhấn nút “KEY10/MASTER”: 8 LED đơn “D0-D7/SLAVE” sáng dần từ trái sang phải

o Nhấn nút “KEY11/MASTER”: 8 LED đơn “D0-D7/SLAVE” sáng dần từ hai bên vào giữa

o Nhấn nút “KEY12/MASTER”: 8 LED đơn “D0-D7/SLAVE” tắt hết

o Nhấn nút “KEY13/MASTER”: 8 LED đơn “D0-D7/SLAVE” sáng hết

Bài 2: Viết chương trình điều khiển truyền dữ liệu thông qua port nối tiếp hoạt

động như sau: Ban đầu 16 LED của vi điều khiển Master và Slave tắt hết Thực hiện nhấn một trong các nút nhấn của vi điều khiển Master và Slave để chọn lựa trạng thái

làm việc của 16 LED này

Trang 22

Hình 0.1: Sơ đồ nguyên lý khối LED đơn (Point LED)

Hình 0.2: Sơ đồ nguyên lý khối nút nhấn (Momentary Switch)

Hình 0.3: Sơ đồ nguyên lý khối LED 7 đoạn (7 Segment LED)

D22 LED D23 LED

LED

D27 LED

J3 BARLED2

1 3 5 7

D25 LED D21

LED D19 LED

D31 LED D30 LED D12

LED D10 LED

D24 LED D7

LED

1 3 5 7 9

D8 LED

D26 LED D9

LED

1 3 5 7 9

D15 LED D2

LED

D20 LED D14

LED

J5 BARLED4

1 3 5 7 J2

BARLED1

1 3 5 7

D5 LED

J4 BARLED3

1 3 5 7

D32 LED D3

LED

D11 LED

1 3 5 7 9

D16 LED D6

LED

D18 LED D17 LED

D28 LED

KEY 0

SW6 KEY 4 SW4

KEY 2

SW9 KEY 7 SW3

KEY 1

SW7 KEY 5

J25

POWER

1 3

SW8 KEY 6

J26

PUSH KEY

1 3 5 7

VCC

KEY1

KEY7

KEY0 KEY3 KEY5 KEY2 K5

K2 K4

K7

K0 VCC

K7 K5 K3 K1

SEL4 SEL1

SEL7 SEL5

SEL0 SEL2

F D G DP E C A

J58 7SEG6 IN

1 3 5 7

J53

SEL LED IN

1 3 5 7

D G

Q5 A1015

U22 LED7

U25 LED7

R34 2K2

R36 2K2

Q6 A1015

1 3 5 7

R33 2K2

Q4 A1015

J59 7SEG5 IN

1 3 5 7 VCC

VCC VCC

F E

DP B

G D A

Trang 23

162

Hình 0.4: Sơ đồ nguyên lý khối giải mã 7 đoạn (7 Segment Decoder)

Hình 0.5e: Sơ đồ nguyên lý khối giao tiếp máy tính (PC Interface)

❖ Sơ đồ bố trí linh kiện

Hình 0.6: Khối LED đơn (Point LED)

SEL B

SEL0 SEL3

SEL2 SEL2

SEL3 SEL1

E C G DP F A

C G

D F E DP A

C136 104

U102A 74139 A 2 B 3

G 1

7SEG OUT 3

1 3 5 7

D0 7 D1 1 D2 2 D3 6

BI/RBO 4

J219

DECODER 2-4 1

J220

DECODER OUT

1 3

D

J214

BCD IN 3-4

1 3 5 7

B

C G

A C

F E

C138 104

J209

DECODER OUT

1 3 5 7

J215

7SEG OUT 2

1 3 5 7

D

J218

DECODER OUT

1 3

B A

D DP F B

D0 7 D1 1 D2 2 D3 6

BI/RBO 4

C137 104

J216

7SEG OUT 4

1 3 5 7

SEL4 SEL7 SEL2 SEL0 SEL C

N/A2

DTR

CTS

C39 10u

TXD

RXD

C34 10u

RTS

DSR

N/A1

C43 10u

N/A2

DTR

CTS

C40 10u

J70

RS232C-PC

1 3 5 7

TXD RTS DSR

J80

USB 2

1 3

N/A

DTR CTS

N/A RXD

J72

POWER

1 3

U34 MAX232

T1OUT 14

T2OUT 7

J78

PS2-1-PC

1

R81 10K

C41 10u

R82 10K

C36 104

TXD RXD

TXD

U33 MAX232

T1OUT 14 T2OUT 7

JR1 PS2

1 2

J74

TXD/RXD 1

1

C44 10u

J82

PS2-2-PC

1

C33 10u

P2

LPT

13 12 11 10 9 21 8 20 7 19 6 18 5 17 4 16 3 15 2 14 1

D1

J75

CONTROL LPT-PC

1 3

J79

TXD/RXD 2

1

C42 104

R84 10K

C38 10u

R83 10K J81

USB2-PC

1

VCC VCC

VCC VCC

D2 VCC

D3

VCC

VCC

VCC VCC

D4 D7 D5

BUSY ACK PE SEL

INIT AF STB

SEL IN

STB AF ERR D0

INIT D1 SEL IN D2

PE SEL

D3 D4

-DATA

-DATA +DATA

+DATA

D6 D5

D7

BUSY ACK

RXD TXD

GND GND

GND GND

GND

GND GND

GND

D6 D4

D0 D2

BUSY ACK\

CLOCK DATA

GND +5V GND

Trang 24

163

Hình 0.7: Khối nút nhấn (Momentary Switch)

Hình 0.8: Khối LED 7 đoạn (7 Segment LED)

Hình 0.9: Khối giải mã 7 đoạn (7 Segment Decoder)

Trang 25

+ Lưu đồ giải thuật

❖ Bước 1: Vẽ lưu đồ giải thuật của chương trình điều khiển

Trang 26

165

Hình 0.11: Lưu đồ giải thuật của chương trình

+ Chương trình điều khiển

Sử dụng phần mềm Topview Simulation để thực hiện việc viết chương trình và

biên dịch, kiểm tra lỗi cú pháp của chương trình

❖ Bước 2: Khởi động phần mềm Topview Simulation

❖ Bước 3: Mở chức năng soạn thảo một chương trình mới và đặt tên tập tin chương trình là: S1_VituralTerminal.ASM

❖ Bước 4: Viết chương trình điều khiển dưới đây vào máy tính

;***************************************************

;CHUONG TRINH DIEU KHIEN GIAO TIEP PORT NOI TIEP TRUC TIEP GIUA

VI DIEU KHIEN

;VOI MAY TINH THONG QUA CONG COM (RS-232)

;TRUYEN SO LIEU TU 8051 (NHAP VAO BANG NUT NHAN VA HIEN THI SO LIEU TREN LED DON)

;QUA MAY TINH (HIEN THI TREN PHAN MEM HYPER TERMINAL)

; KEY 0: 8051 GUI KY TU 'A'

; KEY 1: 8051 GUI KY TU 'B'

Trang 27

;QUA 8051 (HIEN THI TREN LED 7 DOAN)

; KY TU 'A': 8051 HIEN THI 0

;KET NOI: 8 SWITCH -> PORT 0 (ACT = 0)

; 8 LED -> PORT 1 (CO SU DUNG DEM DAO - ACT = 1)

;KHOI DONG PORT NOI TIEP

MOV TMOD,#20H ; Timer 1, Mode 2 (Auto reload)

MOV TH1,#-3 ; Baud rate = 9600

MOV SCON,#52H ; Data = 8 bit, Stop = 1 bit

SETB TR1 ; Kich hoat Timer 1

;****************************************************

AGAIN:

Trang 28

167

SJMP AGAIN ; Thuc hien lai

;****************************************************

; - Kiem tra xu ly cac du lieu nhan duoc

;**************************************************** TEST_DATA:

CJNE A,#'A',COMP1 ; Kiem tra nhan duoc ky tu 'A'

MOV P2,#00H ; Xuat LED hien thi

COMP1:

CJNE A,#'B',COMP2 ; Kiem tra nhan duoc ky tu 'B'

MOV P2,#01H ; Xuat LED hien thi

COMP2:

CJNE A,#'C',COMP3 ; Kiem tra nhan duoc ky tu 'C'

MOV P2,#02H ; Xuat LED hien thi

COMP3:

CJNE A,#'0',COMP4 ; Kiem tra nhan duoc ky tu '0'

MOV P2,#03H ; Xuat LED hien thi

COMP4:

CJNE A,#'1',COMP5 ; Kiem tra nhan duoc ky tu '1'

MOV P2,#04H ; Xuat LED hien thi

COMP5:

CJNE A,#'2',COMP6 ; Kiem tra nhan duoc ky tu '2'

MOV P2,#05H ; Xuat LED hien thi

COMP6:

CJNE A,#'@',COMP7 ; Kiem tra nhan duoc ky tu '@'

MOV P2,#06H ; Xuat LED hien thi

COMP7:

Trang 29

168

CJNE A,#'#',COMP_EXIT ; Kiem tra nhan duoc ky tu '#'

MOV P2,#07H ; Xuat LED hien thi

JB P0.1,NEXT2 ; Kiem tra KEY1 (co chong doi)?

JB P0.2,NEXT3 ; Kiem tra KEY2 (co chong doi)?

Trang 30

JB P0.4,NEXT5 ; Kiem tra KEY4 (co chong doi)?

JB P0.5,NEXT6 ; Kiem tra KEY5 (co chong doi)?

JB P0.6,NEXT7 ; Kiem tra KEY6 (co chong doi)?

Trang 31

JNB TI,$ ; Cho truyen xong du lieu

CLR TI ; Xoa co bao, san sang cho lan truyen tiep theo

MOV SBUF,A ; Lay du lieu

RET ; Quay ve

;****************************************************

; Nhan du lieu noi tiep, ACC = Data

;****************************************************

RECV:

JNB RI,RECV ; Cho nhan xong du lieu

CLR RI ; Xoa co bao, san sang cho lan nhan tiep theo

MOV A,SBUF ; Cat du lieu nhan vao thanh ghi A

RET ; Quay ve

Trang 32

❖ Bước 5: Lưu chương trình trên vào máy tính

❖ Bước 6: Thực hiện biên dịch và kiểm tra lỗi chương trình

• Nếu cĩ bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh khắc phục các lỗi này Nguyên nhân phát sinh lỗi thơng thường do cú pháp của các lệnh khơng chính xác, cần phải được kiểm tra lại Sau khi hồn tất việc hiệu chỉnh sai sĩt thì quay trở về thực hiện từ Bước 5

• Nếu khơng cĩ lỗi xuất hiện thì phần mềm sẽ tự động tạo tập tin mã máy

với tên là: S1_VituralTerminal.HEX và thực hiện tiếp theo các phần nội

dung dưới đây

+ Mơ phỏng hoạt động

Sử dụng phần mềm ISIS 7 Professional (Protues 7.10) để thực hiện việc mơ phỏng

quá trình hoạt động của hệ thống vi điều khiển

❖ Bước 7: Khởi động phần mềm ISIS 7 Professional (Protues 7.10)

❖ Bước 8: Vẽ sơ đồ thiết kế mạch mơ phỏng điều khiển truyền dữ liệu giữa vi điều khiển 8051 và máy tính như Hình 5.5.4 dưới đây

Hình 0.12: Sơ đồ nguyên lý mơ phỏng hệ thống điều khiển

P0.7S

P0.0S

P0.0S P0.2S P0.4S P0.6S

P0.7S P0.5S P0.3S P0.1S

P2.0S

P2.7S

P2.1S P2.3S P2.5S

P2.4S

P2.6S

A3 C3 E3 G3

A3 C3 E3 G3

P2.0S

P2.2S

A4 C4 E4 G4

A4 C4 E4 G4

MẠCH ĐIỀU KHIỂN GIAO TIẾP CỔNG NỐI TIẾP

P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27

D1

R3

330 +5V

D2

R4

330 +5V

D3

R5

330 +5V

D4

R6

330 +5V

D5

R7

330 +5V

D6

R8

330 +5V

D7

R9

330 +5V

KEY7 KEY6 KEY5 KEY4 KEY3 KEY2 KEY1 KEY0

1B 1 2B 2 3B 3 4B 4 5B 5 6B 6 7B 7 8B 8

1

RP4

10K

+5V +5V

CTS

Trang 33

172

 Mạch mô phỏng này đã được thiết kế sẵn và lưu trong máy tính với tên tập tin

là: SerialPort_PC.DSN Vì thế người học có thể tự vẽ thiết kế mạch mô phỏng hoặc lấy mạch mô phỏng có sẵn trong cơ sở dữ liệu của môn học

❖ Bước 9: Chọn tập tin chương trình cần mô phỏng (tập tin mã máy đã được tạo

ra từ Bước 6) cho hệ thống vi điều khiển: S1_VituralTerminal.HEX

❖ Bước 10: Thực hiện chạy mô phỏng và quan sát trực tiếp kết quả trên màn

hình máy tính

• Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh khắc phục các lỗi này Nguyên nhân phát sinh lỗi thông thường do giải thuật chương trình không chính xác hoặc do mạch mô phỏng vẽ không chính xác, cần phải được kiểm tra lại Sau khi hoàn tất việc hiệu chỉnh sai sót thì quay trở

về thực hiện từ Bước 5 (do giải thuật chương trình không chính xác) hoặc Bước 8 (do mạch mô phỏng vẽ không chính xác)

• Nếu không có lỗi xuất hiện thì thực hiện tiếp theo các phần nội dung dưới đây

+ Lắp mạch và nạp chương trình điều khiển

Sử dụng các khối "Microcontroller Unit Slot", "Point LED", "7 Segment

Display", "7 Segment Decoder", "PC Interface" và "Power Supply" có sẵn trên mô

hình thực hành vi điều khiển để lắp ráp mạch theo thiết kế bên trên

❖ Bước 11: Kết nối các khối trên mô hình như Hình 5.5.5 để tạo thành hệ thống

mạch điều khiển như bên trên

• Tắt nguồn AC cấp cho mô hình thực hành

Hình 0.13: Sơ đồ kết nối mạch trên mô hình

Trang 34

173

Sử dụng phần mềm Flash Magic để thực hiện việc nạp chương trình cho vi điều

khiển P89V51RB2 trên mô hình thực hành

❖ Bước 12: Bật nguồn AC cấp cho mô hình thực hành

❖ Bước 13: Khởi động phần mềm Flash Magic

❖ Bước 14: Kiểm tra cấu hình phần mềm (loại vi điều khiển, cổng COM, tốc độ

truyền, chuẩn giao tiếp,

❖ Bước 15: Chọn tập tin chương trình điều khiển (tập tin mã máy đã được tạo ra

từ Bước 6): S1_VituralTerminal.HEX

❖ Bước 16: Nạp chương trình vào vi điều khiển

❖ Bước 17: Nhấn nút "Master Reset" ở khối "Microcontroller Unit Slot" để

chạy chương trình và quan sát trực tiếp kết quả trên mô hình thực hành

• Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh khắc phục các lỗi này Nguyên nhân phát sinh lỗi thường do việc lắp ráp phần cứng không chính xác hoặc các linh kiện bị hư hỏng, cần phải được kiểm tra lại Sau khi hoàn tất việc kiểm tra và hiệu chỉnh sai sót thì quay trở về thực hiện từ Bước 15

• Nếu không có lỗi xuất hiện thì hoàn tất bài thực hành

BÀI TẬP THỰC HÀNH

Nội dung: "Chương trình điều khiển truyền dữ liệu giữa vi điều khiển và PC thông

qua port nối tiếp" với yêu cầu sau:

❖ Truyền dữ liệu từ 8051 (nhập bằng nút) qua máy tính (hiển thị trên phần mềm Hyper Terminal)

• KEY 0: 8051 gửi chuỗi ký tự 'TRUONG DAI HOC CONG NGHIEP TP HCM'

• KEY 1: 8051 gửi chuỗi ký tự 'KHOA CONG NGHE DIEN TU'

• KEY 2: 8051 gửi chuỗi ký tự 'BO MON DIEN TU CONG NGHIEP'

• KEY 3: 8051 gửi chuỗi ký tự 'MICRO-CONTROLLER SYSTEM 51'

❖ Truyền dữ liệu từ máy tính (nhập trên Hyper Terminal) qua 8051 (hiển thị trên LED ma trận)

• Các ký tự hiển thị được "A" – "Z" và "0" – "9"

Sơ đồ mạch điện mô phỏng:

Trang 35

174

Sơ đồ lắp ráp trên mơ hình:

Chương trình điều khiển:

;***************************************************

;CHUONG TRINH DIEU KHIEN GIAO TIEP PORT NOI TIEP TRUC TIEP GIUA

VI DIEU KHIEN

;VOI MAY TINH THONG QUA CONG COM (RS-232)

;TRUYEN SO LIEU TU 8051 (NHAP VAO BANG NUT NHAN) QUA MAY TINH

;(HIEN THI TREN PHAN MEM HYPER TERMINAL)

; KEY 0: 8051 GUI CHUOI KY TU 'TRUONG DAI HOC CONG NGHIEP TP HCM'

; KEY 1: 8051 GUI CHUOI KY TU 'KHOA CONG NGHE DIEN TU'

; KEY 2: 8051 GUI CHUOI KY TU 'BO MON DIEN TU CONG NGHIEP'

P0.7S

P0.0S

P0.0S P0.2S P0.4S P0.6S

P0.7S P0.5S P0.3S P0.1S

COL3 COL5 COL7

MẠCH ĐIỀU KHIỂN GIAO TIẾP CỔNG NỐI TIẾP

XTAL2 18XTAL1 19

ALE 30

EA 31 PSEN 29 RST 9

P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32

P1.0 1P1.1 2P1.2 3 P1.3 4P1.4 5 P1.5 6P1.6 7P1.7 8

P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD

17 P3.6/WR

16 P3.5/T115

P2.7/A15 28

P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27

2 4 6 8

Q2

A1015 +5V

Q4

A1015 +5V

Q6

A1015 +5V

Q8

A1015 +5V

1C 182C 173C 16 4C 155C 14 6C 137C 128C 11

Trang 36

;(HIEN THI TREN LED MA TRAN)

; CAC KY TU HIEN THI DUOC 'A' - 'Z', '0' - '9'

;

;MO PHONG PROTUES: SERIALPORT_PC_MATRIX

;***************************************************

;KET NOI: 8 SWITCH -> PORT 0 (ACT = 0)

; ROW -> PORT2, RED COLUMN -> PORT1 (CO DEM DAO)

; PHUONG PHAP: QUET COT (ACT = 1) - HIEN THI HANG (ACT = 0)

;***************************************************

$MOD51

ORG 00H

;****************************************************

;KHOI DONG PORT NOI TIEP

MOV TMOD,#20H ; Timer 1, Mode 2 (Auto reload)

MOV TH1,#-3 ; Baud rate = 9600

MOV SCON,#52H ; Data = 8 bit, Stop = 1 bit

SETB TR1 ; Kich hoat Timer 1

;****************************************************

MOV DPTR,#CODEDISP_MATRIX ; Dia chi ma ky tu hien thi tren LED

ma tran (mac dinh

AGAIN: ; khi chua nhan du lieu thi LED ma tran tat het)

CJNE A,07H,NEW_DATA ; Kiem tra so sanh ky tu vua nhan voi ky tu

da nhan tu truoc

SJMP OLD_DATA ; Thuc hien lai (neu khong co su khac nhau giua hai la nhan)

NEW_DATA: ; Thanh ghi R7 chua ma ky tu nhan duoc

MOV R7,A ; Cat ma ky tu vua nhan (co su khac nhau giua hai lan nhan) OLD_DATA:

SJMP AGAIN ; Thuc hien lai

Trang 37

176

;***************************************************

;CTC KIEM TRA TRANG THAI CAC NUT NHAN VA DIEU KHIEN TRUYEN

;DU LIEU TUONG UNG VOI NUT DUOC NHAN QUA PORT NOI TIEP

Trang 38

SEND_KEY: ; Truyen du lieu, ket thuc khi du lieu truyen di la 99H

MOV A,#0 ; Offset dau tien trong vung du lieu truyen di

CJNE A,#99H,SEND_KEY_NEXT ; Kiem tra lay het du lieu trong vung

du lieu

SJMP EXIT_TEST ; Thoat khi phat hien ra du lieu ket thuc la 99H

SEND_KEY_NEXT:

INC DPTR ; Chuyen sang du lieu ke tiep

SJMP SEND_KEY ; Quay lai de truyen du lieu ke tiep

;ANH CUA KY TU NHAN DUOC A - Z VA 0 - 9

;THANH GHI R7 CHUA KY TU NHAN DUOC TU PORT NOI TIEP

;THANH GHI DPTR CHUA DIA CHI VUNG DU LIEU HIEN THI TREN MA TRAN CUA KY TU

;****************************************************

TEST_DATA:

COMP_A:

CJNE R7,#'A',COMP_B ; Kiem tra nhan duoc ky tu A

MOV DPTR,#(CODEDISP_MATRIX+8) ; Dia chi ma ky tu hien thi tren LED ma tran

AJMP COMP_EXIT

COMP_B:

CJNE R7,#'B',COMP_C ; Kiem tra nhan duoc ky tu B

Trang 39

CJNE R7,#'C',COMP_D ; Kiem tra nhan duoc ky tu C

MOV DPTR,#(CODEDISP_MATRIX+24) ; Dia chi ma ky tu hien thi tren LED ma tran

AJMP COMP_EXIT

COMP_D:

CJNE R7,#'D',COMP_E ; Kiem tra nhan duoc ky tu D

MOV DPTR,#(CODEDISP_MATRIX+32) ; Dia chi ma ky tu hien thi tren LED ma tran

AJMP COMP_EXIT

COMP_E:

CJNE R7,#'E',COMP_F ; Kiem tra nhan duoc ky tu E

MOV DPTR,#(CODEDISP_MATRIX+40) ; Dia chi ma ky tu hien thi tren LED ma tran

AJMP COMP_EXIT

COMP_F:

CJNE R7,#'F',COMP_G ; Kiem tra nhan duoc ky tu F

MOV DPTR,#(CODEDISP_MATRIX+48) ; Dia chi ma ky tu hien thi tren LED ma tran

AJMP COMP_EXIT

COMP_G:

CJNE R7,#'G',COMP_H ; Kiem tra nhan duoc ky tu G

MOV DPTR,#(CODEDISP_MATRIX+56) ; Dia chi ma ky tu hien thi tren LED ma tran

AJMP COMP_EXIT

COMP_H:

CJNE R7,#'H',COMP_I ; Kiem tra nhan duoc ky tu H

MOV DPTR,#(CODEDISP_MATRIX+64) ; Dia chi ma ky tu hien thi tren LED ma tran

AJMP COMP_EXIT

COMP_I:

CJNE R7,#'I',COMP_J ; Kiem tra nhan duoc ky tu I

MOV DPTR,#(CODEDISP_MATRIX+72) ; Dia chi ma ky tu hien thi tren LED ma tran

Trang 40

179

AJMP COMP_EXIT

COMP_J:

CJNE R7,#'J',COMP_K ; Kiem tra nhan duoc ky tu J

MOV DPTR,#(CODEDISP_MATRIX+80) ; Dia chi ma ky tu hien thi tren LED ma tran

AJMP COMP_EXIT

COMP_K:

CJNE R7,#'K',COMP_L ; Kiem tra nhan duoc ky tu K

MOV DPTR,#(CODEDISP_MATRIX+88) ; Dia chi ma ky tu hien thi tren LED ma tran

AJMP COMP_EXIT

COMP_L:

CJNE R7,#'L',COMP_M ; Kiem tra nhan duoc ky tu L

MOV DPTR,#(CODEDISP_MATRIX+96) ; Dia chi ma ky tu hien thi tren LED ma tran

AJMP COMP_EXIT

COMP_M:

CJNE R7,#'M',COMP_N ; Kiem tra nhan duoc ky tu M

MOV DPTR,#(CODEDISP_MATRIX+104) ; Dia chi ma ky tu hien thi tren LED ma tran

AJMP COMP_EXIT

COMP_N:

CJNE R7,#'N',COMP_O ; Kiem tra nhan duoc ky tu N

MOV DPTR,#(CODEDISP_MATRIX+112) ; Dia chi ma ky tu hien thi tren LED ma tran

AJMP COMP_EXIT

COMP_O:

CJNE R7,#'O',COMP_P ; Kiem tra nhan duoc ky tu O

MOV DPTR,#(CODEDISP_MATRIX+120) ; Dia chi ma ky tu hien thi tren LED ma tran

AJMP COMP_EXIT

COMP_P:

CJNE R7,#'P',COMP_Q ; Kiem tra nhan duoc ky tu P

MOV DPTR,#(CODEDISP_MATRIX+128) ; Dia chi ma ky tu hien thi tren LED ma tran

AJMP COMP_EXIT

COMP_Q:

Ngày đăng: 19/01/2022, 10:16

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm