Bài giảng Vi điều khiển

20 3 0
Bài giảng Vi điều khiển

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

- Là thanh ghi 8 bít đƣợc sử dụng để lƣu giữ liệu tạm thời, thƣờng đƣợc sử dụng trong các phép toán số học và logic.[r]

(1)

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN KHOA CƠ KHÍ ĐỘNG LỰC

BÀI GIẢNG HỌC PHẦN: VI ĐIỀU KHIỂN

SỐ TÍN CHỈ: 02

LOẠI HÌNH ĐÀO TẠO: ĐẠI HỌC CHÍNH QUY NGÀNH: CÔNG NGHỆ KỸ THUẬT Ô TÔ

(2)

1

Chƣơng TỔNG QUAN

1.1 Khái niệm

1.2 Các dòng vi điều khiển phổ biến thị trƣờng

1.3 Các hệ thống số

1.3.1 Hệ thống số thập phân

1.3.2 Hệ thống số nhị phân

1.3.3 Hệ thống số bát phân (BCD-Binary Coded Decimal)

1.3.4 Hệ thống số thập lục (HHeexxaaddeecciimmaall)

1.3.5 Số bù hai

1.3.6 Các phép toán số học hệ nhị phân

1.3.6.1 Phép cộng nhị phân không dấu

1.3.6.2 Phép trừ nhị phân

1.3.6.3 Phép nhân nhị phân

1.3.6.4 Phép chia nhị phân

1.3.7 Chuyển đổi qua lại hệ thống số

1.3.7.1 Chuyển đổi số thập phân sang nhị phân :

1.3.7.2 Chuyển đổi số nhị phân sang thập phân

1.3.7.3 Chuyển đổi số nhị phân sang Hexa :

1.3.7.4 Chuyển đổi số Hexa sang nhị phân:

1.3.7.5 Mã ASCII: (American Standard Code for Information Interchange )

Chƣơng CẤU TRÚC PHẦN CỨNG VÀ NGÔN NGỮ LẬP TRÌNH C 11

2.1 Cấu trúc phần cứng vi điều khiển 8051 11

2.2 Sơ đồ chân 11

2.2.1 Nhóm chân nguồn, dao động, điều khiển 12

2.2.2 Nhóm chân cổng vào 13

2.3 Tổ chức không gian nhớ 14

2.3.1 Bản đồ nhớ ROM 8051 14

2.3.2 Tổ chức không gian nhớ RAM 8051 15

2.4 Thanh ghi 17

2.4.1 Thanh ghi tích luỹ A: 18

2.4.2 Thanh ghi từ trạng thái PSW (hay gọi ghi cờ) : 18

2.4.3 Thanh ghi điều khiển đếm định thời (TCON) 18

2.4.4 Thanh ghi điều khiển chế độ định thời/bộ đếm (TMOD) 19

(3)

2

2.5 Ngôn ngữ lập trình C cho vi điều khiển 20

2.5.1 Cấu trúc chƣơng trình C 20

2.5.2 Lời thích 21

2.5.3 Các loại kiểu liệu C 21

2.5.4 Các hàm C 23

2.5.5 Các toán tử 24

2.5.6 Phép toán lấy địa biến (&) 26

2.5.7 Phép toán chuyển đổi kiểu (bắt buộc) 26

2.5.8 Các định dạng 26

2.5.9 Cấu trúc điều khiển 27

2.5.9.1 Cấu trúc rẽ nhánh 27

2.5.9.2 Cấu trúc lựa chọn switch 27

2.5.9.3 Vòng lặp có hạn for 28

2.5.9.4 Vịng lặp không xác định while 28

2.5.9.5 Một số thƣ viện chuẩn C 28

2.5.9.6 Các từ khóa C 29

2.5.9.10 trỏ mảng 29

2.6 Thuật toán lƣu đồ thuật toán 33

2.6.1 Khái niệm 33

2.6.2 Biểu diễn thuật toán sơ đồ khối 33

CHƢƠNG LẬP TRÌNH ỨNG DỤNG 34

3.1 Các bƣớc tạo Project 34

3.2 Lập trình ứng dụng 40

