89s52 - vxl

77
Kỹ thuật vi xử lý ĐỀ TÀI: THIẾT KẾ BẢNG CHỮ CHẠY DÙNG VĐK AT89S52 BKFET Group 1

Upload: dhamodharan-nallasivam

Post on 04-Jul-2015

2.750 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 89S52 - VXL

Kỹ thuật vi xử lý

ĐỀ TÀI:

THIẾT KẾ BẢNG CHỮ CHẠYDÙNG VĐK AT89S52

BKFET Group1

Page 2: 89S52 - VXL

Kỹ thuật vi xử lý

MỤC LỤC

PHẦN I: LỜI NÓI ĐẦU.

PHẦN II: GIỚI THIỆU ĐỀ TÀI VÀ LÝ DO CHỌN VĐK AT89S52.

II.1. Giới thiệu đề tài.II.2. Lý do chọn vi điều khiển AT89S52.

PHẦN III: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89S52.

III.1. Tổng quan về họ vi điều khiển 8051.III.2. Cấu trúc bên trong của bộ vi điều khiển 8051.III.3. Chức năng các chân của vi điều khiển 8051.

II.3.1. Các Port xuất nhập.II.3.2. Chân cho phép bộ nhớ chương trình .II.3.3. Chân cho phép chốt địa chỉ ALE.II.3.4. Chân truy xuất ngoài EA.II.3.5. Chân RESET.

III.4. Tổ chức bộ nhớ.II.4.1. Vùng RAM đa mục đích.II.4.2. Vùng RAM định địa chỉII.4.3. Các dãy thanh ghi II.4.4. Các thanh ghi chức năng đặc biệt (SFR)

PHẦN IV: SƠ ĐỒ KHỐI MẠCH BẢNG CHỮ CHẠY

VI.1. Sơ đồ khối mạch bảng chữ chạy.VI.2. Chức năng các khối.

VI.2.1. Khối điều khiển trung tâm.VI.2.2. Khối xuất và đệm ngõ ra hàng.VI.2.3. Khối giải mã cột (quét cột).VI.2.4. Khối ma trận LED.VI.2.5. Khối bàn phím.VI.2.6. Khối hiển thị LCD.

PHẦN V: THIẾT KẾ PHẦN CỨNG

V.1. Thiết kế khối điều khiển trung tâm.V.2. Thiết kế khối xuất và đệm ngõ ra hang.

BKFET Group2

Page 3: 89S52 - VXL

Kỹ thuật vi xử lý

V.3. Thiết kế khối giải mã cột.

V.4. Thiết kế khối ma trận LED.V.5. Thiết kế khối bàn phím.V.6. Thiết kế khối hiển thị LCD. V.7. Kết quả mạch in thực tế

PHẦN VI: THIẾT KẾ CHƯƠNG TRÌNH CHO VI ĐIỀU KHIỂNVI.1. Tóm tắt thuật toán.VI.2. Chương trình Assembly.

PHẦN VII: KẾT LUẬN

BKFET Group3

Page 4: 89S52 - VXL

Kỹ thuật vi xử lý

PHẦN I:

LỜI NÓI ĐẦU

Ngày nay kỹ thuật điện tử đã và đang không ngừng len lỏi vào cuộc sống. Các công nghệ mới liên tục ra đời đem lại những ứng dụng vô cùng to lớn. Có thể nói một trong những đỉnh cao công nghệ đó là sự ra đời của các bộ vi xử lý. Có lẽ ngay cả những người sáng chế ra những bộ vi xử lý đầu tiên cũng không thể tưởng tượng hết được tương lai phát triển huy hoàng của chúng.

Các bộ vi xử lý ngày nay không đơn thuần chỉ là các con chip thế hệ VLSI với khả năng tích hợp rất lớn mà chúng thực sự là những bộ não thu nhỏ. Chúng có mặt ở khắp nơi để giúp con người xử lý vô vàn các công việc, từ việc nhỏ như xử lý lệnh trong chiếc điều khiển từ xa tivi, chiếc ôtô đồ chơi trẻ em đến những việc lớn hơn như trong chiếc điện thoại di động, máy ảnh số hay thậm chí trong máy bay, tên lửa cũng do những bộ vi xử lý điều khiển. Mặc dù kích thước vật lý của các bộ vi xử lý khá nhỏ nhưng bên trong nó chứa đựng rất nhiều công trình khoa học do hàng nghìn kỹ sư nghiên cứu trong hàng vài năm trời. Vì vậy việc nắm bắt các công nghệ đó là vô cùng cần thiết cho những ứng dụng của cuộc sống nhưng cũng cũng không hề dễ dàng.

Một trong những cách tiếp cận với công nghệ vi xử lý là chúng ta tìm hiểu về vi điều khiển vì bên trong các bộ vi xử lý cỡ nhỏ. Và không có cách học tập nào hiệu quả hơn là học phải đi đôi với làm sản phẩm thật. Đó chính là vấn đề sẽ được chúng em trình bày trong bài báo cáo này.

BKFET Group4

Page 5: 89S52 - VXL

Kỹ thuật vi xử lý

PHẦN II:

GIỚI THIỆU ĐỀ TÀI VÀLÝ DO CHỌN VĐK AT89S52

II.1. Giới thiệu đề tài:

Trong thời đại hiện nay có rất nhiều hình thức thông tin quảng cáo. Một trong số những hình thức có hiệu quả nhất và đang được sử dụng rộng rãi nhất đó là quảng cáo bằng bảng điện tử. Quảng cáo bằng bảng điện tử luôn thể hiện những ưu điểm vượt trội so với các bảng quảng cáo truyền thống như:

- Thông tin trên bảng có thể thay đổi dễ dàng.- Cùng một lúc có thể quảng cáo nhiều thông tin theo kiểu luân phiên, chạy,

nháy…- Màu sắc phong phú, bắt mắt.- Nổi bật vì có khả năng tự phát sáng.- Thể hiện phong cách hiện đại, chuyên nghiệp.- …

Để làm được một bảng điện tử chúng ta có thể dùng vi xử lý, dùng vi điều khiển, PSoC, PLD, PLC … Với mục đích làm quen với các bộ vi điều khiển nói riêng và công nghệ vi xử lý nói chung, trong bài báo cáo này, chúng em xin trình bày phương án thiết kế mạch quảng cáo sử dụng vi điều khiển AT89S52.

II.2. Lý do chọn vi điều khiển AT89S52:

Như đã nói trên, việc điều khiển bảng chữ chạy sẽ là khá phức tạp nếu ta chỉ sử dụng các IC số, nhưng nếu sử dụng các hệ mạch tổ hợp khả trình thì công việc trở nên nhẹ nhàng hơn khá nhiều. Trong điều kiện mới được tiếp cận với môn học vi xủ lý, chưa đủ kiến thức để làm việc với các hệ mạch khả trình phức tạp. Chúng em quyết định dùng vi điều khiển để điều khiển mạch bảng chữ chạy của mình.

Trên thị trường hiện nay có bán khá nhiều chủng loại vi điều khiển của nhiều hãng khác nhau. Nổi tiếng nhất là các dòng vi điều khiển 89, AVR, PIC của hai hãng Atmel và Microchip. Trong đó hai dòng vi điều khiển AVR và PIC là hai dòng vi điều khiển khá mạnh về cả tính năng lẫn tốc độ nhưng cũng là dòng vi điều khiển khá đắt tiền. Vì vậy chúng em quyết định sử dụng vi điều khiển họ 89 mà cụ thể là vi điều khiển AT89S52 cho mục đích điều khiển bảng chữ chạy của mình. Đây là loại IC vi điều khiển khá thông dụng cho các mục

BKFET Group5

Page 6: 89S52 - VXL

Kỹ thuật vi xử lý

đích không yêu cầu tốc độ và tính năng cao vì dễ sử dụng và lập trình. Đặc biệt với khả năng có thể được lập trình trong hệ thống (ISP) việc nạp xoá chương trình là khá đơn giản và tiện lợi.

BKFET Group6

Page 7: 89S52 - VXL

Kỹ thuật vi xử lý

PHẦN III:

GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89S52

III.1. Tổng quan về họ vi điều khiển 8051:

Vi điều khiển AT89S52 là một trong những IC thuộc họ vi điều khiển 8051 do hãng Almel thiết kế và chế tạo. Tuy có nhiều ưu việt hơn so với vi điều khiển 8051 nguyên bản nhưng về cơ bản cấu trúc và cách lập trình cho vi điều khiển AT89S52 là giống với vi điều khiển 8051. Vì vậy chúng ta sẽ đi sâu tìm hiểu họ vi điều khiển 8051 để phục vụ cho việt thiết kế của đề tài.

8051 Là bộ vi điều khiển do hãng Intel chế tạo đầu tiên vào năm 1981 và sau đó được các hãng sản xuất vi điều khiển khác phát triển lên thành rất nhiều loại IC vi điều khiển khác nhau. Bộ vi điều khiển 8051 đầu tiên có các đặc điểm:

- Có 4 kByte ROM và hỗ trợ tối đa lên tới 64 kByte.- Có 128 byte RAM.- Có 4 cổng xuất nhập (I/O), mỗi cổng rộng 8 bit.- 2 bộ định thời 16 bit.- Có giao tiếp nối tiếp RS232.- Là bộ xử lý bit, tức là có thể thao tác với từng bit.-

III.2. Cấu trúc bên trong của bộ vi điêù khiển 8051:

Sơ đồ khối vi điều khiển 8051:

BKFET Group7

Page 8: 89S52 - VXL

Kỹ thuật vi xử lý

BKFET Group8

CO

UN

TER

IN

PU

TS

OSC

