Tải bản đầy đủ (.pdf) (69 trang)

Giáo trình Kỹ thuật vi điều khiển nâng cao (Nghề Công nghệ kỹ thuật điều khiển và tự động hóa Trình độ Cao đẳng)

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 (1.09 MB, 69 trang )

ỦY BAN NHÂN DÂN TỈNH AN GIANG
TRƯỜNG CAO ĐẲNG NGHỀ AN GIANG

GIÁO TRÌNH
MƠN HỌC/MƠ ĐUN: KỸ THUẬT VI ĐIỀU
KHIỂN NÂNG CAO
NGÀNH/ NGHỀ : CN KTĐK VÀ TĐH
TRÌNH ĐỘ : Cao đẳng

(Ban hành theo Quyết định số:630/QĐ-CĐN, ngày 5 tháng 4 năm
2022 của Hiệu trưởng trường Cao đẳng nghề An Giang)

An Giang, Năm ban hành: 2022


TUYÊN BỐ BẢN QUYỀN
Tài liệu này thuộc loại sách giáo trình nên các nguồn thơng tin có thể được phép dùng
nguyên bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo.
Mọi mục đích khác mang tính lệch lạc hoặc sử dụng với mục đích kinh doanh thiếu
lành mạnh sẽ bị nghiêm cấm.


LỜI MỞ ĐẦU
Kỹ thuật vi điều khiển nâng cao là một trong những mơn chun ngành của ngành
tự động hóa. Nhằm cung cấp cho người học những kiến thức chuyên sâu về lĩnh vực lập
trình điều khiển. Mơn học này học sau môn kỹ thuật vi điều khiển cơ bản nên người học
đã có kiến thức cơ bản về thiết kế mạch, hiểu về cấu trúc của vi điều khiển 89S52, sử
dụng tập lệnh và viết được những chương trình điều khiển đơn giản bằng ngôn ngữ
assembly. Ở môn học này, người học học cách viết chương trình điều khiển bằng ngơn
ngữ C, là ngơn ngữ lập trình phổ biến hiện nay. Và học thiết kế ứng dụng chuyên sâu hơn
trên một số vi điều khiển như 89S52, AVR, PIC, Arduino,…


Với mục tiêu trên, nội dung môn học được chia thành 9 bài như sau:
- Bài 1: Ngôn ngữ C.
- Bài 2: Bàn phím ma trận.
- Bài 3: Thời gian thực.
- Bài 4: Điều khiển ADC và DAC.
- Bài 5: Đo và điều khiển nhiệt độ.
- Bài 6: Điều khiển động cơ DC.
- Bài 7: Giao tiếp máy tính.
- Bài 8: Họ vi điều khiển PIC 16Fxx
- Bài 9: Lập trình Arduino
Các bài học trên được sắp xếp theo trình tự phù hợp với nhận thức và phát triển
nhận thức của người học nghề. Tuy nhiên để đạt được hiệu quả cao hơn khi đọc giáo
trình này, người học cần nắm vững các kiến thức cơ bản của các môn học cơ sở khác
như: kỹ thuật điện, linh kiện điện tử, mạch số, điện tử công suất, kỹ thuật vi điều khiển cơ
bản.
Giáo trình cung cấp kiến thức cơ bản làm cơ sở để phát triển nhận thức của người
học. Tuy nhiên trong các bài giảng cần tăng cường liên hệ, so sánh với các hệ thống sản
xuất, các hệ thống tự động trong công nghiệp và nông nghiệp để người học có cái nhìn
tổng thể hơn.
Trong q trình biên soạn, mặc dù đã cố gắng tham khảo nhiều tài liệu và giáo
trình khác nhưng tác giả khơng khỏi tránh được những thiếu sót và hạn chế. Tác giả chân
thành mong đợi những nhận xét, đánh giá và góp ý để cuốn giáo trình ngày một hồn thiện
hơn.
An Giang, ngày 20 tháng 05 năm 2021
Tác giả biên soạn
Lý Đa Tạo
1


MỤC LỤC

Đề mục
LỜI MỞ ĐẦU

