1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Bài giảng Điều khiển hệ thống cơ điện tử sử dụng vi điều khiển CĐ Nghề Công Nghiệp Hà Nội

128 84 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 128
Dung lượng 11,13 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

(NB) Bài giảng Điều khiển hệ thống cơ điện tử sử dụng vi điều khiển cung cấp các nội dung chính như sau: Giới thiệu về vi điều khiển 8051, giao tiếp vào ra IO, giao tiếp với led 7 thanh, giao tiếp với led ma trận, giao tiếp với phím bấm, giao tiếp LCD, điều khiển động cơ một chiều;...Mời các bạn cùng tham khảo

Trang 1

UBND THÀNH PHỐ HÀ NỘI

TRƯỜNG CAO ĐẲNG NGHỀ CÔNG NGHIỆP HÀ NỘI

BÀI GIẢNG ĐIỀU KHIỂN HỆ THỐNG CƠ ĐIỆN TỬ

SỬ DỤNG VI ĐIỀU KHIỂN

Hà Nội - 2009

Trang 2

Mục lục

BÀI 1 : GIỚI THIỆU VỀ VI ĐIỀU KHIỂN 8051 5

1 Giới thiệu về vi điều khiển 5

2 Giới thiệu các loại chip 8051 7

3 Giới thiệu về P89V51RB2 7

4 Lập trình cho P89V51RB2 12

5 Nạp chương trình 34

BÀI 2 : GIAO TIẾP VÀO RA I/O 37

1 Giới thiệu giao tiếp vào ra I/O 37

2 Ví dụ chương trình nhấp nháy led 38

BÀI 3 : GIAO TIẾP VỚI LED 7 THANH 42

1 Cơ bản về led 7 thanh 42

2 Nguyên lí lập trình cho led 7 thanh 44

3 Ví dụ minh họa 45

BÀI 4 : GIAO TIẾP VỚI LED MA TRẬN 49

1 Cơ bản về led ma trận 49

2 Tạo font cho led ma trận 50

3 Ví dụ minh họa 52

BÀI 5 : GIAO TIẾP VỚI PHÍM BẤM 54

1 Cơ bản về phím bấm 54

2 Chương trình ví dụ 55

3 Kĩ thuật chống rung bàn phím 57

BÀI 6 : GIAO TIẾP LCD 59

1 Giới thiệu về LCD 16x2 59

2 Cách cấu hình để giao tiếp với LCD cho P89V51RB2 65

Trang 3

3 Ví dụ 67

BÀI 7 : TIMER 70

1 Giới thiệu về timer 70

2 Cách cấu hình timer trong Keil C cho P89V51RB2 74

3 Ví dụ minh họa 75

BÀI 8 : NGẮT 78

1 Giới thiệu về ngắt 78

2 Các bước cấu hình cho ngắt hoạt động 79

3 Ví dụ minh họa 82

BÀI 9 : ĐỘNG CƠ BƯỚC 84

1 Cơ bản về động cơ bước 84

2 Các mạch điều khiển động cơ bước 85

3 Ví dụ 88

BÀI 10 : ĐIỀU KHIỂN ĐỘNG CƠ MỘT CHIỀU 90

1 Giới thiệu về động cơ một chiều 90

2 Ví dụ minh họa 92

BÀI 11 : GIAO TIẾP VỚI MA TRẬN PHÍM 94

1 Cơ bản về ma trận phím 94

2 Ví dụ minh họa 95

BÀI 12 : GIAO TIẾP VỚI CỔNG LPT 98

1 Cơ bản về cổng LPT 98

2 Ví dụ minh họa 102

BÀI 13 : GIAO TIẾP MÁY TÍNH 104

1 Cơ bản về giao tiếp RS232 104

2 Cách cấu hình module UART 106

3 Ví dụ 107

BÀI 14 : GIAO TIẾP VỚI GLCD 114

Trang 4

1 Cơ bản về GLCD 114

2 Ví dụ minh họa 120

BÀI 15 : GIAO TIẾP VỚI ADC 123

1 Cơ bản về ADC 123

2 Ví dụ minh họa 127

Trang 5

BÀI 1 : GIỚI THIỆU VỀ VI ĐIỀU KHIỂN 8051

- Giới thiệu chung về vi điều khiển

- Giới thiệu về vi điều khiển 8051, P89V51RB2

