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

thiết kế mạch đo nhiệt độ dùng vi điều khiển at89c51 và cảm biến nhiệt ds18b20

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 (5.33 MB, 95 trang )

TRƢỜNG ĐẠI HỌC CẦN THƠ
KHOA SƢ PHẠM
BỘ MÔN SƢ PHẠM VẬT LÝ

----------

THIẾT KẾ MẠCH ĐO NHIỆT ĐỘ DÙNG VI ĐIỀU
KHIỂN AT89C51 VÀ CẢM BIẾN NHIỆT DS18B20

Luận Văn Tốt Nghiệp
Ngành: SƢ PHẠM VẬT LÝ – TIN HỌC

Giáo viên hướng dẫn:

Sinh viên thực hiện:

VƢƠNG TẤN SĨ

PHẠM THÀNH TIẾN
Mã số sinh viên: 1118764
Lớp: TL1134A1
Khóa 37

Cần Thơ, 2015


Luận văn tốt nghiệp

LỜI CẢM ƠN
Để đề tài hoàn thành đạt được kết quả như mong trên không chỉ là sự nỗ lực của bản
thân mà còn có sự chỉ dạy tận tình của quý thầy cô, cùng với sự giúp đỡ của bạn bè.


Đặc biệt, tôi xin chân thành cảm ơn sự hướng dẫn của thầy Vương Tấn Sĩ, thầy đã
tận tình giúp đỡ tôi hoàn thành đề tài nghiên cứu của mình. Thầy giúp tôi định hướng
được mục tiêu của đề tài, chỉ dạy cho tôi biết cách nghiên cứu khoa học, và cách trình
bày bài luận. Ngoài ra, thầy đã dành nhiều thời gian để giúp tôi điều chỉnh những sai sót
trong cả lý thuyết cũng như phần thực hành. Qua đó, tôi đã đúc kết được nhiều kinh
nghiệm và nó sẽ là hành trang quan trọng cho tôi sau này.
Một lần nữa, tôi xin chân thành cảm ơn quý thầy cô và bạn bè đã luôn đồng hành
cùng tôi trong suốt thời gian qua. Tôi xin gửi lời chúc sức khỏe và thành công đến tất cả
mọi người.
Sinh viên thực hiện

Phạm Thành Tiến

GVHD: Vương Tấn Sĩ

SVTH: Phạm Thành Tiến


Luận văn tốt nghiệp

LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu do chính tôi thực hiện. Các số liệu,
kết quả phân tích trong luận văn là hoàn toàn trung thực và chưa từng được công bố trong
bất kỳ công trình nghiên cứu nào trước đây.

Mọi tham khảo, trích dẫn đều được chỉ rõ nguồn trong danh mục tài liệu tham khảo
của luận văn

Cần Thơ, ngày 27 tháng 04 năm 2015
Tác giả


Phạm Thành Tiến

GVHD: Vương Tấn Sĩ

SVTH: Phạm Thành Tiến


Luận văn tốt nghiệp

MỤC LỤC
PHẦN MỞ ĐẦU ....................................................................................... 1
1. LÝ DO CHỌN ĐỀ TÀI ....................................................................................... 1
2. MỤC ĐÍCH NGHIÊN CỨU ............................................................................... 2
3. ĐỐI TƢỢNG NGHIÊN CỨU ............................................................................. 2
4. PHƢƠNG PHÁP NGHIÊN CỨU ....................................................................... 2
5. GIỚI HẠN ĐỀ TÀI ............................................................................................. 2
PHẦN NỘI DUNG .................................................................................... 3
CHƢƠNG 1: TỔNG QUAN VỀ ĐO NHIỆT ĐỘ ..................................................... 3
1. ĐO LƢỜNG ....................................................................................................... 3
2. ĐO NHIỆT ĐỘ.................................................................................................. 3
2.1. Khái niệm về nhiệt độ và thang đo nhiệt độ. ................................................ 3
2.2. Các phƣơng pháp đo nhiệt độ ....................................................................... 4
CHƢƠNG 2: GIỚI THIỆU VI ĐIỀU KHIỂN VÀ VĐK AT89C51 ......................... 6
1. GIỚI THIỆU CHUNG VỀ VI ĐIỀU KHIỂN .................................................... 6
1.1. Khái quát chung về vi khiển: ........................................................................ 6
1.2. Lịch sử phát triển của vi điều khiển.............................................................. 6
1.3. Sơ đồ khối của một bộ vi điều khiển ............................................................ 7
2. KIẾN TRÚC CỦA VI ĐIỀU KHIỂN AT89C51 ............................................... 7
2.1. Cấu trúc bên trong của AT89C51 ................................................................. 8

2.2. Sơ đồ và chức năng các chân AT89C51 ....................................................... 9
2.3. Tổ chức bộ nhớ ........................................................................................... 12
2.4. Phần mềm lập trình vi điều khiển AT89C51 .............................................. 14
CHƢƠNG 3: GIỚI THIỆU NGÔN NGỮ C CHO AT89C51 VÀ KEIL C ............. 16
1. GIỚI THIỆU NGÔN NGỮ C ........................................................................... 16
2. NGÔN NGỮ C CHO VI ĐIỀU KHIỂN AT89C51 .......................................... 16
2.1. Kiểu dữ liệu ................................................................................................ 16
2.2. Phép toán .................................................................................................... 19
2.3. Cấu trúc chƣơng trình C ............................................................................. 21
2.4. Các lệnh cơ bản trong C ............................................................................. 24
3. TRÌNH BIÊN DỊCH KEIL C (COMPILER) .................................................... 26
GVHD: Vƣơng Tấn Sĩ

i

SVTH: Phạm Thành Tiến


Luận văn tốt nghiệp
3.1. Khởi tạo cho Project. .................................................................................. 26
3.2. Soạn thảo chƣơng trình. .............................................................................. 31
3.3. Biên dịch một chƣơng trình. ....................................................................... 31
CHƢƠNG 4: GIỚI THIỆU CÁC LINH KIỆN TRONG MẠCH ............................ 36
1. CẢM BIẾN ĐO NHIỆT ĐỘ DS18B20. ........................................................... 36
2. IC 7805. ............................................................................................................. 40
3. LCD 16x2. ......................................................................................................... 41
4. ĐIỆN TRỞ ........................................................................................................ 43
5. THẠCH ANH. .................................................................................................. 44
6. TỤ DIỆN. .......................................................................................................... 45
CHƢƠNG 5: THIẾT KẾ MẠCH VÀ THI CÔNG ĐỀ TÀI .................................... 47