3.2.1 Chƣơng trình tạo trễ 40

3.2.2 Ứng dụng điều khiển LED đơn 40

3.2.3 Ứng dụng điều khiển LED đơn 41

3.2.4 Ứng dụng điều khiển LED 43

3.2.5 Ứng dụng điều khiển LED ma trận 47

3.2.6 Ứng dụng sử dụng nút nhấn 48

3.2.7 Ứng dụng sử dụng ngắt 51

3.2.8 Lập trình cho Timer 55

3.2.8.1 Các ghi sở định thời 55

3.2.8.2 Lập trình cho timer chế độ 57

(4)

3

3.2.8.4 Lập trình cho đếm 60

3.2.9 Lập trình ngắt timer 62

3.2.10 Lập trình với biến đổi A/D 65

3.2.11 Lập trình giao tiếp máy tính 67

3.2.11.1 Chế độ thu phát 67

3.2.11.2 Giao thức (protocol) 68

3.2.11.3 Tốc độ truyền 69

3.2.11.4 Bố trí chân RS232 69

3.2.11.5 Ghép nối 8051 với RS232 71

3.2.11.6 Lập trình truyền thơng nối tiếp cho 8051 71

3.2.11.7 Lập trình 8051 truyền liệu nối tiếp 73

3.2.11.8 Lập trình 8051 nhận liệu nối tiếp 73

(5)

4 Chƣơng TỔNG QUAN

1.1. Khái niệm

Hình 1.1 Cấu trúc chung vi xử lí, vi điều khiển

- Vi xử lý: theo nghĩa rộng CPU, khối chức nhƣ nhớ thiết bị ngoại vi khác phải đƣợc ghép từ bên ngồi tới chíp vi xử lý để hình thành mạch (board) vi xử lý hồn chỉnh Hệ thống đƣợc thực theo cách đƣợc gọi máy vi tính mạch (single board) Thí dụ 8085, 8086, 80486 vi xử lý - Vi điều khiển: thiết bị mà tất khối chức (RAM, ROM, CPU) nằm bên

trong vi mạch đơn lẻ Hay gọi máy tính “đơn chíp” - Bộ nhớ: phần vi điều khiển, có chức lƣu trữ liệu

- Đơn vị xử lý trung tâm: Khối có chức thực phép tính số học, logic di chuyển liệu từ ô nhớ tới ô nhớ khác

- BUS: Các đƣờng dẫn để di chuyển liệu từ khối sang khối khác đƣợc gọi BUS Về mặt vật lý, bus nhóm đƣờng dẫn, thƣờng gồm 8, 16 đƣờng dẫn nhiều Các bus chia làm loại: bus địa bus liệu bus địa bao gồm số đƣờng dẫn tƣơng ứng với dung lƣợng nhớ mà ta muốn định địa Bus liệu có độ rộng độ rộng liệu, thƣờng vi điều khiển bit đƣờng kết nối - Khối vào ra: có chức giao tiếp với thiết bị ngoại vi

- Chuyển đổi tƣơng tự sang số (ADC): Khối có nhiệm vụ chuyển đổi thông tin dƣới dạng vài giá trị tƣơng tự thành số nhị phân đƣa tới đơn vị xử lí trung tâm - Chƣơng trình: Sử dụng câu lệnh đƣợc xếp theo quy tắc chặt chẽ, nhằm

truyền tải mong muốn ngƣời tới vi điều khiển

1.2. Các dòng vi điều khiển phổ biến thị trƣờng

(6)

5 1.3 Các hệ thống số

1.3.1 Hệ thống số thập phân

Hệ đếm thập phân gọi hệ đếm số mƣời đƣợc biểu diễn 10 số từ (0,1,2,3,4,5,6,7,8,9 ) số đƣợc sử dụng nhiều khoa học kỹ thuật nhƣ đời sống hàng ngày, biểu diễn số thập phân dứng sau dãy số thƣờng có chữ D

Ví dụ: Ba nghìn Chin trăm Bảy mƣơi Tám đƣợc biểu diễn nhƣ sau 3978 = 3x103 + 9x102 + 7x101 + 8x100