- Lập trình cho P89V51RB2

1 Giới thiệu về vi điều khiển

Khái niệm vi điều khiển (microcontroller – MC) đã khá quen thuộc với các sinh viên CNTT, điện tử, điều khiển tự động cũng như Cơ điện tử… Nó là một trong những IC thích hợp nhất để thay thế các IC số trong việc thiết kế mạch logic Ngày nay đã có những MC tích hợp đủ tất cả các chức năng của mạch logic Nói như vậy không có nghĩa là các IC số cũng như các IC mạch số lập trình được khác như PLC… không cần dùng nữa MC cũng có những hạn chế mà rõ ràng nhất là tốc độ chậm hơn các mạch logic… MC cũng là một máy tính – máy tính nhúng vì

nó có đầy đủ chức năng của một máy tính Có CPU, bộ nhớ chương trình, bộ nhớ

dữ liệu, có I/O và các bus trao đổi dữ liệu

Cần phân biệt khái niệm MC với khái niệm vi xử lý (microprocessor – MP) như 8088 chẳng hạn MP chỉ là CPU mà không có các thành phần khác như bộ nhớ I/O, bộ nhớ Muốn sử dụng MP cần thêm các chức năng này, lúc này người ta gọi

nó là hệ vi xử lý (microprocessor system) Do đặc điểm này nên nếu để lựa chọn giữa MC và MP trong một mạch điện tử nào đó thì tất nhiên người ta sẽ chọn MC

vì nó sẽ rẻ tiền hơn nhiều do đã tích hợp các chức năng khác vào trong chip

Vậy để một vi điều khiển chạy được thì cần những điều kiện gì :

Trang 6

- Thứ nhất là nguồn cấp, nguồn cấp là cái đầu tiên, cơ bản nhất trong các mạch điện tử, và vấn đề về nguồn là 1 trong những vấn đề rất đau đầu Không có nguồn thì không thể gọi là 1 mạch điện được Nguồn cấp cho vi điều khiển là nguồn 1 chiều

- Thứ hai là mạch dao động, mạch dao động để làm gì ? Giả sử các bạn lập trình cho con 8051 : đến thời điểm A làm 1 công việc gì đó, thế thì nó lấy cái

gì để xác định được thời điểm nào là thời điểm A ? Đó chính là mạch dao động Ví dụ như mọi người đều thống nhất vào một giờ chuẩn để làm việc

Cả hệ thống vi điều khiển cũng vậy, cả hệ thống khi đó đều lấy xung nhịp clock – xung nhịp mạch dao động làm xung nhịp chuẩn để hoạt động

- Thứ ba là ngoại vi, ngoại vi ở đây là các thiết bị để giao tiếp với vi điều khiển để thực hiện 1 nhiệm vụ nào đó mà vi điều khiển đưa ra Ví dụ như các bạn muốn điều khiển động cơ 1 chiều, nhưng vì vi điều khiển chỉ đưa ra các mức điện áp 0-5V, và dòng điều khiển cỡ mấy chục mA, với nguồn cấp này thì ko thể nối trực tiếp động cơ vào vi điều khiển để điều khiển, mà phải qua 1 thiết bị khác gọi là ngoại vi, chính xác hơn ở đây là driver, người ta dùng driver để có thể điều khiển được các dòng điện lớn từ các nguồn điện nhỏ Các bàn phím, công tắc… là các ngoại vi

- Thứ 4 là chương trình, ở đây là file hex để nạp cho vi điều khiển, chương trình chính là thuật toán mà bạn triển khai thành các câu lệnh rồi biên dịch thành mã hex để nạp vào vi điều khiển

Trang 7

2 Giới thiệu các loại chip 8051

- 8051 được lần đầu tiên được sản xuất bởi Intel năm 1980

- Cho đến nay, 8051 đã được phát triển bởi nhiều nhà sản xuất như Atmel, Philip… thành nhiều phiên bản khác nhau, dựa trên core 8051 : AT89C51, AT89C52, P89V51Rx…

- Dòng P89V51RB2 được sản xuất bởi Philips

- Cho phép chọn lựa 2 chế độ clock, ở chế độ bình thường, chip chạy với tốc

độ như 8051 (12 chu kì clock trên một chu kì máy), ở chế độ X2, chip chạy với tốc độ 6 chu kì clock trên 1 chu kì máy