Trang
1

MỤC LỤC
CHƯƠNG TRÌNH MƠN HỌC: KỸ THUẬT VI ĐIỀU KHIỂN NÂNG CAO

2
3

BÀI 1: NGÔN NGỮ C
BÀI 2: BÀN PHÍM MA TRẬN

10
19

BÀI 3: THỜI GIAN THỰC
BÀI 4: ĐIỀU KHIỂN ADC VÀ DAC

31
39

BÀI 5: ĐO VÀ ĐIỀU KHIỂN NHIỆT ĐỘ

43

BÀI 6: ĐIỀU KHIỂN ĐỘNG CƠ DC
BÀI 7: GIAO TIẾP MÁY TÍNH


46
50

BÀI 8: HỌ VI ĐIỀU KHIỂN PIC 16Fxx
BÀI 9: LẬP TRÌNH ARDUINO

58
61

2


CHƯƠNG TRÌNH MƠ ĐUN
Tên mơn học: KỸ THUẬT VI ĐIỀU KHIỂN NÂNG CAO
Mã số mô đun: MĐ23
Thời gian thực hiện mô đun: 120 giờ (Lý thuyết: 40 giờ, Thực hành: 80 giờ).
I. VỊ TRÍ TÍNH CHẤT CỦA MƠ ĐUN
1. Vị trí:
Trước khi học mơn học này cần hồn thành các Môn học cơ sở, đặc biệt là môn học: Vi
điều khiển cơ bản
2. Tính chất: Là mơ đun bắt buộc
II. MỤC TIÊU CỦA MƠ ĐUN
1. Về kiến thức:
- Trình bày được rõ ràng về cấu trúc các ứng dụng chuyên dùng của vi khiển họ 89XX.
- Trình bày được quy trình thiết kế ứng dụng dùng vi điều khiển
- Trình bày được cấu trúc cơ bản của vi điều khiển PIC
- Trình bày được cấu trúc cơ bản của board Arduino
2. Về kỹ năng:
- Hiểu, sửa chữa và thay thế được các mạch thực hành nâng cao dùng vi khiển họ 89XX

và PIC.
- Thiết kế và viết được các chương trình ứng dụng nâng cao, giao tiếp với máy tính.
- Viết được các chương trình điều khiển dùng ngơn ngữ C.
- Viết được các chương trình điều khiển cơ bản cho VĐK họ PIC.
- Viết được một số chương trình điều khiển ứng dụng dùng Arduino.
3. Về năng lực tự chủ và trách nhiệm:
- Có ý thức an tồn cao trong bảo vệ và sử dụng thiết bị
III. NỘI DUNG MÔ ĐUN
1. Nội dung tổng quát và phân bố thời gian :

TT

Tên chương, mục

Tổng
số

1

Bài 1: Ngơn ngữ C
I. Tìm hiểu ngơn ngữ C, phần mềm
Keil C
II. Lập trình vi điều khiển bằng ngôn
ngữ C
III. Thực hành với ngôn ngữ C
Bài 2: Bàn phím ma trận
I. Cấu tạo bàn phím ma trận
II. Kết nối bàn phím ma trận với vi
điều khiển
III. Giải thuật quét theo mã phím.

IV. Thực hành viết chương trình qt
phím

12

2

Thời gian (giờ)
Thực hành,

thí nghiệm, Kiểm
thuyết thảo luận,
tra
bài tập
4
8
2
2

8

3
1
1
1

2
6
5
1

4
3


3

4

5

6

7

8

9

Bài 3: Thời gian thực
I. Sơ đồ chức năng các chân của IC
thời gian thực
II. Cấu trúc bên trong IC, các thanh
ghi IC
III. Kết nối IC thời gian thực với vi
điều khiển
IV. Giải thuật truy xuất IC thời gian
thực
V. Luyện tập
Kiểm tra
Bài 4: Điều khiển ADC và DAC

