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

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

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 (11.13 MB, 128 trang )

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


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


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


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


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ì :


- 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.
Các công cụ để học 8051 :

-

Ngôn ngữ lập trình : C, ASM…
Phần mềm lập trình : Keil C, Read51…
Mạch nạp : STK200, Burn-E…
Mạch phát triển : Board trắng, phần mềm mô phỏng, kit…


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.
3. Giới thiệu về P89V51RB2

Đây là dòng vi điều khiển được sản xuất bởi Philips (NXP), mang tất cả các đặc
điểm của dòng 8051, ngoài ra, còn có thêm một số tính năng khác mà 8051 không
có. Sau đây là các tính năng của P89V51RB2 :
- Có 16KB Flash, 1024B Ram.
- 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 :


Mô tả chân của P89V51RB2 :
Sơ đồ chân :


- 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ỉ


Chức năng

bit
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


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á



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.


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:


Được hình sau:



Đá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.



Được hình sau:


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:


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:


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:


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


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


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



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:



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


×