1. KHỐI NGUỒN ỔN ÁP DÙNG IC 7805 .......................................................... 47
1.1. Sơ đồ nguyên lý của mạch .......................................................................... 47
1.2. Nguyên lý hoạt động của mạch. ................................................................. 47
2. KHỐI ĐIỀU KHIỂN TRUNG TÂM DÙNG IC AT89C51 ............................. 49
2.1. Mạch RESET .............................................................................................. 49
2.2. Mạch tạo dao động...................................................................................... 50
2.3. IC AT89C51 ............................................................................................... 51
3. KHỐI ĐO NHIỆT ĐỘ DÙNG DS18B20 ......................................................... 52
3.1. Sơ đồ khối ................................................................................................... 52
3.2. Nguyên tắc hoạt động: ................................................................................ 52
4. KHỐI HIỂN THỊ LCD 16X2............................................................................ 53
4.1. Sơ đồ nguyên lí ........................................................................................... 53
4.2. Nguyên tắc hoạt động ................................................................................. 54
5. PHẦN MỀM CHƢƠNG TRÌNH .................................................................... 55
6. SƠ ĐỒ MẠCH IN…………………………………………………………..58
7. SƠ ĐỒ MÔ PHỎNG PROTEUS…………..………………………………..59
8. MỘT SỐ HÌNH ẢNH THỰC TẾ VÀ KẾT QUẢ THỰC TẾ……..………..60
PHỤ LỤC 1………………………………………………………………………..62
PHỤ LỤC 2………………………………………………………………………..74
PHẦN KẾT LUẬN ................................................................................. 87
1. VỀ LÝ THUYẾT ................................................................................................ 86
GVHD: Vƣơng Tấn Sĩ

ii

SVTH: Phạm Thành Tiến


Luận văn tốt nghiệp
2. VỀ THỰC NGHIỆM ........................................................................................... 86

3. HẠN CHẾ ........................................................................................................... 86
4. PHƢƠNG HƢỚNG............................................................................................. 86
TÀI LIỆU THAM KHẢO ........................................................................ 87

GVHD: Vƣơng Tấn Sĩ

iii

SVTH: Phạm Thành Tiến


Luận văn tốt nghiệp
Danh sách hình ảnh
Hình 2.1. IC AT89C51
Hình 2.2. Sơ đồ chân IC AT89C51
Hình 3.1. Khởi tạo cho Project
Hình 3.2. Tạo Project mới
Hình 3.3. Đặt tên cho Project mới
Hình 3.4. Chọn vi điều khiển
Hình 3.5. Tạo File chƣơng trình mới
Hình 3.6. Save As file chƣơng trình mới
Hình 3.7. Đặt tên cho file chƣơng trình
Hình 3.8. Bổ sung file chƣơng trình vào Project
Hình 3.9. File chƣơng trình đã đƣợc bổ sung vào Project
Hình 3.10. Chèn thƣ viện vào cho chƣơng trình
Hình 3.11. Chƣơng trình nhảy LED đơn
Hình 3.12. Biên dịch chƣơng trình
Hình 3.13. Biên dịch chƣơng trình thành file HEX
Hình 3.14. Chọn các thông số kỹ thuật cho file HEX
Hình 3.15. Chọn các cổng và thanh ghi

Hình 3.16. Chọn các thông số kỹ thuật cho Port 1
Hình 3.17. Chạy file code
Hình 4.1. Dạng đóng vỏ và bề ngoài của cảm biến DS18B20
Hình 4.2. Sơ đồ bộ nhớ DS18B20
Hình 4.3. IC ổn áp 7805
Hình 4.4. LCD 16x2
Hình 4.5. Kết nối Text LCD
Hình 4.6. Điện trở trong các thiết bị điện tử
Hình 4.7. Ký hiệu của điện trở trên các sơ đồ nguyên lý
Hình 4.8. Cách đọc màu điện trở
Hình 4.9. Thạch anh
Hình 4.10. Ký hiệu tụ phân cực và không phân cực
Hình 4.11. Sơ đồ nạp – phóng của tụ
Hình 4.12. Tụ hóa
Hình 4.13. Tụ xoay
Hình 5.1. Sơ đồ mạch ổn áp dùng IC 7805
Hình 5.2. Sơ đồ mạch vi điều khiển AT89C51
GVHD: Vƣơng Tấn Sĩ

iv

SVTH: Phạm Thành Tiến


Luận văn tốt nghiệp
Hình 5.3. Sơ đồ mạch Reset
Hình 5.4. Sơ đồ mạch Dao động
Hình 5.5. Sơ đồ IC AT89C51
Hình 5.6. Sơ đồ cảm biến DS18B20
Hình 5.7. Sơ đồ nguyên lí LCD 16x2


GVHD: Vƣơng Tấn Sĩ

v

SVTH: Phạm Thành Tiến


Luận văn tốt nghiệp

PHẦN MỞ ĐẦU
1. LÝ DO CHỌN ĐỀ TÀI
Ngày nay, nhân loại đã và đang trải qua những sự phát triển vƣợt bậc về mọi mặt.
Trong đó lĩnh vực điện - điện tử đóng một vai trò không nhỏ. Điện tử góp phần rất
lớn vào quá trình tự động hoá, thực sự đã giúp con ngƣời có những tiến bộ vƣợt
bậc. Trên thế giới, việc ứng dụng điện - điện tử vào cuộc sống với xu hƣớng tối ƣu
hóa, hiện đại hóa nhằm đem lại tiện ích cho con ngƣời đang đƣợc phát triển mạnh.
Tuy vậy ở Việt Nam việc nghiên cứu và ứng dụng các thành tựu của “vi điều
khiển” còn khá mới mẻ trong thời điểm hiện tại. Trong xu hƣớng chung đó, vận
dụng những kiến thức mà tôi đã đƣợc học trong quá trình học tập ở trƣờng cũng
nhƣ tìm hiểu thêm tôi xin thực hiện Luận văn về “Kỹ thuật vi điều khiển” với đề
tài Thiết kế mạch đo nhiệt độ dùng vi điều khiển AT89C51 và cảm biến
DS18B20. Đề tài này đƣợc áp dụng chủ yếu dựa vào vi điều khiển, mà thực tế là
IC AT89C51, với mục đích giúp tôi hiểu một cách tƣờng tận hơn các kiến thức về
vi điều khiển, cách đọc, viết và nhận biết về các chân IC, xây dựng mạch nguyên
lý….
Các ứng dụng của vi điều khiển rất đa dạng và phong phú. Từ những ứng dụng
đơn giản chỉ có vài thiết bị ngoại vi cho đến những hệ thống điều khiển phức tạp.
Tuy nhiên do phạm vi trình độ của tôi còn hạn chế, nên việc nghiên cứu và tìm
hiểu về vi điều khiển còn nhiều vƣớng mắc, do đây là lần đầu tiên áp dụng vào