- Hỗ trợ cả chế độ nạp nối tiếp (ISP) và nạp song song

- Hỗ trợ chế độ IAP : Cho phép cấu hình lại bộ nhớ flash trong khi chip đang chạy

- Điện áp hoạt động từ 0 đến 5V, tần số hoạt động lên tới 40MHz

- Hỗ trợ giao tiếp UART và SPI

- Có module Capture/Compare/PWM

- Có 4 cổng, mỗi cổng 8 bit

- Ba timer/counter 16 bit

- Hỗ trợ watdog

- 8 nguồn ngắt với 4 mức ưu tiên

- Hai thanh ghi DPTR

Sau đây là sơ đồ khối của P89V51RB2 :

Trang 8

Mô tả chân của P89V51RB2 :

Sơ đồ chân :

Trang 9

- Cổng P0: Bình thường đây là cổng ra Để có thể vừa làm đầu ra, vừa làm đầu vào thì mỗi chân của P0 phải được nối tới một điện trở treo 10 kΩ bên ngoài Sở dĩ như vậy là vì cổng P0 có dạng cực máng hở, đây là điểm khác với các cổng P1, P2 và P3 Khi nối 8051 tới bộ nhớ ngoài, P0 trở thành bus địa chỉ và bus dữ liệu dồn kênh để tiết kiệm số chân [byte thấp của bus địa chỉ nếu là địa chỉ]

- Cổng P1: P1 chỉ có một công dụng là vào/ra

- Cổng P2: P2 có 2 công dụng, hoặc làm nhiệm vụ vào/ra hoặc là byte địa chỉ cao của bus địa chỉ 16-bit cho các thiết kế có bộ nhớ chương trình ngoài hoặc các thiết kế có nhiều hơn 256 byte bộ nhớ dữ liệu ngoài

- Cổng P3: P3 có 2 công dụng Khi không hoạt động vào/ra, các chân của P3

có nhiều chức năng riêng (mỗi chân có chức năng riêng liên quan đến các đặc trưng cụ thể của 8051)

Bit Tên Địa chỉ

bit

Chức năng

P3.0 RxD B0H Nhận dữ liệu của cổng nối tiếp

P3.1 TxD B1H Phát dữ liệu của cổng nối tiếp

Trang 10

P3.2 INT0 B2H Ngắt ngoài 0

P3.3 INT1 B3H Ngắt ngoài 1

P3.4 T0 B4H Chân vào của bộ định thời/đếm 0

P3.5 T1 B5H Chân vào của bộ định thời/đếm 1

P3.6 WR B6H Điều khiển ghi bộ nhớ dữ liệu ngoài

P3.7 RD B7H Điều khiển đọc bộ nhớ dữ liệu ngoài

Chức năng các chân của cổng P3

- Chân cho phép bộ nhớ chương trình PSEN : 8051 cung cấp cho ta 4 tín hiệu điều khiển bus Tín hiệu cho phép bộ nhớ chương trình PSEN (Program Store Enable) là tín hiệu xuất Đây là tín hiệu cho phép ta truy xuất bộ nhớ chương trình ngoài Chân này thường nối với chân cho phép xuất OE

(Output Enable) của EPROM (hoặc ROM) để cho phép đọc các byte lệnh

- Chân cho phép chốt địa chỉ ALE: Chân xuất tín hiệu cho phép chốt địa chỉ ALE (Address Latch Enable) để phân kênh (demultiplexing) bus dữ liệu và bus địa chỉ

- Chân truy xuất ngoài EA (External Access): Chân vào này có thể được nối với 5V (logic 1) hoặc với GND (logic 0)

+ Nếu chân này nối lên 5V, 8051 thực thi chương trình trong ROM nội (chương trình nhỏ hơn 4K/8K)

+ Nếu chân này nối với GND (và chân PSEN cũng ở logic 0), chương trình cần thực thi chứa ở bộ nhớ ngoài

- Chân RESET (RST): Khởi động lại Đây là chân vào, mức tích cực cao, bình thường ở mức thấp Khi có xung cao đặt tới chân này thì bộ vi điều khiển sẽ kết thúc mọi hoạt động hiện tại và tiến hành khởi động lại Khi reset, mọi giá

Trang 11

trị trên các thanh ghi sẽ bị xoá Lưu ý, để reset có hiệu quả, chân RST cần duy trì trạng thái tích cực mức cao tối thiểu 2 chu kỳ máy