I. Tìm hiểu IC ADC và IC DAC
II. Kết nối IC ADC và IC DAC với
vi điều khiển
III. Giải thuật và lập trình
IV. Luyện tập
Bài 5: Đo và điều khiển nhiệt độ
I. Tìm hiểu các loại cảm biến nhiệt
(LM335)
II. Sơ đồ kết nối cảm biến với vi điều
khiển
III. Giải thuật và lập trình
IV. Thực hành đo và điều khiển nhiệt
độ
Bài 6: Điều khiển động cơ DC
I. Tìm hiểu mạch cơng suất cầu H
II. Kết nối động cơ với vi điều khiển
III. Tìm hiểu động cơ bước
IV. Kết nối động cơ bước với vi điều
khiển
V. Thực hành điều khiển động cơ
DC và động cơ bước
Bài 7: Giao tiếp máy tính
I. Tìm hiểu chuẩn RS232 và IC
Max232
II. Sơ đồ kết nối vi điều khiển và
máy tính
III. Giải thuật và viết chương trình
IV. Thực hành giao tiếp máy tính
Bài 8: Họ vi điều khiển PIC 16Fxx
I. Cấu trúc họ vi điều khiển PIC

II. Phương pháp lập trình cho PIC
III. Thực hành viết chương trình một
số ứng dụng của PIC
Kiểm tra
Bài 9: Lập trình Arduino

12

4

6

2

1
1
1

1

1
5
12

3
1
1
1

12


3

9

2

1
8
9

1
1

1

1
8
12

4
1
1
1

8

1

1


1

6
12

4
2

8

1

1

1
20

8
4
4

7
10

2

10
20


7

11

2
2

4


I. Giới thiệu về Arduino
2
II. Phần cứng Arduino
2
III. Phần mềm IDE cho Arduino
3
IV. Lập trình ứng dụng
11
Kiểm tra
2
Cộng
120
40
74
6
* Ghi chú: Thời gian kiểm tra được tích hợp giữa lý thuyết với thực hành được tính
vào giờ thực hành
2. Nội dung chi tiết:
Bài 1: Ngôn ngữ C


Thời gian : 12 giờ (LT: 4 giờ ; TH: 8 giờ)
A. Mục tiêu bài:
- Trình bày được phương pháp lập trình ngơn ngữ C trong môi trường Keil C.
- Sử dụng phần mềm Keil C đúng yêu cầu kỹ thuật.
- Lập trình điều khiển cho vi điều khiển bằng ngôn ngữ C một cách thành thạo theo
u cầu.
B. Nội dung bài:
I. Tìm hiểu ngơn ngữ C, phần mềm Keil C
II. Lập trình vi điều khiển bằng ngôn ngữ C
III. Thực hành với ngôn ngữ C
Bài 2: Bàn phím ma trận
Thời gian : 8 giờ (LT: 3 giờ ; TH: 5 giờ)
A. Mục tiêu bài:
- Trình bày được cấu trúc của bàn phím ma trận, kết nối với vi điều khiển;
- Giải thuật lập trình giao tiếp giữa bàn phím ma trận và vi điều khiển;
- Viết chương trình giao tiếp bàn phím ma trận đúng theo yêu cầu kỹ thuật.
B. Nội dung bài:
I. Cấu tạo bàn phím ma trận
II. Kết nối bàn phím ma trận với vi điều khiển
III. Giải thuật quét theo mã phím
IV. Thực hành viết chương trình qt phím
Bài 3: Thời gian thực
Thời gian : 12 giờ (LT: 4 giờ ; TH: 8 giờ)
A. Mục tiêu bài:
- Trình bày cấu tạo và chức năng của thời gian thực;
- Kết nối IC thời gian thực và vi điều khiển;
- Truy xuất bộ nhớ thời gian thực theo yêu cầu;
- Viết chương trình đồng hồ thời gian thực theo yêu cầu.
B. Nội dung bài:
I. Sơ đồ chức năng các chân của IC thời gian thực

II. Cấu trúc bên trong IC, các thanh ghi IC
III. Kết nối IC thời gian thực với vi điều khiển
IV. Giải thuật truy xuất IC thời gian thực
V. Luyện tập
5