thực tế nên việc học hỏi và tìm hiểu còn gặp nhiều khó khăn hơn. Trong quá trình
làm đề tài tôi xin chân thành cám ơn thầy Vƣơng Tấn Sĩ đã tận tình chỉ bảo, định
hƣớng cho tôi hoàn thành tốt luận văn này.
Xin chân thành cảm ơn!

Cần Thơ, tháng 5 năm 2015

GVHD: Vƣơng Tấn Sĩ

1

SVTH: Phạm Thành Tiến


Luận văn tốt nghiệp

2. MỤC ĐÍCH NGHIÊN CỨU
Nghiên cứu và khảo sát về IC AT89C51 và ứng dụng nó vào thiết kế mạch đo nhiệt
độ để vận dụng vào đời sống.

3. ĐỐI TƢỢNG NGHIÊN CỨU
IC AT89C51 và mạch đo nhiệt độ dùng cảm biến nhiệt DS18B20.

4. PHƢƠNG PHÁP NGHIÊN CỨU
Kết hợp nghiên cứu lý thuyết, thực hành trên máy vi tính và thực hành lắp ráp mạch
điện tử ứng dụng của IC AT89C51 với cảm biến nhiệt DS18B20 trên thực tế.

5. GIỚI HẠN ĐỀ TÀI
Trong phạm vi của đề tài là thiết kế và thi công mạch với chức năng đo nhiệt độ
môi trƣờng với sự hỗ trợ của IC AT89C51 và cảm biến nhiệt độ DS18B20. Chức

năng chính của đề tài này là dùng DS18B20 đo nhiệt độ của môi trƣờng thông qua
chức năng xử lý của IC AT89C51, việc hiển thị giá trị nhiệt độ đƣợc hiển thị trực
tiếp trên màn hình LCD. Là một sinh viên sƣ phạm Vật lý, ít đƣợc làm quen với kỹ
thuật điện tử vì vậy việc nghiên cứu đề tài về lĩnh vực điện tử đối với tôi gần nhƣ
bƣớc vào một thế giới kiến thức mới, rất đa dạng và phong phú. Tôi hy vọng qua đề
tài này có thể giúp các bạn sinh viên không chuyên về điện tử có thể hiểu đƣợc
phần nào về kỹ thuật điện tử vô cùng hấp dẫn và những ứng dụng rất rộng rãi của
nó, qua đó hình thành lòng say mê và hứng thú tìm hiểu về kỹ thuật điện tử. Mặc dù
đã cố gắng rất nhiều trong việc thực hiện đề tài, nhƣng do đây là lần đầu nghiên cứu
về kỹ thuật điện tử và thời gian có hạn nên chắc chắn đề tài không thể tránh khỏi
thiếu sót. Kính mong đƣợc sự thông cảm, giúp đỡ của các thầy cô, bạn bè và hội
đồng bảo vệ. Tôi xin chân thành cảm ơn!

GVHD: Vƣơng Tấn Sĩ

2

SVTH: Phạm Thành Tiến


Luận văn tốt nghiệp

PHẦN NỘI DUNG
CHƢƠNG 1: TỔNG QUAN VỀ ĐO NHIỆT ĐỘ
1. ĐO LƢỜNG
Đo lƣờng là một quá trình đánh giá định hƣớng đại lƣợng cần đo để có kết quả bằng
số với đơn vị đo.
Kết quả đo lƣờng là giá trị bằng số của đại lƣợng cần đo Ax, nó bằng tỷ số của đại
lƣợng cần đo X và đơn vị đo X0.
Vậy quá trình có thể viết dƣới dạng:

AX 

X
 X  AX .X 0
X0

Đây là phƣơng trình cơ bản của phép đo, nó chỉ rõ sự so sánh đại lƣợng cần đo với
mẫu và cho ra kết quả bằng số.
Quá trình đo đƣợc tiến hành thông qua các thao tác cơ bản về đo lƣờng sau:
- Thao tác xác định mẫu và thành lập mẫu.
- Thao tác so sánh.
- Thao tác biến đổi
- Thao tác thể hiện kết quả hay chỉ thị.
Phân loại các cách thực hiện phƣơng pháp đo.
+ Đo trực tiếp: là cách đo mà kết quả nhận đƣợc trực tiếp từ một phép đo duy nhất.
+ Đo gián tiếp: là cách đo mà kết quả đo đƣợc suy ra từ phép đo, từ sự phối hợp của
nhiều phép đo trực trực tiếp.
+ Đo thống kê: là phép đo nhiều lần một đại lƣợng nào đó, trong cùng một điều kiện và
cùng một giá trị. Từ đó dung phép tính xác suất để thể hiện kết quả đo có độ chính xác
cần thiết. [1]

2. ĐO NHIỆT ĐỘ
2.1 Khái niệm về nhiệt độ và thang đo nhiệt độ.
Nhiệt độ là đại lƣợng vật lí đặc trƣng cho mức chuyển động hỗn loạn của các phần tử
trong các vật thể.
Để đo đƣợc nhiệt độ thì phải có dụng cụ đo, thông thƣờng trong công nghiệp nhiệt độ
đƣợc đo bằng cảm biến và phƣơng pháp này tiện lợi là có thể truyền tín hiệu nhiệt độ đi
xa, không ảnh hƣởng tới sự làm việc của hệ thống khi cần xác định nhiệt độ.
Để đo chính xác nhiệt độ thì cần có hiệu số Tx – T là cực tiểu với Tx là nhiệt độ cần
đo, T là nhiệt độ của cảm biến đặt trong môi trong môi trƣờng cần đo.

GVHD: Vƣơng Tấn Sĩ

3

SVTH: Phạm Thành Tiến


