Tải bản đầy đủ (.doc) (31 trang)

quét led matrix sử dụng 89s52 potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (945.75 KB, 31 trang )

Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
Mục Lục
Trang
Lời nói đầu
Phần 1: Cơ sở lỳ thuyết……………………………………………….3
I. Cấu tạo họ vi điều khiển 8051…………………… 3
1. Sơ đồ chân
2. Chức năng từng chân.
II. Tổ chức bộ nhớ và thanh ghi chức năng………………… 4
1. Hoạt động định thời
2. Các thanh ghi chức năng.
III. Các chế độ hoạt động…………………………………….5
1. Hoạt động định thời
2. Port nối tiếp
3. Ngắt và sử lý ngắt.
IV. Giao tiếp với máy tính qua port nối tiếp………………13
V. Giới thiệu về cổng COM…………………………………14

Phần 2: Thiết kế………………………………………………………18
I. Sơ đồ nguyên lý……………………………………………18
1. Sơ đồ khối.
2. Sơ đồ nguyên lý.
3. Chức năng linh kiện.
II. Chương trình điều khiển………………………………….23
1. Lưu đồ thuật toán.
2. Chương trình điều khiển.
III. Mạch in và sản phẩm…………………………………….28

Phần 3: Kết luận…………………………………………………… 30
Tài liệu tham khảo.
Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội


1
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
LÔÌ NOÙI ÑAÀU
Ngày nay, với những ứng dụng của khoa học kỹ thuật tiên tiến , thế giới của
chúng ta đã và đang thay đổi một cách nhanh chóng, ngày càng văn minh và hiện
đại hơn. Sự phát triển của kỹ thuật điện tử nói riêng đã tạo ra hàng loạt những thiết
bị với các đặc điểm nổi bật như độ chính xác cao, tốc độ nhanh, gọn nhẹ, đó là
những yếu tố góp phần nâng cao năng xuất lao động, cải thiện cuộc sống.
Điện tử đã trở thành một ngành khoa học kỹ thuật đa nhiệm vụ. Nó đã đáp ứng
được những đòi hỏi không ngừng từ các lĩnh vực công-nông-lâm-ngư nghiệp cho
đến các nhu cầu cần thiết trong hoạt động đời sống hàng ngày. Nhất là khi ngày
nay với sự phát triển của máy tính, việc ứng dụng máy tính vào điều khiển đã trở
nên dễ dàng và phỏ biến.
Một trong những ứng dụng rất quan trọng của công nghệ điện tử nói chung và
vi điều khiển nói riêng là kỹ thuật điều khiển sử dụng máy tính. Nó đã góp phần rất
lớn trong nhiều lĩnh vực của đời sống.
Xuất phát từ 1 trong những ứng dụng phổ biến, chúng em đã thiết kế và thi công
mô hình hiển thị chữ trên led matrix sử dụng máy tính để điều khiển xuất nhập kí
tự.
Đề tài gồm có hai phần chính:
Phần 1: Cơ sở lý thuyết
Phần 2: Thiết kế
Phần 3: Kết luận
Mặc dùng chúng em đã rất cố gắng để hoan thành tốt bài làm của mình. Nhưng
do sự hạn chế về thời gian và kiến thức còn nhiều điều thiếu sót. Nên rất mong
được sự đóng góp ý kiến của các thầy cô và các bạn để đồ án của chúng em hoàn
thiện hơn nữa.
Chúng em xin chân thành cảm ơn quý thầy cô và các bạn đã giúp đỡ chúng em
rất nhiều trong quá trình chúng em thực hiện đồ án, đặc biệt là thầy Nguyên Anh
Dũng giảng viên bộ môn vi điều khiển.

*****************************************************

Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
2
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
Phần 1: Cơ sở lý thuyết
I. Cấu tạo họ vi điều khiên 8051.
1. Sơ đồ chân

Hình 1: Sơ đồ chân họ vi điều khiên 8051
2. Chức năng từng chân
a, Port 0:
Port 0 gồm tám chân, ngoài chức năng xuất nhập ra còn là Bus đa hợp dữ liệu
và địa chỉ (AD0-AD7) chức năng này sẽ được sử dụng khi 89S52 giao tiếp với thiết
bị bên ngoài có kiến trúc Bus.
b, Port 1:
Đối với 8051 chức năng duy nhất của Port 1là xuất nhập cũng như các Port
khác, Port 1có thể xuất nhập theo Bit hoặc theo Byte.
Riêng dòng 89Sxx, bốn chân P1.4, P1.5, P1.6, P1.7 được dùng để nạp ROM
theo chuẩn ISP. Hai chân P1.0, P1.1 được dùng cho bộ Timer.
c, Port 2:
Port 2 ngoài chức năng là cổng vào ra như Port 0 và Port 1 còn là byte cao của
bus địa chỉ khi sử dụng bộ nhớ ngoài.
d, Port 3:
Mỗi chân trên Port 3 ngoài chức năng xuất nhập còn có một chức năng riêng cụ
thể như sau:
Bit Tên Chức năng
P3.0 RXD Dữ liệu nhận cho Port nối tiếp
P3.1 TXD Dữ liệu truyền cho Port nối tiếp
P3.2 INT0 Ngắt bên ngoài 0