KIỂM TRA (2h)
Bài 4: Điều khiển ADC và DAC
Thời gian : 12 giờ (LT: 3 giờ ; TH: 9 giờ)
A. Mục tiêu bài:
- Trình bày chức năng IC ADC và DAC;
- Kết nối vi điều khiển và truy xuất dữ liệu IC ADC và DAC;
- Giải thuật và lập trình biến đổi ADC và DAC theo yêu cầu.
B. Nội dung bài:
I. Tìm hiểu IC ADC và IC DAC
II. Kết nối IC ADC và IC DAC với vi điều khiển
III. Giải thuật và lập trình
IV. Luyện tập
Bài 5: Đo và điều khiển nhiệt độ
Thời gian : 12 giờ (LT: 3 giờ ; TH: 9 giờ)
A. Mục tiêu bài:
- Trình bày cấu tạo và nguyên lý hoạt động của các loại cảm biến nhiệt;
- Thực hiện kết nối và giải thuật lập trình với cảm biến nhiệt;
- Viết được chương trình điều khiển theo yêu cầu.
B. Nội dung bài:
I. Tìm hiểu các loại cảm biến nhiệt (LM335)
II. Sơ đồ kết nối cảm biến với vi điều khiển
III. Giải thuật và lập trình
IV. Thực hành đo và điều khiển nhiệt độ

Bài 6: Điều khiển động cơ DC
Thời gian : 12 giờ (LT: 4 giờ ; TH: 8 giờ)
A. Mục tiêu bài:
- Trình bày cấu tạo và nguyên lý hoạt động của cầu H;
- Thực hiện kết nối cầu H và vi điều khiển đúng yêu cầu kỹ thuật;
- Trình bày cấu tạo và phương pháp điều khiển động cơ bước;
- Thực hiện lập trình điều khiển động cơ DC và động cơ bước đúng yêu cầu kỹ thuật.
B. Nội dung bài:
I. Tìm hiểu mạch công suất cầu H
II. Kết nối động cơ với vi điều khiển
III. Tìm hiểu động cơ bước
IV. Kết nối động cơ bước với vi điều khiển
V. Thực hành điều khiển động cơ DC và động cơ bước
Bài 7: Giao tiếp máy tính
Thời gian : 12 giờ (LT: 4 giờ ; TH: 8 giờ)
A. Mục tiêu bài:
- Trình bày cấu tạo và các chế độ làm việc của cổng truyền thông nối tiếp theo nội dung
đã học;
- Thực hiện cổng truyền thông nối tiếp đúng yêu cầu kỹ thuật;
- Thực hiện thu phát dữ liệu nối tiếp bằng 8051 đạt yêu cầu kỹ thuật.
B. Nội dung bài:
6


I. Tìm hiểu chuẩn RS232 và IC Max232
II. Sơ đồ kết nối vi điều khiển và máy tính
III. Giải thuật và viết chương trình
IV. Thực hành giao tiếp máy tính
Bài 8: Họ vi điều khiển PIC 16FXX
Thời gian : 20 giờ (LT: 8 giờ ; TH: 12 giờ)

A. Mục tiêu bài:
- Trình bày cấu trúc của vi điều khiển PIC;
- Trình bày sơ đồ chân và tổ chức bộ nhớ của PIC đúng yêu cầu kỹ thuật;
- Truy xuất và lập trình PIC theo yêu cầu.
B. Nội dung bài:
I. Cấu trúc họ vi điều khiển PIC
II. Phương pháp lập trình cho PIC
III. Thực hành viết chương trình một số ứng dụng của PIC
KIỂM TRA (2h)
Bài 9: Lập trình Arduino
Thời gian : 20 giờ (LT: 7 giờ ; TH: 13 giờ)
A. Mục tiêu bài:
- Trình bày cấu trúc phần cứng của board Arduino;
- Sử dụng phần mềm IDE, giao diện của phần mềm IDE lập trình cho Arduino
- Thực hành lập trình một số ứng dụng dùng Arduino
B. Nội dung bài:
I. Giới thiệu về Arduino
II. Phần cứng Arduino
III. Phần mềm IDE cho Arduino
IV. Lập trình ứng dụng
KIỂM TRA (2h)
IV. ĐIỀU KIỆN THỰC HIỆN MƠ ĐUN
1. Phịng học chun mơn hóa/nhà xưởng:
- Phịng máy vi tính có cài các phần mềm chun dụng
2. Trang thiết bị máy móc:
- Máy vi tính
- Kít thực hành vi điều khiển 89xx
- Mơ hình sử dụng vi điều khiển PIC
- Dao động ký 2 kênh
- Máy nạp chip vạn năng