Luận văn tốt nghiệp
Khi cảm biến đƣợc đặt trong môi trƣờng cần đo nhiệt độ, thì nhiệt lƣợng cảm biến hấp
thụ từ môi trƣờng tỷ lệ với độ chênh lệch nhiệt giữa cảm biến và môi trƣờng theo biểu
thức:
dQ = a. A(Tx- T)dt
với a là độ dẫn nhiệt, A là diện tích bề mặt truyền nhiệt. [1]
2.2 Các phƣơng pháp đo nhiệt độ
Cùng với sự ra đời và phát triển mạnh mẽ của các hệ vi xử lý, việc đo nhiệt độ áp
dụng vi xử lý, vi điều khiển đã mở ra nhiều hƣớng, đƣa đến nhiều phƣơng pháp khác
nhau, linh hoạt và chính xác hơn. Có nhiều cách để đo nhiệt độ, trong đó có thể liệt kê
một số phƣơng pháp sau đây:
- Phƣơng pháp quang dựa trên sự phân bố bức xạ nhiệt do dao động nhiệt (do hiệu
ứng Doppler).
- Phƣơng pháp cơ dựa trên sự dãn nở của vật rắn, của chất lỏng hoặc khí (với áp
suất không đổi), hoặc dựa trên tốc độ âm.
- Phƣơng pháp dựa trên sự phụ thuộc của điện trở vào nhiệt độ, hiệu ứng Seebeck,
hoặc dựa trên sự thay đổi tần số dao động của thạch anh. [1]
Trƣớc tiên nói về các cảm biến nhiệt độ, đó là các cảm biến đƣợc sử dụng vào các
quá trình nhiệt nhƣ: đốt nóng, làm lạnh, trao đổi nhiệt.v.v. .Đại lƣợng vào của cảm biến
nhiệt độ là nhiệt độ và đại lƣợng ra là tín hiệu điện (dòng, áp). Một số cảm biến thƣờng
sử dụng:
+ Nhiệt điện trở: nguyên lý làm việc là có điện trở thay đổi theo sự thay đổi nhiệt độ
của nó. Tuỳ theo tác dụng nhiệt của dòng điện cung cấp chạy qua chuyển đổi ngƣời ta

phân ra: nhiệt điện trở đốt nóng và nhiệt điện trở không đốt nóng.


Nhiệt điện trở đốt nóng, dòng điện chạy qua rất lớn làm nhiệt độ của nó tăng
lên cao hơn nhiệt độ môi trƣờng (1000C – 8000C), nên có sự toả nhiệt ra môi
trƣờng xung quanh, nhƣ nhiệt dẫn, đối lƣu, bức xạ.

 Nhiệt điện trở không đốt nóng, dòng điện chạy qua rất nhỏ không làm tăng
nhiệt độ của điện trở và nhệt độ của nó bằng nhiệt độ môi trƣờng. Nhiệt điện
trở loại này dùng để đo nhiệt độ và các đại lƣợng cơ học nhƣ đo di chuyển.
 Nhiệt điện trở phân làm hai loại: nhiệt điện trở dây (nhiệt điện trở đồng, nhiệt
điện trở Platin, nhiệt điện trở Niken) và nhiệt điện trở bán dẫn.
+ Cặp nhiệt điện: nguyên lý làm việc dựa trên 2 hiệu ứng: Thomson và Seebeck ứng
dụng của cặp nhiệt điện chủ yếu để đo nhiệt độ, ngoài ra nó còn dƣợc dùng để đo các đại
lƣợng không điện và điện khác nhƣ: đo dòng điện ở tần số cao, đo hƣớng chuyển động và
lƣu lƣợng của các dòng chảy, đo di chuyển, đo áp suất nhỏ.
+ Cảm biến nhiệt độ dùng đặc tính diode và tranzitor. [1]

GVHD: Vƣơng Tấn Sĩ

4

SVTH: Phạm Thành Tiến


Luận văn tốt nghiệp
Đo nhiệt độ là nhiệm vụ thƣờng gặp trong các ngành nhiệt học, hoá học, luyện
kim...Tuỳ theo nhiệt độ đo mà có thể dùng các phƣơng pháp đo khác nhau. Thông thƣờng
nhiệt độ đo đƣợc chia thành 3 dải: nhiệt độ thấp, nhiệt độ trung bình và nhiệt độ cao. Ở
nhiệt độ trung bình và thấp, phƣơng pháp đo thƣờng là tiếp xúc nghĩa là các chuyển đổi

đƣợc đặt trực tiếp ở ngay môi trƣờng cần đo. Đối với nhiệt độ cao, đo bằng phƣơng pháp
không tiếp xúc, nghĩa là dụng cụ đo đặt ngoài môi trƣờng đo. Một trong số những cách
đó là đo nhiệt độ không tiếp xúc sử dụng cảm biến DS18B20.

GVHD: Vƣơng Tấn Sĩ

5

SVTH: Phạm Thành Tiến


Luận văn tốt nghiệp

CHƢƠNG 2: GIỚI THIỆU VI ĐIỀU KHIỂN VÀ VĐK AT89C51
1. GIỚI THIỆU CHUNG VỀ VI ĐIỀU KHIỂN
1.1. Khái quát chung về vi điều khiển:
Bộ vi điều khiển viết tắt là Micro-controller, là mạch tích hợp trên một chip có thể lập
trình đƣợc, dùng để điều khiển hoạt động của một hệ thống. Theo chƣơng trình điều
khiển đã nạp sẵn bên trong chip, bộ vi điều khiển tiến hành đọc, lƣu trữ thông tin, xử lý
thông tin, sau đó dựa vào kết quả của quá trình xử lý để đƣa ra các thông báo, tín hiệu
điều khiển tiến hành điều khiển quá trình hoạt động của các thiết bị bên ngoài. Vi điều
khiển đƣợc ứng dụng trong rất nhiều sản phẩm công nghiệp và tiêu dùng. Trong các thiết
bị điện và điện tử dân dụng, các bộ vi điều khiển điều khiển hoạt động của TV, máy giặt,
đầu đọc laser, điện thoại, lò vi-ba... Trong hệ thống sản xuất tự động, bộ vi điều khiển
đƣợc sử dụng trong Robot, dây chuyền tự động. Các hệ thống càng thông minh thì vai trò
của hệ vi điều khiển càng quan trọng. [2]
1.2. Lịch sử phát triển của vi điều khiển
Bộ vi điều khiển thực ra là một loại vi xử lí trong tập hợp các bộ vi xử lý nói
chung. Bộ vi điều khiển đƣợc phát triển từ bộ vi xử lí, từ những năm 1970 do sự phát
triển và hoàn thiện về công nghệ vi điện tử dựa trên kỹ thuật MOS (Metal-OxideSemiconductor), mức độ tích hợp của các linh kiện bán dẫn trong một chip ngày càng