= 3000 + 900 + 70 + 1.3.2 Hệ thống số nhị phân

Hệ đếm nhị phân gọi hệ đếm số hai đƣợc biểu diễn số 1, kỹ thuật điện tử số số gọi mức logic thấp ứng với điện áp thấp, số 1gọi mức logic cao tƣơng ứng với điện áp cao Mỗi ký hiệu đƣợc gọi Bit (Binary Digit), biểu diễn số nhị phân dứng sau dãy số phải có chữ B

Ví dụ:

1100b gọi nibble

1001 1001b gọi Byte

1010 1011 1100 1101b gọi Word

Trong dãy số nhị phân đƣợc biểu diễn số nhị phân sát phải gọi bít LSB cịn số nhị phân sát trái gọi bít MSB

Số nhị phân thƣờng đƣợc biểu diễn dạng số nhị phân có dấu số nhị phân không dấu, số nhị phân không dấu biểu diễn số khơng âm (0) cịn số nhị phân có dấu biểu diễn đƣợc giá trị âm

Ví dụ : (1101) = 1x2^3 + 1x2^2 + 0x2^1 + 1x2^0 = + + + = 13

Giải giá trị số có dấu bit là: -128 đến 127 Giải giá trị số có dấu 16 bit là: -32768 đến 32767

(7)

6 1.3.3 Hệ thống số bát phân (BCD-Binary Coded Decimal)

Số đếm BCD đƣợc định nghĩa số thập phân nhƣng đƣợc biểu diễn dƣới dạng nhị phân bít, nhƣng dãy số nhị phân bít quy sang hệ thập phân giá trị phải  Trong kỹ thuật điện tử nói chung mã BCD đƣợc sử dụng để giải mã hiển thị LED bảy thanh…

Ví dụ: (0011), (0100), (0101), (0110), …(1001) ; gọi số BCD không nén Ví dụ: (00110100), (01010110), … (01111000) ; gọi số BCD nén

Dƣới bảng mã BCD

Thập phân BCD

0 0000

1 0001

2 0010

3 0011

4 0100

5 0101

6 0110

7 0111

8 1000

9 1001

Ví dụ: số 15 biểu diễn dƣới dạng BCD: 0001 0101 1.3.4 Hệ thống số thập lục (HHeexxaaddeecciimmaall)

Hệ đếm thập phân gọi hệ đếm số mƣời sáu đƣợc biểu diễn 16 ký số (0,1,2,3,4,5,6,7,8,9,B,C,D,E,F) số đƣợc sử dụng nhiều khoa học kỹ thuật đặc biệt khoa học máy tính biểu diễn mã Hexa ngắn gọn, biểu diễn số thập lục phân sau dãy số phải có chữ H

V

(8)

7 1.3.5 Số bù hai

Trong kỹ thuật Vi xử lý để biểu diễn số dƣới dạng dãy số nhị phân ngồi việc biểu diễn số khơng dấu, số có dấu ngƣời ta sử dụng cách biểu diễn số bù Vậy số bù biểu diễn nhƣ nào?

Ví dụ: Hãy biểu diễn dãy số A = 10011001 sang số bù nó:

b1: Tìm số bù A(bằng cách lấy bù tất bit A): 01100110 b2: Tìm số bù A (bằng cách lấy số bù cộng cho 1) : 01100111

đến ta nhận thấy số bù số số đối tổng =0 1.3.6 Các phép toán số học hệ nhị phân

1.3.6.1 Phép cộng nhị phân không dấu

Quy ƣớc:

0 + = 0 + = 1 + = nhớ

Ví dụ: Cho số nhị phân nhƣ sau A = 10010011 ; B = 00111001 tìm tổng Y số nhị phân cho

1.3.6.2 Phép trừ nhị phân

Quy ƣớc:

0 – =

0 – = mƣợn 1 – =

1 – =

Ví dụ : Cho số nhị phân nhƣ sau A = 10010011 ; B = 00111001 tìm hiệu Z

của số nhị phân cho (Lưu ý phép trừ thực cách biến thành phép cộng

bằng cách cộng với số bù )