- Đồng hồ DVOM/VOM
- Máy xóa EPROM
3. Học liệu, dụng cụ, nguyên liệu:
- Vi điều khiển
- Vi mạch số các loại
- Điện trở các loại
- Tụ điện các loại
- Rờ le
- Transistor các loại
7


- Thạch anh
- Led các loại
- Cảm biến nhiệt độ
- IC thời gian thực
- Động cơ DC, động cơ bước
- Mạch in
- Dây nối
- Chì hàn
- Sơ đồ mạch thực hành
- Mỏ hàn
- Kềm cắt
- Nhíp
- Dụng cụ tháo ráp vi mạch
4. Các điều kiện khác:
V. NỘI DUNG VÀ PHƯƠNG PHÁP ĐÁNH GIÁ
1. Nội dung:
- Kiến thức:
Được đánh giá bằng hình thức kiểm tra viết, trắc nghiệm theo các nội dung: trình

bày cấu tạo, đặc điểm, ứng dụng của các loại Vi điều khiển được học.
- Kỹ năng:
Đánh giá kỹ năng thực hành theo những nội dung sau: mỗi học viên, hoặc mỗi nhóm
học viên thực hiện cơng việc sau đây theo yêu cầu của giáo viên:
+ Lắp ráp được các mạch ứng dụng từng phần do giáo viên đề ra.
+ Thực hiện viết các chương trình theo yêu cầu cho trước
Tiêu chí đánh giá theo các nội dung:
+ Độ chính xác của cơng việc
+ Tính thẩm mỹ của mạch điện
+ Độ an toàn trên mạch điện
+ Thời gian thực hiện cơng việc
+ Độ chính xác theo u cầu kỹ thuật
- Năng lực tự chủ và trách nhiệm:
Đánh giá phong cách học tập thể hiện ở: Tỉ mỉ, cẩn thận, chính xác.
2. Phương pháp:
Kiểm tra, đánh giá trực tiếp trên từng học viên
VI. HƯỚNG DẪN THỰC HIỆN MÔ ĐUN
1. Phạm vi áp dụng mơ đun:
- Chương trình mơ đun được sử dụng để giảng dạy cho trình độ cao đẳng nghề.
- Chương trình có thể dùng để dạy học sinh ngắn hạn (sơ cấp nghề) có trình độ văn
hóa trên lớp 12 và đã qua đào tạo điện tử trung cấp có nhu cầu chuyển đổi nghề.
2. Hướng dẫn về phương pháp giảng dạy, học tập mô đun:
- Đối với giáo viên, giảng viên:
+ Nội dung được biên soạn theo phương pháp tích hợp nên khi soạn giảng giáo viên
nên soạn theo phương pháp tích hợp
+ Vật liệu, dụng cụ và trang thiết bị phải được chuẩn bị đầy đủ trước khi thực hiện
bài giảng
+ Thực hiện giảng dạy ở nơi thực tập hoặc xưởng thực hành.
+ Học sinh cần được chia thành các nhóm nhỏ từ 1 đến 4 học sinh, để thực hiện nội
dung thực hành.

8