cao.
Năm 1971 xuất hiện bộ vi xử lí 4 bit loại TMS1000 do công ty Texas Instruments
vừa là nơi phát minh vừa là nhà sản xuất. Nhìn tổng thể thì bộ vi xử lý chỉ có chứa trên
một chip những chức năng cần thiết để xử lý chƣơng trình theo một trình tự, còn tất cả bộ
phận phụ trợ khác cần thiết nhƣ: bộ nhớ dữ liệu, bộ nhớ chƣơng trình, bộ chuyển đổi AD,
khối điều khiển, khối hiển thị, điều khiển máy in, nối đồng hồ và lịch là những linh kiện
nằm ở bên ngoài đƣợc nối vào bộ vi xử lý.
Mãi đến năm 1976 công ty INTEL (Intelligent-Elictronics) mới cho ra đời bộ vi
điều khiển đơn chip đầu tiên trên thế giới với tên gọi 8048. Bên cạnh bộ xử lý trung tâm,
8048 còn chứa bộ nhớ dữ liệu, bộ nhớ chƣơng trình, bộ đếm và phát thời gian, các cổng

GVHD: Vƣơng Tấn Sĩ

6

SVTH: Phạm Thành Tiến


Luận văn tốt nghiệp
vào ra digital trên một chip. Các công ty khác cũng lần lƣợc cho ra đời các bộ vi điều
khiển 8 bit tƣơng tự nhƣ 8048 và hình thành họ vi điều khiển MCS-48.
Đến năm 1980 công ty INTEL cho ra đời thế hệ thứ hai của bộ vi điều khiển đơn
chip với tên gọi 8051. Và sau đó hàng loạt các vi điều khiển cùng loại với 8051 ra đời và
hình thành họ vi điều khiển MCS-51 .
Đến nay họ vi điều khiển 8 bit MCS-51 đã có đến 250 thành viên và hầu hết các
công ty hàng đầu thế giới chế tạo. Đứng đầu là công ty INTEL và rất nhiều công ty khác
nhƣ: AMD, SIEMENS, PHILIPS, DALLAS, OKI …[2]
1.3. Sơ đồ khối của một bộ vi điều khiển
Sơ đồ khối chung của hầu hết các bộ vi điều khiển bao gồm CPU, bộ nhớ ROM hay
EPROM và RAM, mạch giao tiếp, mạch giao tiếp song song, bộ định thời gian, hệ thống

ngắt và các BUS đƣợc tích hợp trên cùng một chip.

2. KIẾN TRÚC CỦA VI ĐIỀU KHIỂN AT89C51
IC vi điều khiển AT89C51 thuộc họ MCS-51 có các đặc điểm sau :
+ 4 kbyte ROM
+ 128 byte RAM
+ 4 port I/0 8 bit
+ Hai bộ định thời 16 bits
+ Giao tiếp nối tiếp
+ Quản lý đƣợc 64K bộ nhớ chƣơng trình bên ngoài

Hình 2.1. IC AT89C51

+ Quản lý đƣợc 64K bộ nhớ dữ liệu bên ngoài
+ 210 vị trí nhớ đƣợc định địa chỉ bit
+ Thực hiện phép nhân/chia trong 4s

GVHD: Vƣơng Tấn Sĩ

7

SVTH: Phạm Thành Tiến


Luận văn tốt nghiệp
2.1. Cấu trúc bên trong của AT89C51
EXTERNAL
ON - CHIP

INTERRUPT


RAM

ETC
TIMER 0
TIMER 1

CONTROL

COUNTER INPUTS

INTERRUPTS

CPU

BUS

4 I/O

SERIAL

CONTROL

PORTS

PORT

OSC

P0 P1 P2 P3


TXD

RXD

ADDRESS/DATA

Sơ Đồ Khối AT89C51
Phần chính của vi điều khiển AT89C51 là bộ xử lí trung tâm (CPU: central processing
unit) bao gồm:
+ Thanh ghi tích lũy A
+ Thanh ghi tích lũy phụ B, dùng cho phép nhân và phép chia
+ Đơn vị logic học (ALU: Arithmetic Logical Unit)
+ Từ trạng thái chƣơng trình (PSW: Prorgam Status Word)
+ Bốn băng thanh ghi
+ Con trỏ ngăn xếp
+ Ngoài ra còn có bộ nhớ chƣơng trình, bộ giải mã lệnh, bộ điều khiển thời gian và
logic.
Đơn vị xử lí trung tâm nhận trực tiếp xung từ bộ dao động, ngoài ra còn có khả
năng đƣa một tín hiệu giữ nhịp từ bên ngoài. Chƣơng trình đang chạy có thể cho dừng lại
nhờ một khối điều khiển ngắt ở bên trong. Các nguồn ngắt có thể là: các biến cố ở bên
ngoài, sự tràn bộ đếm định thời hoặc cũng có thể là giao diện nối tiếp.
Hai bộ định thời 16 bit hoạt động nhƣ một bộ đếm.
GVHD: Vƣơng Tấn Sĩ

8

SVTH: Phạm Thành Tiến



Luận văn tốt nghiệp
Các cổng (port 0, 1, 2, 3), sử dụng vào mục đích điều khiển. Ở cổng 3 có thêm các
đƣờng dẫn điều khiển dùng để trao đổi với một bộ nhớ bên ngoài, hoặc để đầu nối giao
diện nối tiếp, cũng nhƣ các đƣờng ngắt dẫn bên ngoài. Giao diện nối tiếp có chứa một bộ
truyền và một bộ nhận không đồng bộ, làm việc độc lập với nhau. Tốc độ truyền qua
cổng nối tiếp có thể đặt trong dải rộng và đƣợc ấn định bằng một bộ định thời.
Trong vi điều khiển AT89C51 có hai thành phần quan trọng khác đó là bộ nhớ và
các thanh ghi:
+ Bộ nhớ gồm có bộ nhớ RAM và bộ nhớ ROM 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 xử lí. Khi CPU làm việc nó
làm thay đổi nội dung của các thanh ghi. [3]
2.2 Sơ đồ và chức năng các chân AT89C51
Sơ đồ các chân ra trên vỏ của các vi mạch MCS-51 nhƣ hình dƣới đây
U2
31
C1

30p
19

EA/VP

P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7


X1

12MHz
C2

30p

RST

18
9
12
13
14
15
1
2
3
4
5
6
7
8

X2
RESET

P2.0
P2.1

P2.2
P2.3
P2.4
P2.5
P2.6
P2.7

INT0
INT1
T0
T1
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7

RD
WR
PSEN
ALE/P
TXD
RXD

39
38
37

36
35
34
33
32
21
22
23
24
25
26
27
28
17
16
29
30
11
10

8051