INTERRUPT

CONTROL

4 I/OPORTS

BUSCONTRO

L

SERIALPORT

EXTERNALINTERRUPTS

CPU

ON - CHIPRAM

ETC

TIMER 0

TIMER 1

ADDRESS/DATA

TXD RXD

P0

P1

P2

P3

Page 9: 89S52 - VXL

Kỹ thuật vi xử lý

III.3. Chức năng các chân của vi điều khiển 8051:

III.3.1. Các port xuất nhập:

Sơ đồ chân:

S¬ ®å ch©n 89S52.

Trong đó:

Port 0:- Từ chân số 32 đến số 39.- Vì được thiết kế theo kiếu cực máng hở nên cần có điện trở kéo lên

nguồn dương.- Làm nhiệm vụ xuất/ nhập (với các thiết kế có tối thiểu thành phần).

BKFET Group9

Page 10: 89S52 - VXL

Kỹ thuật vi xử lý

- Với các thiết kế lớn có bộ nhớ ngoài, port 0 trở thành bus địa chỉ và bus dữ liệu đa hợp (là byte thấp nếu là bus địa chỉ ).

Port 1:- Từ chân số 1 đến số 8.- Đã có sẵn điện trở kéo bên trong IC.- Chỉ cố tác dụng xuất/ nhập, dùng giao tiếp với các thiết bị ngoại vi khi

cần.

Port 2:- Từ chân số 21 đến số 28.- Đã có sẵn điện trở kéo bên trong IC.- Làm nhiệm vụ xuất/ nhập.- Với các thiết kế lớn yêu cầu cần có bộ nhớ ngoài thì nó là byte địa chỉ

cao của bus địa chỉ 16-bit.

Port 3:- Từ chân số 10 đến chân số 17.- Làm nhiệm vụ xuất/ nhập.- Thường sử dụng để tác động tín hiệu điều khiển. Ngoài ra mỗi chân

của Port3 có một chức năng riêng:

III.3.2. Chân cho phép bộ nhớ chương trình:

8051 cung cấp cho ta 4 tín hiệu điều khiển bus. Tín hiệu cho phép bộ nhớ chương trình (Program Store Enable) là tín hiệu xuất trên chân 29. Đây là tín hiệu điều khiển cho phép ta truy xuất bộ nhớ chương trình ngoài. Chân này thường nối với chân cho phép xuất của EPROM (hoặc ROM) để cho phép đọc các Byte lệnh. Tín hiệu ở logic 0 trong suốt thời gian tìm nạp lệnh. Khi thực thi một chương trình chứa ở ROM nội, được duy trì ở mức 1.

III.3.3. Chân cho phép chốt địa chỉ ALE/PROG:

BKFET Group

Bit Tên Địa chỉ bit Chức năngP3.0 RXD B0H Chân nhận dữ liệu của port nối tiếpP3.1 TXD B1H Chân phát dữ liệu của port nối tiếp P3.2 INT0 B2H Ngõ vào ngắt ngoài 0P3.3 INT1 B3H Ngõ vào ngắt ngoài 1P3.4 T0 B4H Ngõ vào của bộ định thời/đếm 0P3.5 T1 B5H Ngõ vào của bộ định thời/đếm 1P3.6 WR B6H Điều khiển ghi bộ nhớ ngoàiP3.7 RD B7H Điều khiển đọc bộ nhớ ngoài

10

Page 11: 89S52 - VXL

Kỹ thuật vi xử lý

Là chân số 30, chân này xuất tín hiệu cho phép chốt địa chỉ ALE để giải đa hợp bus dữ liệu và bus đia chỉ. Khi port 0 được sử dụng làm bus địa chỉ/ dữ liệu đa hợp, chân ALE xuất tín hiệu để chốt địa chỉ (byte thấp của địa chỉ 16-bit) vào một thanh ghi ngoài trong suốt 1/2 đầu của chu kì bộ nhớ . Sau khi điều này đã được thực hiện, các chân của Port 0 sẽ xuất/nhập dữ liệu hợp hệ trong suốt 1/2 còn lại của chu kỳ bộ nhớ.

III.3.4. Chân truy xuất ngoài EA:

Là chân 31 có thể nối với 5V (logic 1) hoặc với GND (logic 0). Nếu chân này nối lên 5V, 8051 thực thi chương trình trong ROM nội ( chương trình nhỏ hơn 8K). Nếu chân này nối với GND ( và chân cũng ở logic 0), chương trình cần thực thi chứa ở bộ nhớ ngoài.

III.3.5. Chân RESET:

Ngõ vào RST (chân 9) là ngõ vào xoá chính (master reset) của 8051 dùng để thiết lập lại trạng thái ban đầu cho hệ thống hay gọi tắt là reset hệ thống Khi ngõ vào này được treo ở logic 1 tối thiểu hai chu kỳ máy, các thanh ghi bên trong của 8051 được nạp các giá trị thích hợp cho việc khởi động lại hệ thống. Khi đó, toàn bộ các cổng đều ở mức logic 1.

III.4. Tổ chức bộ nhớ:

Bộ nhớ bên trong chip bao gồm ROM, RAM va EPROM. RAM trên chip bao gồm vùng RAM đa chức năng, vùng RAM với từng bit được định địa chỉ, các dây thanh ghi (bank) và các thanh ghi chức năng đặc biệt.

Có 2 đặc tính đáng lưu ý: + Các thanh ghi và các port I/O được định địa chỉ theo kiểu ánh xạ bộ nhớ và được truy xuất như một vị trí nhớ trong bộ nhớ. + Vùng track thường trú trong RAM trên chip thay vì ở trong RAM ngoài như đối với các bộ vi xử lý.

III.4.1. Vùng RAM đa mục đích:

Có 80 byte. Bất cứ vị trí nào trong vùng RAM ta đều có thể truy xuất tự do bằng cách sử dụng định địa chỉ trực tiếp hoặc gián tiếp. Ví dụ: Để đọc nội dung ở địa chỉ 5FH của RAM nội vào thanh ghi tích luỹ lệnh sau sẽ được dùng.

- Kiểu định địa chỉ trực tiếp:MOV A,5FH ; Đọc nội dung tại địa chỉ 5FH của RAM.

BKFET Group11

Page 12: 89S52 - VXL

Kỹ thuật vi xử lý

; vào thanh chứa A.

- Kiểu định địa chỉ gián tiếp: (Qua các thanh ghi R0,R1):MOV R0,#5FH ; Di chuyển giá trị 5FH vào thanh ghi R0MOV A,@R0 ; Dùng địa chỉ trực tiếp để di chuyển dữ liệu

; “được trỏ bởi R0” vào thanh ghi tích luỹ.

III.4.2. Vùng RAM định địa chỉ:

Chip 8051 chứa khá nhiều vị trí định địa chỉ trong đó có 128 byte chứa trong các byte ở địa chỉ 20H đến 2FH (16 byte x 8 = 128 bits), phần còn lại chứa trong các thanh ghi chức năng đặc biệt. Ý tưởng truy xuất từng bit riêng rẽ bằng phần mềm là một đặc tính tiện lợi của vi điều khiển nói chung.

Công dụng:- Truy xuất các bit riêng rẽ thông qua các phần mềm.- Các port có thể định địa chỉ từng bit, làm đơn giản việc giao tiếp bằng

phần mềm với các thiết bị xuất nhập đơn bit.

III.4.3. Các dãy thanh ghi:

Có địa chỉ từ 00H đến 1FH, 32 vị trí thấp nhất của bộ nhớ nội chứa các dãy thanh ghi. Các lệnh của 89S52 hỗ trợ 8 thanh ghi tử R0 đến R7 (mặc định thuộc bank 0 sau khi reset hệ thống)

III.4.4. Các thanh ghi chức năng đặc biệt (SFR):

BKFET Group12

Page 13: 89S52 - VXL

Kỹ thuật vi xử lý

Thanh ghi chøc

n¨ng ®Æc biÖt SFR.

Không

phải tất cả 128 địa chỉ từ 80H đến FFH đều được định nghĩa mà chỉ có 21 địa chỉ được định nghĩa. Các thanh ghi chức năng đặc biệt bao gồm:

+ Từ trạng thái chương trình PSW: có địa chỉ là D0H

Bit Kí hiệuĐịa chỉ Mô tả

PSW.7 CY D7H Cờ NhớPSW.6 AC D6H Cờ nhớ phụPSW.5 F0 D5H Cờ 0PSW.4 RS1 D4H Chọn dãy thanh ghi 1PSW.3 RS0 D3H Chọnh dãy thanh ghi 0

00 = bank 0: địa chỉ từ 00F đến 07H01 = bank 1: địa chỉ từ 08F đến 0FH10 = bank 2: địa chỉ từ 00F đến 07H

BKFET Group

FFF0

E0

D0

B8

B0

A8

A0

9998

90

8D8C8B8A89

F7 F6 F5 F4 F3 F2 F1 F0 B

E7 E6 E5 E4 E3 E2 E1 E0 ACC

D7 D6 D5 D4 D3 D2 D1 D0 PSW

- - - BC BB BA B9 B8 IP

B7 B6 B5 B4 B3 B2 B1 B0 P3

AF

- - AC AB AA A9 A8 IE

A7 A6 A5 A4 A3 A2 A1 A0 P2

SBUFNot bit addressable9F 9E 9D 9C 9B 9A 99 98 SCON

97 96 95 94 93 92 91 90 P1

TH1TH0

TL1TL0TMOD

Not bit addressable

Not bit addressable

Not bit addressable

Not bit addressable

Not bit addressable

8887

83828180

8F 8E 8D 8C 8B 8A 89 88 TCON