+ Hệ thống nguồn điện cung cấp cần được phân biệt và kiểm tra chính xác trước khi
cho học sinh thực tập.
- Đối với người học:
+ Thực hiện công việc theo sự hướng dẫn của giáo viên
+ Tuân thủ nội quy nơi xưởng thực tập
+ Đảm bảo an toàn cho người và thiết bị
3. Những trọng tâm cần chú ý:
- Về phân bổ thời gian: Căn cứ vào thực tế của nơi đào tạo giáo viên hướng dẫn có
thể thay đổi thời lượng của từng nội dung, nhưng vẫn phải đảm bảo số giờ qui định
trong chương trình.
-Về nội dung chi tiết trong chương trình: Căn cứ vào thực tế trang bị của nhà trường
hoặc nhu cầu đào tạo tại địa phương, nhà trường có thể thay thế các họ PLD tương
thích với nhu cầu đào tạo và thiết bị hiện có, nhưng vẫn phải đảm bảo mục tiêu của
mơ đun.
- Cần giới thiệu các sản phẩm, mơ hình thực tế để học sinh có thể tham gia bài giảng
và ghi nhớ sâu hơn.
- Cần chú ý các biện pháp an toàn về điện. Chống va đập, rơi rớt các thiết bị, thường
xuyên theo dõi học sinh trong học tập, thực hành.
4. Tài liệu tham khảo:
- Đề cương môđun/môn học nghề Sửa chữa thiết bị điện tử công nghiệp”, Dự án
Giáo dục kỹ thuật và Dạy nghề (VTEP), Tổng cục Dạy Nghề, Hà Nội, 2003
- Họ vi điều khiển 8051 - Tống văn On - Đại học Bách khoa TP.HCM
- Thiết kế hệ thống với họ 8051 - Tống Văn On - Nhà xuất bản Phương Đông, 2007
- Microprocessor and IC families - Walter H. Buchbaum. Sc.D
- Mikrocompute Lehrbuch - HPI Fachbuchreihen Pflaum Verlag Munchen
- 8051 Development Boad, Rev 5 - Paul Stoffregen
- The 8051 microcontroller - I. Scott Makenzie

5. Ghi chú và giải thích (nếu có):

9


BÀI 1: NGƠN NGỮ C
Mục tiêu của bài:

- Trình bày được phương pháp lập trình ngơn ngữ C trong mơi trường Keil C.

- Sử dụng phần mềm Keil C đúng yêu cầu kỹ thuật.
- Lập trình điều khiển cho vi điều khiển bằng ngôn ngữ C một cách thành thạo theo
yêu cầu.
I. Ngôn ngữ C, phần mềm Keil C
1. Ngôn ngữ C
Muốn lập trình cho một vi điều khiển nào đó thì điều đầu tiên bạn phải làm đó là

học một ngơn ngữ lập trình. Hiện nay, có nhiều ngơn ngữ có thể sử dụng để lập trình
cho vi điều khiển, đầu tiên phải nói đến ASM, rồi đến C, C++,… trong số này thì ngơn
ngữ C được rất nhiều người dùng. Đây là một ngôn ngữ bậc cao khá thân thiện và được
ưa chuộng nhất khi lập trình cho vi điều khiển.
Cấu trúc chương trình C
Các #include (dùng để khai báo sử dụng các hàm chuẩn)
Các #define (dùng để định nghĩa các hằng)
Khai báo các đối tượng dữ liệu ngoài (biến, mảng, cấu trúc ...)
Khai báo nguyên mẫu các hàm
Hàm main()
Định nghĩa các hàm (hàm main có thể đặt sau hoặc xen vào giữa các hàm khác)
2. Sử dụng phần mềm Keil C
Mở Protues lên.

Vào project  new project

10


Gõ tên file vào và save

Sau khi save sẽ xuất hiện bảng sau, chọn Chip vi xử lý để lập trình
Chọn Atmel  AT89C51  OK

11


Chọn yes

Chọn File  New

Chọn File  Save As

12


Gõ tên file vào, đuôi là .a51 nếu viết code bằng assembler
.c nếu viết code bằng C

13


Chọn file khi nãy và Add vào


14


Viết chương trình nháy led

Vào Flash Configure flash tool hoặc vào biểu tượng như trên hình

15


Chọn tag Target chỉnh tần số 12Mhz

Chọn tag Ouput  đánh dấu chọn vào create hex file
16


Để dịch code ra mã hex nạp vào vxl.