Hình 2.2. Sơ đồ chần IC AT89C51
Vi điều khiển AT89C51 có 32 trong 40 chân có chức năng nhƣ là các cổng I/O,
trong đó 24 chân đƣợc sử dụng với hai mục đích. Nghĩa là ngoài chức năng cổng I/O,
mỗi chân có công dụng kép này có thể là một đƣờng điều khiển của Bus địa chỉ hay Bus
dữ liệu hoặc là mỗi chân hoạt động mọt cách độc lập để giao tiếp với các thiết đơn bit
nhƣ là công tắc, LED, transistor…

GVHD: Vƣơng Tấn Sĩ


9

SVTH: Phạm Thành Tiến


Luận văn tốt nghiệp
a.Port0: là port có 2 chức năng, ở trên chân từ 32 đến 39 của AT89C51. Trong các
thiết kế cỡ nhỏ không dùng bộ nhớ ngoài, P0 đƣợc sử dụng nhƣ là những cổng I/O. Còn
trong các thiết kế lớn có yêu cầu một số lƣợng đáng kể bộ nhớ ngoài thì P0 trở thành các
đƣờng truyền dữ liệu và 8 bit thấp của bus địa chỉ.
b. Port1: là một port I/O chuyên dụng, trên các chân 1-8 của AT89C51. Chúng
đƣợc sử dụng với một múc đích duy nhất là giao tiếp với các thiết bị ngoài khi cần thiết.
c. Port2: là một cổng có công dụng kép trên các chân 21 – 28 của AT89C51. Ngoài
chức năng I/O, các chân này dùng làm 8 bit cao của bus địa chỉ cho những mô hình thiết
kế có bộ nhớ chƣơng trình ROM ngoài hoặc bộ nhớ dữ liệu RAM có dung lƣợng lớn hơn
256 byte.
d. Port3: là một cổng có công dụng kép trên các chân 10 – 17 của AT89C51. Ngoài
chức năng là cổng I/O, những chân này kiêm luôn nhiều chức năng khác nữa liên quan
đến nhiều tính năng đặc biệt của AT89C51, đƣợc mô tả trong bảng sau:

Bit

Tên

Chức năng chuyển đổi

P3.0

RxD


Ngõ vào dữ liệu nối tiếp.

P3.1

TxD

Ngõ xuất dữ liệu nối tiếp.

P3.2

INT 0

Ngắt ngoài 0.

P3.3

INT 1

Ngắt ngoài 1.

P3.4

T0

Ngõ vào TIMER 0.

P3.5

T1


Ngõ vào của TIMER 1.

P3.6
P3.7

ÖWR
RD

Điều khiển ghi dữ liệu lên bộ nhớ ngoài.
Điều khiển đọc bộ nhớ dữ liệu ngoài.

Chức năng của các chân trên port3
e. PSEN (Program Store Enable): AT89C51 có 4 tín hiệu điều khiển, PSEN là tín
hiệu ra trên chân 29. Nó là tín hiệu điều khiển để cho phép truy xuất bộ nhớ chƣơng trình
mở rộng và thƣờng đƣợc nối đến chân OE (Output Enable) của một EPROM để cho phép
đọc các byte mã lệnh của chƣơng trình. Tín hiệu PSEN ở mức thấp trong suốt phạm vi
quá trình của một lệnh. Các mã nhị phân của chƣơng trình đƣợc đọc từ EPROM qua bus
GVHD: Vƣơng Tấn Sĩ

10

SVTH: Phạm Thành Tiến


Luận văn tốt nghiệp
và đƣợc chốt vào thanh ghi lệnh của AT89C51 để giải mã lệnh. Khi thi hành chƣơng
trình trong ROM nội PSEN sẽ ở mức cao.
f. ALE (Address Latch Enable ): Tín hiệu ra ALE trên chân 30 tƣơng hợp với các
thiết bị làm việc với các xử lý 8585, 8088. AT89C51 dùng ALE để giải đa hợp bus địa

chỉ và dữ liệu, khi port 0 đƣợc dùng làm bus địa chỉ/dữ liệu đa hợp: vừa là bus dữ liệu
vừa là byte thấp của địa chỉ 16 bit . ALE là tín hiệu để chốt địa chỉ vào một thanh ghi bên
ngoài trong nữa đầu của chu kỳ bộ nhớ. Sau đó, các đƣờng Port 0 dùng để xuất hoặc nhập
dữ liệu trong nữa sau chu kỳ của chu kỳ bộ nhớ.
Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip và có thể
đƣợc dùng là nguồn xung nhịp cho các hệ thống. Nếu xung trên 8951 là 12MHz thì ALE
có tần số 2MHz. Chân này cũng đƣợc làm ngõ vào cho xung lập trình cho EPROM trong
AT89C51.
g. EA (External Access): Tín hiệu vào EA trên chân 31 thƣờng đƣợc nối lên mức
cao (+5V) hoặc mức thấp (GND). Nếu ở mức cao, AT89C51 thi hành chƣơng trình từ
ROM nội trong khoảng địa chỉ thấp (4K). Nếu ở mức thấp, chƣơng trình chỉ đƣợc thi
hành từ bộ nhớ mở rộng. Ngƣời ta còn dùng chân EA làm chân cấp điện áp 21V khi lập
trình cho EPROM trong AT89C51.
h. RST (Reset): Ngõ vào RST trên chân 9 là ngõ reset của AT89C51. Khi tín hiệu
này đƣợc đƣa lên mức cao (trong ít nhất 2 chu kỳ máy), các thanh ghi trong AT89C51
đƣợc đƣa vào những giá trị thích hợp để khởi động hệ thống.
i.OSC: AT89C51 có một bộ dao động trên chip, nó thƣờng đƣợc nối với thạch anh
giữa hai chân 18 và 19. Tần số thạch anh thông thƣờng là 12MHz.
j.POWER: AT89C51 vận hành với nguồn đơn +5V. Vcc đƣợc nối vào chân 40 và
Vss (GND) đƣợc nối vào chân 20. [4]

GVHD: Vƣơng Tấn Sĩ

11

SVTH: Phạm Thành Tiến


Luận văn tốt nghiệp
2.3. Tổ chức bộ nhớ:

Bộ nhớ của AT89C51 bao gồm :bộ nhớ trong và bộ nhớ ngoài.