- Các chân XTAL1 và XTAL2: Mạch dao động bên trong chip 8051 được ghép nối với thạch anh bên ngoài ở hai chân XTAL1 và XTAL2

Trang 12

4 Lập trình cho P89V51RB2

Giới thiệu

Để lập trình cho P89V51RB2, chúng ta có thể sử dụng 2 ngôn ngữ cơ bản là

C và ASM Nhìn chung, 2 ngôn ngữ này có những ưu và nhược điểm riêng

Ngôn ngữ ASM có ưu điểm là gọn nhẹ, giúp người lập trình nắm bắt sâu hơn về phần cứng Tuy nhiên lại có nhược điểm là phức tạp, khó triển khai về mặt thuật toán, không thuận tiện để xây dựng các chương trình lớn

Ngược lại ngôn ngữ C lại dễ dung, tiện lợi, dễ debug, thuận tiện để xây dựng các chương trình lớn Nhưng nhược điểm của ngôn ngữ C là khó giúp người lập trình hiểu biết sâu về phần cứng, các thanh ghi, tập lệnh của vi điều khiển, hơn nữa, xét về tốc độ, chương trình viết bằng ngôn ngữ C chạy chậm hơn chương trình viết bằng ngôn ngữ ASM

Tùy vào từng bài toán, từng yêu cầu cụ thể mà ta chọn lựa ngôn ngữ lập trình cho phù hợp

Giới thiệu phần mềm Keil C

Có rất nhiều phần mềm lập trình cho P89V51RB2, Keil C là một trong những phần mềm khá nổi tiếng và phổ biến Trong khuôn khổ giáo trình này, chúng ta sẽ sử dụng phần mềm Keil C để lập trình cho P89V51RB2

Tạo Project mới trong Keil C :

Để tạo 1 project mới chọn Project — New project như sau:

Trang 13

Được hình sau:

Trang 14

Đánh tên và chuyển đến thư mục bạn lưu project Bạn nên tạo mỗi một thư mục cho 1 project Rồi chọn Save

Trang 16

Được hình sau:

Trang 17

Trong này có 1 loạt các hãng điện tử sản xuất 8051 Bạn lập trình cho con nào thì chọn con đấy, kích chuột vào các dấu + để mở rộng các con IC của các hãng Ở đây ta lập trình cho P89V51RB2 của hãng Philips nên ta chọn như sau:

Trang 18

Khi chọn chip thì ngay lập tức cái bảng hiện ra 1 số tính năng của chíp các bạn có thể nhìn thấy Nhập OK được cửa sổ như sau:

Trang 19

Chúng ta sẽ chọn No Vì nếu chọn Yes chỉ làm cho file lập trình của bạn thêm nặng Chúng ta được cửa sổ sau:

Trang 20

Để tạo 1 file code các bạn chọn File — New hoặc ấn Ctrl+N Như sau:

Trang 21

Được cửa sổ như sau:

Trang 22

Cho cửa sổ Text 1 to ra được như sau:

Trang 23

Tiếp theo bạn chọn File — Save As… hoặc Ctrl+S Để nhớ file mặc dù chưa

có gì Như sau:

Trang 25

Các bạn nhập tên vào text box file name Chú ý tên gì cũng được nhưng không được thiếu đuôi mở rộng C Và nhấn Save

Trang 26

Trong ô bên trái màn hình, cửa sổ project workspace, các bạn mở rộng cái target 1 ra được như sau:

Trang 27

Nhấp chuột phải vào thư mục Suorce Group1 được hình như trên Chọn Add files to Group “Source Group1” để add file vào project Được như sau:

Trang 28

Chọn file C mà các bạn vừa nhớ Của tôi là ThinhiemLED.c Nhấn Add 1 lần rồi ấn Close Nếu bạn ấn Add 2 lần nó sẽ thông báo là file đã add bạn chỉ việc

OK rồi nhấn Close Được như sau:

Trang 29

Bây giờ nhìn trong Source Group 1 đã thấy file ThinhiemLED.C Các bạn nhấp chuột phải vào vùng soạn thảo file ThinhiemLED.C như sau, để thêm file thư viện.Chọn Insert< #include <REGX51.H>

Trang 31

Lập trình :