Vào Prject  build target (phím tắc F7) để dịch file

II. Lập trình vi điều khiển bằng ngơn ngữ C
Viết chương trình tạo sóng vng có tần số 10Hz xuất ra ngõ P3.0

17


Bước 1: Kết nối mạch theo hình sau
VCC

SW

3
2
1

31

C1

C

EA/VPP

P0.7/AD7
P0.6/AD6
P0.5/AD5
P0.4/AD4
XTAL2
P0.3/AD3
P0.2/AD2
P0.1/AD1
RST
P0.0/AD0
P2.0/A8
P2.1/A9
P3.5/T1
P2.2/A10
P3.4/T0
P2.3/A11
P3.3/INT1 P2.4/A12
P3.2/INT0 P2.5/A13

P2.6/A14
P1.0
P2.7/A15
P1.1
P1.2
P3.7/RD
P1.3
P3.6/WR
P1.4
PSEN
P1.5
ALE/PROG
P1.6
P3.0/RXD
P1.7
P3.1/TXD

19

CON3
C
C2

4.KHOI
MCU-RAM-DAC

U401

Y1


XTAL1

18

CRYSTAL
RST

9

T1
T0
INT1
INT0

15
14
13
12

P10
P11
P12
P13
P14
P15
P16
P17

1
2

3
4
5
6
7
8

14.KHOI DAY LED

32
33
34
35
36
37
38
39
21
22
23
24
25
26
27
28

D7
D6
D5
D4

D3
D2
D1
D0
A8
A9
A10
A11
A12
A13
A14
A15

17
16
29
30
10
11

/RD
/WR
/PSEN

L0
L1
L2
L3
L4
L5

L6
L7

1
3
5
7
9
11
13
15

JE01

2
4
6
8
10
12
14
16

VCC
L0
L2
L3
L4
L5
L6

L7

CON16A

330

LED

RXD
TXD

AT89C51

J405
RXD
TXD
/RD
/WR
T1
T0
INT1
INT0

1
3
5
7
9
11
13

15

2
4
6
8
10
12
14
16

RXD
TXD
/RD
/WR

T1
T0
INT1
INT0

PORT3

Bước 2: Vẽ lưu đồ giải thuật
Bước 3: Viết chương trình
#include<reg52.h>
#include <stdio.h>
#include <absacc.h>
#include <math.h>
sbit xung = P3^0;

void main()
{
xung=0;
TMOD=0x01;
while(1)
{
TH0=75;
TL0=255;
TR0=1;
while(TF0==0);
xung=!xung;
TR0=0;
TF0=0;
}
}
Bước 4: Biên dịch và nạp vi điều khiển
Bước 5: Gắn vi điều khiển vào mạch, cấp nguồn, xem và nhận xét kết quả hoạt
động của mạch
III. Thực hành với ngôn ngữ C
1. Kết nối mạch và viết chương trình tạo ra 2 sóng vng có tần số 5Hz và 10Hz
trên 2 chân khác nhau của Port 3 của 89S52. Dùng led đơn quan sát
2. Kết nối mạch và viết chương trình điều khiển 8 led đơn chạy sáng dần

18


BÀI 2: BÀN PHÍM MA TRẬN
Mục tiêu của bài:

- Trình bày được cấu trúc của bàn phím ma trận, kết nối với vi điều khiển

- Giải thuật lập trình giao tiếp giữa bàn phím ma trận và vi điều khiển
- Viết chương trình giao tiếp bàn phím ma trận đúng theo yêu cầu kỹ thuật
I. Cấu tạo bàn phím ma trận
Cấu tạo bàn phím ma trận 4x4 (4 hàng x 4 cột) được kết nối như hình sau

Khi nhấn 1 phím bất kỳ thì tín hiệu cột và hàng tại vị trí đó được kết nối. Ví dụ
nhấn phím 1 thì C1=R1
II. Kết nối bàn phím ma trận với vi điều khiển
Kết nối P1 của vi điều khiển với khối bàn phím 4x4 như hình vẽ
Phần hiển thị kết nối với led 7 đoạn

19