- Khi /EA đƣợc nối với +5V thì bộ nhớ ngoài không đƣợc dùng, AT89C51 chỉ
truy nhập EEPROM trong để đọc mã chƣơng trình và cất số liệu vào RAM trong. Khi
/EA đƣợc nối đất thì bộ nhớ chƣơng trình ROM trong không đƣợc dùng, AT89C51 đọc
mã chƣơng trình từ bộ nhớ chƣơng trình ngoài bằng tín hiệu /PSEN, còn bộ nhớ số liệu
ngoài đƣợc truy nhập bằng các tín hiệu /WR và /RD, do có bộ nhớ chƣơng trình và bộ
nhớ số liệu ngoài có thể dùng chung bus địa chỉ A0 A15. Bộ nhớ số liệu trong của
AT89C51 có địa chỉ từ 00h đến FFh, trong đó nhóm 8052 có đủ 256 byte RAM, nhóm
8051 chỉ có 128 byte RAM ở các địa chỉ thấp từ 00h đến 7fh, vùng địa chỉ cao từ 80h đến
FFh đƣợc dành cho các thanh ghi chức năng đặc biệt SFR. Tổ chức vùng 128 byte thấp
bộ nhớ số liệu RAM trong của AT89C51 nhƣ trên hình 3, nó đƣợc chia thành ba miền.
- Miền các băng thanh ghi chiếm địa chỉ từ 00h đến 1fh có 32 byte chia thành
băng, mỗi băng có 8 thanh ghi đƣợc đánh số từ R0 đến R7.
- Tại mỗi thời điểm chỉ có một băng thanh ghi có thể truy nhập và đƣợc gọi là
băng tích cực. Để chọn băng tích cực cần nạp giá trị thích hợp cho các bít RS0 và RS1
của thanh ghi từ trạng thái PSW, mặc định bằng 0 là tích cực. Miền RAM đƣợc định địa
chỉ bít có 16 byte 8 bít = 128 bít, chiếm địa chỉ từ 20h đến 1fh. Mỗi bít ở miền này đƣợc
GVHD: Vƣơng Tấn Sĩ

12

SVTH: Phạm Thành Tiến


Luận văn tốt nghiệp
định địa chỉ riêng từ 00h đến 7fh nên có thể truy nhập đến từng bít riêng rẽ bằng các lệnh
xử lý bít. Vùng RAM đƣợc định địa chỉ bít và các lệnh xử lý bít là một trong những đặc
tính nổi bật đem lại sức mạnh cho vi điều khiển AT89C51.
- Miền RAM thông thƣờng có 80 byte chiếm địa chỉ từ 30h đến 7fh. Các thanh ghi

chức năng đặc biệt (viết tắt theo tiếng Anh là SFR) là tập các thanh ghi bên trong của bộ
vi điều khiển. AT89C51 định địa chỉ cho tất cả các SFR ở vùng 128 byte cao của bộ nhớ
số liệu trong, mỗi SFR có tên gọi và địa chỉ riêng, một số SFR có định địa chỉ cho từng
bít. Khi bật nguồn hoặc RESET, tất cả các SFR đều đƣợc nạp giá trị đầu, sau đó chƣơng
trình cần nạp lại giá trị cho các SFR cần dùng theo yêu cầu sử dụng.
- Việc truy nhập đến các SFR chỉ có thể thực hiện bằng phƣơng pháp địa chỉ trực
tiếp với tên gọi hoặc địa chỉ của SFR là toán hạng của lệnh. Với các SFR có định địa chỉ
bít, có thể truy nhập và thay đổi trực tiếp từng bít của nó bằng các lệnh xừ lý bít. Bảng 2
cho biết thông tin chủ yếu về các SFR.
- Ở nhóm 8051 vùng 128 byte cao của bộ nhớ số liệu trong chỉ có các SFR, không
tồn tại các ô nhớ khác ở vùng nhớ này. Ở nhóm 8052 bộ nhớ số liệu trong có 256 byte
RAM, các ô nhớ của vùng RAM 128 byte cao chỉ có thể truy nhập đƣợc bằng phƣơng
pháp địa chỉ gián tiếp, còn các SFR cũng có địa chỉ nằm trong vùng đó nhƣng chỉ truy
nhập đƣợc bằng phƣơng pháp địa chỉ trực tiếp, vì thế việc truy nhập chúng không bị xung
đột và nhầm lẫn. [4]

GVHD: Vƣơng Tấn Sĩ

13

SVTH: Phạm Thành Tiến


Luận văn tốt nghiệp
RAM
7F
RAM đa dụng

30
2F

2E
2D
2C
2B
2A
29
28
27
26
25
24
23
22
21
20
1F
18
17
10
0F
08
07
00

7F
77

7E
76


7D 7C
75 74

7B 7A
73 72

79
71

78
70

6F

6E

6D 6C

6B 6A

69

68

67
5F
57
4F
47
3F

37
2F
27
1F
17
0F
07

66
5E
56
4E
46
3E
36
2E
26
1E
16
0E
06

65
5D
55
4D
45
3D
35
2D

25
1D
15
0D
05

63
5B
53
4B
43
3B
33
2B
23
1B
13
0B
03

61
59
51
49
41
39
31
29
21
19

11
09
01

60
58
50
48
40
38
30
28
20
18
10
08
00

64
5C
54
4C
44
3C
34
2C
24
1C
14
0C

04

62
5A
52
4A
42
3A
32
2A
22
1A
12
0A
02

BANK 3
BANK 2
BANK 1
Default register
Bank for ROR7

2.4. Phần mềm lập trình vi điều khiển AT89C51
- Có thể viết trên ngôn ngữ Assembler hoặc các ngôn ngữ bậc cao khác nhƣ C, Basic,
Forth... Tập lệnh Assembler của họ AT89C51 có 83 lệnh, đƣợc chia thành 5 nhóm là các
lệnh số học, các lệnh logic, các lệnh chuyển số liệu, các lệnh xử lý bít và các lệnh rẽ
nhánh. Các lệnh xứ lý bít là điểm mạnh cơ bản của AT89C51, vì chúng làm cho chƣơng
trình ngắn gọn hơn và chạy nhanh hơn. Chƣơng trình Assembler đƣợc viết trên máy tính,
sau đó phải dịch ra mã máy của AT89C51 bằng trình biên dịch ASM51, rồi mới nạp.
GVHD: Vƣơng Tấn Sĩ


14

SVTH: Phạm Thành Tiến


