Trong lập trình cho vi điều khiển, hợp ngữ thường được sử dụng khi cần viết những chương trình có kích thước nhỏ, hoặc những đoạn chương trình đòi hỏi tốc độ thực thi nhanh, có thể tính
Trang 1ỦY BAN NHÂN DÂN THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG CAO ĐẲNG GIAO THÔNG VẬN TẢI
KHOA KỸ THUẬT ĐIỆN – ĐIỆN TỬ
Trang 2LỜI MỞ ĐẦU
Trong việc dạy và học giữa các môn lý thuyết và thực hành nhằm phát triển và nâng cao tay nghề cho sinh viên tạo nền tảng vững chắc cho sinh viên sau khi tốt nghiệp Chính vì thế trải qua một thời gian đào tạo đúc kết kinh nghiệm dạy và học lý thuyết cơ sở cho môn học Vi Xử Lý quá trừu tượng thì môn học Thí Nghiệm Vi Xử
Lý sẽ giúp các em nắm vững hơn về cấu trúc các phần cứng và lập trình trên các hợp ngữ Assembler hoặc ngôn ngữ C trong phòng thí nghiệm
Trong lập trình cho vi điều khiển, hợp ngữ thường được sử dụng khi cần viết những chương trình có kích thước nhỏ, hoặc những đoạn chương trình đòi hỏi tốc độ thực thi nhanh, có thể tính toán chính xác thời gian thực thi
Với sự phát triển của công nghệ vi mạch, ngày càng nhiều các họ vi điều khiển khác nhau ra đời, với dung lượng bộ nhớ lớn Do đó, vấn đề tối ưu hóa kích thước chương trình trở nên không còn quá trong trọng Thay vào đó, người lập trình đòi hỏi phải có khả năng học lập trình cho một vi điều khiển mới một cách nhanh chóng, có khả năng viết các chương trình phức tạp, và những mã nguồn cũ có thể dễ dàng sử dụng lại cho các họ vi điều khiển mới
Ngôn ngữ C, với các đặc điểm như là ngôn ngữ có cấu trúc, có khả năng tương tác phần cứng cao, mềm dẻo và có cộng động sử dụng rộng lớn, là ngôn ngữ thích hợp để lập trình cho các vi điều khiển
Đây cũng là mục tiêu chính trong chương trình đào tạo được biên soạn của tập thể giảng viên khoa Điện – Điện Tử “ Học phải đi đôi với thực tiễn ” chính điều này sẽ tạo nên tay nghề vững chắc cho sinh viên khi tham gia học tập tại trường
Để đáp ứng được nhu cầu và tính cấp thiết của người học thì việc xây dựng một giáo trình phù hợp với chuyên ngành là việc cấp bách hiện nay khi mà chương trình được chuyển đổi sang cơ quan quản lý Bộ Lao Động Thương Binh Và Xã Hội với tổng thời gian thực hành chuyên môn cao nhằm rèn luyện tay nghề và đúc kết kinh nghiệm thực tế cho các em trước khi ra trường
Trang 3TUYÊN BỐ BẢN QUYỀN: Error! Bookmark not defined
LỜI MỞ ĐẦU 0
Bài thí nghiệm số 1: 2
GIỚI THIỆU PHẦN MỀM MÔ PHỎNG PROTEUS 2
1.1 MỤC TIÊU 2
1.2 DỤNG VỤ, HỌC CỤ SỬ DỤNG 2
1.3 NỘI DUNG 2
1.3.1 CƠ SỞ LÝ THUYẾT 2
1.3.1.1 KHÁI QUÁT VỀ VI ĐIỀU KHIỂN 2
1.3.1.2 GIỚI THIỆU BỘ KIT THÍ NGHIỆM VI XỬ LÝ 3
A Các thành phần của mạch TNVXL: 4
B Các chương trình sử dụng trong thí nghiệm: 13
1.3.1.3 SƠ LƯỢC VỀ VI ĐIỀU KHIỂN 8 BIT, 16 BIT 15
A Giới thiệu vi điều khiển 8 bit AT89S52 có đặc điểm như sau: 15
B Giới thiệu vi điều khiển 16 bit PIC 16F877A có đặc điểm chính như sau: 17
1.3.1.4 PHẦN MỀM MÔ PHỎNG 22
A Phần mềm Proteus của hãng Labcenter Electronics hỗ trợ mô phỏng các mạch điện tử, đặc biệt là mô phỏng vi điều khiển 22
B Hướng Dẫn Sử Dụng Chương Trình Keil C Mô Phỏng Vi Điều Khiển 8 BIT 30
C Hướng dẫn sử dụng phần mềm biên dịch PIC C COMPILER mô phỏng vi điều khiển 16 BIT cho PIC 16F877A 41
Các bước tạo một Project trong PIC C Compiler 42
Chương trình nạp ( Pickit2 V2.61) 45
Nạp chương trình vào PIC dùng PICkit 2 Programmer 45
1.3.1.5 CHƯƠNG TRÌNH MẪU 47
Trang 41.3.3 BÀI TẬP THÍ NGHIỆM 49
Bài thí nghiệm số 2: 46
CÁC LỆNH CƠ BẢN CỦA 89S52 VÀ PIC 16F887A 46
1.1 MỤC TIÊU 46
1.2 DỤNG VỤ, HỌC CỤ SỬ DỤNG 46
1.3 NỘI DUNG 46
1.3.1 CƠ SỞ LÝ THUYẾT 46
1.3.1.1 CẤU TRÚC CÁC LỆNH CƠ BẢN TRONG VI ĐIỀU KHIỂN 8 BIT AT89S52 46
A Lệnh di chuyển dữ liệu MOV 46
B Lệnh xoay BIT 47
C Lệnh Logic 47
D Một số lệnh cơ bản khác 48
E Viết chương trình con tạo trễ 49
1.3.1.2 CẤU TRÚC CÁC LỆNH CƠ BẢN TRONG VI ĐIỀU KHIỂN 16 BIT PIC 16F877A 51
A Phân biệt cấu trúc lệnh SET PORT 51
B Viết chương trình điều khiển 8 led đơn 52
Bài tập mẫu: 53
1.3.1.3 NHỮNG SAI HỎNG THƯỜNG GẶP 54
1.3.2 TIẾN HÀNH THỰC HIỆN THÍ NGHIỆM 54
1.3.3 BÀI TẬP THÍ NGHIỆM 55
Bài thí nghiệm số 3: 57
ĐIỀU KHIỂN LED 7 ĐOẠN 57
1.1 MỤC TIÊU 57
1.2 DỤNG VỤ, HỌC CỤ SỬ DỤNG 57
1.3 NỘI DUNG 57
Trang 51.3.1.1.CẤU TRÚC VÀ MÃ HIỂN THỊ DỮ LIỆU TRÊN LED 7 ĐOẠN 57
1.3.1.2 PHÂN BIỆT PHƯƠNG PHÁP QUÉT VÀ CHỐT LED 7 ĐOẠN : 59
A Dùng phương pháp quét trên vi điều khiển 8 bit AT89S52 59
B Dùng phương pháp chốt trên vi điều khiển 8 bit AT89S52 60
1.3.1.3 LẬP TRÌNH CHO VI ĐIỀU KHIỂN 16 BIT PIC 16F887A 63
Bài tập mẫu: 63
1.3.1.4 NHỮNG SAI HỎNG THƯỜNG GẶP 64
1.3.2 TIẾN HÀNH THỰC HIỆN THÍ NGHIỆM 65
1.3.3 BÀI TẬP THÍ NGHIỆM 65
PHẦN 1: Lập trình cho vi điều khiển 8 bit AT89S52 65
PHẦN 2: Lập trình cho vi điều khiển 16 bit PIC 16F887A 65
Bài thí nghiệm số 4: 68
GIAO TIẾP THIẾT BỊ NGOẠI VI – LCD 68
1.1 MỤC TIÊU 68
1.2 DỤNG VỤ, HỌC CỤ SỬ DỤNG 68
1.3 NỘI DUNG 68
1.3.1 CƠ SỞ LÝ THUYẾT 68
1.3.1.1 GIỚI THIỆU LCD 68
1.3.1.2 SƠ ĐỒ NGUYÊN LÝ 70
1.3.1.3 LƯU ĐỒ GIẢI THUẬT HIỂN THỊ THÔNG TIN TRÊN 2 HÀNG 70
1.3.1.4 CÁC LỆNH ĐIỀU KHIỂN LCD 71
1.3.1.5 HÌNH DÁNG VÀ SƠ ĐỒ CHÂN LM335: 71
1.3.1.6 NHỮNG SAI HỎNG THƯỜNG GẶP 72
1.3.2 TIẾN HÀNH THỰC HIỆN THÍ NGHIỆM 72
1.3.3 BÀI TẬP THÍ NGHIỆM 73
Bài thí nghiệm số 5: 81
MẠCH ĐỊNH THỜI - TIMER 81
Trang 61.2 DỤNG VỤ, HỌC CỤ SỬ DỤNG 81
1.3 NỘI DUNG 81
1.3.1 CƠ SỞ LÝ THUYẾT 81
1.3.1.1 CẤU TRÚC LỆNH LIÊN QUAN ĐẾN TIMER 81
1.3.1.2 BÀI TẬP MẪU 83
1.3.1.3 NHỮNG SAI HỎNG THƯỜNG GẶP 86
Bài thí nghiệm số 6: 87
INTERRUPT – NGẮT 87
1.1 MỤC TIÊU 87
1.2 DỤNG VỤ, HỌC CỤ SỬ DỤNG 87
1.3 NỘI DUNG 87
1.3.1 CƠ SỞ LÝ THUYẾT 87
1.3.1.1 CÁC LỆNH ĐIỀU KHIỂN NGẮT 87
1.3.1.2 SƠ ĐỒ MẠCH ĐIỀU KHIỂN 88
1.3.1.3 CÁC BƯỚC CÔNG VIỆC 89
1.3.1.4 NHỮNG SAI HỎNG THƯỜNG GẶP 89
1.3.2 TIẾN HÀNH THỰC HIỆN THÍ NGHIỆM 89
1.3.3 BÀI TẬP THÍ NGHIỆM 89
Bài thí nghiệm số 7: 93
LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ ĐỒNG HỒ SỐ 93
1.1 MỤC TIÊU 93
1.2 DỤNG VỤ, HỌC CỤ SỬ DỤNG 93
1.3 NỘI DUNG 93
1.3.1 CƠ SỞ LÝ THUYẾT 93
1.3.1.1 SƠ ĐỒ MẠCH HIỂN THỊ ĐỒNG HỒ DÙNG LCD 94
1.3.1.2 SƠ ĐỒ MẠCH HIỂN THỊ LỊCH VẠN NIÊN DÙNG LED 7 ĐOẠN 95
1.3.1.3 SƠ ĐỒ CHÂN: 96
Trang 71.3.1.4 NHỮNG SAI HỎNG THƯỜNG GẶP 99
1.3.2 TIẾN HÀNH THỰC HIỆN THÍ NGHIỆM 99
1.3.3 BÀI TẬP THÍ NGHIỆM 99
TÀI LIỆU THAM KHẢO 125
Trang 8TỔ CHỨC TÀI LIỆU HƯỚNG DẪN
- Kit thí nghiệm vi xử lý là bộ thí nghiệm được thiết kế dựa trên họ vi điều khiển MCS-51, Pic, AVR Tài liệu hướng dẫn thí nghiệm này giúp người sử dụng tiếp cận với các kiến thức cơ bản về vi điều khiển 89S52, Pic 18F877A nhanh chóng hơn Tài liệu thí nghiệm bao gồm tài liệu hướng dẫn sử dụng kit thí nghiệm, các bài thí nghiệm, và một số mã nguồn để tham khảo
- Tài liệu hướng dẫn sẽ giới thiệu các thành phần của kit thí nghiệm, được tổ chức thành các phần như sau:
Lý thuyết cơ bản: Phần này sẽ tóm tắt sơ lược các kiến thức lý thuyết có
liên quan đến bài thí nghiệm
Thiết kế phần cứng: Nội dung của phần này sẽ giúp người sử dụng nắm
được chi tiết về sơ đồ và cách thức thiết kế phần cứng của kit thí nghiệm Người sử dụng cần hiểu rõ các nội dung được đề cập trong phần này Các thiết kế phần cứng này hoàn toàn có thể ứng dụng trong thực tế
Phần mềm giao tiếp: Phần này sẽ giúp người sử dụng nắm được các kỹ
thuật để xây dựng phần mềm đáp ứng yêu cầu của bài thí nghiệm Các nội dung được đề cập trong phần này cũng sẽ rất hữu dụng trong thực tế
- Mỗi bài thí nghiệm được tổ chức thành các phần như sau:
Mục tiêu: Giúp người học nắm được mục tiêu cụ thể của bài thí nghiệm
Yêu cầu: Phần này sẽ đưa ra yêu cầu cụ thể của bài thí nghiệm
Hướng dẫn: phần này nêu một số hướng dẫn để SV có thể lập trình dễ
dàng hơn
Kiểm tra: Giúp người sử dụng đáng giá mức độ đạt được các mục tiêu
của bài thí nghiệm, đồng thời gợi ý một số hiệu chỉnh nhằm làm phong phú
nội dung thí nghiệm
Chú ý: Người học cần xem trước nội dung thí nghiệm và chuẩn bị sẵn chương
trình tại nhà để có thể tận dụng tốt thời gian thí nghiệm Nếu phát hiện có sai sót hay thắc mắc, người học có thể báo trực tiếp giảng viên hướng dẫn hoặc email về địa chỉ nttlan@hcmct.edu.vn
Trang 9- Cài đặt được phần mềm mô phỏng và thiết bị máy tính
- Phân tích được hoạt động của vi điều khiển 89S52 và PIC 16F877A
- Thiết kế được sơ đồ mạch trên phần mềm PROTEUS
- Sử dụng được phần mềm biên dịch cho vi điều khiển 89S52 và PIC 16F877A
- Board Kit thí nghiệm Vi Xử Lý
- Máy tính, phần mềm mô phỏng Proteus, Keil C
- Vi điều khiển 89S52 và PIC 16F877A
1.3.1 CƠ SỞ LÝ THUYẾT
1.3.1.1 KHÁI QUÁT VỀ VI ĐIỀU KHIỂN
- Vi điều khiển (Microcontroller_ thường được viết tắt là uC, MCU)
là một mạch tích hợp, bên trong được cấu tạo bởi các nhân xử lý, bộ nhớ
và có khả năng lập trình giao tiếp với thiết bị ngoại vi Các bộ vi điều khiển thường được sử dụng trong các sản phẩm, thiết bị điều khiển tự động, các hệ thống điều khiển từ xa, và các hệ thống nhúng
Trang 10- Các thành phần cơ bản của vi điều khiển:
1.3.1.2 GIỚI THIỆU BỘ KIT THÍ NGHIỆM VI XỬ LÝ
Hình 1.2: BỘ THÍ NGHIỆM VI ĐIỀU KHIỂN ĐA NĂNG – DTVT03
Hình 1.1 Cấu trúc cơ bản một vi điều khiển PIC
Trang 11A Các thành phần của mạch TNVXL:
- Module Microcontroller Unit: là đế gắn đưa ra nguồn có thể kết nối các loại chip: 89Sxx, AVR, PIC…
- J101: dùng liên kết mạch nạp cho Chip
- J106: Chọn tín hiệu Reset Chip
- Ở vị trí ATMEL 89: Thực hiện Reset chip Atmel 89Sxx
- Ở vị trí AVR/PIC: Thực hiện Reset chip AVR/PIC
Hình 1.3: Module Vi Điều Khiển Đa Năng Module LED đơn: dùng cho thí nghiệm hiển thị Bit
Hình 1.4: Module LED đơn
Trang 12Module Led 7 đoạn đơn: gồm 3 led 7 đoạn anode chung độc lập
Hình 1.5: Module LED 7 ĐOẠN ĐƠN Module led 7 đoạn: gồm 8 led 7 đoạn anode chung
Hình 1.6: Module LED 7 ĐOẠN Module LCD 16x2: gồm 1 LCD 1602
Hình 1.7: Module LCD 16x2
Trang 13Module nút nhấn: Gồm 4 nút nhấn thường và 4 nút nhấn chống dội
Hình 1.8: Module nút nhấn Module Keypad: gồm 16 phím,tổ chức theo dạng ma trận 4x4
Hình 1.9: Module phím nhấn Module led matrix: gồm 2 led 8x8 chọn hàng bằng 74138 và truyền data bằng
SPI
Trang 14Hình 1.10: Module LED MA TRẬN Module DS1307: gồm IC thời gian thực giao tiếp I2C
Hình 1.11: Module DS1307 Module PS/2: dùng giao tiếp bàn phím máy tính
Hình 1.12: Module PS/2
R216 1k
SDI SLK LE
SLK LE
XL10 XL11 XL12 XL14 XL13 XL15 XL16 XL17
DL22 DL21 DL20
DL26 DL25 DL24 DL23
DL14 DL13 DL12
DL17 DL16 DL15
XL20
XL23 XL22 XL21
XL25 XL24
XL27 XL26
U803
74HC138
Y0 15Y1 14Y2 13Y3 12 Y4 11Y5 10Y6 9Y7 7
7 D1 8S1
1
G2 4 G1 2
D1 8S1
1
G2 4 G1 2
D2 6
U806
FET4953
D2 5S2
7 D1 8S1
1
G2 4 G1 2
D2 6
U807
FET4953
D2 5S2
D1 8S1
1
G2 4 G1 2
D2 6
VCC
H1 H2
H4 H3
H6 H5
H8 H7
4 SLK 3
SDO 22
REXT 23
SDI 2
OUT6 11OUT7 12OUT8 13OUT10 15OUT11 16OUT12 17OUT13 18OUT14 19OE 21 OUT9 14
OUT15 20
R215 1k
U802
MBI5026
OUT5 10OUT4 9OUT3 8 OUT2 7OUT1 6OUT0 5LE
4 SLK 3
SDO 22
REXT 23
SDI 2
OUT6 11OUT7 12OUT8 13OUT10 15OUT11 16OUT12 17OUT13 18OUT14 19OE 21 OUT9 14
OUT15 20
Trang 15Module SMC/SD: dùng giao tiếp với thẻ nhớ ngoài
Hình 1.13: Module SMC/SD Module Audio memory: module này dùng ghi âm âm thanh điều khiển bằng
SPI
Hình 1.14: Module Audio memory Module USB/RS232: dùng giao tiếp với máy tính thông qua USB hoặc RS232
Hình 1.15: Module USB/RS232
Trang 16Module cảm biến nhiệt: gồm bộ chuyển đổi nguồn -5V,cảm biến nhiệt LM335
R57 10K CAM BIEN NHIET
DS1820
DQ 2VCC 3GND 1
JE01
CON2
1 2
VCC
C49 104
VCC
Trang 17Module Step motor: điều khiển động cơ bước 7.5 ·/bước bằng IC ULN2803
Hình 1.18: Module Step Motor Module Buzzer:
Hình 1.19: Module Buzzer Module khuếch đại âm thanh: dùng IC LM4871
Hình 1.20: Module khuếch đại âm thanh Module ROM 24Cxx: dùng lưu trữ bộ nhớ ROM ngoài họ 24Cxx
Hình 1.21: Module ROM 24Cxx
Trang 18Module ROM 93Cxx: dùng lưu trữ bộ nhớ ROM ngoài họ 93Cxx
Hình 1.22: Module ROM 93Cxx Module IR: dùng thu tín hiệu hồng ngoại
Hình 1.23: Module IR Module nguồn: ngõ ra 5V(3A) và 3.3V(1A)
Hình 1.24: Module Power Module A/D: dùng tạo áp thay đổi 0-5V
Hình 1.25: Module A/D
Trang 19Module ADC: gồm bộ chuyển đổi ADC 8 bit ADC0809 có 8 ngõ vào
Hình 1.26: Module ADC Module Relay
Hình 1.27: Module Relay Module IR Sensor: dùng đếm sản phẩm
Hình 1.28: Module IR sensor
Trang 20- J205: đầu nối số 05 ở khối 2
B Các chương trình sử dụng trong thí nghiệm:
1 Chương trình nạp pickit2 cho PIC, ProISP cho 89Sxx/AVR:
- Đây là chương trình nạp trực tiếp từ máy tính thông qua cổng USB
2 Lập trình cho vi điều khiển
- Viết chương trình là một công việc đặc biệt với vi điều khiển, là việc sử dụng các ngôn ngữ lập trình tạo lập điều khiển quá trình hoạt động cho vi điều khiển
- Lập trình có thể được thực hiện trong một vài ngôn ngữ như: Assembler (hợp ngữ), C và Basic, mà nó được sử dụng thông dụng
Hợp ngữ thuộc về mức ngôn ngữ cấp thấp với khả năng lập trình chậm, nhưng nó sẽ chiếm khoảng bộ nhớ ít và cho kết quả tốt nhất
Trang 21 Lập trình trong ngôn ngữ C thì nó dễ dàng hơn để viết, dễ dàng để hiểu, nhưng thực thi chậm hơn so với hợp ngữ
Basic là dễ nhất để học, và cấu trúc ngôn ngữ của nó gần với chúng ta, nhưng giống ngôn ngữ C nó cũng chậm hơn hợp ngữ trong việc thực thi Trong nhiều trường hợp, chúng ta cần chú ý đến yêu cầu về tốc độ xử lý, kích cỡ bộ nhớ để lựa chọn ngôn ngữ
- Để lập trình cho vi điều khiển, chúng ta cần có các thành phần: máy tính, phần mềm biên dịch (compiler), bộ lập trình (kit nạp) Phần mềm biên dịch sẽ biên dịch ngôn ngữ lập trình thành file bin hoặc là file hex
Bộ lập trình sẽ truyền các file bin (hay file hex) vào trong bộ nhớ chương trình của vi điều khiển và lưu trữ dưới dạng mã nhị phân “0” và “1”
Hình 1.31: Quá trình lập trình, biên dịch và nạp cho vi điều khiển
Hình 1.30: Lập trình và biên dịch
Trang 22- Vi điều khiển được kết nối với thiết bị ngocại vi Mỗi khi được cấp nguồn, vi điều khiển sẽ thực hiện các thao tác theo chương trình đã được thiết lập để điều khiển các thiết bị ngoại vi
1.3.1.3 SƠ LƢỢC VỀ VI ĐIỀU KHIỂN 8 BIT, 16 BIT
A Giới thiệu vi điều khiển 8 bit AT89S52 có đặc điểm nhƣ sau:
- Đây là họ vi điều khiển 8 bit, có tất cả 40 chân có chức năng như các đường xuất nhập Trong đó có 24 chân có công dụng kép, mỗi đường
có thể hoạt động như đường xuất nhập hoặc như đường điều khiển hoặc
là thành phần của bus dữ liệu và bus địa chỉ
- Là IC đóng vỏ dạng DIP có 40 chân, mỗi chân có một kí hiệu tên và
có các chức năng như sau:
Hình 1.32: Sơ đồ chân vi điều khiển 8 bit AT89S52 Chân 1-8: Port 1 : Mỗi một trong các chân có thể được cấu hình như một đầu vào
hoặc đầu ra
Chân 9: RS: Mức logic 1 trên chân này sẽ vô hiệu hóa các vi điều khiển và xóa
nội dung của hầu hết các thanh ghi Nói cách khác, điện áp tích cực trên chân này
Trang 23sẽ reset vi điều khiển Bằng cách áp dụng mức logic 0 ở chân này, chương trình bắt đầu thực hiện từ đầu
Chân 10-17: Port 3: Tương tự như cổng 1, mỗi chân có thể phục vụ như là đầu vào hay đầu ra chung Bên cạnh đó, chúng còn có chức năng khác
Chân 10: RXD Nhận tín hiệu thông tin nối tiếp không đồng bộ
Chân 11: TXD Truyền xung thông tin nối tiếp không đồng bộ
Chân 12: INT0 Interrupt 0 input: ngắt ngoài 0
Chân 13: INT1 Interrupt 1 input: ngắt ngoài 1
Chân 14: T0 Counter 0 clock input: Chân vào 0 của bộ timer/counter 0
Chân 15: T1 Counter 1 clock input: Chân vào 1 của bộ timer/counter 1
Chân 16: WR Write to external (additional) RAM: Ghi dữ liệu vào bộ nhớ RAM
ngoài
Chân 17: RD Read from external RAM: Đọc dữ liệu từ bộ nhớ RAM ngoài
Chân 18, 19: X2, X1 Internal oscillator input and output: Đầu vào, ra bộ dao
động nội, Một tinh thể thạch anh tần số hoạt động xác định thường được kết nối với các chân này Thay vì đó, mạch cộng hưởng cũng có thể được sử dụng cho sự
ổn định tần số Trong các phiên bản sau của vi điều khiển hoạt động ở tần số từ 0
Hz lên đến hơn 50 Hz
Chân 20: GND Ground: Chân nguồn nối đất GND
Chân 21-28: Port 2 Nếu không có ý định sử dụng bộ nhớ bên ngoài thì các chân
cổng được cấu hình như đầu vào / đầu ra chung Trong trường hợp sử dụng bộ nhớ bên ngoài, địa chỉ byte cao hơn, tức là địa chỉ A8-A15 sẽ xuất hiện trên cổng này Mặc dù bộ nhớ với dung lượng 64Kb không được sử dụng, không có nghĩa là tất
cả tám bit cổng được sử dụng để làm địa chỉ như là đầu vào / đầu ra
Chân 29: PSEN Nếu ROM bên ngoài được sử dụng để lưu trữ chương trình khi đó
mức logic (0) xuất hiện trên nó mỗi khi vi điều khiển đọc một byte từ bộ nhớ
Chân 30: ALE Trước khi đọc từ bộ nhớ ngoài, vi điều khiển đặt các byte địa chỉ
thấp hơn (A0-A7) trên P0 và kích hoạt đầu ra ALE Sau khi nhận được tín hiệu từ chân ALE, thanh ghi bên ngoài (thường là 74HCT373 hoặc 74HCT375 tiện ích
Trang 24trên chip) ghi nhớ những trạng thái của P0 và sử dụng nó như là một địa chỉ chip nhớ Ngay sau đó, chân ALU được trả về trạng thái logic trước đó và P0 đang sử dụng như một Bus dữ liệu Như đã thấy, cổng ghép kênh dữ liệu được thực hiện bằng phương pháp mạch tích hợp Nói cách khác, cổng này được sử dụng cho cả
truyền dữ liệu và địa chỉ
Chân 31: EA Bằng cách áp dụng mức logic 0 cho chân này, Port 2 và Port 3 dùng
để truyền dữ liệu và địa chỉ cho dù có bộ nhớ trong hay không Điều này có nghĩa
là một chương trình ghi vào vi điều khiển, sẽ không được thực thi Thay vào đó, các chương trình ghi vào ROM bên ngoài sẽ được thực hiện Bằng cách áp dụng mức logic 1 với Chân EA, vi điều khiển sẽ sử dụng cả hai bộ nhớ, lần đầu tiên nội
bộ sau đó bên ngoài (nếu có)
Chân 32-39: Port 0 Tương tự như Port 2, nếu bộ nhớ bên ngoài không được sử
dụng, các chân được sử dụng như đầu vào / đầu ra chung Nếu không, Port 0 được định cấu hình như đầu ra địa chỉ (A0-A7) khi chân ALE được thúc mức cao (1)
hoặc như dữ liệu đầu ra (Bus dữ liệu) khi chân ALE được thúc mức thấp (0) Chân 40: VCC +5V power supply: chân cấp nguồn +5V
B Giới thiệu vi điều khiển 16 bit PIC 16F877A có đặc điểm chính nhƣ sau:
- Có 5 Port xuất nhập
- Có 8 kênh chuyển đổi ADC 10-bit
- Có 2 kênh PWM 10-bit
- Có 256 bytes bộ nhớ dữ liệu EEPROM
- Ngoài ra có tích hợp các dạng giao tiếp I2C, SPI, serial,
Trang 25- Sơ đồ chân và chức năng các chân:
Hình 1.33: Sơ đồ chân vi điều khiển 16 bit 16F877A
AN0: ngõ vào tương tự kênh thứ 0
Chân RA1/AN1(3) có 2 chức năng:
Trang 26 VREF-: ngõ vào điện áp chuẩn(thấp) của bộ A/D
CVREF: điện áp tham chiếu VREF ngõ ra bộ so sánh
Chân RA3/AN3/VREF+ (5)
RA3: nhập/ xuất số
AN3: ngõ vào tương tự kênh thứ 3
VREF+: ngõ vào điện áp chuẩn (cao) của bộ A/D
AN4: ngõ vào tương tự kênh thứ 4
SS: ngõ vào chọn lựa SPI phụ
Trang 27 PGD: mạch gỡ rối và dữ liệu lập trình ICSP
Chân RC0/T1OCO/T1CKl (15):
RC0: nhập/ xuất số
T1OCO: ngõ vào bộ dao động Timer1
T1CKl: ngõ vào xung clock bên ngoài Timer1
Chân RC1/T1OSI/CCP2 (16):
RC1: xuất/ nhập số
T1OSI: ngõ vào bộ dao động Timer1
CCP2: Ngõ vào Capture 2, ngõ ra Compare 2, ngõ ra PWM 2
SCK: ngõ vào xung clock nối tiếp đồng bộ/ ngõ ra của chế độ SPI
SCL: xung clock chế độ I2C
Chân RC4/SDI/SDA (23):
RC4: xuất/nhập số
SDI: dữ liệu vào SPI
SDA: dữ liệu I2C
Trang 28Chân RE0 / RD / AN 5 (8):
RE0: xuất/nhập số
RD: điều khiển đọc port slave song song
AN5: ngõ vào tương tự 5
Chân RE1 / WR / AN 6 (9):
RE1: xuất/nhập số
WR : điều khiển ghi port slave song song
AN6: ngõ vào tương tự 6
Chân RE2 / CS / AN 7 (10):
RE2: xuất/nhập số
CS : điều khiển ghi port slave song song
AN7: ngõ vào tương tự 7
Chân OSC1/CLKI (13):
OSC1: ngõ vào dao động thạch anh
CLKI: ngõ vào nguồn xung bên ngoài
Chân OSC2/CLKO (14):
OSC2: ngõ ra dao động thạch anh
CLKO: ở chế độ RC, ngõ ra của OSC2, bằng ¼ tần số của OSC1, và chính là tốc độ chu kỳ câu lệnh
Chân VDD(11, 32) và VSS(12, 31): các chân nguồn của PIC
Trang 29- Port nhập xuất và các thanh ghi định hướng
- Tổng số chân nhập xuất trong PIC có là 35 chân, đủ các chức năng để kết nối với hầu hết các thiết bị ngoại vi, tạo thành nhiều ứng dụng 35 chân nhập xuất này được chia thành 5 port với tên gọi: Port A, Port B, Port C, Port D, Port E Mỗi Port của PIC có một thanh ghi định hướng TRIS qui định các chân của Port đó
là ngõ vào hay ngõ ra: Khi thanh ghi TRIS = 0 thì Port tương ứng đóng vai trò ngõ
ra, khi thanh ghi TRIS = 1 thì Port tương ứng đóng vai trò ngõ vào Ví dụ: PortA kết nối với các thiết bị ngoại vi; với nút nhấn, tín hiệu từ các mạch logic là các thành phần ngõ vào, do đó khai báo các chân đó có TRIS = 1; với các thành phần cần điều khiển như rơle, led thì cần khai báo các chân đó có TRIS = 0
Hình 1.34: Điều khiển vào ra các PORT vi điều khiển
1.3.1.4 PHẦN MỀM MÔ PHỎNG
A Phần mềm Proteus của hãng Labcenter Electronics hỗ trợ mô
phỏng các mạch điện tử, đặc biệt là mô phỏng vi điều khiển
Trang 30Hình 1.35: Giao diện khởi động Proteus
- Khởi động Proteus:
Hình 1.36: Khởi động Proteus
Trang 31- Giao diện lấy linh kiện:
Hình 1.37: Lấy linh kiện từ thƣ viện
- Chọn PIC 16F877A, nhấn OK
Hình 1.38: Nhập tên linh kiện cần lấy
Trang 32- Đặt linh kiện vào giao diện:
Hình 1.39: Lấy đèn Led từ thƣ viện
- Đặt 8 led vào giao diện:
Hình 1.40: Đặt đèn Led
Trang 33- Lấy điện trở và đặt điện trở vào giao diện:
Trang 34- Lấy GND:
Hình 1.43: Lấy GND
- Kết nối dây bằng cách click chuột vào các chân cần kết nối và đi dây
Hình 1.44: Nối dây các linh kiện
Trang 35- Kết nối các thành phần Reset và thạch anh:
Hình 1.45: Thành phần Reset và bộ dao động thạch anh
- Mạch sau khi đã hoàn thành:
Hình 1.46: Mạch kết nối hoàn chỉnh
Trang 36- Nạp File ON/OFF.hex vào PIC:
- Click phải PIC chọn Edit Properties, tại vị trí Program File click trỏ đến file ONOFF.hex
Hình 1.47: Nạp file Hex cho PIC
- Vào Menu Debug, chọn Start để chạy mô phỏng:
Trang 37Hình 1.48: Thực hiện mô phỏng
- Kết quả hiển thị:
Hình 1.49: Kết quả hiển thị chương trình
B Hướng Dẫn Sử Dụng Chương Trình Keil C Mô Phỏng Vi Điều Khiển 8 BIT
Bước 1: Chép thư mục Keil 3 vào ổ cứng của bạn Cần nhớ đường dẫn nơi lưu
thư mục keil 3 sau khi chép VD: D:\Keil 3
Trang 38Bước 2: Kích đúp vào thư mục Keil 3 và mở thư mục uv3
Bước 3: Kích đúp vào biểu tượng sau để chạy chương trình
- Kết quả bạn sẽ có màn hình làm việc như sau:
Trang 39Bước 4: Tạo một Project mới
- Trước nhất bạn cần tạo một Project mới bằng cách kích vào tiêu đề Project và kích chọn mục New Project…
- Đặt tên cho Project mới của bạn và chọn Save để lưu Project vừa tạo
- Một cửa sổ mới xuấthiện cho phép bạn lựa chọn Vi Điều Khiển mà bạn muốn
mô phỏng Ta chọn AT89S52
Trang 40- Một cửa sổ mới xuất hiện để thông báo như sau và bạn chọn No
Bước 5: Tạo một file mới
- Trở lại màn hình chính bạn vào File – New để mở một file mới
- Bạn chưa cần soạn thảo gì cả, hãy vào File – Save as… để lưu file
- Đặt tên file với phần mở rộng là asm