Not bit addressablePCON

DPHDPLSPNot bit addressable

Not bit addressable

Not bit addressable

87 86 85 84 83 82 81 80 PO13

Page 14: 89S52 - VXL

Kỹ thuật vi xử lý

11 = bank 3: địa chỉ từ 00F đến 07HPSW.2 OV D2H Cờ trànPSW.1 - D1H Dự trữPSW.0 P D0H Cờ kiểm tra chẵn lẻ

+ Thanh ghi B: Có địa chỉ F0H được dùng chung với thanh chứa A trong các phép toán nhân và chia. + Con trỏ Stack (SP) : là thanh ghi 8 bit ở địa chỉ 81H, nó chứa địa chỉ của dữ liệu hiện đang ở đỉnh của stack. + Con trỏ dữ liệu DPTR:

- Dùng để truy xuất bộ nhớ chương trình ngoài hoặc bộ nhớ dữ liệu ngoài.

- DPTR là thanh ghi 16 bit có địa chỉ 82H (byte thấp) và 83H (byte cao). + Các thanh ghi port: - Port 0 : địa chỉ 80H - Port 1 : địa chỉ 90H - Port 2 : địa chỉ A0H - Port 3 : địa chỉ B0H + Các thanh ghi định thời: 8951 có 2 bộ định thời/đếm dùng để định khoảng thời gian hoặc đếm các sự kiện. - Bộ định thời 0: địa chỉ 8AH (TL0 ) và 8CH (TH0) - Bộ định thời 1: địa chỉ 8BH (TL1 ) và 8DH (TH1) Hoạt động của bộ định thời được thiết lập bởi thanh ghi chế độ định thời TMOD ở địa chỉ 89H và thanh ghi ®iÒu khiển bộ định thời TCON ở địa chỉ 88H (chỉ có TCON được định địa chỉ từng bit) + Các thanh ghi của port nối tiếp: Chip 8951 có 1 port nối tiếp để truyền thông với các thiết bị như các thiết bị đầu cuối hoặc modem... + Các thanh ghi ngắt: có một cấu trúc ngắt với 2 mức ưu tiên và 5 nguyên nhân ngắt. Các ngắt bị vô hiệu hoá sau khi Reset hệ thống và được phép bằng cách vào thanh ghi IE ở địa chỉ A8H. Mức ưu tiên ngắt được thiết lập bởi thanh ghi IP ở địa chỉ B8H. + Thanh ghi điều khiển nguồn: PCON có địa chỉ 87H.

BKFET Group14

Page 15: 89S52 - VXL

Kỹ thuật vi xử lý

PHẦN IV:

SƠ ĐỒ KHỐI MẠCH BẢNG CHỮ CHẠY

IV.1. Sơ đồ khối mạch bảng chữ chạy:

IV.2. Chức năng các khối:

IV.2.1. Khối điều khiển trung tâm:

Chương trình lập trình sẵn được nạp vào trong vi điều khiển AT89S52 sẽ nhận các lệnh từ khối bàn phím và đưa tín hiệu điều khiển tương ứng ra LCD cũng như điều khiển các khối xuất dữ liệu hàng, và giải mã cột ra các Port của vi điều khiển để làm sáng, tắt các LED tương ứng.

IV.2.2. Khối xuất và đệm ngõ ra hàng:

BKFET Group15

Khối điều khiển trung tâm

Bảng ma trận LEDXuất và đệm ngõ ra hàng

Giải mã cột

Khốibàn phím

Hiển thị LCD

Page 16: 89S52 - VXL

Kỹ thuật vi xử lý

Khối này làm nhiệm vụ nhận dữ liệu điều khiển hàng từ vi điều khiển ra, thông qua bộ đệm để đảm bảo đủ dòng và áp cung cấp cho Anod (các hàng) của bảng ma trận LED. Ngoài ra mạch đệm còn là các bộ đảo để chuyển mức logic ra tích cực thấp từ vi điều khiển thành các tín hiệu mức logic 1.

IV.2.3. Khối giải mã cột (quét cột):

Tại mỗi thời điểm chỉ các đèn ở một cột nào đó được sáng tương ứng với dữ liệu xuất ra trên các hàng. Như vậy cần tạo ra một khối quét cột làm nhiệm vụ giải mã địa chỉ cột để “mở” cột cần thiết, nối K các LED hàng đó xuống mass.

Khối này sẽ nhận điều khiển trực tiếp từ vi điều khiển dưới dạng địa chỉ nhị phân của cột được chọn. Để ma trận hiển thị đúng dòng thông báo mong muốn, dữ liệu xuất ra ở hàng phải đồng bộ với hoạt động của khối giải mã cột.

IV.2.4. Khối ma trận LED:

Đây là khối hiển thị thông tin quảng cáo. Bảng đèn LED sẽ nhận đồng thời tín hiệu điều khiển từ khối đệm hàng (xuất dữ liệu và bộ đệm hàng) và khối giải mã cột (khối quét cột). Điều đó quyết định LED nào sáng, LED nào tắt, nhằm hiển thị ra những thông tin quảng cáo mong muốn.

IV.2.5. Khối bàn phím:

Khối này gồm các phím bấm, có chức năng tác động điều khiển từ bên ngoài vào vi điều khiển để điều khiển hoạt động của bảng đèn như tốc độ chạy, kiểu chạy, dừng, xoá, …

IV.2.6. Khối hiển thị LCD:

Khối này sẽ hiển thị các thông tin chỉ dẫn cho người dùng khi thay đổi nội dung dòng chữ hay có bất kỳ tác động nào tới việc chạy chữ. Ngoài ra khối này còn hiển thị dòng chữ đang chạy trên bảng giúp cho việc thay đổi đơn giản hơn.

BKFET Group16

Page 17: 89S52 - VXL

Kỹ thuật vi xử lý

PHẦN V:

THIẾT KẾ PHẦN CỨNG:

V.1. Thiết kế khối điều khiển trung tâm:

Khối điều khiển trung tâm gồm thành phần chính là IC vi điều khiển AT89S52 kèm theo các linh kiện phụ trợ như khuyến cáo của nhà sản xuất:

- Thạch anh 11.0592MHz (thường dùng) kèm theo hai tụ 33pF.- Chân số 9 được mắc tụ 10F lên Vcc để IC được reset mỗi khi bật nguồn.

Bình thường chân này được kéo xuống mass bởi điện trở thị số 10K.

Ngoài ra còn có:- Hai nút ấn mắc vào chân 9 để Reset (Một nút phụ dùng đến khi dùng vi

điều khiển AVR, vì dòng IC vi điều khiển AVR Reset bằng mức 0).- Jack nạp 6 chân cho mạch nạp ISP.- Cả cổng P0 được mắc điện trở kéo 10K lên nguồn. (các cổng khác không

cần vì đã có sẵn bên trong IC)

BKFET Group17

Page 18: 89S52 - VXL

Kỹ thuật vi xử lý

- Hai tụ lọc có giá trị 10F và .1F mắc ngay tại chân nguồn của IC vi điều khiển một lọc nhiễu tần số thấp và một lọc nhiễu tần số cao cho nguồn vào IC. Đảm bảo IC luôn hoạt động ổn định.

V.2. Thiết kế khối xuất và đệm ngõ ra hàng:

Bảng LED ma trận trong thiết kế này có kích thước 8 hàng x 32 cột. Để có thể xuất dữ liệu của cả 8 hàng cùng một lúc cách đơn giản nhất là dùng luôn 1 Port của vi điều khiển để xuất. Việc này sẽ rất thuận lợi cho công việc lập trình. Trong thiết kế này Port 0 được chọn làm Port xuất dữ liệu hàng. Như vậy khối xuất dữ liệu hàng thực chất là Port 0 của vi điều khiển (có 8 chân tương ứng với 8 hàng của ma trận LED). Dữ liệu xuất này được điều khiển bởi chương trình nạp trong vi điều khiển và đưa ra các mạch đệm hàng.

Tại sao ta lại phải dùng mạch đệm hàng mà không nối thẳng các hang vào Port0 của IC vi điều khiển. Để trả lời câu hỏi này trước hết chúng ta phải hiểu nguyên lý để làm cho một LED trong ma trận sáng. Để làm sang một LED trong ma trận, chân A của nó phải nối lên +5V (thông qua một điện trở) và chân K của nó phải nối xuống 0V. Trong ma trận LED, tất cả các LED cùng hang có các chân A được nối với nhau, tất cảc các LED cùng cột có các chân K được nối với nhau. Vì vậy muốn một LED sáng hàng phải ở mức 1 và cột phải ở mức 0.

Một phần tử đệm hàng

Chúng ta không thể nối trực tiếp các chân từ Port0 của vi điều khiển vào các chân Anod (hàng) của ma trận LED mà cần nối qua một khối đệm. Mạch đệm này làm nhiệm vụ tăng dòng điện đủ cho LED sang và đảo mức tín hiệu logic điều khiển từ mức 0 (vì vi điều khiển AT89S52 thường điều khiển bằng mức tích cực thấp) thành mức 1 (ra LED).

BKFET Group18

Page 19: 89S52 - VXL

Kỹ thuật vi xử lý

Trong thiết kế này, chúng ta sử dụng transistor A564 là transistor thuận hoạt động ở chế độ cắt – bão hoà để thực hiện nhiệm vụ đó. Transistor A564 là loại transistor khá phổ biến trên thị trường có dòng tải IC tối đa khoảng 50mA đảm bảo đủ khả năng cấp dòng cho một LED (khoảng 5 – 10 mA). Để hạn chế dòng cho LED ta dung điện trở có giá trị 560 mắc từ cực C của transistor tới chân A của LED. Như vậy với sụt áp qua LED bình thường cỡ 2V thì dòng chạy qua LED khoảng:

ILED = (5 – 2)/ 560= 5.4 mA

Đó cũng chính là dòng IC. Như vậy với hệ số khuếch đại khoảng 200 thì dòng IB cần thiết cấp cho transistor là:

IB = 5.4/ 200= 0.027 mA

Với sụt áp trên mối EB của transistor khoảng 0.7V và điện áp mức 0 tại chân của IC vi điều khiển khoảng 0.5V thì điện trở RB có giá trị:

RB = (5 – 0.7 – 0.5)/ 0.027= 140 K

Ở đây nếu ta dùng RB = 33K thì hệ số bão hoà sâu sẽ là 4.2 đảm bảo các LED sang hết công suất và các transistor hầu như không nóng do không có sụt áp ngang qua tiếp giáp EC.

Như vậy khối xuất và đệm ngõ ra hang gồm 8 mạnh đệm, mỗi mạch gồm một transistor loại A564 có cực B nối tới chân IC vi điều khiển thông qua một địên trở 33K. Cực C nối tới Anod của LED thông qua một điện trở 560. Cực E nối lên +5V.

V.3. Thiết kế khối giải mã cột:

Như đã nói ở trên, bang LED có 32 cột và các cột được nối tới chân K của các LED. Tại mỗi thời điểm chỉ có duy nhất một cột được “mở” (nếu hai cột thì hai cột sẽ luôn sang giống nhau) vì vậy yêu cầu của mạch giải mã cột là với mỗi tín hiệu địa chỉ vào phải giải mã được ra duy nhất 1 trong 32 cột và phải có tín hiệu điều khiển ra LED ở mức logic 0

Để thực hiện được chức năng này, chúng ta sẽ sử dụng 1 IC 74LS138 cho mỗi ma trận LED (4 IC cho 4 ma trận). Vì IC 74LS138 có 8 ngõ ra rất phù hợp với ma trận LED 8x8. Có thể nói đây là phần tử quan trọng nhất của mạch giải mã cột.

BKFET Group19

Page 20: 89S52 - VXL

Kỹ thuật vi xử lý

V.3.1. Giới thiệu IC 74LS138:

IC 74LS138 là loại IC dùng giải mã/ giải đa hợp (Decoder/Demultiplexer) làm việc được với tần số cao, nó đặc biệt thích hợp khi dùng làm bộ giải mã địa chỉ tác động vào chân chọn IC (Chip Select) của các IC nhớ lưỡng cực.

V.3.1.1. Sơ đồ và chức năng các chân của IC 74LS138:

Sơ đồ chân IC 74LS138

VCC, GND: Dùng cấp nguồn cho IC hoạt động. VCC được nối đến cực dương của nguồn (+5V), GND được nối đến cực âm của nguồn (0V).

A, B, C: Các ngõ vào chọn trạng thái ngõ ra (có thể coi như đây là các đường địa chỉ của IC 74LS138). Tổ hợp trạng thái logic của 3 ngõ vào này ta sẽ được 8 trạng thái logic khác nhau ở 8 ngõ ra của IC (23 = 8). Với A là bit có trọng số thấp nhất.

G2A, G2B, G1: Là 3 ngõ vào điều khiển IC. IC chỉ được phép hoạt động khi cả 3 chân này đều ở mức logic phù hợp (cụ thể là G2A, G2B ở mức logic 0, G1 ở mức logic 1). Chỉ cần 1 trong 3 chân này ở mức logic không phù hợp thì IC sẽ bị cấm ngay lập tức (tất cả các ngõ ra đều ở mức logic cao) bất chấp trạng thái ở các ngõ vào còn lại.

O0 – O7: Các ngõ ra của IC. Tùy thuộc vào trạng thái của các đường địa chỉ mà ta có trạng thái ở ngõ ra tương ứng. Khi IC đang hoạt động bình thường (cả 3 chân điều khiển G đều ở mức logic phù hợp) thì tại một thời điểm nhất định chỉ có một ngõ ra duy nhất ở mức logic 0, tất cả các ngõ còn lại đều ở mức logic 1.

BKFET Group20

16

1 2 3 4 5 6 7 8

15 14 13 12 11 910

VCC

GNDA G2CB G2 G O7\

O0\ O1\ O2\ O3\ O4\ O5\ O6\

74138

Page 21: 89S52 - VXL

Kỹ thuật vi xử lý

V.3.1.2. Sơ đồ mô tả hoạt động bên trong IC 74LS138:

BKFET Group21

Page 22: 89S52 - VXL

Kỹ thuật vi xử lý

V.3.1.3. Bảng trạng thái của IC 74138:

VÀO RA

G2A\ G2B\ G1 A B C O0\ O1\ O2\ O3\ O4\ O5\ O6\ O7\

HxxLLLLLLLL

xHxLLLLLLLL

xxLHHHHHHHH

xxxLHLHLHLH

xxxLLHHLLHH

xxxLLLLHHHH

HHHLHHHHHHH

HHHHLHHHHHH

HHHHHLHHHHH

HHHHHHLHHHH

HHHHHHHLHHH

HHHHHHHHLHH

HHHHHHHHHLH

HHHHHHHHHHL

H: Mức 1L: Mức 0.x: Tuỳ ý

V.3.1.4. Nguyên tắc hoạt động của IC 74LS138:

Dựa vào bảng trạng thái ta thấy: Chỉ cần 1 trong 3 chân cho phép (G2A, G2B, G1) ở trạng thái không đúng (không cho phép IC hoạt động) thì tất cả các ngõ ra của IC 74LS138 đều ở mức logic cao bất chấp trạng thái logic của các chân địa chỉ (A, B, C). Chẳng hạn như khi chân G2A ở mức logic cao thì tất cả các ngõ ra của IC đều ở mức logic cao, bất chấp trạng thái của các chân còn lại như: G2B, G1, A, B, C.

Ta nhận thấy với 3 đường địa vào IC sẽ giải mã tối đa được 8 ngõ ra. Giả sử CBA = 000 (với điều kiện là các ngõ vào điều khiển đều phải ở mức logic thích hợp để IC hoạt động) thì chỉ có duy nhất một ngõ ra đầu tiên là ở mức logic thấp, tất cả các ngõ ra còn lại đều ở mức logic cao.

BKFET Group22

Page 23: 89S52 - VXL

Kỹ thuật vi xử lý

Khi địa chỉ đưa vào IC tăng lên một (001) thì mức logic thấp này được chuyển đến ngõ ra thứ hai và cũng chỉ có duy nhất ngõ ra này ở mức logic thấp. Khi địa chỉ đưa vào IC là 111 thì mức logic thấp sẽ ở ngõ ra cuối cùng (O7). Như vậy, mức logic thấp ở ngõ ra sẽ di chuyển tương ứng với địa chỉ đưa vào IC.

V.3.2. Mạch giải mã cột:

BKFET Group23

Page 24: 89S52 - VXL

Kỹ thuật vi xử lý

Mạch giải mã cột

Vì bảng đèn có 32 cột, nên chúng ta cần 32 đầu ra, bởi vậy cần dùng 4 IC 74LS138, mỗi IC giải mã cho một ma trận khác nhau. Để đảm bảo các IC không đồng thời giải mã cột một lúc, mà tại mỗi thời điểm chỉ có một IC đuợc phép giải mã nên các IC này được mắc như trên hình vẽ. 4 IC 74LS138 được điều khiển bởi một IC 74LS139 có vừa đúng 4 đầu ra. Với mỗi tổ hợp hai bít địa chỉ vào thì tương tự như IC 74LS138, tại ngõ ra IC 74LS139 chỉ có một ngõ có mức logic 0 còn lại là mức 1. Các đầu ra này được dùng để chọn IC (74LS138). Muốn vậy, chúng được nối trực tiếp với một trong hai đầu G2 của mỗi IC 74LS138 (G2 là chân cho phép khi ở mức 0). Các đầu G2 còn lại nối xuống mass và G1 nối lên +5V để luôn ở trạng thái cho phép.

Vậy chúng ta có tất cả là 5 bit địa chỉ trong đó, ba bit có trọng số thấp nhất chính là ba chân địa chỉ CBA của các IC 74LS138 (các chân địa chỉ của các IC mắc song song nhau). Hai bit trọng số cao nhất chính là hai bit địa chỉ vào của IC 74LS139.

Các chân địa chỉ này được nối trực tiếp với các chân của IC vi điều khiển. Cụ thể, chúng được nối vào 5 bit có trọng số thấp của Port 2 của IC vi điều khiển để thuận tiện cho việc lập trình. Muốn “mở” cột nào, chúng ta chỉ cần gửi địa chỉ của cột đó ra Port 2 là được.

Ngoài ra chúng ta còn có thể điều khiển cho cả bảng LED tắt bằng cách treo chân P2.5 của IC vi điều khiển lên mức 1. Điều đó có được là vì chân này được nối tới chân cho phép (G) của IC 74LS139. Chân này được điều khiển bằng mức 0 vì vậy khi bị treo lên 1 nó sẽ ngừng việc giải mã của IC 74LS139 và cả 4 đầu ra đều ở mức 1. Đương nhiên điều đó sẽ làm ngừng cả quá trình giải mã của 4 IC 74LS138 làm cả 32 cột đều bị “đóng” (kéo lên mức 1) và cả ma trận LED tắt ngay lập tức.

BKFET Group24

Page 25: 89S52 - VXL

Kỹ thuật vi xử lý

V.4. Thiết kế khối ma trận LED:

