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

lap trinh VDK don gian nhat voi 89c51

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 (621 KB, 16 trang )

Bài lập trình Vi Điều Khiển đơn giản nhất

LÊ VĂN NGHĨA – TỰ ĐỘNG HÓA – KHOA ĐIỆN, ĐIỆN TỬ - BKĐN – 0988.312.362 Trang 1

Lập trình Điều Khiển LED Đơn Với 89C51



IC vi điều khiển là gì?
Trước hết hãy làm quen với khái niệm điều khiển trong ngành điện tử. Điều khiển là dùng mức áp cao hay
thấp để đóng mở một thiết bị. Bạn xem thí dụ sau:


Trong hình này, Bạn thấy khi chân B của transistor Q1 cho đặt ở mức volt thấp, thì transistor ở trạng thái
ngưng dẫn và không có dòng cấp cho Led. Led sẽ tắt.


Bài lập trình Vi Điều Khiển đơn giản nhất

LÊ VĂN NGHĨA – TỰ ĐỘNG HÓA – KHOA ĐIỆN, ĐIỆN TỬ - BKĐN – 0988.312.362 Trang 2



Trong hình này, Bạn thấy khi chân B của transistor Q1 cho đặt ở mức volt cao thì transistor ở trạng thái bão
hòa và có dòng cấp cho Led. Led sẽ sáng.


Với hình động chúng ta thấy rõ hơn tác nhân điều khiển, tức bit 0 hay bit 1 trên chân B, làm Led lúc tắt lúc
sáng. Bạn xem hình.

Bài lập trình Vi Điều Khiển đơn giản nhất



LÊ VĂN NGHĨA – TỰ ĐỘNG HÓA – KHOA ĐIỆN, ĐIỆN TỬ - BKĐN – 0988.312.362 Trang 3




Qua hai hình này có thể thấy, chúng ta có thể dùng mức volt cao thấp để tắt mở một thiết bị, ở đây là tắt mở
Led. Chúng ta tạm chấp nhận định nghĩa sau:

* Mức volt thấp là bit 0.
* Mức volt cao là bit 1.


Vậy có thể nói để cho Led sáng, chúng ta dùng bit 1 và làm cho Led tắt chúng ta dùng bit 0. Trong tác động
điều khiển đóng mở, chúng ta có thể đóng mở một Relay, đóng mở điện cho một motor DC. Bạn xem hình:

Bài lập trình Vi Điều Khiển đơn giản nhất

LÊ VĂN NGHĨA – TỰ ĐỘNG HÓA – KHOA ĐIỆN, ĐIỆN TỬ - BKĐN – 0988.312.362 Trang 4



Trong hình này, trên chân C của transistor Q1, chúng ta thấy có:

* Led chiếu sáng.
* Relay 12V với tiếp điểm lá kim K1.
* Motor DC 12V

Vậy nếu đặt bit 1 trên chân B các thiết bị trên chân C của Q1 sẽ được cấp dòng và nếu dùng bit 0 trên chân B
thì các thiết bị trên chân C sẽ bị cắt dòng. Qua các thí dụ trên, chúng ta thấy nếu có một linh kiện điện tử có

thể xuất ra mức volt cao hay mức volt thấp theo câu lệnh do chúng ta soạn ra thì lúc đó chúng ta đã có thể
điều khiển các thiết bị bằng câu lệnh. IC vi điều khiển có các cảng (port), ở các chân của cảng có thể xuất
nhập mức áp cao hay thấp tùy theo các câu lệnh do chúng ta soạn ra, do đó nếu dùng ic vi điều khiển chúng
ta sẽ có thể điều khiển nhiều thiết bị theo câu lệnh.

Hình vẽ sau đây cho thấy 4 cảng của ic vi điều khiển AT89C51.

Bài lập trình Vi Điều Khiển đơn giản nhất

LÊ VĂN NGHĨA – TỰ ĐỘNG HÓA – KHOA ĐIỆN, ĐIỆN TỬ - BKĐN – 0988.312.362 Trang 5



Bạn biết mức volt trên các chân của mỗi cảng Bạn đều có thể chọn định ở mức volt cao hay mức volt thấp
bằng câu lệnh.

Lệnh đặt chân lên mức volt cao là setb (set bit). Lệnh đặt chân xuống mức volt thấp là clr (Clear bit).

Thí dụ: Bạn muốn chân p1.0 (chân số 1) lên mức volt cao, Bạn gõ câu lệnh như sau:

setb p1.0

Bài lập trình Vi Điều Khiển đơn giản nhất

LÊ VĂN NGHĨA – TỰ ĐỘNG HÓA – KHOA ĐIỆN, ĐIỆN TỬ - BKĐN – 0988.312.362 Trang 6