1.3.6.3 Phép nhân nhị phân

(9)

8 Khi nhân dãy số nhị phân với ta đặt phép tốn nhân giống nhƣ nhân số thập phân, kết phép nhân dãy số nhị phân bít thu đƣợc dãy số nhị phân 16 bít, nhƣ ta có F = A*B = 0000000010010100b

1.3.6.4 Phép chia nhị phân

Ví dụ : Cho số nhị phân nhƣ sau A = 10010110 ; B = 00000100 tìm thƣơng

Khi chia dãy số nhị phân với ta đặt phép tốn chia giống nhƣ chia số thập phân, kết phép chia nhƣ phần dƣ (nếu có) thu đƣợc tƣơng tự nhƣ làm phép chia số thập phân, nhƣ ta có M = A/B = 00100101b dƣ 0010b

1.3.7 Chuyển đổi qua lại hệ thống số

1.3.7.1 Chuyển đổi số thập phân sang nhị phân :

Để chuyển đổi số thập phân sang số nhị phân ngƣời ta thƣờng dùng phƣơng pháp lấy số thập phân cần chuyển chia liên tiếp đến chia đƣợc dừng

Ví dụ : Chuyển số thập phân 25 sang số nhị phân không dấu Chia Thƣơng số Dƣ số

25/2 = 12 LSB 12/2 =

6/2 = 3/2 =

1/2 = MSB

Kết thu đƣợc là: 11001 với số dƣ lần thứ bít có trọng số nhỏ

1.3.7.2 Chuyển đổi số nhị phân sang thập phân

Để chuyển đổi số nhị phân sang số thập phân ngƣời ta thƣờng dùng phƣơng pháp lấy tổng tích n số nhị phân cần chuyển nhân với 20 đến 2N-1 hay theo biểu thức tổng quát nhƣ sau: A = B(N-1)* 2(N-1) + B(N-2)* 2(N-2) + B(N-3)* 2(N-3) + … + B(1)* 2(1) + B(0)* 2(0)

Ví dụ : Chuyển số nhị phân không dấu 01011110b sang số thập phân A = 0*27 + 1*26 +0*25 + 1*24+ 1*23 + 1*22 + 1*21 + 0*20 = 94

nhƣ ta có 01011110b = 94

1.3.7.3 Chuyển đổi số nhị phân sang Hexa :

(10)

9 Trƣớc hết ta chia số nhị phân cho thành nhóm 4-bit tính từ bít có trọng số nhỏ nhất, sau thay nhóm 4-bit ký hiệu hexa tƣơng ứng với ta thu đƣợc kết nhƣ sau:

1100 1010 1111 1110 Kết

CAFEh

C A F E

1.3.7.4 Chuyển đổi số Hexa sang nhị phân:

Ví dụ : Chuyển số hexa 2F8h ABBAh sang số nhị phân

Tƣơng tự nhƣ trƣờng hợp ta thay ký hiệu hexa 4-bit nhị phân tƣơng ứng với ta thu đƣợc kết nhƣ sau: (tham khảo chuyển đổi nhị phân sang hexa)

1.3.7.5 Mã ASCII: (American Standard Code for Information Interchange )

(11)(12)

11

Chƣơng CẤU TRÚC PHẦN CỨNG VÀ NGƠN NGỮ LẬP TRÌNH C

2.1 Cấu trúc phần cứng vi điều khiển 8051

- Bộ vi điều khiển 8051 đƣợc Intel cho mắt năm 1981, vi điều khiển có 128 byte RAM, 4KB ROM, định thời, cổng nối tiếp cổng bít Tất đƣợc tích hợp chíp

- 8051 trở nên phổ biến sau Intel sau cho phép nhà sản xuất khác sản xuất bán dạng biến thể 8051 với điều kiện phải để mã chƣơng trình tƣơng thích với 8051 Từ dẫn đến đời nhiều phiên 8051 với tốc độ chíp dung lƣợng nhớ ROM

Hình 2.1: Sơ đồ khối vi điều khiển 8051

Bảng 2.1: Đặc điểm kỹ thuật số thành viên họ 8051

2.2 Sơ đồ chân