III. Giải thuật qt theo mã phím
Viết chương trình hiển thị giá trị phím được nhấn (0-F) lên led 7 đoạn
Giải thuật chương trình con qt phím
QUET PHIM
Mã qt cột = 11111110B
(cho cột 0 là 0)
Số đếm = 4

Xuất mã quét cột ra Port 1
Nhập Port 1 vào A
Xóa các bit cột (4 bit thấp)
Giữ lại các bit hàng (4 bit cao)

Có phím ấn khơng?(có
bit hàng nào = 0?)


Y

1

N
Quay trái mã quét cột
(để có cột kế bằng 0)
Giảm số đếm
N
Số đếm = 0?

Y
Xóa cờ C
2

20


Chương trình con nhận mã (Qt phím chống rung)
- Nếu có phím ấn, cờ C=1 và thanh ghi A chứa mã phím được ấn (00H-0FH)
- Nếu khơng có phím ấn thì C=0
- Chương trình chống rung phím bằng cách lặp lại 50 lần
NHANMA
Lặp = 50
Gọi CT con
QUETPHIM

N

Có phím ấn?

(C=0)

Y
Giảm lặp
N

Lặp = 0?

Y
RET

21


1
Chuyển mã hàng về 4 bit thấp
Xác định STT của cột có phím
nhấn
Mã phím = STT
Bộ đếm = 4
Quay phải thanh ghi A
vào cờ C
C=0?

Y

N
Mã phím = STT + số cột
(số cột = 4)
Giảm bộ đếm

N

Bộ đếm = 0 ?

Y
Gán cờ C = 1
Cất mã phím vào A
2
RET

IV. Thực hành viết chương trình qt phím
#include<reg52.h>
#include <stdio.h>
22


#include <absacc.h>
#include <intrins.h>
unsigned char sophim;
unsigned char r4,r5,r6,r7,r8;
code unsigned char table0[]={0x81,0x7E,0x7E,0x7E,0x81,0xFF,0xFF,0xFF};
code unsigned char table1[]={0x7B,0x7D,0x00,0x7F,0x7F,0xFF,0xFF,0xFF};
code unsigned char table2[]={0x3D,0x5E,0x6E,0x76,0x79,0xFF,0xFF,0xFF};
code unsigned char table3[]={0xBD,0x7E,0x76,0x66,0x89,0xFF,0xFF,0xFF};
code unsigned char table4[]={0xC7,0xDB,0xDD,0x00,0xDF,0xFF,0xFF,0xFF};
code unsigned char table5[]={0xB0,0x76,0x76,0x76,0x8E,0xFF,0xFF,0xFF};
code unsigned char table6[]={0x81,0x76,0x76,0x76,0x8D,0xFF,0xFF,0xFF};
code unsigned char table7[]={0x1E,0xEE,0xF6,0xFA,0xFC,0xFF,0xFF,0xFF};
code unsigned char table8[]={0x89,0x76,0x76,0x76,0x89,0xFF,0xFF,0xFF};
code unsigned char table9[]={0x79,0x76,0x76,0x76,0x81,0xFF,0xFF,0xFF};

code unsigned char tableA[]={0x01,0xF6,0xF6,0xF6,0x01,0xFF,0xFF,0xFF};
code unsigned char tableB[]={0x00,0x76,0x76,0x76,0x89,0xFF,0xFF,0xFF};
code unsigned char tableC[]={0x81,0x7E,0x7E,0x7E,0xBD,0xFF,0xFF,0xFF};
code unsigned char tableD[]={0x00,0x7E,0x7E,0x7E,0x81,0xFF,0xFF,0xFF};
code unsigned char tableE[]={0x00,0x76,0x76,0x76,0x7E,0xFF,0xFF,0xFF};
code unsigned char tableF[]={0x00,0xF6,0xF6,0xF6,0xFE,0xFF,0xFF,0xFF};
code unsigned char tableH[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
void quetphim();
void xuatphim();
void delay1(unsigned long int i)
{
while(i--);
}
void main()
{
while(1)
{
quetphim();
xuatphim();
23


×