Bạn muốn chân p1.1 (chân số 2) xuống mức volt thấp. Bạn gõ câu lệnh như sau:

clr p1.1


Qua phần trình bày trên, tôi nghĩ Bạn đã hiểu điều khiển các thiết bị bằng câu lệnh là gì? và nó làm việc ra
sao?

Hãy xem hình sau:


Trong mạch, R1 (4.7K) là điện trở hạn dòng chân B và diode D2 dùng dập điện áp nghịch, xuất hiện mỗi khi
relay bị cắt dòng. Hình vẽ cho Bạn thấy chúng ta đã dùng câu lệnh để tắt mở Q1 và dùng relay 12V với tiếp
điểm lá kim K1 để đóng mở các thiết bị volt cao khác (như motor công nghiệp, máy bơm ) theo câu lệnh.

Một lệnh khác, lệnh mov (move) có thể cùng một lúc xác định trạng thái bit cho 8 chân của một cảng. Thí dụ:
Cách dùng lệnh move qua các hình vẽ như sau:
Bài lập trình Vi Điều Khiển đơn giản nhất

LÊ VĂN NGHĨA – TỰ ĐỘNG HÓA – KHOA ĐIỆN, ĐIỆN TỬ - BKĐN – 0988.312.362 Trang 7


Muốn có dòng cấp cho Led Bạn phải cho chân nối với Led xuống mức volt thấp với bit 0. Và muốn tắt Led Bạn
dùng bit 1. Vậy với câu lệnh:

mov p3, #01010011b

Bạn nhìn vào hình sẽ thấy các Led ứng với chân có mức volt thấp phát sáng.

Bài lập trình Vi Điều Khiển đơn giản nhất

LÊ VĂN NGHĨA – TỰ ĐỘNG HÓA – KHOA ĐIỆN, ĐIỆN TỬ - BKĐN – 0988.312.362 Trang 8


Để tắt hết 8 Led trên p3. Bạn dùng câu lệnh:


mov p3, #11111111b


Bài lập trình Vi Điều Khiển đơn giản nhất

LÊ VĂN NGHĨA – TỰ ĐỘNG HÓA – KHOA ĐIỆN, ĐIỆN TỬ - BKĐN – 0988.312.362 Trang 9


Để 8 Led trên p3 sáng hết. Bạn dùng câu lệnh:

mov p3, #00000000b


Có thể dùng nhiều cảng để điều khiển các Led trên bảng Led ma trận. Bạn xem hình:



Hình cho thấy muốn Led D1 sáng, Bạn phải dùng câu lệnh:
Bài lập trình Vi Điều Khiển đơn giản nhất

LÊ VĂN NGHĨA – TỰ ĐỘNG HÓA – KHOA ĐIỆN, ĐIỆN TỬ - BKĐN – 0988.312.362 Trang 10


clr p3.1 ;

Lệnh này đặt chân p3.1 xuống mức volt thấp và làm transistor Q1 bão hòa, cùng lúc Bạn dùng câu lệnh:

setb p1.1 ;


Lệnh này đặt chân p1.1 lên mức volt cao và làm transistor Q3 bão hòa, như vậy sẽ có dòng cấp cho Led D1.
Led D1 sẽ phát sáng, trong khi đó các Led còn lại không đủ điều kiện để sáng. Bằng cách dùng các câu lệnh
thích hợp, Bạn có thể tạo ra các con chữ và cả hình ảnh hiện trên bảng đèn ma trận Led 8x8, như hình sau:

Ngoài ra Bạn có thể dùng lệnh nhẩy (có điêu kiện hay không điều kiện) để theo dõi các trạng thái bit trên các
chân của các cảng. Như thí dụ sau:


Bài lập trình Vi Điều Khiển đơn giản nhất

LÊ VĂN NGHĨA – TỰ ĐỘNG HÓA – KHOA ĐIỆN, ĐIỆN TỬ - BKĐN – 0988.312.362 Trang 11


Trong hình, dùng nút nhấn BP, chúng ta sẽ dùng câu lệnh nhảy để nhẩy theo điều kiện bit 1 hay bit 0 trên
chân p0.0. Bạn thấy bình thường với điện trở treo áp R1 (10K) và nút nhấn ở trạng thái hở (chưa nhấn xuống),
chân p0.0 sẽ ở mức áp cao, vậy với câu lệnh (jump no bit):

jnb p0.0, $ ;