- Các thành viên họ 8051 nhƣ 8751, 89C51, DS5000 có kiểu đóng vỏ khác nhƣ: Dạng hai hàng chân DIP (Dual in – line pakage)

(13)

12 Dạng khơng có chân đỡ LLC (Leadless Chip Carrier)

Tất có 40 chân với chức năng, vào I/O đọc RD, ghi WR, địa chỉ, liệu ngắt Tuy nhiên, để đáp ứng ứng dụng có yêu cầu hạn chế số chíp đƣợc đóng gói 20 chân với số cổng vào

Hình 2.2 Sơ đồ chân vi điều khiển 8051 2.2.1 Nhóm chân nguồn, dao động, điều khiển

- Vcc chân 40 cung cấp điện áp +5V cho chíp - GND chân số 20 nối với V

- XTAL1, XTAL2 hai chân dao động đƣợc nối nhƣ sau:

Hình 2.3 Nối hai chân với nguồn dao động là thạch anh

Hình 2.4 Nối hai chân với nguồn phát xung ngoài

(14)

13 - RST khởi động lại (reset chân số 9): bình thƣờng chân đƣợc nối với mass thông qua điện trở, có xung cao đặt tới chân VĐK kết thúc hoạt động tiến hành khởi động lại

Hình 2.5 Mạch nối chân Reset

- EA: (External Access chân 31) truy cập nhớ ngoài: Đối với họ 8051 có ROM chƣơng trình chíp chân EA đƣợc nối với nguồn Vcc Trƣờng hợp khơng có ROM chíp nhƣ 8031 8032 mã chƣơng trình lƣu cất nhớ ROM ngồi, chân EA đƣợc nối với mass Nhƣ vậy, chân EA đƣợc nối với mass đƣợc nối với dƣơng nguồn, khơng để hở

Ví dụ:

Xác định chu kỳ máy với a) XTAL = 11.059MHz b) XTAL = 16MHz

Giải:

a) 11.059 MHz/12= 921.6kHz Chu kỳ máy = 1/921.6Khz=1.085µs b) 16MHz/12 = 1.333MHz

Chu kỳ máy = 1/1.333MHz =0.75 µs

- PSEN (chân 29 – program store enable): chân cho phép cất chƣơng trình, chƣơng trình đƣợc cất ROM ngồi chân đƣợc nối tới chân OE ROM

- ALE (chân 30- Address Latch Enable): chân có mức tích cực cao, chân đƣợc sử dụng để phân kênh địa liệu cách nối tới chân G chíp 74LS373

2.2.2 Nhóm chân cổng vào

(15)

14 - Cổng P0: Bình thƣờng cổng ra, để vừa làm đầu vừa làm đầu vào chân

phải nối với điện trở kéo 10K Vì P0 có dạng cực máng hở

Hình 2.6: Cổng P0 ln đƣợc nối với điện trở kéo làm cổng vào

Mặc định P0 cổng ra, để cấu hình P0 cổng vào phải ghi tới tất bít cổng câu lệnh: MOV P0,#0FFH

Ngồi ra, nối 8051/31 tới nhớ ngồi P0 cung cấp địa liệu cách dồn kênh để tiết kiệm số chân Chân ALE báo P0 có địa hay liệu Nếu ALE = P0 cấp liệu

- Cổng P1: Sử dụng làm cổng vào ra, không cần điện trở kéo nhƣ cổng P0

- Cổng P2: Sử dụng làm cổng vào giống nhƣ P1 Tuy nhiên 8031, truy cập 64 KB nhớ ngồi cần có bus địa 16 bít, P0 cung cấp địa bít thấp qua A0~A7, cịn lại bít địa cao A8~A15 P2 cung cấp

- Cổng P3: Sử dụng làm cổng vào giống nhƣ P0, P1, P2 Ngoài P3 cịn có số chức quan trọng khác

2.3 Tổ chức không gian nhớ

2.3.1 Bản đồ nhớ ROM 8051

- Do đến chƣơng trình 8051 16 bít nên khơng gian ROM tối đa truy cập đƣợc 64K