Luận văn tốt nghiệp
Chƣơng trình mã máy vào bộ nhớ cho trình EEPROM (hoặc EPROM) ở bên trong hoặc
bên ngoài AT89C51. Khi lập trình bằng ngôn ngữ bậc cao nhƣ C, Basic, Forth.... cũng
phải dịch chúng ra mã máy của họ AT89C51 bằng các trình biên dịch tƣơng ứng, sau đó
nạp chƣơng trình mã máy vào bộ nhớ chƣơng trình. Nói chung, chƣơng trình viết trên
ngôn ngữ Assembler khó hơn viết trên ngôn ngữ bậc cao, nhƣng khi dịch ra mã máy sẽ
ngắn gọn hơn và chạy nhanh hơn các chƣơng trình viết trên ngôn ngữ bậc cao. Để viết và
nạp phần mềm cho AT89C51, bạn phải có các công cụ là máy vi tính, trình biên dịch
ngôn ngữ sử dụng ra mã máy của AT89C51 và bộ nạp chƣơng trình mã máy từ máy tính
vào bộ nhớ chƣơng trình EEPROM trong AT89C51 hoặc bộ nhớ EPROM ngoài.

GVHD: Vƣơng Tấn Sĩ

15

SVTH: Phạm Thành Tiến


Luận văn tốt nghiệp

CHƢƠNG 3: GIỚI THIỆU NGÔN NGỮ C CHO AT89C51 VÀ
TRÌNH BIÊN DỊCH KEIL C
1. GIỚI THIỆU NGÔN NGỮ C
Trong kỹ thuật lập trình vi điều khiển nói chung, ngôn ngữ lập trình đƣợc sử dụng

thƣờng chia làm 2 loại: Ngôn ngữ bậc thấp và Ngôn ngữ bậc cao.
Ngôn ngữ bậc cao là các ngôn ngữ gần với ngôn ngữ con ngƣời hơn, do đó việc
lập trình bằng các ngôn ngữ này trở nên dễ dàng và đơn giản hơn. Có thể kể đến một số
ngôn ngữ lập trình bậc cao nhƣ C, Basic, Pascal… trong dó C là ngôn ngữ thông dụng
hơn cả trong kỹ thuật vi điều khiển. Về bản chất, sử dụng các ngôn ngữ này thay cho
ngôn ngữ bậc thấp là giảm tải cho lập trình viên trong việc nghiên cứu các tập lệnh và
xây dựng các cấu trúc giải thuật. Chƣơng trình viết bằng ngôn ngữ bậc cao cũng sẽ đƣợc
một phần mềm trên máy tính gọi là trình biên dịch (Compiler) chuyển sang dạng hợp ngữ
trƣớc khi chuyển sang mã máy.
Khi sử dụng ngôn ngữ C ngƣời lập trình không cần hiểu sâu sắc về cấu trúc của bộ
vi điều khiển. Có nghĩa là với một ngƣời chƣa quen với một vi điểu khiển cho trƣớc sẽ
xây dựng đƣợc chƣơng trình một cách nhanh chóng hơn, do không phải mất thời gian tìm
hiểu kiến trúc của vi điều khiển đó. Và việc sử dụng lại các chƣơng trình đã xây dựng
trƣớc đó cũng dễ dàng hơn, có thể sử dụng toàn bộ hoặc sửa chữa một phần.

2. NGÔN NGỮ C CHO VI ĐIỀU KHIỂN
2.1 Kiểu dữ liệu
2.1.1 Kiểu dữ liệu trong C
TT

Kiểu dữ liệu
(Type)

Kích thƣớc
(Length)

Miền giá trị (Range)

1


unsigned char

1 byte

0 đến 255

2

char

1 byte

-128 đến 127

3

enum

2 bytes

4

unsigned int

2 bytes

0 đến 65,535

5


short int

2 bytes

-32,768 đến 32,767

6

int

2 bytes

-32,768 đến 32,767

7

unsigned long

4 bytes

0 đến 4,294,967,295

8

long

4 bytes

-2,147,483,648 đến 2,147,483,647


9

float

4 bytes

3.4*10-38 đến 3.4*1038

10

double

8 bytes

1.7*10-308 đến 1.7*10308

11

long double

10 bytes

3.4*10-4932 đến 1.1*104932

GVHD: Vƣơng Tấn Sĩ

-32,768 đến 32,767

16


SVTH: Phạm Thành Tiến


Luận văn tốt nghiệp
* Khai báo biến:
- Cú pháp: Kiểu_dữ_liệu Vùng_nhớ Tên_biến _at_ Đia_chỉ;
Ví dụ: Unsigned char data x;
- Khi khai báo biến có thể gán luôn cho biến giá trị ban đầu.
Ví dụ: Thay vì: unsigned char x; x = 0;
Ta chỉ cần: unsigned char x = 0;
- Có thể khai báo nhiều biến cùng một kiểu một lúc. Ví dụ: unsigned int x,y,z,t;
- Chỉ định vùng nhớ: từ khoá “Vùng_nhớ” cho phép ngƣời dùng có thể chỉ ra vùng
nhớ sử dụng để lƣu trữ các biến sử dụng trong chƣơng trình. Các vùng nhớ có thể sử
dụng là: CODE, DATA, DATAB, IDATA, PDATA, XDTA. Khi không khai báo
vùng nhớ trình dịch Keil C sẽ mặc định đó là vùng nhớ DATA. [4]
Ý nghĩa

Vùng nhớ
CODE

Bộ nhớ mã nguồn chƣơng trình

DATA

Bộ nhớ dữ liệu gồm 128 Byte thấp của Ram trong vi điều khiển

BDATA

Bộ nhớ dữ liệu có thể định địa chỉ bit, nằm trong vùng nhớ DATA


IDATA

Bộ nhớ dữ liệu gồm 128 Byte cao của RAM trong vi điều khiển chỉ
có ở một số dòng vi điều khiển sau này

PDATA

Bộ nhớ dữ liệu ngoài gồm 256 Byte, đƣợc truy cập bởi địa chỉ đặt
trên P0

XDATA

Bộ nhớ dữ liệu ngoài có dung lƣợng có thể lên đến 64 KB, đƣợc truy
cập bởi địa chỉ trên P0 và P2

* Định nghĩa lại kiểu
- Cú pháp: typedef Kiễu_dữ_liệu Tên_biến;
- Ten_biến sau này sẽ đƣợc sử dụng nhƣ một kiểu dữ liệu mới và có thể dùng để khai
báo các biến khác
Ví dụ: typedef int m5[5];
- Dùng tên m5 khai báo hai biến tên a và b có kiểu dữ liệu là mảng 1 chiểu 5 phần tử:
m5 a,b;
[4]
2.1.2 Kiểu dữ liệu trong Keil C

GVHD: Vƣơng Tấn Sĩ

Kiểu

Số bit


Bit

1

Sbit

1

Sfr

8

Sfr16

16
17

SVTH: Phạm Thành Tiến


×