Câu lệnh này có nghĩa là nếu chân p0.0 ở mức áp thấp thì dừng lại ở đây và chờ đến khi nó chuyển qua bit 1.
Nếu chân p0.0 ở mức áp cao tức bit 1 thì câu lệnh này không có tác dụng. Nhưng nếu Bạn nhấn nút BP xuống
thì sao? Lúc đó chân p0.0 sẽ ở mức áp thấp (tức bit 0), lúc đó với câu lệnh nhẩy: (jnb p0.0, $) chương trình sẽ
dừng lại chờ cho đến lúc Bạn bỏ phím, khi Bạn bỏ phím nó sẽ xuống chấp hành câu lệnh tiếp theo, đó là:

jmp chtrinh_1 ;

Đây là lệnh nhẩy không điều kiện, nó sẽ nhẩy ngay đến chương trình con có tên nhãn là chtr_1 (viết tắt của
chương trình_1) và chấp hành chương trình con này.

Bạn cũng có thể dùng ic vi điều khiển kết hợp với đủ loại cảm biến (sensor, như cảm biết quang, cảm biến

nhiệt, cảm biến mức ẩm ) để tạo ra các thiết bị điều khiển tự động theo các tác nhân không thuộc điện. Một
thí dụ, Bạn xem hình trên:

Chúng ta dùng một quang trở (SCd) để dò sáng. Bạn biết, khi trời tối, nội trở của quang trở rất lớn, vậy
transistor Q1 sẽ ở trạng thái bão hòa, nó đặt chân p0.7 ở mức volt thấp (tức ở bit 0), với câu lệnh nhẩy theo
điều kiện bit viết như sau:

jnb p0.7, $ ;

thì chương trình sẽ dừng lại ở câu lệnh này. Vì sao? Vì lúc này chân p0.7 đang ở trạng thái bit 0.Nếu trời
sáng, nội trở của quang trở sẽ nhỏ và nó sẽ làm ngưng dẫn transistor Q1, vậy lúc này chân p0.7 sẽ lên mức
volt cao (bit 1), chương trình sẽ thoát ra câu lệnh jnb p0.7, $ và xuống thực hiện câu lệnh kế bên dưới. Do câu
lệnh tiếp theo của Bạn viết là:

jmp b_sáng ;

Bài lập trình Vi Điều Khiển đơn giản nhất

LÊ VĂN NGHĨA – TỰ ĐỘNG HÓA – KHOA ĐIỆN, ĐIỆN TỬ - BKĐN – 0988.312.362 Trang 12

Nên chương trình sẽ nhẩy không điều kiện đến chương trình con có tên nhãn là b_sang (viết tắt của chữ báo
sáng).

Bạn cũng có thể dùng lệnh nhẩy theo phép so sánh trạng thái của 8 bit trên cảng để tạo ra các chương trình
điều khiển hấp dẫn hơn. Bạn xem hình minh họa sau:



Trong hình này, chúng ta dùng lệnh nhẩy có điều kiện và dùng phép so sánh để xác định nơi đến. Bạn thấy
với câu lệnh:


cjne p2, #01011011b, chtr_1
jmp t_tuc

Bài lập trình Vi Điều Khiển đơn giản nhất

LÊ VĂN NGHĨA – TỰ ĐỘNG HÓA – KHOA ĐIỆN, ĐIỆN TỬ - BKĐN – 0988.312.362 Trang 13

Trạng thái 8 bit này không giống với trạng thái 8 bit hiện đang có trên cảng 2 (8 bit hiện có trên cảng 2 là
11011010b), vậy nó sẽ nhẩy đến chấp hành chương trình con có tên nhãn là chtr_1 (viết tắt của chữ chương
trình_1). Nếu 8 bit dùng trong phép so sánh giống nhau thì sao? Chương trình sẽ xuống dòng lệnh bên dưới
và sẽ nhẩy đến chấp hành chương trình con có tên nhãn là t_tuc (viết tắt của chữ tiếp_tục)



Qua phần trình bày trên, Bạn thấy ic AT89C51 có 4 cảng 4x8 (32 chân), trạng thái mức volt cao hay thấp trên
các chân này có thể điều khiển theo các câu lệnh. Vậy vấn đề của chúng ta là phải hiểu rõ các câu lệnh dùng
để xác định trạng thái trên các chân của 4 cảng sao cho phù hợp với ý muốn của mình. Và ic AT89C51 là một
trong các ic vi điều khiển rất đơn giản, hiện nay rất phổ dụng.



Thế nào là ic làm việc theo các câu lệnh?


Qua phần trình bày trên, Bạn thấy với ic AT89C51, trạng thái mức volt cao hay thấp trên các chân của 4 cảng
hoàn toàn chấp hành theo các câu lệnh do Bạn đã viết ra. Hiện nay có rất nhiều ic thuộc loại này, người ta nói
đó là các ic lập trình, hay là loại ic vi điều khiển hay cao hơn là các ic vi xử lý. Với các ic logic TTL họ 74xxx
hay họ CMOS 40xx thì các công năng đã cố định, các ic này không làm việc theo các câu lệnh nên tính linh
động không cao và thường có cấu trúc phần cứng rất phức tạp, hiện nay nó thường chỉ dùng làm các linh