- Dải địa ROM từ 0000h ~FFFFH, lệnh ROM chƣơng trình đặt 0000H cịn lệnh cuối phụ thuộc vào dung lƣợng ROM chíp thành viên họ 8051

- Ví dụ :

Tìm địa nhớ ROM thành viên họ 8051 sau a) AT 8951 ( 8751 ) với 4k byte

(16)

15

Giải:

a) Với 4k byte không gian nhớ ROM chip, ta có 4096 byte 1000H dạng Hexa ( x 1024 = 4096D = 1000H ) Bộ nhớ đƣuọc xếp ngăn nhớ từ 0000 đến 0FFFFH Lƣu ý ngăn nhớ

b) Với 32k byte ta có 32.768 byte, ( 32 x 1024) Chuyển 32.768 số Hexa ta nhận đƣợc giá trị 8000H Do vậy, không gian nhớ dải từ 0000 đến 7FFFH

Hình 2.7: Bộ vi xử lý vi điều khiển

2.3.2 Tổ chức không gian nhớ RAM 8051

1 128 byte RAM thấp

- Có đị từ 00~7FH đƣợc chia thành vùng sau:

- Ngăn nhớ từ 00H~1FH tổng cộng 32 byte, đƣợc dành làm băng ghi ngăn xếp

- Ngăn nhớ từ 20H~2FH tổng cộng 16 byte đƣợc dùng làm nhớ đọc ghi định địa đƣợc theo bit

(17)

16

Hình 2.8: Tổ chức RAM 8051

 Băng ghi 8051: 32 byte đƣợc chia làm băng ghi (0,1,2,3) Mỗi băng ghi có ghi từ R0~R7

Hình 2.9: băng ghi địa RAM

2 128 byte RAM cao

(18)

17

Hình 2.9 128 byte RAM cao

2.4 Thanh ghi

- Thanh ghi 8051 đƣợc dùng để lƣu tạm thời liệu địa Các ghi chủ yếu có liệu bít 8051 có kiểu liệu bít Các bít ghi đƣợc xắp xếp nhƣ hình sau:

(19)

18 2.4.1 Thanh ghi tích luỹ A:

- Là ghi bít đƣợc sử dụng để lƣu giữ liệu tạm thời, thƣờng đƣợc sử dụng phép toán số học logic

D7 D6 D5 D4 D3 D2 D1 D0

2.4.2 Thanh ghi từ trạng thái PSW (hay gọi ghi cờ) : - Là ghi bít dùng để báo trạng thái chƣơng trình

2.4.3 Thanh ghi điều khiển đếm định thời (TCON)

Tên bít Vị trí bít Mơ tả

(20)

19 TR1 TR1 = T1 chạy

TR1 = T1 dừng

TF0 Cờ tràn T0, thiết lập xóa phần cứng TR0 TR0 = T0 chạy

TR0 = T0 dừng

IE1 Cờ ngắt ngồi 1, thiết lập xóa phần cứng IT1 IT1 = kích hoạt ngắt theo sƣờn xuống

IT1 = kích hoạt ngắt ngồi theo mức thấp (mặc định) IE0 Cờ ngắt ngồi 0, thiết lập xóa phần cứng

IT0 IT0 = kích hoạt ngắt theo sƣờn xuống

IT0 = kích hoạt ngắt ngồi theo mức thấp (mặc định) 2.4.4 Thanh ghi điều khiển chế độ định thời/bộ đếm (TMOD)

T/C1 T/C0

GATE C/T M1 M0 GATE C/T M1 M0

- GATE = 1: T/Cx (x = 0, 1) chạy chân INTx HIGHT - GATE = 0: T/Cx (x = 0, 1) chạy TRx =

- C/T = 0: Chức định thời (timer) đƣợc chọn

- C/T = 1: Chức đếm xung (counter) đƣợc chọn - M1 M0: hai bít lựa chọn chế độ định thời

M1 M0 Chế độ hoạt động 0 Bộ định thời 13 bít

0 Bộ định thời/bộ đếm 16 bít

Ngày đăng: 09/03/2021, 06:23

Tài liệu cùng người dùng

Tài liệu liên quan