P3.3 INT1 Ngắt bên ngoài 1
P3.4 T0 Ngõ vào của Timer/counter 0
P3.5 T1 Ngõ vào của Timer/counter 1
Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
3
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
P3.6 /WR Xung ghi bộ nhớ dữ liệu ngoài
P3.7 /RD Xung đọc bộ nhớ dữ liệu ngoài
e, Chân /PSEN (Program Store Enable):
Là chân điều khiển đọc chương trình ở bộ nhớ ngoài, nó được nối với chân /OE
để cho phép đọc các byte mã lệnh trên ROM ngoại. Chân PSEN ở mức thấp khi đọc
mã lệnh. Chân PSEN ở mức cao thì thực hiện lệnh trong ROM nội.
f, Chân ALE (Address Latch Enable):
ALE là tín hiệu điều khiển chốt địa chỉ có tần số bằng 1/6 tần số dao động của
vi điều khiển. Tín hiệu ALE được dùng để cho phép vi mạch chốt bên ngoài như
74373, 74573 chốt byte địa chỉ thấp ra khỏi bus đa hợp địa chỉ/dữ liệu (Port 0).
g, Chân/EA (External Access):
Tín hiệu EA cho phép chọn bộ nhớ trương trình là bộ nhớ trong hay ngoài vi
điều khiển.
Nếu EA ở mước cao, thì vi điều khiển thi hành chương trình trong ROM nội.
Nếu EA ở mức thấp thì vi điều khiển thi hành chương trình trong ROM ngoại.
h, Chân RST (Reset):
Ngõ vào RST trên chân 9 là ngõ reset của 8051. Khi tín hiệu này được đưa lên
mức cao (ít nhất trong hai chu kỳ máy), các thanh ghi trong bộ vi điều khiển được
tải những giá trị thích hợp để khởi động lại hệ thống.
i, XTAL1, XTAL2
AT89S52 có một bộ dao động trên chip, nó thường được nối với bộ dao động
thạch anh có tần số lơn nhất là 33MHz, thông thường là 12 MHz.
j, Vcc, GND
AT 89S52 dùng nguồn một chiều có dải điện áp từ 4V đến 5.5 V được cấp qua