Các bạn viết chương trình thử 1 chương trình như sau làm ví dụ Khi viết xong 1 dòng lệnh nên giải thích dòng lệnh đó làm gì Ví dụ:

Trang 32

Các bạn nên chia chương trình như trên Với 1 file nhỏ thì nó hơi rườm rà Nhưng với 1 file lớn khoảng 1000 dòng code thì nó lại rất sáng sủa Các bạn nên tạo 1 file mẫu rồi nhớ vào 1 file text để ở đâu đó mỗi lần dùng chỉ việc copy rồi paste qua chứ không nên mỗi lần tạo một cái như vậy lại phản tác dụng Phía trên

là phần bộ tiền xử lí và khai báo biến Tiếp theo là viết hàm trễ

Để biên dịch chương trình, các bạn nhấn phím F7, nếu chương trình báo như sau có nghĩa là đã biên dịch thành công :

Trang 35

Khi nạp thành công, sẽ có dòng status thông báo như sau :

Trang 37

BÀI 2 : GIAO TIẾP VÀO RA I/O

- Cơ bản về giao tiếp vào ra I/O

- Các cổng trong P89V51RB2 và cơ bản về chức năng của các cổng

- Cách cấu hình vào ra I/O

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

1 Giới thiệu giao tiếp vào ra I/O

Lập trình I/O là lập trình đơn giản và cơ bản nhất, nhưng lại được sử dụng nhiều nhất, chúng ta điều khiển on/off bóng đèn, động cơ, hay 1 thiết bị nào đó cũng là 1 dạng của điều khiển I/O

Để giảm bớt số chân ra, một số chân của P89V51RB2 là các chân đa chức năng, nó phục vụ cho các thiết bị ngoại vi Ở đây khái niệm thiết bị ngoại vi không

có nghĩa là 1 chip khác mua rời bên ngoài mà là các mô đun được tích hợp sẵn trong chip như các mô đun ADC, Counter Khi các thiết bị ngoại vi này được enable thì các chân này không được sử dụng như các chân của các cổng I/O thông thường nữa

P89V51RB2 có 4 cổng vào ra là P0, P1, P2, P3 Tất cả các cổng này đều có thể cấu hình làm chức năng vào/ra cơ bản

Trang 38

2 Ví dụ chương trình nhấp nháy led

Nhấp nháy led là một ví dụ kinh điển cho những người mới tiếp xúc với một loại

vi điều khiển nào đó Ví dụ sau đây sẽ làm nhấp nháy led nối vào chân RB1 của vi điều khiển

LED là viết tắt của chữ Light Emitting Diode, có nghĩa là diode phát quang, loại diode này khi được phân cực thuận với đủ điều kiện điện áp và dòng điện thì

sẽ phát ra ánh sáng

LED có ứng dụng rất rộng rãi, chúng ta thường thấy led được dùng trong đèn báo nguồn, đèn nháy, bảng quang báo, gần đây, người ta đang phát triển led làm đèn chiếu sáng, do dùng LED tiết kiệm được điện và hiệu quả cao trong chiếu sáng

Sơ đồ mạch

Sơ đồ ghép nối một led :

Sơ đồ ghép nối 8 led :

Trang 39

21

P2.0/A8 22 P2.1/A9 23 P2.3/A11 25 P2.4/A12 26 P2.6/A14 28

1 2

11 12

P1`0 P1`1 1 P1.0/T2 P3.0/RXD 10

31

9 EA/VPP

RST

P3.2/INT0 13 P3.3/INT1 14 P3.4/T0 15 P3.5/ T1 16 P3.6/WR 17 P3.7/RD ALE/PROG 30PSEN

AT89S52

Y 1

C2 22

22

C3 10uF

RESET

R3 10K

0

Trong ví dụ sau, chúng ta sẽ nối 8 led vào cổng P1, sơ đồ nối như hình trên Sau đây là sơ đồ thuật toán :

Trang 40

Chương trình :

Trang 41

Câu lệnh trên sẽ xuất ra cổng P1 giá trị là 0x00 = 0b0000 0000 = 0 Có nghĩa

là tất cả các chân ở cổng P1 đều có mức logic là 0

Bài tập

- Viết chương trình nhấp nháy P2

- Viết chương trình cho led sáng dần từ trái qua phải Led nối vào P3

Ngày đăng: 08/06/2020, 15:23

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm