ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
MỤC LỤC
Trang
LỜI MỞ ĐẦU 6
Chương 1 : Tổng Quan 7
1.1 Giới thiệu 7
1.2 Cách thức tìm hiểu và lựa chọn giải pháp thiết kế 7
Chương 2 : Vi Điều Khiển AMELT 89C51 8
2.1 Cấu trúc bên trong của Vi điều khiển 89C51 8
2.2 Sơ đồ chân và chức năng chân Vi điều khiển AMELT 89C51 10
2.3 Tổ chức bộ nhớ Vi điều khiển AMELT 89C51 12
2.3.1 Bộ nhớ nội Vi điều khiển AMELT 89C51 12
2.3.2 Bộ nhớ ngoài Vi điều khiển AMELT 89C51 16
2.4 Các chức năng của Vi điều Khiển AMELT 89C51 17
2.4.1 Input/ Output 17
2.4.2 Timer 17
2.4.3 Ngắt 19
2.4.4 Truyền thông nối tiếp 21
2.5 Tập lệnh của Vi điều khiển AMELT 89C51 23
Chương 3 : Báo cáo quá trình thực hiện đồ án 26
3.1 Cách thực hiện đồ án 26
3.2 Các khối trên board 26
3.2.1 Khối phát hồng ngoại từ xa 26
3.2.2 Khối thu thu hồng ngoại 30
3.2.3 Khối công suất sử dụng TRIAC 32
3.2.4 Khối kiểm tra thiết bị AC 220 32
3.2.5 Khối phím nhấn điều khiển không sử dụng khối phát hồng ngoại từ xa 33
3.2.6 Khối nguồn 33
3.2.7 Khối hiển thị LCD 34
3.2.8 Khối Vi Điều Khiển 89C51 35
3.2.9 Thi Công 36
3.3 Lưu đồ giải thuật 38
3.4 Chương trình 41
Chương 4 : Kết Luận 53
4.1 Kết quả thu được 53
4.2 Các ưu điểm của sản phẩm 53
4.3 Các khuyết điểm của sản phẩm 53
4.4 Hướng phát triển của đề tài trong tương lai 53
MỤC LỤC 5
1.1 Giới thiệu 75
NGUYỄN NGỌC TRÚC Page 5
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
1.2 Cách thức tìm hiểu và lựa chọn giải pháp thiết kế 7
5
Chương 2 : Vi Điều Khiển AMELT 89C51 8 5
2.1 Cấu trúc bên trong của Vi điều khiển 89C51 85
2.2 Sơ đồ chân và chức năng chân Vi điều khiển AMELT 89C51 10
5
2.3 Tổ chức bộ nhớ Vi điều khiển AMELT 89C51 12 5
2.3.1 Bộ nhớ nội Vi điều khiển AMELT 89C51 12
5
2.3.2 Bộ nhớ ngoài Vi điều khiển AMELT 89C51 16
5
2.4 Các chức năng của Vi điều Khiển AMELT 89C51 17
5
2.4.1 Input/ Output 17
5
2.4.2 Timer 17
5
2.4.3 Ngắt 19
5
2.4.4 Truyền thông nối tiếp 21
5
2.5 Tập lệnh của Vi điều khiển AMELT 89C51 23
5
Chương 3 : Báo cáo quá trình thực hiện đồ án 26 5
3.1 Cách thực hiện đồ án 26
5
3.2 Các khối trên board 26
5
NGUYỄN NGỌC TRÚC Page 6
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
3.3 Lưu đồ giải thuật 38
5
3.4 Chương trình 41
5
Chương 4 : Kết Luận 53
5
4.1 Kết quả thu được 53
5
4.2 Các ưu điểm của sản phẩm 53
5
4.3 Các khuyết điểm của sản phẩm 53
5
4.4 Hướng phát triển của đề tài trong tương lai 53
5
CHƯƠNG 1 TỔNG QUAN 8
CHƯƠNG 2 VI ĐIỀU KHIỂN AMELT 89C51 9
CHƯƠNG 3: BÁO CÁO QUÁ TRÌNH THỰC HIỆN ĐỒ ÁN 28
CHƯƠNG 4: KẾT LUẬN 55
LỜI MỞ ĐẦU
Ngày nay, đời sống người dân ngày càng được nâng cao, vì thế nhu cầu về sự tiện
nghi trong cuộc sống càng ngày càng được đòi hỏi cao hơn trước. Chính vì thế, việc thiết
kế những sản phẩm phục vụ cuộc sống là một lĩnh vực luôn đầy tiềm năng và có ý nghĩa.
Các công tắc dùng điều khiển các thiết bị điện truyền thống không có tính năng điều
khiển từ xa. Muốn đóng, ngắt các thiết bị phải thao tác ngay trên công tắc. Điều này là
không tiện lợi, đặc biệt trong những ứng dụng gia đình mà có người lớn tuổi. Vì thế, tôi
đã lựa chọn việc thiết kế và thi công bộ điều khiển thiết bị dân dụng từ xa bằng hồng
NGUYỄN NGỌC TRÚC Page 7
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
ngoại làm nội dung của đồ án. Bộ điều khiển này có thể đưa vào sử dụng để điều khiển
các thiết bị gia đình dùng điện AC như hệ thống đèn, quạt, chuông báo động,…
Nội dung đồ án bao gồm hai phần chính:
Phần 1: Tìm hiểu về vi điều khiển AMELT 89C51 gồm hai chương
Chương 1: Tổng quan.
Chương 2: Vi điều khiển AMELT 89C51.
Phần 2: Thiết kế thi công bộ điều khiển và chương trình điều khiển gồm hai chương
Chương 3: Báo cáo quá trình thực hiện đồ án.
Chương 4: Kết luận.
CHƯƠNG 1 TỔNG QUAN
1.1 Giới thiệu
Ngày nay, mức sống của người dân ngày càng cao và yêu cầu về việc sử dụng
những sản phẩm tiện lợi cho cuộc sống là vô cùng chính đáng. Hiện nay, việc điều khiển
đóng mở các công tắc điện trong gia đình vẫn mang tính thủ công là người dùng vẫn phải
đến nơi đặt công tắc. Việc này đem đến nhiều bất tiện như trời tối việc đi lại đóng mở các
công tắc có thể gây khó khăn cho người lớn tuổi hay những lúc cha mẹ cần tắt đèn phòng
cho con cái mà không muốn vào phòng con,… Vì thế, việc thiết kế thi công một sản
phẩm dùng để thay thế việc đóng mở các công tắc một cách thủ công bằng việc đóng mở
từ xa qua một modun FM, hồng ngoại từ xa hay máy tính sẽ có ý nghĩa thực tiễn lớn.
Trong việc điều khiển không dây có nhiều sự lựa chọn khác nhau như dùng PLC, vi
điều khiển… Ở đây, do nhu cầu là thiết bị dân dụng, giá thành chấp nhận được nên tôi sử
dụng vi điều khiển để thiết kế thi công sản phẩm này.
NGUYỄN NGỌC TRÚC Page 8
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
1.2 Cách thức tìm hiểu và lựa chọn giải pháp thiết kế
Sản phẩm này gồm hai phần chính là phần điều khiển-kết nối thiết bị và phần phát
tín hiệu điều khiển (hồng ngoại từ xa).
Các khối được thiết kế trong đồ án được quan hệ với nhau theo sơ đồ hình 1.1
Hình 1.1 Sơ đồ quan hệ giữa các phần điều khiển.
Ở đây, tôi lựa chọn vi điều khiển là 89C51 của AMELT làm vi điều khiển cho phần
điều khiển và kết nối thiết bị.
Quá trình tìm hiểu thí nghiệm, tôi nhận thấy có hai cách để đóng mở các thiết bị AC
là:
- Dùng rơ-le: đây là cách được sử dụng nhiều nhưng nó có khuyết điểm là gây
tiếng ồn khi đóng ngắt và thời gian đáp ứng chậm cũng như sử dụng dòng điều
khiển lớn.
- Dùng triac thông qua opto-triac: cách này phù hợp với việc điều khiển bằng vi
điều khiển hơn, vì: độ nhạy cao, không gây tiếng ồn, dòng điều khiển bé, tiết
kiệm năng lượng.
Vì thế, trong đồ án phần thi công là sử dụng triac và opto-triac để đóng mở thiết bị
AC. Sơ đồ khối của phần điều khiển-kết nối thiết bị:
Hình 1.2 Sơ đồ khối của phần điều khiển-kết nối thiết bị
CHƯƠNG 2 VI ĐIỀU KHIỂN AMELT 89C51
2.1Cấu trúc bên trong của IC ATMEL 89C51
NGUYỄN NGỌC TRÚC Page 9
Khối phát tín hiệu
khiển
Khối điều khiển
và khối hiện thị
ị
Thiết bị
Điều khiển
Kiểm tra
SW Manul
Vi Điều Khiển
và Khối hiển thị
Bộ công suât AC
Khối thu hồng ngoại
REMOTE Hồng
ngoại
Các thiết bị
AC
Khối kiểm tra AC
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
Hình 2.1 Cấu trúc bên trong của 89C51
BỘ XỬ LÝ TRUNG TÂM CPU: (Central Processing Unit)
- Thanh ghi tích lũy A
- Thanh ghi tich lũy B dùng trong phép nhân vả phép chia
- Đơn vị logic học (ALU : Arithmetic Logiccal Unit)
NGUYỄN NGỌC TRÚC Page 10
Khối điều khiển
và khối hiện thị
ị
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
- Trạng thái chương trình (PSW : Prorgam Status Word)
- Con trỏ ngăn xếp
- Bốn băng thanh ghi
- Ngoài ra còn có bộ nhớ chương trình , bộ nhớ giải mã lệnh , bộ
điều khiển thời gian và logic.
Bộ xử lý trung tâm nhận trực tiếp xung clock từ bộ dao động cung cấp.
Chương trình đang chạy có thể dừng nhờ khối điều khiển ngắt bên trong.
Các nguồn ngắt : biến cố từ bên ngoài (INT0 va INT1), tràn bộ đếm của Timer ,
truyền thông trên Port nối tiếp.
Có hai bộ Timer 16 bit dùng để đếm sự kiện hoặc thời gian.
Các cổng (Port 0 , Port 1 , Port 2 , Port3 ) dùng truy xuất dữ liệu .
Port nối tiếp gồm : bộ truyền và bộ nhận không đồng bộ hoạt động độc lập nhau .
IC vi điều khiển ATMEL 89C51 có hai thành phần quan trọng là bộ nhớ và các
thanh ghi:
- Bộ nhớ gồm có bộ nhớ Rom và Ram dùng lưu trữ dữ liệu và mã
lệnh
- Các thanh ghi sử dụng lưu trữ thông tin trong quá trình của
CPU.
IC ATMEL 89C51 thuộc họ MCS51 có đặc điểm sau :
- 4Kbyte Rom ( được lập trình bởi nhà sản xuất )
- 128 bit Ram
- 4 Port I/O 8 bit
- Hai bộ timer 16bit
- Giao tiếp nối tiếp
- 64KB không gian bộ nhớ chương trình mở rộng
- 64KB không gian bộ nhớ dữ liệu mở rộng
- Một bộ xử lý lý luận (thao tác trên các bit đơn)
- 210 bit được địa chỉ hóa
2.2 SƠ ĐỒ VÀ CHỨC NĂNG CỦA CHÂN IC ATMEL 89C51
NGUYỄN NGỌC TRÚC Page 11
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
Hình 2.2 Sơ đồ chân của 89C51
Các chân cấp nguồn : Vi Điều Khiển 89C51 hoạt động với nguồn đơn 5VDC.
Chân 40 cấp 5VDC và chân 20 cấp Vss(GND).
Các ngõ vào bộ dao động trên chip : Vi Điều Khiển 89C51 có một bộ dao động
trong chip để hoạt động chỉ kết nối thanh anh và tụ về GND giữa hai chân 18 và chân 19
Hình 2.3 : Khối dao động của 89C51
Thanh anh thông thường là 12mhz không có giao tiếp với PC. Giao tiếp PC thanh
anh là 11.0592mhz, còn tụ C1 = 33p và C2 = 33p.
RST : Vi Điều Khiển 89C51 ngõ vào RST nằm chân số 9 là chức năng reset . Khi
tín hiệu này được mức cao (trong ít nhất 2 chu kỳ máy ) các thanh ghi trong Vi Điều
NGUYỄN NGỌC TRÚC Page 12
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
Khiển 89C51 được tải các giá trị thich hợp để khởi động lại .Thường khối reset kết nối
chân 9
Hình 2.4 : Mạch kết nối vào chân Reset
ALE (Address Latch Enable ) :Chân 30 là tín hiệu ra cho việc giải mã các kênh
bus địa chỉ và dữ liệu khi sữ dụng bộ nhớ ngoài. Các xung tín hiệu ALE có tốc độ bằng
1/6 lần tần số dao động trên chíp, có thể dùng là nguồn xung nhịp hệ thống khác .
EA (External Access) : Chân 31 là tín hiệu cho phép truy xuất Ram ngoại. Vi
Điều Khiển 89C51 Ram bên trong của chip (4k) nên chân EA có tín hiệu mức cao
(5VDC), khi dung lượng dữ liệu hơn 4K ta mở rộng bộ nhớ EA có tín hiệu mức thấp
(0VDC).
PSEN (Program Store Enable ) : chân 29 là tín hiệu điều khiển để cho phép bộ nhớ
chương trình mở rộng. Khi chương trình sử dụng Rom nội PSEN ở chế độ thụ động
( mức cao )
Port 0 : Từ chân 32 đến chân 39 (hình 2.2) và các chân ký hiệu P0.0 , P0.1,
,P0.7 có hai nhiệm vụ Input/Output hoặc data buss khi mở rộng bộ nhớ.
Port 1 : Từ chân 1 đến chân 8 (hình 2.2) và các chân ký hiệu P1.0, P1.1, , P1.7
có nhiệm vụ là Input/Output.
Port 2 : Từ chân 21 đến chân 28 (hình 2.2) và các chân ký hiệu P2.0,P2.1, ,P2.7
có nhiệm vụ là Input/Output.
Port 3 : Từ chân 10 đến chân 17 (hình 2.2) và các chân ký hiệu P3.0,P3.1, ,P3.7
có hai nhiậm vụ là Input/Output hoặc các chức năng khác (truyền nhận port nối tiếp, Ngắt
ngoài, Ngõ vào timer) theo bảng sau :
Bit Tên Chức năng chuyển đổi
P3.0 RXD Nhận dữ liệu port nối tiếp
P3.1 TXD Truyền dữ liệu port nối tiếp
P3.2 INT0 Ngắt 0
P3.3 INT1 Ngắt 1
P3.4 T0 Ngõ vào của timer 0
NGUYỄN NGỌC TRÚC Page 13
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
P3.5 T1 Ngõ vào của timer 1
P3.6 WR Xung ghi dữ liệu bộ nhớ ngoài
P3.7 RD Xung đọc dữ liệu bộ nhớ ngoài
2.3 TỔ CHỨC BỘ NHỚ IC ATMEL 89C51
2.3.1 BỘ NHỚ NỘI IC ATMEL 89C51
Vi điều khiển 89C51 có bộ nhớ theo cấu trúc Harvard có những vùng cho bộ nhớ
riêng biệt, cho chương trình dữ liệu. Chương trình và dữ liệu bên trong, dù vậy ta có thể
mở rộng bằng các thành phần bên ngoài lên tối đa 64KB bộ nhớ chương trình và 64KB
bộ nhớ dữ liệu. Bộ nhớ trong bao gồm Rom và Ram, Ram chia làm ba vùng Ram : Ram
đa dụng, Ram địa chỉ hóa từng bít, Các bank thanh ghi.
RAM
Bộ nhớ
chương
trình được
chọn qua
PSEN
FFFFH
Bộ nhớ dữ
liệu được
chọn qua
WR và RD
FFFFH
Vùng các
thanh ghi
đặt biệt
FFH
7FH
30H
20H
1FH
07H
0000H
0000H
Vùng Ram
đa dụng
Vùng Ram
địa chỉ hóa
từng bit
Các BANK
thanh ghi
Tóm tắt các vùng bộ nhớ của 89C51
Hai đặc tính cần lưu ý là :
Các thanh ghi và các port xuất nhập đã được xếp trong bộ nhớ và có thể truy xuất
trực tiếp như các địa chỉ bộ nhớ khác.
NGUYỄN NGỌC TRÚC Page 14
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
Ngăn xếp bên trong Ram nội nhỏ hơn so với Ram ngoài như trong các bộ vi xử lý
khác.
Như vậy Ram bên trong 89C51 được chia làm các bank thanh ghi (00H – 1FH),
Ram địa chỉ hóa từng bit (20H – 2FH), Ram đa dụng (30H – 7FH), và các thanh ghi chức
năng đặc biệt (80H - FFH).
Bảng vùng Ram của 89C51
7F
30
2F 7F 7E 7D 7C 7B 7A 79 78
2E 77 76 75 74 73 72 71 70
2D 6F 6E 6D 6C 6B 6A 69 68
2C 67 66 65 64 63 62 61 60
2B 5F 5E 5D 5C 5B 5A 59 58
2A 57 56 55 54 53 52 51 50
29 4F 4E 4D 4C 4B 4A 49 48
28 47 46 45 44 43 42 41 40
27 3F 3E 3D 3C 3B 3A 39 38
26 37 36 35 34 33 32 31 30
25 2F 2E 2D 2C 2B 2A 29 28
24 27 26 25 24 23 22 21 20
23 1F 1E 1D 1C 1B 1A 19 18
22 17 16 15 14 13 12 11 10
21 0F 0E 0D 0C 0B 0A 09 08
20 07 06 05 04 03 02 01 00
1F
18 BANK 3
17
10
BANK 2
0F
BANK 1
07
01
00
BANK 0
Default Register Bark for R0 – R7
Ram đa dụng là có thể truy xuất tự do bằng cách tác động trực tiếp hoặc gián tiếp
có địa chỉ từ 30H đến 7FH.
Ví dụ:MOV 5FH,#20H ; ghi dữ liệu 20H trực tiếp vào 5FH
MOV R0,#100 ; ghi dữ liệu 100 trực tiếp vào R0
NGUYỄN NGỌC TRÚC Page 15
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
MOV 5EH,R0 ;ghi nội dữ liệu trong R0 vào 5EH (gián tiếp)
Ram địa chỉ hóa từng bit : Có 128 bit được địa chỉ hóa đa dụng ở các byte 20H
đến 2FH. Các địa chỉ này được truy xuất như các byte hoặc các bit phụ thuộc vào lệnh
dùng.
Các Bark thanh ghi : 32 byte địa chỉ thấp của bộ nhớ làcác bark thanh ghi, 8 thanh
ghi từ địa chỉ 00H đến 07H được địa chỉ hóa R0 – R7.
Bảng Các thanh ghi đặt biệt
Địa chỉ byte Địa chỉ bit
FF
F0 F7 F6 F5 F4 F3 F2 F1 F0 B
E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC
D0 D7 D6 D5 D4 D3 D2 - D0 PSW
B8 - - - BC BB BA B9 B8 IP
B0 B7 B6 B5 B4 B3 B2 B1 B0 P3
A8 A
F
- - AC AB AA A9 A8 IE
A0 A7 A6 A5 A4 A3 A2 A1 A0 P2
99 NOT BIT ADDRESSABLE SBUF
98 9F 9F 9F 9F 9F 9F 9F 9F SCON
90 97 96 95 94 93 92 91 90 P1
8D NOT BIT ADDRESSABLE TH1
8C NOT BIT ADDRESSABLE TH0
8B NOT BIT ADDRESSABLE TL1
8A NOT BIT ADDRESSABLE TL0
89 NOT BIT ADDRESSABLE TMOD
88 8F 8E 8D 8C 8B 8A 89 88 TCON
87 NOT BIT ADDRESSABLE PCON
83 NOT BIT ADDRESSABLE DPH
82 NOT BIT ADDRESSABLE DPL
81 NOT BIT ADDRESSABLE SP
NGUYỄN NGỌC TRÚC Page 16
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
80 87 86 85 84 83 82 81 80 P0
Từ trạng thái chương trình : (PSW_ Program Status Word ) ở địa chỉ D0H gồm
các bit trạng thái theo bảng tóm tắt sau:
Bit Ký hiệu Địa chỉ Ý nghĩa
PSW.7
PSW.6
PSW.5
PSW.4
PSW.3
PSW.2
PSW.1
PSW.0
CY
AC
F0
RS1
RS0
OV
P
D7H
D6H
D5H
D4H
D3H
D2H
D1H
D0H
Cờ nhớ
Cờ nhớ phụ
Cờ 0
Bit chọn bark thanh ghi
Bit chọn bark thanh ghi
00 = BANK 0 (00H – 07H)
01 = BANK 1 (08H – 0FH)
10 = BANK 2 (10H – 17H)
11 = BANK 3 (18H – 1FH)
Cờ tràn
Dự trữ
Cờ parity chẳn
Bảng Từ trạng thái chương trình
Cờ nhớ (CY) được dùng trong các lệnh toán học : so sánh giữa hai giá trị ,
phép cộng , phép trừ
Cờ nhớ phụ được dùng khi công hai số BCD , cờ nhớ phụ được set lên kết
quả 4 bit nhỏ trong khoảng 0AH đến 0FH.
Cờ 0 (F0) là bit cờ đa dụng dành các ứng dụng cho người dùng.
Các bit chọn bark thanh ghi (RS0 và RS1) xác định bark thanh ghi tích cực.
Cờ tràn (OV) được set lên khi phép toán cộng hoặc trừ bị tràn.Khi các số có
dấu được cộng hoặc trừ bit này cho biết kết quả nằm trong tầm xác định không. Khi phép
cộng không dấu bit OV có thể bỏ qua . Các kết quả nhỏ hơn -127 hoặc lớn hơn +127 bit
OV được set.
Thanh ghi B : ở địa chỉ F0H dùng cùng với thanh ghi tích lũy A trong các phép toán
nhân chia. Trong phép nhân kết quả là 16bit thì A(byte thấp ) và B(byte cao), phép chia A
chứa phần nguyên B chứa phần dư.
Con trỏ ngăn xếp (SP) : ở địa chỉ 81H , chứa địa chỉ của byte dữ liệu hiện hành
trên đỉnh của ngăn xếp. Các lệnh trên ngăn xếp bao gồm các thao tác cất dữ liệu vào
ngăn xếp và lấy dữ liệu từ ngăn xếp ra. Có thể truy xuất bằng địa chỉ gián tiếp , trực tiếp
bằng các lệnh PUSH và POP để lưu giữ dữ liệu tạm thời và lấy lại dữ liệu.
Con trỏ dữ liệu (DPTR): dùng để truy xuất bộ nhớ ngoài, bộ nhớ nội.
Các thanh ghi port I/O : Port 0 ở địa chỉ 80H, Port 1 ở địa chỉ 90H, Port 2 ở địa chỉ
A0H, Port 3 ở địa chỉ B0H. Tất cả các Port đều được địa chỉ hóa từng bit.
Các thanh ghi Timer : có hai bộ timer 16bit được sử dụng trong sự kiên hoặc thời
gian.
Timer 0 gồm hai thanh ghi 8AH(TL0 : byte thấp) và 8CH (TH0 : byte cao).
Timer 1 gồm hai thanh ghi 8BH(TL1 : byte thấp) và 8DH (TH1 : byte cao).
NGUYỄN NGỌC TRÚC Page 17
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
Điều khiển Timer bởi thanh ghi TMOD ở địa chỉ 89H và thanh ghi TCON
ở địa chỉ 88H.
Các thanh ghi port truyền thông nối tiếp :SBUF ở địa chỉ 99H dùng truyền và nhận
dữ liệu. SCON ở địa chỉ 98H dùng điều khiển truyền thông nối tiếp.
Thanh ghi ngắt : có 5 nguồn ngắt , 2 mức ưu tiên( ngắt ngoài ). Thanh ghi điều
khiển quá trình ngắt IE ở địa chỉ 8AH và được địa chỉ hóa từng bit.
2.3.2 BỘ NHỚ NGOÀI IC ATMEL 89C51
Bộ nhớ chương trình ngoài là IC ROM được cho phép bởi tín hiệu PSEN. Hình
2.5 mô tả cách giao tiếp EPROM và vi điều khiển :
Hình 2.5 : Giao tiếp giữa IC 89C51 và EPROM
Bộ nhớ dữ liệu ngoài là một bộ nhớ RAM được cho phép ghi/đọc bằng cách tín
hiệu WR và RD (chân P3.6 và P3.7) . Chỉ có một cách truy xuất bộ nhớ dữ liệu ngoài là
lệnh MOVX và con trỏ dữ liệu DPTR. Hình 2.6 mô tả cách giao tiếp RAM và vi điều
khiển
Hình 2.6 : Giao tiếp giữa IC 89C51 và RAM
NGUYỄN NGỌC TRÚC Page 18
Port 0
EA
89C51
ALE
Port 2
PSEN
Port 0
EA
89C51
ALE
Port 2
PSEN
D0 – D7
A0 – A7
EPROM
A8 – A15
OE
D0 – D7
A0 – A7
EPROM
A8 – A15
OE
D Q
G
D Q
G
74HC373
Port 0
EA
89C51
ALE
Port 2
RD
WR
Port 0
EA
89C51
ALE
Port 2
RD
WR
D0 – D7
A0 – A7
RAM
A8 – A15
OE
WE
D0 – D7
A0 – A7
RAM
A8 – A15
OE
WE
D Q
G
D Q
G
74HC373
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
2.4 CÁC CHỨC NĂNG CỬA IC AMELT 89C51
2.4.1 INPUT/OUTPUT
Vi điều khiển 89C51 có 4 port I/O 8 bit dùng truy xuất dữ liệu tác động ra bên ngoài
hoặc thu thập dữ liệu từ bên ngoài về.
2.4.2 TIMER
Vi điều khiển 89C51 có hai Timer 16 bit. Các thanh ghi này có thể hoạt động ở
một trong hai trạng thái timer hoặc couter. Mỗi thanh ghi gồm 2 thanh ghi 8 bit ghép lại
( hình 2.7)
T L x : 8 B I T
P U L S E I N P U T
T H x : 8 B I T
Hình 2.7 : Thanh ghi Timer 16bit
Cấu trúc của bộ Timer trong Vi điều khiển 89C51 ( hình 2.8)
Hình 2.8 : Cấu trúc của bộ Timer 89C51
Hoạt động của Timer được điều khiển bởi hai thanh ghi TCON và TMOD.
Thanh ghi TCON (Timer Control ):
Là thanh ghi 8 bit, có thể truy xuất byte hoặc bit (hình 2.9)
I E 1
3
T F 0 I E 0
6
T F 1
2
I T 0
4
T R 1
1
T R 0
7 0
I T 1
5
Hình 2.9 : Cấu trúc thanh ghi TCON
TF1 : báo trạng thái tràn cho Timer 1
TR1 : điều khiển cấp xung cho Timer 1
TF0 : báo trạng thái tràn cho Timer 0
NGUYỄN NGỌC TRÚC Page 19
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
TR0 : điều khiển cấp xung cho Timer 0
IE1 : không liên quan đến hoạt động của Timer , bit này dùng để báo
trạng thái ngắt ngoài 1(khi trạng thái logic thay đổi từ 1 xuống 0 tại chân 13
của vi điều khiển )
TI1 : không liên quan đến hoạt động của Timer, bit này cho phép tác
động ngắt ngoài 1 bằng cạnh xuống (default IT1 = 0 , tác động ngắt bằng
mức thấp)
IE0 : không liên quan đến hoạt động của Timer , bit này dùng để báo
trạng thái ngắt ngoài 0 (khi trạng thái logic thay đổi từ 1 xuống 0 tại chân
12 của vi điều khiển )
TI0 : không liên quan đến hoạt động của Timer, bit này cho phép tác
động ngắt ngoài 0 bằng cạnh xuống (default IT0 = 0 , tác động ngắt bằng
mức thấp)
Thanh ghi TMOD Là thanh ghi 8 bit ,chỉ có thể truy xuất byte
Ñ I E ÀU K H I E ÅN T I M E R 0
G A T E
3
M 1 M 1
6
G A T E
2
M 0
4
C / T
1
M 0
Ñ I E ÀU K H I E ÅN T I M E R 1
7 0
C / T
5
Hình 2.10 : Cấu trúc thanh ghi TMOD
GATE, C/T : điều khiển trạng thái hoạt động cho Timer
M1,M0 : chọn chế độ hoạt động cho Timer (theo bảng sau )
M1 M0 CHẾ ĐỘ (MODE) MÔ TẢ
0 0 0 Timer 13 bit
0 1 1 Timer 16 bit
1 0 2 Timer 8 bit, auto reload
1 1 3 Timer 8 bit
Chế độ 0 : Thanh ghi THx và TLx kết hợp tọa thành Timer 13 bit , Bộ đếm
Timer tràn thì cờ TFx sẽ đặt lên logic 1 (hình 2.11)
T L x : 5 B I T
P U L S E I N P U T
T H x : 8 B I T T F x
Hình 2.11 : Cấu trúc thanh ghi của Timer chế độ 0.
Chế độ 1 : Tương tự chế độ 0 Timer 16 bit (hình 2.11)
T L x : 8 B I T
P U L S E I N P U T
T H x : 8 B I T T F x
Hình 2.12 : Cấu trúc thanh ghi của Timer chế độ 1.
NGUYỄN NGỌC TRÚC Page 20
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
Chế độ 2: TLx được nạp lại giá trị ban đầu từ THx và bắt đầu đếm lại từ
giá trị này khi có xung ỡ ngõ vào, khi tràn thì TFx sẽ đặt lên logic 1 đồng thời kích
hoạt bộ khóa để nạp giá trị trong THx vào TLx
T F x
T H x : 8 B I T
O V E R F L O W
T L x : 8 B I T
P U L S E I N P U T
Hình 2.13 : Timer chế độ 2
Chế độ 3: Trong chế độ này, TH1 và TL1 không được sử dụng thay vào đó
là TH0 và TL0 hoạt như hai bộ Timer 8 bit (TL0). Tuy nhiên tín hiệu mở xung cho
TH0 không phải là TR0 mà là TR1
T L 0 : 8 B I T
T R 1
T F 1T H 0 : 8 B I T
P U L S E I N P U T
O S C : 1 2
T F 0
Hình 2.14 : Timer chế độ 3.
2.4.3 NGẮT
Ngắt là hoạt động tạm ngừng chương trình chính để tính hành một chương trình
khác. Chương trình giải quyết ngắt được gọi là chương trình phục vụ ngắt (ISR :
Interrupt Sevice Reutine).
Hoạt động của ngắt được điều khiển bởi thanh ghi IE (Interrupt Enable ) . Là thanh
ghi 8 bit, có thể truy xuất byte hoặc bit .
Hình 2.15 : Cấu trúc thanh ghi IE
NGUYỄN NGỌC TRÚC Page 21
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
Ngắt ngoài 0 :
Địa chỉ vector ngắt 0003H
Khai báo sử dụng ngắt - SETB EA
- SETB EX0
- SETB IT0 (ngắt cạnh )
Sự kiện ngắt Xuất hiện mức thấp (hoặc cạnh
xuống ) tại chân INT0
Ngắt Timer 0:
Địa chỉ vector ngắt 000BH
Khai báo sử dụng ngắt - SETB EA
- SETB ET0
Sự kiện ngắt Tràn bộ đếm Timer 0
Ngắt Ngoài 1 :
Địa chỉ vector ngắt 0013H
Khai báo sử dụng ngắt - SETB EA
- SETB EX1
- SETB IT1 (ngắt cạnh )
Sự kiện ngắt Xuất hiện mức thấp (hoặc cạnh
xuống ) tại chân INT1
Ngắt Timer 1 :
Địa chỉ vector ngắt 001BH
Khai báo sử dụng ngắt - SETB EA
- SETB ET0
Sự kiện ngắt Tràn bộ đếm Timer 0
Ngắt Truyền thông ( truyền/nhận UART ) nối tiếp :
Địa chỉ vector ngắt 0023H
Khai báo sử dụng ngắt - SETB EA
- SETB ES
Sự kiện ngắt Nhận được một byte hoặc truyền
xong một byte trong SBUF
Tốc độ truyền nhận MODE
autoreload (Timer 2 chế độ 2)
- TH1 = - 3 ; 9600bps
- TH1 = - 6 ; 9600bps
- TH1 = - 12 ; 9600bps
- TH1 = - 24 ; 9600bps
NGUYỄN NGỌC TRÚC Page 22
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
SƠ ĐỒ CHƯƠNG TRÌNH KHI CÓ SỰ KIỆN NGẮT :
2.4.4 TRUYỀN THÔNG NỐI TIẾP
Truyền thông nối tiếp là thực hiện chuyển đổi dữ liệu song song thành dữ liệu nối
tiếp ở chế độ truyền dữ liệu và dữ liệu nối tiếp thành dữ liệu song song ở chế độ nhận dữ
liệu .
Truy xuất truyền thông nối tiếp qua hai chân TXD(chân P3.0 ) và RXD (chân P3.1),
khi không sử dụng truyền thông nối tiếp hai chân trên làm chức năng I/O
Truyền thông nối tiếp hoạt động song song (thu và phát đồng thời) và đệm lúc thu
cho phép một ký tự được nhận và được lưu trữ trong khi ký tự thứ hai được nhận.
Thanh ghi điều khiển truyền thông nối tiếp là SCON (serial control)ở địa chỉ 98H
chứa các bit trạng thái và các bit điều khiển. Bảng tóm tắt thanh ghi SCON và các chế độ
của truyền thông nối tiếp:
NGUYỄN NGỌC TRÚC Page 23
KHAI BÁO NGẮT
Sự kiện ngắt
Vector ngắt :
Xử lý ngắt
RETI
SUBF
(ghi dữ liệu)
Thanh ghi dịch
CLK
CLK
Tốc độ baud
Tốc độ baud
BUS nội 89C51
SUBF
(đọc dữ liệu)
SUBF
(đọc dữ liệu)
RXD
TXD
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
Bit Ký
hiệu
Địa chỉ Mô tả
SCON.7 SM0 9FH Bit chọn chế độ truyền nối tiếp
SCON.6 SM1 9EH Bit chọn chế độ truyền nối tiếp
SCON.5 SM2 9DH Bit của chế độ truyền thông nối tiếp ở chế độ 2 và 3,
RI sẽ không tác động nếu bit thứ 9 nhận là 0
SCON.4 REN 9CH Cho phép truyền và nhận dữ liệu
SCON.3 TB8 9BH Truyền thông ở chế độ 2 và 3 ( truyền bit thứ 9)
SCON.2 RB8 9AH Truyền thông ở chế độ 2 và 3 ( nhận bit thứ 9)
SCON.1 TI 99H Cờ truyền, set lên khi truyền 1 byte
SCON.0 RI 98H Cờ nhận, set lên khi nhận 1 byte
Bảng khai báo các chế độ trong truyền thông nối tiếp
SM0 SM1 Chế độ Mô tả Tốc độ baud
0 0 0 Thanh ghi dịnh Cố định (Fosc/12)
0 1 1 UART 8 bit Thay đồi (đặt bằng timer)
1 0 2 UART 9 bit Cố định (Fosc/12 hoặc Fosc/64)
1 1 3 UART 9 bit Thay đồi (đặt bằng timer)
Tần số làm việc của truyền thông nối tiếp gọi là tốc độ baud . Trong chế độ 0 và chế
độ 2 tốc độ baud cố định , chế độ 1 và chế độ 3 tốc độ baud thay đổi. Tốc độ baud cho từng chế độ truyền
thông nối tiếp .
Bit 7 của thanh ghi PCON (Power control) la bit SMOD làm tăng tốc độ baud gấp
đôi trong chế độ 1, 2 và 3.
NGUYỄN NGỌC TRÚC Page 24
÷ 12Dao động trên chip Xung nhịp tốc độ bauud
Chế độ 0
Dao động trên chip
÷ 64
÷ 32
Xung nhịp tốc độ bauudChế độ 1
SMOD = 0
SMOD = 1
Dao động trên chip
÷ 32
÷ 16
Xung nhịp tốc độ bauudChế độ 1 và 3
SMOD = 0
SMOD = 1
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
2.5 TẬP LỆNH CỦA IC AMELT 89C51
Các lệnh số học (Arithmetic Instrustion):
ADD A, Rn : (A) (A) + (Rn)
ADD A, direct : (A) (A) + (direct)
ADD A, @ Ri : (A) (A) + ((Ri))
ADD A, # data : (A) (A) + # data
ADDC A, Rn : (A) (A) + (C) + (Rn)
ADDC A, direct : (A) (A) + (C) + (direct)
ADDC A, @ Ri : (A) (A) + (C) + ((Ri))
ADDC A, # data : (A) (A) + (C) + # data
SUBB A, Rn : (A) (A) - (C) - (Rn)
SUBB A, direct : (A) (A) - (C) - (direct)
SUBB A, @ Ri : (A) (A) - (C) - ((Ri))
SUBB A, # data : (A) (A) - (C) - # data
INC A : (A) (A) + 1
INC direct : (direct) (direct) + 1
INC Ri : ((Ri)) ((Ri)) + 1
INC Rn : (Rn) (Rn) + 1
INC DPTR : (DPTR) (DPTR) + 1
DEC A : (A) (A) - 1
DEC direct : (direct) (direct) - 1
DEC @Ri : ((Ri)) ((Ri)) - 1
DEC Rn : (Rn) (Rn) - 1
MULL AB : (A) LOW [(A) x (B)]
: (B) HIGH [(A) x (B)]
DIV AB : (A) Integer Result of [(A)/(B)]
: (B) Remainder of [(A)/(B)]
DA A :Hiệu chỉnh thanh ghi A thành số BCD
Các lệnh logic (Logic Operation):
ANL A, Rn : (A) (A) AND (Rn).
ANL A, direct : (A) (A) AND (direct).
ANL A,@ Ri : (A) (A) AND ((Ri)).
ANL A, # data : (A) (A) AND (# data).
ANL direct, A : (direct) (direct) AND (A).
ANL direct, # data : (direct) (direct) AND # data.
ORL A, Rn : (A) (A) OR (Rn).
ORL A, direct : (A) (A) OR (direct).
ORL A,@ Ri : (A) (A) OR ((Ri)).
ORL A, # data : (A) (A) OR # data.
ORL direct, A : (direct) (direct) OR (A).
ORL direct, # data : (direct) (direct) OR # data.
XRL A, Rn : (A) (A) (Rn).
NGUYỄN NGỌC TRÚC Page 25
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
XRL A, direct : (A) (A) (direct).
XRL A,@ Ri : (A) (A) ((Ri)).
XRL A, # data : (A) (A) # data.
XRL direct, A : (direct) (direct) (A).
XRL direct, # data : (direct) (direct) # data.
CLR A : (A) 0
CLR C : (C) 0
CLR Bit : (Bit) 0
RL A : Dịch thanh ghi A qua trái 1 bit
RLC A : Dịch thanh ghi A qua trái 1 bit qua cờ nhớ
RR A : Dịch thanh ghi A qua phải 1 bit
RRC A : Dịch thanh ghi A qua phải1 bit qua cờ nhớ
SWAP A : Đổi chổ 4 bit thấp và 4 bit cao của A
Các lệnh rẽ nhánh :
JC rel : Nhảy đến “rel” nếu Carry C = 1.
JNC rel : Nhảy đến “rel” nếu Carry C = 0.
JB bit, rel : Nhảy đến “rel” nếu (bit) = 1.
JNB bit, rel : Nhảy đến “rel” nếu (bit) = 0.
JBC bit, rel : Nhảy đến “rel” nếu bit = 1 và xóa bit.
ACALL addr11 : Lệnh gọi tuyệt đối
LCALL addr16 : Lệnh gọi dài trong chương trình
con
RET : Kết thúc chương trình con trở về
chương trình chính
RETI : Kết thúc thủ tục phục vụ ngắt trở về
chương trình hoạt động như RET
AJMP Addr11 : Nhảy tuyệt đối không điều kiện
LJMP Addr16 : Nhảy dài không điều kiện
SJMP rel : Nhảy ngắn không điều kiện
JMP @ A + DPTR :Nhảy không điều kiện đến địa chỉ (A) +
(DPTR)
JZ rel : Nhảy nếu A = 0
JNZ rel : Nhảy nếu A không bằng 0
CJNE A, direct, rel : So sánh và nhảy nếu A khác direct
CJNE A, # data, rel : Tương tự lệnh CJNE A, direct, rel.
CJNE Rn, # data, rel : Tương tự lệnh CJNE A, direct, rel.
CJNE @ Ri, # data, rel : Tương tự lệnh CJNE A, direct, rel.
DJNE Rn, rel : Giảm Rn và nhảy nếu khác 0
DJNZ direct, rel : Tương tự lệnh DJNZ Rn,rel
Các lệnh dịch chuyển dữ liệu :
MOV A,Rn : (A) (Rn)
MOV A, direct : (A) (direct)
MOV A, @ Ri : (A) ((Ri))
NGUYỄN NGỌC TRÚC Page 26
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
MOV A, # data : (A) # data
MOV Rn, A : (Rn) (A)
MOV Rn, direct : (Rn) (direct)
MOV Rn, # data : (Rn) # data
MOV direct, A : (direct) (A)
MOV direct, Rn : (direct) (Rn)
MOV direct, direct : (direct) (direct)
MOV direct, @ Ri : (direct) ((Ri))
MOV direct, # data : (direct) data
MOV @ Ri, A : ((Ri)) (A)
MOV @ Ri, direct : ((Ri)) (direct)
MOV @ Ri, # data : ((Ri)) # data
MOV DPTR, # data16 : (DPTR) # data16
MOV A, @ A + DPTR : (A) (A) + (DPTR)
MOV @ A + PC : (PC) (PC) + 1
(A) (A) + (PC)
MOVX A, @ Ri : (A) ((Ri))
MOVX A, @ DPTR : (A) ((DPTR))
MOVX @ Ri, A : ((Ri)) (A)
MOVX @ DPTR, A : ((DPTR)) (A)
PUSH direct : cất dữ liệu vào ngăn xếp
POP direct : Lấy dữ liệu từ ngăn xếp direct
XCH A, Rn : Đổi chổ nội dung A với Rn
XCH A, direct : (A) (direct)
XCH A, @ Ri : (A) ((Ri))
XCHD A, @ Ri : Đổi chổ 4 bit thấp của (A) với
((Ri))
NGUYỄN NGỌC TRÚC Page 27
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
CHƯƠNG 3: BÁO CÁO QUÁ TRÌNH THỰC HIỆN ĐỒ ÁN
3.1 Cách thức thực hiện đồ án
Khi thực hiện đồ án điều khiển thiết bị không dây, có hai cách để thực hiện là:
- Điều khiển thông qua hồng ngoại.
- Điều khiển thông qua sóng FM.
Trong đề tài này, tôi chọn lựa điều khiển bằng hồng ngoại vì:
- Điều khiển bằng hồng ngoại chi phí nhẹ hơn so với FM.
- Điều khiển bằng hồng ngoại nguyên lý thu và bộ phát đơn giản hơn so với FM.
Khi thực hiện đồ án đóng ngắt mạch AC cũng có hai lựa chọn là :
- Rơ-le
- Triac
Trong đồ án này, tôi chọn lựa điều khiển bằng triac vì:
- Tiết kiệm năng lượng.
- Tốc độ đáp ứng nhanh.
- Không gây ra tiếng ồn.
- Không tạo ra tia lửa điện trong quá trình đóng ngắt
Ngoài ra, vấn đề trong đồ án ngoài điều khiển bằng không dây còn có thể điều
khiển tay thông qua các công tắc và khối kiểm tra thiết bị AC có hoạt động .
3.2 Các khối trên Board
3.2.1 Khối phát hồng ngoại từ xa
Sơ đồ khối của khối phát hồng từ xa, sử dụng IC SC9148 phát tín hiệu điều khiển
hồng ngoại là hình 3.1
+
Hình 3.1 Sơ đồ khối phát hồng ngoại
IC SC9148 được chế tạo theo công nghệ CMOS sử dụng trong bộ phát truyền tín
hiệu điều khiển đi xa bằng hồng ngoại. Tín hiệu phát đi gồm 18 lệnh khác nhau, chia làm
hai nhóm lệnh continuous keys và single short keys.
NGUYỄN NGỌC TRÚC Page 28
Khối phím lệnh điều
khiển ( bàn phím )
SC 9148
Khối phát hồng
ngoại
Led phát hồng ngoại
ĐẠI HỌC CÔNG NGHIỆP HỒ CHÍ MINH KHOA CÔNG NGHỆ ĐIỆN TỬ
Cấu tạo bên trong của SC9148 (hình3.2)
Hình 3.2 Cấu trúc bên trong của IC SC9148
Sơ đồ chân của IC SC9148 (hình 3.3)
Hình 3.3 Sơ đồ chân của SC9148
NGUYỄN NGỌC TRÚC Page 29