Ma trận LED trong thiết kế được ghép bởi 4 ma trận LED 8x8 (8 hàng x 32 cột). Mỗi ma trận LED 8x8 có 16 chân, trong đó 8 Anod và 8 Cathod. Để ghép được thành 1 ma trận 8x32 và điều khiển được bảng đèn hiện chữ, chạy chữ, như đã nói ở trên chúng ta cần phải ghép nối như sau:

- Nối 4 chân Anod có cùng vị trí trong mỗi LED lại với nhau và lấy đó làm một chân Anod chung cho bảng ma trận mới. Như thế ta sẽ được 8 chân Anod (là chân hàng) của ma trận LED.

- 32 chân Cathod của 4 ma trận 8x8 sẽ là 32 Cathod của ma trận LED 8x32.

Trong mỗi LED ma trận 8x8 có:

- Các chân Anod theo thứ tự từ trên xuống là: 8,3,16,5,9,15,10,13.- Các chân Cathod theo thứ tự từ phải qua trái là: 1,2,6,14,7,12,11,4.

BKFET Group25

1 2 3 4 5 6 7 8

9 10 11 12 13 14 15 16

Page 26: 89S52 - VXL

Kỹ thuật vi xử lý

Hình vẽ LED ma trận 8x8 và các chân

V.5. Thiết kế khối bàn phím:

Khối này gồm có 8 phím bấm. Các phím không được nối ghép theo kiểu ma trận truyền thống mà đơn giản chỉ là nối vào 8 chân của 1 Port của IC vi điều khiển. Việc này sẽ thuận tiện cho việc lập trình giải mã bàn phím mà vẫn đủ để thực hiện các công việc cần thiết. Port 0 được chọn cho mục đích này. Như vậy Port 0 vừa là cổng xuất vừa là cổng nhập dữ liệu.

Điều này là được phép vì bình thường trong quá trình hoạt động, các phím không dùng đến nên sự có mặt hay không của chúng là như nhau. Mục đích của việc thiết kế cho bàn phím vào cổng P0 là để chứng minh khả năng đa nhiệm của các chân vi điều khiển.

V.6. Thiết kế khối hiển thị LCD:

BKFET Group26

Page 27: 89S52 - VXL

Kỹ thuật vi xử lý

Trên thực tế, khối LCD là khối đơn giản nhất trong mạch, khối này chỉ gồm một Jack cắm 16 chân vào một màn hiển thị LCD cỡ 2 dòng 16 cột. Theo chuẩn chung chân 1 và 2 của Jack là hai chân cấp nguồn. Tiếp theo, chân 3 là chân điều khiển độ tương phản được mắc vào một biến trở 10K để phân áp. Điều chỉnh biến trở ta có thể điều chỉnh được độ tương phản của các dòng chữ hiện trên màn LCD.

Tiếp theo là 3 chân điều khiển việc vào ra dữ liệu cho LCD. Các chân này được nối trực tiếp với 3 chân 6,7,8 của vi điều khiển. Tiếp theo nữa là 8 chân dữ liệu của LCD từ D0 đến D7 được nối trực tiếp với Port 3 của vi điều khiển để thuận tiện cho việc gửi dũ liệu ra LCD. Sau cùng là hai chân cho đèn nền. Ở đây ta nối thẳng với nguồn 5V để có độ sang tối đa.

Như vậy thành phần chủ yếu của khối LCD là màn hình LCD được thiết kế có thể rút ra cắm vào để tiện lợi vì chỉ cần đến khi có sự điều chỉnh dòng chữ.

BKFET Group27

Page 28: 89S52 - VXL

Kỹ thuật vi xử lý

V.7. Kết quả mạch in thực tế:

BKFET Group28

Page 29: 89S52 - VXL

Kỹ thuật vi xử lý

PHẦN VI:

THIẾT KẾ CHƯƠNG TRÌNH CHO VI ĐIỀU KHIỂN

VI.1. Tóm tắt thuật toán:

Theo nguyên lý và thiết kế phần cứng của mạch quảng cáo, chúng ta sẽ xây dựng thuật toán cho chương trình điều khiển để nạp vào vi điều khiển AT89S52.

Trong sơ đồ nguyên lý, dữ liệu từ Port 0 sẽ được xuất ra hàng, còn Port 2 sẽ có 5 chân được sử dụng làm 5 chân địa chỉ đưa vào 4 IC 74LS138 để tiến hành giải mã cột. Bàn phím nối tới P0. Chân điều khiển LCD nối tới 3 chân thuộc Port 1. Các chân dữ liệu của LCD nối tới cổng P3. Như vậy nhiệm vụ của chương trình sẽ là:

- Đầu tiên quét bàn phím để phát hiện tín hiện điều khiển.

- Khi phát hiện phím ấn thì thực hiện lệch tương ứng và gửi thông báo ra LCD.

- Thực hiện việc quét ma trận LED. Đầu tiên xuất địa chỉ cột ra P2 để “mở” các cột lần lượt từ cột 0 tới 31. Ngay sau khi “mở” các cột, lập tức xuất dữ liệu hàng được đọc từ ROM ra P0 để làm sáng các LED thích hợp trên cột. Trễ một vài chu kỳ máy để cho mắt lưu lại cảm giác sáng rồii lập tức ngừng xuất dữ liệu hàng và chuyển sang cột tiếp theo và xuất dữ liệu hàng khác. Công việt mở cột và xuất dữ liệu hang phải đồng bộ, nhịp nhàng và nhanh để chốnh hiện tượng nháy, giật dòng chữ.

- Sau khi quét hết cả khung hình là 32 cột, thực hiện quét lại chính khung hình ấy nhiều lần để cho chúng ta có thể nhìn thấy rõ nội dung dòng chữ chạy. Điều chỉnh số lần quét lại có thể điều chỉnh tốc độ chạy chữ.

- Sau khi quét một khung hình vói số lần thích hợp, cho dòng chữ dịch sang bên trái bằng cách: Khi mở cột 0 thì xuất dữ liệu hàng ứng với cột 1 khung hình trước. Mở cột 1 thì xuất dữ liệu ứng với cột 2 khung hinh trước…. Cứ như thế tạo thành khung hình mới là tịnh tiến của toàn bộ khung hình trước sang bên trái một cột LED.

Để có thể xuất dữ liệu hàng một các dễ dàng và nhanh chóng, chúng ta khai báo dữ liệu theo từng Byte để tạo thành một chuỗi các Byte trong ROM. Sau đó mỗi khi xuất dữ liệu hàng, chỉ cần đọc trong ROM ra theo từng Byte rồi

BKFET Group29

Page 30: 89S52 - VXL

Kỹ thuật vi xử lý

đưa thẳng ra P0. Bit 0 ứng với LED sáng, bit 1 ứng với LED tối. Chúng ta hoàn toàn có thể biêt được địa chỉ bắt đầu của chuỗi những Byte ROM này. Vì vậy các Byte ROM được truy xuất theo nguyên tắc:

Địa chỉ = Bộ đếm + Con trỏ

Con trỏ mà chúng ta sử dụng ở đây là con trỏ dữ liệu DPTR. Đầu tiên con trỏ sẽ được đặt ở địa chỉ đầu bảng dữ liệu, bộ đếm là đếm địa chỉ offset, chúng ta sẽ dùng thanh chứa A chứa địa chỉ này. Và lệnh sau sẽ truy xuất vào dữ liệu:

MOVC A, @A+DPTR

Khi đó chỉ việc xuất dữ liệu từ thanh chứa A ra Port 0 là được. Ở đây bộ đếm được dùng là bộ đếm giảm, giá trị thanh chứa được gán đầu tiên là 32. Một khung 32 cột (32 byte dữ liệu ) sẽ được quét rất nhanh và quét làm nhiều lần để mắt ta có thể thấy được hình ảnh một cách rõ nét ( hiện tượng lưu ảnh trên võng mạc ). Khi quét xong số lần quét đã định, con trỏ sẽ tăng lên 1, và công việc sẽ được lặp lại. Lúc đó hình ảnh sẽ dịch chuyển (đó là do dữ liệu đã dịch đi ). Khi con trỏ đến một vị trí mà dữ liệu đã được truy xuất hết, chúng ta sẽ đặt nó quay trở về vị trí ban đầu. Và công việc cứ thế được lặp lại. Trên bảng quảng cáo chúng ta sẽ được thấy một dòng chữ chạy từ phải qua trái, rồi mất đi và lại hiện ra

Đồng thời với việc xuất dữ liệu ra hàng chúng ta cũng phải tạo một bộ đếm 32 để giải mã cột, bộ đếm hoạt động gần như cùng lúc với xuất dữ liệu

BKFET Group30

Page 31: 89S52 - VXL

Kỹ thuật vi xử lý

VI.2. Chương trình Assembly:

Chương trình được lập trình bằng ngôn ngữ lâp trình là Assembly. Sau đây là mã nguồn của chương trình:

BKFET Group31

Page 32: 89S52 - VXL

Kỹ thuật vi xử lý

; ------------- READS51 generated header -------------- ; module : C:\Program Files\Rigel\Reads51\Work\code vxl\code.asm; created : 02:20:13, Tuesday, May 08, 2007; ----------------------------------------------------- #include <sfr52.inc>#define RS P1.5#define RW P1.6#define E P1.7 ORG 0 ; Khoi dong chuong trinh tai day LJMP MAIN ; nhay toi chuong trinh chinh TOCDO DATA 100 CACHE DATA 0; Khai bao du lieu voi dong thong tin; DONG CHU 'DESIGNED BY BKFET GROUP-NHOM4-DT9-10-K49 KHOA DTVT-DH BACHKHOA HN';; GOM 76 KI TU CAN 456 BYTE DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG

BKFET Group32

Page 33: 89S52 - VXL

Kỹ thuật vi xử lý

DB 255,0,126,126,189,195 ;D DB 255,0,102,102,126,126 ;E DB 255,185,118,110,94,189 ;S DB 255,126,126,0,126,126 ;I DB 255,129,126,110,110,141 ;G DB 255,0,243,231,207,0 ;N DB 255,0,102,102,126,126 ;E DB 255,0,126,126,189,195 ;D DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,102,102,102,153 ;B DB 255,252,251,7,251,252 ;Y DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,102,102,102,153 ;B DB 255,0,231,219,189,126 ;K DB 255,0,246,246,246,254 ;F DB 255,0,102,102,126,126 ;E DB 255,254,254,0,254,254 ;T DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,129,126,110,110,141 ;G DB 255,0,230,214,182,121 ;R DB 255,129,126,126,126,129 ;0 DB 255,128,127,127,127,128 ;U DB 255,0,246,246,246,249 ;P DB 255,255,247,247,247,255 ;DAU -

BKFET Group33

Page 34: 89S52 - VXL

Kỹ thuật vi xử lý

DB 255,0,243,231,207,0 ;N DB 255,0,231,231,231,0 ;H DB 255,129,126,126,126,129 ;0 DB 255,0,251,231,251,0 ;M DB 255,224,239,239,1,239 ;4 DB 255,255,247,247,247,255 ;DAU - DB 255,0,126,126,189,195 ;D DB 255,254,254,0,254,254 ;T DB 255,177,110,110,110,129 ;9 DB 255,255,247,247,247,255 ;DAU - DB 255,255,251,125,0,127 ;1 DB 255,129,126,126,126,129 ;0 DB 255,255,247,247,247,255 ;DAU - DB 255,0,231,219,189,126 ;K DB 255,224,239,239,1,239 ;4 DB 255,177,110,110,110,129 ;9 DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,231,219,189,126 ;K DB 255,0,231,231,231,0 ;H DB 255,129,126,126,126,129 ;0 DB 255,3,237,238,237,3 ;A DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,126,126,189,195 ;D DB 255,254,254,0,254,254 ;T

BKFET Group34

Page 35: 89S52 - VXL

Kỹ thuật vi xử lý

DB 255,224,159,127,159,224 ;V DB 255,254,254,0,254,254 ;T DB 255,255,247,247,247,255 ;DAU - DB 255,0,126,126,189,195 ;D DB 255,0,231,231,231,0 ;H DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,102,102,102,153 ;B DB 255,3,237,238,237,3 ;A DB 255,129,126,126,126,189 ;C DB 255,0,231,231,231,0 ;H DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,231,219,189,126 ;K DB 255,0,231,231,231,0 ;H DB 255,129,126,126,126,129 ;0 DB 255,3,237,238,237,3 ;A DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,231,231,231,0 ;H DB 255,0,243,231,207,0 ;N DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG;;------------------------------------------------------------------------

BKFET Group35

Page 36: 89S52 - VXL

Kỹ thuật vi xử lý

;; DONG CHU 'GVHD PHAM NGOC NAM-SV DAO VIET HUNG - DANG MINH SON - HOANG MINH CHAU - PHAM NGOC TUNG - HA MINH CHI DUNG - NGUYEN NGOC ANH';; GOM 132 KI TU CAN 792 BYTE DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,129,126,110,110,141 ;G DB 255,224,159,127,159,224 ;V DB 255,0,231,231,231,0 ;H DB 255,0,126,126,189,195 ;D DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,246,246,246,249 ;P DB 255,0,231,231,231,0 ;H DB 255,3,237,238,237,3 ;A DB 255,0,251,231,251,0 ;M DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,243,231,207,0 ;N DB 255,129,126,110,110,141 ;G DB 255,129,126,126,126,129 ;0 DB 255,129,126,126,126,189 ;C DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,243,231,207,0 ;N DB 255,3,237,238,237,3 ;A

BKFET Group36

Page 37: 89S52 - VXL

Kỹ thuật vi xử lý

DB 255,0,251,231,251,0 ;M DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,247,247,247,255 ;DAU - DB 255,185,118,110,94,189 ;S DB 255,224,159,127,159,224 ;V DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,126,126,189,195 ;D DB 255,3,237,238,237,3 ;A DB 255,129,126,126,126,129 ;0 DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,224,159,127,159,224 ;V DB 255,126,126,0,126,126 ;I DB 255,0,102,102,126,126 ;E DB 255,254,254,0,254,254 ;T DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,231,231,231,0 ;H DB 255,128,127,127,127,128 ;U DB 255,0,243,231,207,0 ;N DB 255,129,126,110,110,141 ;G DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,247,247,247,255 ;DAU - DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,126,126,189,195 ;D DB 255,3,237,238,237,3 ;A

BKFET Group37

Page 38: 89S52 - VXL

Kỹ thuật vi xử lý

DB 255,0,243,231,207,0 ;N DB 255,129,126,110,110,141 ;G DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,251,231,251,0 ;M DB 255,126,126,0,126,126 ;I DB 255,0,243,231,207,0 ;N DB 255,0,231,231,231,0 ;H DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,185,118,110,94,189 ;S DB 255,129,126,126,126,129 ;0 DB 255,0,243,231,207,0 ;N DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,247,247,247,255 ;DAU - DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,231,231,231,0 ;H DB 255,129,126,126,126,129 ;0 DB 255,3,237,238,237,3 ;A DB 255,0,243,231,207,0 ;N DB 255,129,126,110,110,141 ;G DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,251,231,251,0 ;M DB 255,126,126,0,126,126 ;I DB 255,0,243,231,207,0 ;N DB 255,0,231,231,231,0 ;H

BKFET Group38

Page 39: 89S52 - VXL

Kỹ thuật vi xử lý

DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,129,126,126,126,189 ;C DB 255,0,231,231,231,0 ;H DB 255,3,237,238,237,3 ;A DB 255,128,127,127,127,128 ;U DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,247,247,247,255 ;DAU - DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,246,246,246,249 ;P DB 255,0,231,231,231,0 ;H DB 255,3,237,238,237,3 ;A DB 255,0,251,231,251,0 ;M DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,251,231,251,0 ;M DB 255,3,237,238,237,3 ;A DB 255,0,243,231,207,0 ;N DB 255,0,231,231,231,0 ;H DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,254,254,0,254,254 ;T DB 255,128,127,127,127,128 ;U DB 255,0,243,231,207,0 ;N DB 255,129,126,110,110,141 ;G DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,247,247,247,255 ;DAU -

BKFET Group39

Page 40: 89S52 - VXL

Kỹ thuật vi xử lý

DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,231,231,231,0 ;H DB 255,3,237,238,237,3 ;A DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,251,231,251,0 ;M DB 255,126,126,0,126,126 ;I DB 255,0,243,231,207,0 ;N DB 255,0,231,231,231,0 ;H DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,129,126,126,126,189 ;C DB 255,0,231,231,231,0 ;H DB 255,126,126,0,126,126 ;I DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,126,126,189,195 ;D DB 255,128,127,127,127,128 ;U DB 255,0,243,231,207,0 ;N DB 255,129,126,110,110,141 ;G DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,247,247,247,255 ;DAU - DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,243,231,207,0 ;N DB 255,129,126,110,110,141 ;G DB 255,128,127,127,127,128 ;U DB 255,252,251,7,251,252 ;Y

BKFET Group40

Page 41: 89S52 - VXL

Kỹ thuật vi xử lý

DB 255,0,102,102,126,126 ;E DB 255,0,243,231,207,0 ;N DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,0,243,231,207,0 ;N DB 255,129,126,110,110,141 ;G DB 255,129,126,126,126,129 ;0 DB 255,129,126,126,126,189 ;C DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,3,237,238,237,3 ;A DB 255,0,243,231,207,0 ;N DB 255,0,231,231,231,0 ;H DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG; CAC CHU CAI; GOM 49 CHU CAI CAN 286 BYTE DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,3,237,238,237,3 ;A

BKFET Group41

Page 42: 89S52 - VXL

Kỹ thuật vi xử lý

DB 255,0,102,102,102,153 ;B DB 255,129,126,126,126,189 ;C DB 255,0,126,126,189,195 ;D DB 255,0,102,102,126,126 ;E DB 255,0,246,246,246,254 ;F DB 255,129,126,110,110,141 ;G DB 255,0,231,231,231,0 ;H DB 255,126,126,0,126,126 ;I DB 255,190,126,128,254,254 ;J DB 255,0,231,219,189,126 ;K DB 255,0,127,127,127,127 ;L DB 255,0,251,231,251,0 ;M DB 255,0,243,231,207,0 ;N DB 255,129,126,126,126,129 ;0 DB 255,0,246,246,246,249 ;P DB 255,129,126,94,190,65 ;Q DB 255,0,230,214,182,121 ;R DB 255,185,118,110,94,189 ;S DB 255,254,254,0,254,254 ;T DB 255,224,159,127,159,224 ;V DB 255,128,127,127,127,128 ;U DB 255,24,231,231,231,24 ;X DB 255,252,251,7,251,252 ;Y DB 255,62,94,102,122,124 ;Z

BKFET Group42

Page 43: 89S52 - VXL

Kỹ thuật vi xử lý