kiện phụ trợ cho các ic vi điều khiển.

Có thể nói, khi có một ic vi điều khiển, Bạn cần xác định các chân cố hữu của nó, các chân này dùng vận hành
ic và các chân của các cảng dùng chấp hành các câu lệnh. Tất cả các mạch điện chịu điều khiển đều thông
qua các chân của các cảng. Theo trục phát triển, trước hết chúng ta có nhóm ic vi điều khiển họ MSC-51 như
nhóm AT89C51, phát triển hơn là nhóm PIC, rồi AVR và rồi ARM , nhưng với các Bạn mới làm quen với loại
ic lập trình, Bạn nên khởi đầu từ các ic vi điều khiển thuộc nhóm MSC-51, như AT89C51 Vì các ic này rất
trực quan, dễ học dễ dùng, dĩ nhiên dễ kiếm được tiền hơn.

Để dùng ic AT89C51 (40 chân) cho công việc điều khiển của Bạn, Bạn chỉ cần ráp một mạch điện cơ bản như
hình vẽ sau:

Bài lập trình Vi Điều Khiển đơn giản nhất

LÊ VĂN NGHĨA – TỰ ĐỘNG HÓA – KHOA ĐIỆN, ĐIỆN TỬ - BKĐN – 0988.312.362 Trang 14



Giải thích mạch điện: Hình vẽ cho thấy, với ic vi điều khiển lập trình, làm việc theo câu lệnh, nó dùng số linh
kiện ngoại vi rất ít. Ở đây trên chân 18, 19 gắn thạch anh định tần, nếu dùng thạch anh có tần số 12MHz thì
chu kỳ thực hiện 1 lệnh sẽ là 1us. Chân số 9 cho nối với mạch reset, nó xác lập trạng thái khởi đầu khi chân 9
ở mức áp cao. Cấp nguồn với chân 20 cho nối masse và chân 40 cho nối với mức nguồn +5V.

Ở đây có 2 chú ý:

* Trên cảng p0 Bạn nhớ dùng 8 điện trở treo áp.
* Trên chân 31 cho nối vào mức áp 5V để xác nhận là chỉ chạy chương trình của bộ nhớ tron.




Để dùng ic AT89C2051 (20 chân) cho công việc điều khiển của Bạn, Bạn chỉ cần ráp một mạch điện cơ bản
như hình vẽ sau:
Bài lập trình Vi Điều Khiển đơn giản nhất

LÊ VĂN NGHĨA – TỰ ĐỘNG HÓA – KHOA ĐIỆN, ĐIỆN TỬ - BKĐN – 0988.312.362 Trang 15




Giải thích mạch điện: Hình vẽ cho thấy, với ic vi điều khiển lập trình, làm việc theo câu lệnh, nó dùng số linh
kiện ngoại vi rất ít. Ở đây trên chân 4, 5 gắn thạch anh định tần, nếu dùng thạch anh có tần số 12MHz thì chu
kỳ thực hiện 1 lệnh sẽ là 1us. Chân số 1 cho nối với mạch reset, nó xác lập trạng thái khởi đầu khi chân 1 ở
mức áp cao. Cấp nguồn với chân 10 cho nối masse và chân 20 cho nối với mức nguồn +5V.

Ở đây có 1 chú ý:

* Trên cảng p3 thiếu chân p3.6.

Điều Bạn cần nhớ là mọi thiết bị điều khiển đều sẽ được cho kết nối với các chân của các cảng của ic vi điều
khiển và Bạn điều khiển các thiết bị này bằng các câu lệnh do Bạn viết ra. Mọi việc chỉ có thể.

Chú ý: Nếu như mạch điện AT89C51 mà Bạn ráp không hoạt động như ý, Bạn hãy đo thử tín hiệu xung nhịp.
Cách đo: lấy máy đo volt AC, nhớ cắm lổ OUT, trên lổ cắm này có tụ cách ly DC, rồi đo volt AC trên chân 18,
nếu kim không lên là ic có vấn đề (thay thạch anh hay thay thử ic khác). Kim lên là có xung nhịp ( Bạn xem
hình).

Bài lập trình Vi Điều Khiển đơn giản nhất

LÊ VĂN NGHĨA – TỰ ĐỘNG HÓA – KHOA ĐIỆN, ĐIỆN TỬ - BKĐN – 0988.312.362 Trang 16




×