chân 40 và 20.
II. Tổ chức bộ nhớ
1. Tổ chức bộ nhớ:
Hình 2: Tổ chức bộ nhớ của 8051
Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
CODE XDATA
PDATA IDATA
DATA
REG
0xFF
0x20
BDATA
0x1F
4
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
2. Các thanh ghi chức năng:
- Từ trang thái chương trình(PSW: Program Status Word).
- Thang ghi B.
- Con trỏ ngăn xếp SP (Stack Pointer).
- Con trỏ dữ liệu DPTR (Data Point).
- Thanh ghi của các cổng (Post Register).
- Thanh ghi của các bộ định thời (time Register).
- Thanh ghi của Post nối tiếp ( Serial Post Register).
- Thanh ghi ngắt ( Interrupt Register).
- Thanh ghi điều khiển nguồn PCON ( Power Control Register).
III. Các chế độ hoạt động
1.Hoạt động định thời
a, Các thanh ghi của timer 0 và timer 1.
* Thanh ghi chế độ định thời(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.
GATE1 C/#T1 M1 M0 GATE0 C/#T0 M1 M0
Timer 1 Timer 0
Hình 3: Thanh ghi TMOD.
Bit Tên Timer Mô tả
7 GATE1 1 Bit mở cổng cho timer 1,khi được đặt bằng 1 thì
Timer 1 chỉ chạy khi chân INT1 ở mức cao.Nếu bit
này được đặt bằng 0 thì hoạt động của Timer 1 không
bị ảnh hưởng bởi mức logic trên chân INT1.
6 C/#T1 1 Bit chọn chế độ Cuonter/Timer của Timer 1
1= bộ đếm sự kiện
0=bộ định khoảng thời gian.
5 M1 1 Bit 1 chọn chế độ của Timer 1.
4 M0 1 Bit 0 chọn chế độ của Timer 1.
3 GATE0 0 Bit mở cổng cho timer 1,khi được đặt bằng 0 thì timer
0 chỉ chạy khi chân INT0 ở mức cao.
2 C/#T0 0 Bit chọn chế độ Cuonter/Timer của timer 0.
1 M1 0 Bit 1 chọn chế độ của timer 0.
0 M0 0 Bit 0 chọn chế độ của timer 0.
Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
5
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
* 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 của Timer 0 và
Timer 1.
TCON.7 TCON.6 TCON.5 TCON.4 TCON.3 TCON.2 TCON.1 TCON.0
TF1 TR1 TF0 TR0 IT1 IE1 IT0 IE0
Hình 4: Thanh ghi TCON
Bit Ký hiệu Địa chỉ Mô tả
TCON.7 TF1 8FH Cờ báo tràn của Timer 1, được đặt bởi phần cứng

khi có tràn, được xóa bởi phần mềm hoặc bởi phần
cứng khi bộ xử lý chỉ đến chương trình phục phụ
ngắt.
TCON.6 TR1 8EH Bit điều khiển Timer 1 hoạt động , được đặt/xóa
bằng phần mềm để điều khiển cho Timer
chạy/dừng.
TCON.5 TF0 8DH Cờ báo tràn Timer 0.
TCON.4 TR0 8CH Bit điều khiển Timer 0 hoạt động.
TCON.3 IT1 8BH Cờ ngắt do Timer 1.
TCON.2 IE1 8AH Cờ ngắt ngoài 1.
TCON.1 IT0 89H Cờ ngắt do Timer 0.
TCON.0 IE0 88H Cờ ngắt ngoài 0.
* Các thanh ghi chứa giá trị của các bộ định thời
Các Timer 0 và Timer 1 đều là các Timer 16 bit, mỗi Timer có 2 thanh ghi 8 bit
dùng để chứa giá trị khởi tạo hoặc các giá trị hiện thời của Timer.
Timer 0: TL0 và TH0.
Timer 1: TL1 và TH1.
b, Các thanh ghi củaTtimer 2
* Thanh ghi T2CON
T2CON.7 T2CON.6 T2CON.5 T2CON.4 T2CON.3 T2CON.2 T2CON.1 T2CON.0
TF2 EXF2 RCLK TCLK EXEN2 TR2 C/#T2 CP/#RL2
Bit Ký hiệu Địa chỉ Mô tả
T2CON.7
TF2 CFH Cờ báo tràn của Timer 2, TF2 được đặt khi
Timer 2 tràn và được xóa bằng phần mềm. TF2
không được thiết lập khi TCLK hoặc RCLK
được đặt bằng 1.
T2CON.6
EXF2 CEH Cờ ngắt ngoài của Timer 2, TXF2=1 khi xảy ra
sự nạp lại hoặc thu nhận. EXF2=1 cũng gây ra

ngắt do timer 2 nếu như ngắt này được lập trình
cho phép, EXF2 được xóa bởi phần mềm.
Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
6
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
T2CON.5
RCLK CDH Bit chọn Timer cung cấp xung nhịp cho đường
nhận của cổng nối tiếp.
RCLK=1 thì Timer 2 cung cấp tốc độ baud cho
cổng nối tiếp (ở chế độ 1 và 3).
RCLK=0 thì Timer 1 cung cấp tốc độ baud cho
cổng nối tiếp (ở chế độ 1 và 3).
T2CON.4
TCLK CCH Bit chọn Timer cung cấp xung nhịp cho đường
truyền cho cổng nối tiếp.
TLCK=1 thì Timer2 cung cấp tốc độ baud cho
cổng nối tiếp ở đường truyền.
TLCK=0 thì Timer1 cung cấp tốc độ baud cho
cổng nối tiếp ở đường truyền.
T2CON.3
EXEN2 CBH Bit điều khiển hoạt động của Timer 2, khi
EXEN2=1 việc nạp lại hoặc thu nhận (capture)
diễn ra khi có sự chuyển trạng thái từ 1 sang 0 ở
chân T2EX nếu T2 không sử dụng để cung cấp
tốc độ baud cho cổng nối tiếp.
T2CON.2
TR2 CAH Bit điều khiển hoạt động của Timer 2 (tương tự
như TR0, TR1).
T2CON.1
C/#T2 C9H Bit chọn chế độ đếm hoặc định thời của Timer 2

(tương tự như C/#T0, C/#T1).
T2CON.0
CP/#RL2
C8H Bit chọn chế độ thu nhận hay nạp lại của Timer
2. Khi CP#RL2C được thiếp lập bằng 1, việc thu
nhận được thực hiện khi có sườn xuống ở chân
T2EX và bit EXEN2 được đặt bằng 1. Khi
CP#RL2 được đặc bằng 0, việc nạp lại được
thực hiện khi hoặc là Timer 2 tràn hoặc là khi có
sườn xuống ở chân T2EX và bit EXEN2 được
đặt bằng 1. Nếu RCLK hoặc TCLK=1, bit này
được bỏ qua, Timer 2 nự nạp lại khi tràn.
* Thanh ghi T2MOD:
T2MOD có địa chỉ 0C9H, thanh ghi này không định địa chỉ bit.
Bit Ký hiệu Mô tả
T2MOD.7 Không sử dụng.
T2MOD.6 Không sử dụng.
T2MOD.5 Không sử dụng.
T2MOD.4 Không sử dụng.
T2MOD.3 Không sử dụng.
T2MOD.2 Không sử dụng.
Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
7
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
T2MOD.1 T2OE Cho phép đầu ra sử dụng timer2 để tạo xung (chế độ
tạo xung clock out).
T2MOD.0 DCEN Bit cho phép timer2 hoạt động như một bộ đếm
tiến/lùi.
* Thanh ghi TH2 và TL2, TCAP2H và RCAP2L:
Cũng giống như TH0, TH1 và TL0, TL1, TH2 và TL2 chứa giá trị đếm của timer2,

tuy nhiên khác nhau là Timer0, Timer1 có thể dùng THx để chứa giá trị nạp lại còn
Timer2 dùng RCAP2H và RCAP2L để chứa giá trị cần nạp lại.
c, Các chế độ của bộ định thời
* Các chế độ của Timer0 và Timer1.
- Chế độ 0:
Không còn phù hợp hiện nay lên ít được sử dụng.
- Chế độ 1:
Trong chế độ này, bộ định thời dùng cả hai thanh ghi TH và TL để chứa giá trị
đếm, vì vậy chế độ này còn gọi là chế độ định thời 16 bit. Bit MSB sẽ là bit D7 của
TH còn bit LSB là bit D0 của TL.
Hình 5 mô tả hoạt động của các timer ở chế độ 1: Nguồn xung clock được đưa
tới Timer phụ thuộc vào bit C/#T trong thanh ghi TMOD:
- Nếu C/#T=1, xung clock được lấy từ bên ngoài qua chân Tx (T0, T1 hoặc T2).
- Nếu C/#T=0, xung clock được lấy từ bộ chia tần trong chip, tần số của xung ở đây
là 1/12 tần số của bộ dao động thạch anh(Fosc ).
Hình 5

Nguồn xung clock nối trên sẽ được điều khiển để đưa tới các Timer bằng các bit:
TR, GATE và mức logic trên các chân INTx:
- Nếu TRx=0,các timer sẽ bị cấm mà không cần quan tâm tới GATE và mức logic
trên các chân INTx.
- Nếu TRx=1 ,các Timer sẽ hoạt động khi hoặc là bit GATE=0 hoặc bit GATE=1 và
trên chân /INTx có mức logic là 1.
Với chế độ 1 ,giá trị lớn nhất mà các timer chứa được là 65.535(FFFFH), khi
đếm quá giá trị này sẽ xảy ra tràn,khi cờ tràn TF sẽ được đặt bằng 1. Sau khi xảy ra
Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
8
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
tràn, nếu muốn Timer tiếp tục đếm, chương trình phải có câu lệnh nạp lại giá trị
khởi tạo sau khi đã dừng Timer bằng cách xóa bit TR.

Chế độ 2:
Trong chế độ 2, bộ Timer dùng TL để chứa giá trị đếm và TH để chứa giá trị nạp
lại vì vậy chế độ này được gọi là chế độ tự nạp lại 8 bit . Sau khi đếm quá 255 sẽ
xảy ra tràn, khi đó TF được đặt bằng 1 đồng thời giá trị cảu Timer tự động được nạp
lại bằng nội dung của TH.
Với nguồn xung clock, cách điều khiển Timer ở chế độ 2 hoàn toàn giống chế độ 1.
Hình 6
Chế độ 3
Chế độ tách timer.
* Các chế độ của Timer 2.
RCLK+TCLK CP/#RL2 TR2 Chế độ
0 0 1 16-bit auto-reload: 16 bit tự nạp lại
0 1 1 16-bit Capture: 16 bit thu nhận
1 X 1 Baud Rate Gênrator: cung cấp tốc độ baud
X X 0 Off
2. Cổng nối tiếp.
a, Giới thiệu
AT89S52 có một cổng nối tiếp trên chip có thể hoạt động ở nhiều chế độ khác
nhau với các tốc độ khác nhau. Chức năng chủ yếu của cổng nối tiếp là thực hiện
chuyển đổi song song sang nối tiếp với dữ liệu xuất và chuyển đổi nối tiếp sang
song song với dữ liệu nhập để có thể giao tiếp với máy tính qua cổng nối tiếp hoặc
các thiết bị tương tự.
Cổng nối tiếp có thể hoạt động song cổng (full duplex : thu và phát đồng thời) và
đệm lúc thu cho phép một ký tự được thu và dược giữ trong khi ký tự thứ 2 được
Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
9
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
nhận. Nếu CPU đọc ký tự thứ nhất trước khi ký tự thứ 2 được thu đầy đủ thì dữ liệu
sẽ không bị mất.
b, Các thanh ghi của cổng nối tiếp

Có hai thanh ghi chức năng đặc biệt cho phép phần mềm truy xuất đến cổng nối
là SBUF và SCON.
* Thanh ghi điều khiển cổng nối tiếp (SCON-serial Controller).
Thanh ghi điều khiển cổng nối tiếp ở địa chỉ 98H là thanh ghi có địa chỉ bit,chứa
các bit trạng thái và các bit điều khiển liên quan tới cổng nối tiếp.các bit điều khiển
đặt chế độ hoạt động cho cổng nối tiếp,các bit trạng thái báo các kết thúc việc phát
hoặc thu một ký tự.Các bit trạng thái có thể được kiểm tra bằng phần mềm hoặc có
thể được lập trình để tạo ngắt.
bit Ký hiệu Địa chỉ Mô tả
SCON.7 SM0 9FH Serial mode 0-bit 0 chon chế độ cho cổng nối tiếp.
SCON.6 SM1 9EH Serial mode 1-bit 1 chon chế độ cho cổng nối tiếp
SM0SM1=00 : cổng hoạt động ở chế độ 0
SM0SM1=01 : cổng hoạt động ở chế độ 1
SM0SM1=10 : cổng hoạt động ở chế độ 2
SM0SM1=11 : cổng hoạt động ở chế độ 3.
SCON.5 SM2 9DH Serial mode 2-bit 2 chon chế độ cho cổng nối tiếp
Bit này cho phép truyền thong đa xử lý.
SCON.4 REN 9CH Receive enable – bit cho phép thu,REN phải được
đặt bằng 1ddeer cho phép nhận các ký tự.
SCON.3 TB8 9BH Transmitted bit 8-bit truyền thứ 9, sử dụng trong
chế độ UART 9 bit.
SCON.2 RB8 9AH Receive bit 8- bit nhận thứ 9, sử dụng trong chế độ
UART 9 bit.
SCON.1 TI 99H Transmitted interrupt-cờ ngắt truyền, TI được đặt
bằng 1 bởi phần cứng khi kết thúc việc truyền một
ký tự, TI được xóa bằng phần mềm.
SCON.0 RI 98H Receive interrupt-cờ ngắt truyền, RI được đặt bằng
1 bởi phần cứng khi kết thúc việc truyền một ký tự,
RI được xóa bằng phần mềm.
Trước khi sử dụng cổng nối tiếp ,phải khởi động thanh ghi SCON để chọn đúng

chế độ.
* Thanh ghi đệm truyền nhận ở cổng nối tiếp (SBUF-serial buffer).
Thanh ghi này có chức năng đệm các ký tự khi chúng được nhận về từ cổng nối
tiếp hoặc được truyền đi từ cổng nối tiếp, việc truyền nhận qua cổng nối tiếp thực
chất là việc truy xuất thanh ghi này.
- Chế độ 0:
Chế độ 0 là chế độ mà cổng nối tiếp được dùng như một thanh ghi dịch 8 bit. Dữ
liệu được truyền/nhận nối tiếp trên chân RXD, chân TXD được dùng để phát xung
Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
10
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
clock dịch bit. Khi truyền/nhận các byte dữ liệu 8 bit,bit chứa giá trị thấp nhất
(LSB) được truyền/nhận trước tiên và bit MSB được truyền nhận sau cùng.
Việc truyền dữ liệu được bắt đầu bằng việc ghi 1 byte dữ liệu vào SBUF còn
việc nhận dữ liệu được bắt đầu khi bit REN đã được đặt ở mức 1 và cờ thu RI=0.
Tốc độ baud ở chế độ 0 mặc định là Fosc/12.
- Chế độ 1:
Trong chế độ 1,PORT nối tiếp hoạt động như một bộ urat 8bits có tốc độ thay
đổi .Dữ liệu được truyền nối tiếp trên chân TXD và nhận nối tiếp trên chân RXD,
chế độ này cung cấp cho 89S52 một công cụ giao tiếp với máy tính qua cổng COM.
Với chế độ 1,khung truyền sẽ gồm 10 bit,ngoài 8 bit dữ liệu ra còn có 1 bit
start(ở mức thấp) và 1 bit stop (ở mức cao),LSB cũng được truyền trước,MSM được
truyền sau.
Tốc độ baud của port nối tiếp trong chế độ 1có thể được cung cấp bởi timer 1
hoặc timer 2 hoặc đồng thời cả hai bộ timer nếu muốn tốc độ truyền và nhận là khác
nhau.
Hình 7: Dùng Timer 1 cung cấp tốc độ baud cho Port nối tiếp.
Khi sử dụng các bộ timer cung cấp tốc độ baud cho port nối tiếp thì thạch anh có tần
số 11.0592 MHZ được khuyến cáo lên dung vì với tần số này sẽ tạo được các tốc độ
baud với sai số bằng 0.

Khi TCLK=RCLK=1 thì tốc độ baud của Port nối tiếp được cung cấp bởi Timer
2 .

Hình 8: Dùng Timer 2 cung cấp tốc độ baud cho port nối tiếp.
Khác với Timer 1, Timer 2 được cấp xung clock có tần số bằng ½ tần số của bộ
dao động thạch anh, theo hình 7, giả sử cần tốc độ baud là 9600 thì giá trị nạp cho
timer 2 là –(11059200/2)/(9600x16)=-36.
Khi cần tốc độ baud khác nhau cho đường truyền và đường nhận thì có thể sử
dụng cả hai bộ Timer hình 6. Nếu đặt TCLK=1 và RCLK=0 thì tốc độ baud của
đường truyền sẽ được cung cấp bởi Timer 2, tốc độ baud của đường nhận sẽ được
cung cấp bởi Timer 1. Nếu đặt TCLK=0 và RCLK=1 thì tốc độ baud của đường
Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
11
Tốc độ
tràn của
timer1
/32
/16
Tốc độ
baud của
cổng nối
tiếp
SMOD=1
SMOD=0
Fosc/12
Tốc độ
tràn của
timer2
/16
Tốc độ

baud của
cổng nối
tiếp
Fosc/2
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
truyền sẽ được cung cấp bởi Timer 1, tốc độ baud của đường nhận sẽ được cung cấp
bởi Timer 2.
- Chế độ 2:
Ở chế độ 2, Port nối tiếp hoạt động như 1 bộ UART 9 bit, một khung truyền sẽ
gồm 11 bit, trong đó bắt đầu là bit start, tiếp theo là 8 bit dữ liệu, tiếp theo là bit dữ
liệu thứ 9 (là bit TB8 nếu là khung truyền, là bit RB8 nếu là khung nhận), cuối cùng
là bit stop. Chế độ này thường được dung khi cần chèn thêm bit kiểm tra chẵn lẻ
vào trong khung truyền để giảm bớt lỗi đường truyền.
Tốc độ baud trong chế độ 2 được tạo cố định (hình 9):

Hình 9
- Chế độ 3:
Chế độ 3 là sự kết hợp của chế độ 1 và chế độ 2, nhghĩa là port nối tiếp hoạt
động như 1 bộ uart 9 bit và tốc độ baud của UART là thay đổi giống như chế độ 1
(được cung cấp bởi Timer 1 và Timer 2.)
c, Ngắt và sử lý ngắt
* Tổ chức ngắt ở 8051
AT89S52 có 6 nguồn ngắt:
- Ngắt ngoài đến từ chân /INT0.
- Ngắt ngoài đến từ chân /INT0.
- Ngắt do bộ timer 0.
- Ngắt do bộ timer 1.
- Ngắt do bộ timer 2.
- Ngắt do port nối tiếp.
6 nguồn ngắt này được xoá khi Reset và được đặt riêng bằng phần mềm bởi các

bit trong các thanh ghi cho phép ngắt (IE), thanh ghi ưu tiên ngắt (IP).
Thanh ghi cho phép ngắt IE (Interrupt Enable):

EA - ET2 ES ET1 EX1 ET0 EX0
Bit Ký hiệu Địa chỉ bit Mô tả(1: cho phép, 0 : cấm )
IE.7 EA AFH Cho phép hoặc cấm toàn bộ.
IE.6 _ AEH Không được định nghĩa.
IE.5 ET2 ADH Cho phép ngắt từ timer 2.
Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
12
/64
/32
Tốc độ
baud của
cổng nối
tiếp
SMOD=1
SMOD=0
Fosc
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
IE.4 É ACH Cho phép ngắt 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.
Thanh ghi ưu tiên ngắt IP:
- - PT2 PS PT1 PX1 PT0 PX0
bit Ký hiệu Địa chỉ bit Mô tả
IP.7 _ Không được định nghĩa
IP.6 _ Không được định nghĩa

IP.5 PT2 BDH Ưu tiên ngắt từ timer 2
IP.4 PS BCH Ưu tiên ngắt từ port nối tiếp
IP.3 PT1 BBH Ưu tiên ngắt từ timer 1
IP.2 PX1 BAH Ưu tiên ngắt ngoài 1
IP.1 PT0 B9H Ưu tiên ngắt từ timer 0
IP.0 PX0 B8H Ưu tiên ngắt ngoài 0
Các vector ngắt: Khi một ngắt nào đó được chấp nhận ,giá trị được nạp vào PC
được gọi là vector ngắt. Nó là địa chỉ bắt đầu của trương trình con phục vụ ngắt ISR
tương ứng với nguồn tạo ngắt.
Các vector ngắt:
Ngắt Cờ Địa chỉ vector Số hiệu
Reset hệ thống RST 0000H
Bên ngoài 0 IE0 0003H 0
Timer 0 TF0 000BH 1
Bên ngoài 1 IE1 0013H 2
Timer 1 TF1 001BH 3
Port nối tiếp TI hoặc RI 0023H 4
Timer 2 TX2 hoặc EXF2 002BH 5
RI và TI phải được xóa bằng phần mềm.
IV. Giao tiếp với máy tính thông qua port nối tiếp
AT89S52 có 1 port nối tiếp trong chip có thể hoạt động ở nhiều chế độ khác nhau
và nhiều tóc độ khác nhau. Chức năng chủ yếu của 1 port nối tiếp là thực hiện
chuyển đổi song song sang nối tiếp với dữ liệu xuất ra và chuyển đổi nối tiếp sang
song song với dữ liệu nhập để có thể giao tiếp với máy tính thông qua cổng nối tiếp
hoặc các thiết bị tương tự.
Việc trao đổi thông tin giữa máy tính với chip thông qua các thanh ghi SCON và
SBUF.
Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
13
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2


Chi tiết về các thanh ghi SCON,… được giới thiệu ở phần AT89S52.
V. Giới thiệu về cổng COM trong máy tính.
Hình ảnh thực tế.
Ngày nay việc sử dụng máy tính vào việc điều khiển các thiết bị đã được sử dụng
1 cách phổ biến, một trong những phương pháp đơn giản là sử dụng cổng COM của
máy tính để điều khiển các thiết bị. Do cổng COM có những đặc điểm như sau:
a. Khoảng cách truyền xa hơn cổng song song
b. Số dây kết nói ít.
c. Có thể truyền không day dùng hồng ngoại.
d. Có thể ghép nối với vi điều khiển hay PLC.
e. Cho phép nối mạng.
f. Có thể tháo lắp thiết bị trong lúc máy tính đang làm việc.
g. Có thể cung cấp nguồn cho các mạch điện đơn giản.
Các thiết bị ghép nối được chia thành hai loại:
_DTE: các thiết bị tiếp nhận hay trung gian truyền dữ liệu như: máy tính, PLC,
vi điều khiển,…
_DCE: là các thiết bị trung gian như MODEM.
Phương pháp truyền dữ liệu sử dụng cổng nối tiếp được quy định theo chuẩn RS-
232, được qua định như bảng dưới đây:
Chiều dài cable cực đại. 15m
Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
14
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
Tốc độ truyền nhận dữ liệu cực đại 20Kbp/s
Điện áp ngõ ra cực đại ±25V
Điện áp ngõ ra có tải ±5V tới ±15V
Trở kháng tải 3K đến 7K
Điện áp ngõ vào ±15V
Độ nhạy ngõ vào ±3V

Trở kháng ngõ vào 3K đến 7 K
Chuẩn RS-232 quy định điện áp từ -3V tới -25V là mức logic 1, điện áp từ 3V tới
25V ứng với mức logic 0 và có khả năng cấp dòng từ 10mA tới 20mA. Nếu cáp đủ
ngắn, tốc độ truyền có thể tới 115.2Kbp/s.
Phương thức kết nối giữa DTE và DCE:
- Đơn công: dữ liệu được truyền theo 1 hướng.
- Bán song công: dữ liệu truyền theo hai hướng, nhưng mỗi thời điểm chỉ được
truyền theo 1 hướng.
- Song công: số liệu được truyền đồng thời theo hai hướng.
Dưới đây là định dạng của khung truyền dữ liệu theo chuẩn RS-232:
Sơ đồ chân của cổng nối tiếp.
Việc trao đổi tín hiệu thường thông qua 2 chân RXD và TXD. Các tín hiệu còn lại
có chức năng hỗ trợ để thiết lập và điều khiển quá trình truyền, được gọi là các tín
hiệu bắt tay. Các tín hiệu bắt tay dung để kiểm soát đường truyền.
Trên máy tính có 1 vi mạch đảm trách việc truyền/nhận dữ liệu thong qua cổng nối
tiếp, vi mạch đó là UART (universal Asynchronous Receiver/tranmister). UART
phổ biến là vi mạch 8250 của Intel và các phiên bản cao hơn là 16450, 16550,…
Việc trao đổi dữ liệu trên cổng nối tiếp thực chất là việc truy xuất các thanh ghi của
vi mạch này.
a. Thanh ghi điều khiển modem:
Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
15
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
D7 D6 D5 D4 D3 D2 D1 D0
x x x LOOP x x RTS DTR
D0=D1=1 thì trên chân RTS và DTR sẽ có mức điện áp tương ứng mức logic 1
(-12V) và ngược lại.
LOOP: Bit này đặt bằng 1 thì 8250 hoạt động ở chế độ vòng, chế độ này cho
phép kiểm tra đường truyền nhận của cổng com trên cùng 1 máy tính.
x: các bit không sử dụng.

b. Thanh ghi trạng thái modem.
D7 D6 D5 D4 D3 D2 D1 D0
x RI DSR CTS x x x x

Thanh ghi này có chức năng thông báo về trạng thái các đường dẫn bắt tay.
c. Thanh ghi điều khiển đường truyền.
DLAB C6 C5 C4 C3 C2 C1 C0
C1, C0: Đặt số bit trong 1 byte: 00: 5 bit, 01: 6 bit
10: 7 bit, 11: 8 bit
C2: Đặt số bit dừng 0: 1 bit dừng
1: 1,5 bit dừng
C3: Kiểm tra bit chẵn lẻ 0: không kiểm tra
1: có kiểm tra
C4: Loại parity 0: parity lẻ
1: parity chẵn
C5: Bit đánh dấu khung cần kiểm tra
chẵn lẻ
0: không có stick bit
1: stick bit
C6: Bit điều khiển đường truyền 0: truyền nhận bình thường
1: dừng
DLAP: Bit phân chia truy nhập cho các thanh ghi có cùng địa chỉ.
d. Thanh ghi trạng thái đường truyền.
Thanh ghi này phản ánh trạng thái của đường truyền nối tiếp.

0 S6 S5 S4 S3 S2 S1 S0
S0= 1 khi có 1 byte mới nhận được.
S1= 1 khi ký tự trước chưa được đọc.
S2= 1 khi có lỗi chẵn lẻ.
S3= 1 khi có lỗi khung truyền.

S4= 1 khi có gián đoạn đường truyền.
Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
16
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
S5= 1 khi bộ truyền rỗng.
S6= 1 khi bộ đệm truyền rỗng.
e. Thanh ghi chứa số chỉ tốc độ Baud.
f. Thanh ghi chỉ phép ngắt.
x x x x D3 D2 D1 D0
Dx= 1: cho phép ngắt tương ứng.
D0: Đặt ngắt khi nhận được 1 ký tự.
D1: Đặt ngắt khi bộ đệm truyền rỗng.
D2: Đặt ngắt khi thay đổi trạng thái đường truyền.
D3: Đặt ngắt khi có thay đổi trạng thái modem.
g. Thanh ghi nhận dạng ngắt.
X X X X X D2 D1 D0
D2 D1 D0 Mức ưu
tiên
Nguồn gây ngắt Đặt lại ngắt
0 0 1 Không kiểm tra ngắt
1 1 0 Cao nhất Lỗi đường nhận dữ
liệu
Đọc thanh ghi trạng thái
đường truyền
1 0 0 Thứ 2 Có dữ liệu nhận Đọc thanh ghi đệm
0 1 0 Thứ 3 Thanh ghi đệm
truyền rỗng
0 0 0 Thứ 4 Các trạng thái modem Đọc thanh ghi trạng thái
modem
Tốc độ truyền dữ liệu được quy định theo chuẩn RS-232 gồm các tốc độ sau: 300,

600, 1200, 2400, 4800, 9600…
Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
17
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
PHẦN 2: Thiết kế.
1. Sơ đồ khối.
Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
18
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
2. Sơ đồ nguyên lý.
Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
19
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2

Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
20
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
2. Chức năng các linh kiện.
a. IC MAX232.
Sơ đồ chân và cấu tạo của MAX232.
Max 232 là Ic lái điện áp, có nhiệm vụ tương thích điện áp TTL của vi điều
khiển. Bởì vì chuẩn RS232 không tương thích với mức logic TTL, do vậy nó yêu
cầu một bộ điều khiển đưởng truyền để chuyển đổi mức điện áp RS232 về các mức
TTL và ngược lại. IC MAX232 sẽ liên kết giữa vi điều khiển và jump cổng Com
của máy tính, từ đó tạo cầu nối cho việc truyền dữ liệu giữa vi điều khiển và máy
tính.
b.ULN2803.
Sơ đồ chân và cấu tạo của ULN2803.
ULN2803 là IC đệm đảo, 8 ngõ vào, 8 ngõ ra. IC này làm nhiệm vụ đảo bit, nó
chịu được điện áp từ 6v-15v.

Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
21
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
c. LED matrix.
Ma trận led bao gồm nhiều led đơn bố trí thành hàng và cột trong 1 vỏ. Các tín
hiệu điều khiển cột được nối với anot của tất cả các led trên cùng 1 cột. các tín hiệu
điều khiển hàng cũng được nối với catot của tất cả các led trên cùng 1 hàng như
hình:
Khi có 1 tín hiệu điều khiển ở cột và hàng, các chân anot của các led trên cột
tương ứng được cấp điện áp cao, các chân catot của led cũng được cấp điện áp thấp
và làm led phát sáng.
Ma trận led có thể là loại chỉ hiển thị được 1 màu hoặc 2 màu trên 1 điểm, và loại
8x8, 16x16,…tương ứng sẽ có số chân điều khiển là 16, 32, ( với led đơn sắc).
Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
22
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
II. Trương trình điều khiển.
1. Lưu đồ thuật toán.
Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
23
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
2. Trương trình nạp vào 89S52 .
#include <REGX52.H>
#include <stdio.h>
unsigned char Mem[88];
unsigned char j,l,h,k,tg,sokt;
char n=0;
unsigned int x,d;
unsigned char code MaLed[] ={ /// Quet cot
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, //Dau cach

0xFF,0x07,0x03,0xE9,0x03,0x07,0xFF,0xFF, //A
0xFF,0x01,0x01,0x6D,0x01,0x93,0xFF,0xFF, //B
0xFF,0x83,0x01,0x7D,0x19,0x9B,0xFF,0xFF, //C
0xFF,0x01,0x01,0x7D,0x01,0x83,0xFF,0xFF, //D
0xFF,0x01,0x01,0x6D,0x6D,0xFF,0xFF,0xFF, //E
0xFF,0x01,0x01,0xed,0xED,0xFF,0xFF,0xFF, //F
0xFF,0x83,0x01,0x7D,0xAD,0x09,0x0B,0xFF, //G
0xFF,0x01,0x01,0xEF,0x01,0x01,0xFF,0xFF, //H
0xFF,0xFF,0x7D,0x01,0x01,0x7D,0xFF,0xFF, //I
0xFF,0xBF,0x3F,0x7D,0x01,0x81,0xFD,0xFF, //J
0xFF,0x01,0x01,0x93,0x39,0x7D,0xFF,0xFF, //K
0xFF,0x01,0x01,0x7F,0x7F,0x7F,0xFF,0xFF, //L
0xFF,0xFF,0x01,0x03,0xE7,0x03,0x01,0xFF, //M
0xFF,0x01,0x01,0xE3,0x8F,0x01,0x01,0xFF, //N
0xFF,0x83,0x01,0x7D,0x01,0x83,0xFF,0xFF, //O
0xFF,0x01,0x01,0xDD,0xC1,0xE3,0xFF,0xFF, //P
0xFF,0x83,0x01,0x7D,0x5D,0x01,0x83,0x7F, //Q
0xFF,0x01,0x01,0xCD,0x01,0x23,0xFF,0xFF, //R
0xFF,0xB3,0x21,0x6D,0x09,0x9B,0xFF,0xFF, //S
0xFF,0xF9,0xF9,0x01,0x01,0xF9,0xF9,0xFF, //T
0xFF,0x81,0x01,0x7F,0x01,0x81,0xFF,0xFF, //U
0xFF,0xE1,0x81,0x3F,0x81,0xE1,0xFF,0xFF, //V
0xFF,0xC1,0x01,0xBF,0xCF,0xBF,0x01,0xC1, //W
0xFF,0x39,0x11,0xC7,0xC7,0x11,0x39,0xFF, //X
0xFF,0xF9,0xE1,0x07,0x07,0xE1,0xF9,0xFF, //Y
0xFF,0x3D,0x1D,0x4D,0x65,0x71,0x79,0xFF, //Z
0xFF,0xFF,0x7B,0x01,0x01,0x7F,0xFF,0xFF //1
};
// [ Chuong trinh chinh va cac ham ™ ] >
void convert(unsigned char kytu) // Ham chuyen ky tu sang ma Matrix LED

{ // Va dua vao mot mang
unsigned int temp,i;
if (kytu==49)
temp=216;
Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
24
Đồ án môn Vi điều khiển Lớp ĐH Điện tử 1-K2
else if (kytu>64 && kytu<92)
temp = (kytu-64)*8;
else
temp = 0;
for(i=temp; i<temp+8; i++)
Mem[k++] = MaLed[i];
}
//
void convert_str(unsigned char *str)
{
sokt=0;
k=0;
if(h>1)
for(l=0;l<h;l++)
{
convert(*str);
str++;
sokt++;
}
else
{
while(*str)
{

convert(*str);
str++;
sokt++;
}
}
}
//
void dichtrai(void)
{
unsigned char temp,i;
temp = Mem[0];
for(i=0;i<(sokt*8-1);i++)
Mem[i] = Mem[i+1];
Mem[sokt*8-1] = temp;
}
//
Khoa Điện Tử Trường ĐH Công Nghiệp Hà Nội
25

×