DB 255,0,191,207,191,0 ;W DB 255,253,254,78,246,249 ;DAU? DB 255,64 ;DAU ! DB 255,127 ;DAN . DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,129,126,126,126,129 ;0 DB 255,255,251,125,0,127 ;1 DB 255,61,94,110,118,121 ;2 DB 255,190,118,114,116,142 ;3 DB 255,224,239,239,1,239 ;4 DB 255,112,118,118,118,142 ;5 DB 255,129,118,118,118,143 ;6 DB 255,255,254,254,254,0 ;7 DB 255,153,102,118,102,153 ;8 DB 255,177,110,110,110,129 ;9 DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG;;----------------------------------------------------------; TEST MA TRAN; QUET TAT CA CAC LED CAN 288 BYTE DB 255,255,255,255,255,255 ;KY TU TRONG

BKFET Group43

Page 44: 89S52 - VXL

Kỹ thuật vi xử lý

DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255,255,255,255,255 ;KY TU TRONG DB 255,255 DB 254,254,254,254,254,254 DB 254,254,254,254,254,254 DB 254,254,254,254,254,254 DB 254,254,254,254,254,254 DB 254,254,254,254,254,254 DB 254,254 DB 253,253,253,253,253,253 DB 253,253,253,253,253,253 DB 253,253,253,253,253,253 DB 253,253,253,253,253,253 DB 253,253,253,253,253,253 DB 253,253 DB 251,251,251,251,251,251 DB 251,251,251,251,251,251 DB 251,251,251,251,251,251 DB 251,251,251,251,251,251 DB 251,251,251,251,251,251 DB 251,251 DB 247,247,247,247,247,247

BKFET Group44

Page 45: 89S52 - VXL

Kỹ thuật vi xử lý

DB 247,247,247,247,247,247 DB 247,247,247,247,247,247 DB 247,247,247,247,247,247 DB 247,247,247,247,247,247 DB 247,247 DB 239,239,239,239,239,239 DB 239,239,239,239,239,239 DB 239,239,239,239,239,239 DB 239,239,239,239,239,239 DB 239,239,239,239,239,239 DB 239,239 DB 223,223,223,223,223,223 DB 223,223,223,223,223,223 DB 223,223,223,223,223,223 DB 223,223,223,223,223,223 DB 223,223,223,223,223,223 DB 223,223 DB 191,191,191,191,191,191 DB 191,191,191,191,191,191 DB 191,191,191,191,191,191 DB 191,191,191,191,191,191 DB 191,191,191,191,191,191 DB 191,191 DB 127,127,127,127,127,127

BKFET Group45

Page 46: 89S52 - VXL

Kỹ thuật vi xử lý

DB 127,127,127,127,127,127 DB 127,127,127,127,127,127 DB 127,127,127,127,127,127 DB 127,127,127,127,127,127 DB 127,127;;**********************************************************************************************************;CHUONG TRINH CHINH ORG 0800HMAIN: MOV P0,#FFH MOV P1,#255 MOV P3,#255 ANL P2,#31 SETB P2.5 LCALL HIENLCD1 ; hien loi chaoCHO: ; ham cho den khi co phim nhan LCALL DELAY MOV P0, #255 MOV R0,P0 CJNE R0,#255,CHO1 SJMP CHOCHO1: JNB P0.7, M1 ; nhan phim 8 JNB P0.0, NHANPHIM1 ; nhan phim 1

BKFET Group46

Page 47: 89S52 - VXL

Kỹ thuật vi xử lý

JNB P0.2, NHANPHIM2 ; nhan phim 2 JNB P0.4, NHANPHIM3 ; nhan phim 3 JNB P0.6, NHANPHIM4 ; nhan phim 4 JNB P0.1, TOCDO1 ; nhan phim 5 JNB P0.3, TOCDO2 ; nhan phim 6NHANPHIM1: MOV R0,P0 CJNE R0,#255,NHANPHIM1 LCALL M1 LCALL CHONHANPHIM2: MOV R0,P0 CJNE R0,#255,NHANPHIM2 LCALL M2 LCALL CHONHANPHIM3: MOV R0,P0 CJNE R0,#255,NHANPHIM3 LCALL M3 LCALL CHONHANPHIM4: MOV R0,P0 CJNE R0,#255,NHANPHIM4 LCALL M4

BKFET Group47

Page 48: 89S52 - VXL

Kỹ thuật vi xử lý

LCALL CHOTOCDO1: MOV R0,P0 CJNE R0,#255,TOCDO1 MOV TOCDO,#40 ; toc do quet nhanh LCALL HIENLCD2 LCALL HIENTOCDO1 LCALL CHOTOCDO2: MOV R0,P0 CJNE R0,#255,TOCDO2 MOV TOCDO,#150 ; toc do quet cham LCALL HIENLCD2 LCALL HIENTOCDO2 LCALL CHO

M1: ; hien thi message 1 LCALL HIENLCD2 LCALL HIENLCD3 LCALL DELAY1S MOV P0,#255 MOV DPTR, #03H ; con tro du lieu CLR P2.5MAIN1:

BKFET Group48

Page 49: 89S52 - VXL

Kỹ thuật vi xử lý

MOV A, #0 MOV B, A MOV R6, #00H ; So lan quet mot hinh MOV R0, #0SCAN1: MOV A,CACHE INC R6 ; Tang so lan quet; MOT LAN QUET ONESCAN1: CLR A MOV A, B LCALL TABLE MOV P0,#255 LCALL DELAY1 MOV P2, R0 MOV P0, A ; Hien thi du lieu LCALL DELAY INC R0 ; Tang bo dem giai ma cot CJNE R0, #32, ONESCAN1 ; Kiem tra dieu kien dem cua bo dem 32 LCALL SETCOUNTER MOV CACHE,A MOV A,R6 SUBB A,TOCDO CJNE A,0, SCAN1

BKFET Group49

Page 50: 89S52 - VXL

Kỹ thuật vi xử lý

LCALL DELAY1 MOV R6,#0 INC DPTR ; tang con tro du lieu de dich anh MOV R1, DPH MOV R4, DPL CJNE R1,#01,MAIN1 CJNE R4, #0AAH, MAIN1 ; Kiem tra da ket thuc message chua LJMP M1;---------------------------------------------------------------------------M2: ; hien thi message 2 LCALL HIENLCD2 LCALL HIENLCD4 LCALL DELAY1S MOV P0,#255 MOV DPTR, #01CBH CLR P2.5MAIN2: MOV A, #0 MOV B, A MOV R6, #00H ; So lan quet mot hinh MOV R0, #0SCAN2: MOV A,CACHE INC R6 ; Tang so lan quet

BKFET Group50

Page 51: 89S52 - VXL

Kỹ thuật vi xử lý

; MOT LAN QUET ONESCAN2: CLR A MOV A, B LCALL TABLE MOV P0,#255 LCALL DELAY1 MOV P2, R0 MOV P0, A ; Hien thi du lieu LCALL DELAY INC R0 ; Tang bo dem giai ma cot CJNE R0, #32, ONESCAN2 ; Kiem tra dieu kien dem cua bo dem 32 LCALL SETCOUNTER MOV CACHE,A MOV A,R6 SUBB A,TOCDO CJNE A, 0, SCAN2 LCALL DELAY1 MOV R6,#0 INC DPTR ; tang con tro de dich anh MOV R1, DPH MOV R4, DPL CJNE R1,#04,MAIN2 CJNE R4, #0C2H, MAIN2 ; Kiem tra da ket thuc message chua

BKFET Group51

Page 52: 89S52 - VXL

Kỹ thuật vi xử lý

LJMP M2;;-------------------------------------------------------------------------------M3: ; hien thi message 3 LCALL HIENLCD2 LCALL HIENLCD5 LCALL DELAY1S MOV P0,#255 MOV DPTR, #4E3H CLR P2.5MAIN3: MOV A, #0 MOV B, A MOV R6, #00H ; So lan quet mot hinh MOV R0, #0SCAN3: INC R6 ; Tang so lan quet; MOT LAN QUET ONESCAN3: CLR A MOV A, B LCALL TABLE MOV P0,#255 LCALL DELAY1 MOV P2, R0

BKFET Group52

Page 53: 89S52 - VXL

Kỹ thuật vi xử lý

MOV P0, A ; Hien thi du lieu LCALL DELAY INC R0 ; Tang bo dem giai ma cot CJNE R0, #32, ONESCAN3 ; Kiem tra dieu kien dem cua bo dem 32 LCALL SETCOUNTER CJNE R6,#100, SCAN3 LCALL DELAY1 MOV R6,#0 INC DPTR ; tang con tro de dich anh MOV R1, DPH MOV R4, DPL CJNE R1,#05,MAIN3 CJNE R4, #0E0H, MAIN3 ; Kiem tra da ket thuc message chua LJMP M3;;---------------------------------------------------------------------M4: ; hien thi test ma tran led LCALL HIENLCD6 LCALL DELAY1S MOV P0,#255 MOV DPTR, #601H CLR P2.5MAIN4: MOV A, #0 MOV B, A

BKFET Group53

Page 54: 89S52 - VXL

Kỹ thuật vi xử lý

MOV R6, #00H ; So lan quet mot hinh MOV R0, #0SCAN4: INC R6 ; Tang so lan quet; MOT LAN QUET ONESCAN4: CLR A MOV A, B LCALL TABLE MOV P0,#255 LCALL DELAY1 MOV P2, R0 MOV P0, A ; Hien thi du lieu LCALL DELAY INC R0 ; Tang bo dem giai ma cot CJNE R0, #32, ONESCAN4 ; Kiem tra dieu kien dem cua bo dem 32 LCALL SETCOUNTER CJNE R6,#100, SCAN4 LCALL DELAY1 MOV R6,#0 INC DPTR ; tang con tro de dich anh MOV R1, DPH MOV R4, DPL CJNE R1,#07,MAIN4

BKFET Group54

Page 55: 89S52 - VXL

Kỹ thuật vi xử lý

CJNE R4, #14, MAIN4 ; Kiem tra da ket thuc message chua LJMP M4; Bang truy xuat du lieu TABLE: INC A MOV B, A MOVC A, @A+DPTR RET

SETCOUNTER: ;Reset bo dem giai ma cot CLR A MOV R0, A MOV B, #0 RET

KHOIDONGLCD: MOV A,#38H LCALL LENH MOV A,#0eh LCALL LENH MOV A,#1H LCALL LENH MOV A,#80h LCALL LENH

BKFET Group55

Page 56: 89S52 - VXL

Kỹ thuật vi xử lý

RET

HIENLCD1: ; hien thi 'Xin chao!!! Chon dong chu' LCALL KHOIDONGLCD MOV A,#'X' LCALL HIENTHI MOV A,#'i' LCALL HIENTHI MOV A,#'n' LCALL HIENTHI MOV A,#' ' LCALL HIENTHI MOV A,#'c' LCALL HIENTHI MOV A,#'h' LCALL HIENTHI MOV A,#'a' LCALL HIENTHI MOV A,#'o' LCALL HIENTHI MOV A,#'!' LCALL HIENTHI MOV A,#'!' LCALL HIENTHI

BKFET Group56

Page 57: 89S52 - VXL

Kỹ thuật vi xử lý

MOV A,#'!' LCALL HIENTHI MOV A,#0C0H LCALL LENH MOV A,#'C' LCALL HIENTHI MOV A,#'h' LCALL HIENTHI MOV A,#'o' LCALL HIENTHI MOV A,#'n' LCALL HIENTHI MOV A,#' ' LCALL HIENTHI MOV A,#'d' LCALL HIENTHI MOV A,#'o' LCALL HIENTHI MOV A,#'n' LCALL HIENTHI MOV A,#'g' LCALL HIENTHI MOV A,#' ' LCALL HIENTHI

BKFET Group57

Page 58: 89S52 - VXL

Kỹ thuật vi xử lý

MOV A,#'c' LCALL HIENTHI MOV A,#'h' LCALL HIENTHI MOV A,#'u' LCALL HIENTHI RET

HIENLCD2: ; hien thi 'Da chon' LCALL KHOIDONGLCD MOV A,#'D' LCALL HIENTHI MOV A,#'a' LCALL HIENTHI MOV A,#' ' LCALL HIENTHI MOV A,#'c' LCALL HIENTHI MOV A,#'h' LCALL HIENTHI MOV A,#'o' LCALL HIENTHI MOV A,#'n' LCALL HIENTHI

BKFET Group58

Page 59: 89S52 - VXL

Kỹ thuật vi xử lý

MOV A,#0C0H LCALL LENH RET

HIENLCD3: MOV A,#'D' LCALL HIENTHI MOV A,#'E' LCALL HIENTHI MOV A,#'S' LCALL HIENTHI MOV A,#'I' LCALL HIENTHI MOV A,#'G' LCALL HIENTHI MOV A,#'N' LCALL HIENTHI MOV A,#'E' LCALL HIENTHI MOV A,#'D' LCALL HIENTHI MOV A,#' ' LCALL HIENTHI MOV A,#'B'

BKFET Group59

Page 60: 89S52 - VXL

Kỹ thuật vi xử lý

LCALL HIENTHI MOV A,#'Y' LCALL HIENTHI MOV A,#'.' LCALL HIENTHI MOV A,#'.' LCALL HIENTHI MOV A,#'.' LCALL HIENTHI RET

HIENLCD4: MOV A,#'G' LCALL HIENTHI MOV A,#'V' LCALL HIENTHI MOV A,#'H' LCALL HIENTHI MOV A,#'D' LCALL HIENTHI MOV A,#' ' LCALL HIENTHI MOV A,#'.' LCALL HIENTHI

BKFET Group60

Page 61: 89S52 - VXL

Kỹ thuật vi xử lý

MOV A,#'.' LCALL HIENTHI MOV A,#'.' LCALL HIENTHI RET

HIENLCD5: MOV A,#'A' LCALL HIENTHI MOV A,#'B' LCALL HIENTHI MOV A,#'C' LCALL HIENTHI MOV A,#'D' LCALL HIENTHI MOV A,#'E' LCALL HIENTHI MOV A,#'.' LCALL HIENTHI MOV A,#'.' LCALL HIENTHI MOV A,#'.' LCALL HIENTHI RET

BKFET Group61

Page 62: 89S52 - VXL

Kỹ thuật vi xử lý

HIENLCD6: LCALL KHOIDONGLCD MOV A,#'D' LCALL HIENTHI MOV A,#'a' LCALL HIENTHI MOV A,#'n' LCALL HIENTHI MOV A,#'g' LCALL HIENTHI MOV A,#' ' LCALL HIENTHI MOV A,#'T' LCALL HIENTHI MOV A,#'e' LCALL HIENTHI MOV A,#'s' LCALL HIENTHI MOV A,#'t' LCALL HIENTHI MOV A,#'.' LCALL HIENTHI MOV A,#'.'

BKFET Group62

Page 63: 89S52 - VXL

Kỹ thuật vi xử lý

LCALL HIENTHI MOV A,#'.' LCALL HIENTHI RET

HIENTOCDO1: MOV A,#'T' LCALL HIENTHI MOV A,#'O' LCALL HIENTHI MOV A,#'C' LCALL HIENTHI MOV A,#' ' LCALL HIENTHI MOV A,#'D' LCALL HIENTHI MOV A,#'O' LCALL HIENTHI MOV A,#' ' LCALL HIENTHI MOV A,#'N' LCALL HIENTHI MOV A,#'H' LCALL HIENTHI

BKFET Group63

Page 64: 89S52 - VXL

Kỹ thuật vi xử lý

MOV A,#'A' LCALL HIENTHI MOV A,#'N' LCALL HIENTHI MOV A,#'H' LCALL HIENTHI RET

HIENTOCDO2: MOV A,#'T' LCALL HIENTHI MOV A,#'O' LCALL HIENTHI MOV A,#'C' LCALL HIENTHI MOV A,#' ' LCALL HIENTHI MOV A,#'D' LCALL HIENTHI MOV A,#'O' LCALL HIENTHI MOV A,#' ' LCALL HIENTHI MOV A,#'C'

BKFET Group64

Page 65: 89S52 - VXL

Kỹ thuật vi xử lý

LCALL HIENTHI MOV A,#'H' LCALL HIENTHI MOV A,#'A' LCALL HIENTHI MOV A,#'M' LCALL HIENTHI RET

HIENTHI: MOV P3,A SETB RS CLR RW SETB E CLR E LCALL DELAYLCD RET

LENH: MOV P3,A CLR RS CLR RW SETB E LCALL DELAY

BKFET Group65

Page 66: 89S52 - VXL

Kỹ thuật vi xử lý

CLR E LCALL DELAY50 RET

;Tao tre thoi gianDELAY: MOV R1, #1 LOOP1: MOV R2, #1 LOOP2: MOV R3, #5 LOOP3: DJNZ R3, LOOP3 DJNZ R2, LOOP2 DJNZ R1, LOOP1 RET

DELAY1: MOV R1,#2 LOOP4: DJNZ R1,LOOP4 RET

DELAY1S: MOV R1,#10 LOOP5: MOV R2,#100 LOOP6:

BKFET Group66

Page 67: 89S52 - VXL

Kỹ thuật vi xử lý

MOV R3,#100 LOOP7: NOP NOP NOP NOP NOP NOP NOP NOP DJNZ R3,LOOP7 DJNZ R2,LOOP6 DJNZ R1,LOOP5 RET

DELAYLCD: MOV R2,#4 HERE6: MOV R3,#2 HERE5: MOV R4,#255 HERE4: DJNZ R4,HERE4 DJNZ R3,HERE5 DJNZ R2,HERE6 RET

DELAY50: MOV R2,#4 HERE3: MOV R3,#5 HERE2: MOV R4,#255 HERE: DJNZ R4,HERE DJNZ R3,HERE2 DJNZ R2,HERE3 RETEND

BKFET Group67

Page 68: 89S52 - VXL

Kỹ thuật vi xử lý

PHẦN VII:

KẾT LUẬN

Trong giới hạn là một bài tập lớn, bảng quảng cáo mà chúng em đưa ra chỉ với kích thước nhỏ. Thiết kế của chúng em nhằm mục đích tìm hiểu và ứng dụng vi điều khiển AT89S52. Tuy chưa đáp ứng hết các yêu cầu do chúng em đặt ra lúc đầu như chưa thể thay đổi một cách tuỳ ý nội dung dòng chữ mà không cần nạp lai cho IC vi điều khiển. Nhưng chúng em đã cho ra một sản phẩm thật chạy được và hơn hết, qua bài tập này chúng em đã thu được rất nhiều kiến thức thực tế về lĩnh vực điện tử cũng như về lĩnh vực vi điều khiển. Đây là sự khích lệ ban đầu cho chúng em thêm tự tin tìm hiểu sâu thêm về môn học vi xử lý nói riêng và tất cảc các môn học nói chung. Chúng em rất mong muốn trong những năm học tiếp theo sẽ được thực hiện nhiều bài tập lớn thú vị và bổ ích như bài tập môn học Kỹ thuật vi xử lý.

Một số hướng phát triển cho thiết kế:

Chúng ta có thể thiết kế những bảng quảng cáo:- Có kích thước lớn hơn.- Hiển thị được nhiều thông tin.- Không chỉ hiển thị chữ mà còn hiển thị hình ảnh đơn giản.- Có nhiều chế độ chạy.- Dễ dàng thay đổi thông tin, kiểu chạy.- Nhiều màu sắc đẹp mắt.- …

BKFET Group68