Phạm Tường HảiNội dung đề tài Sử dụng hợp ngữ 8051 và môi trường thiết kế và mô phỏng mạch-proteus để hiện thựccác bài tập thực hành về vi điều khiển 8051 nhằm mục đích hổ trợ cho những
Trang 1ĐỒ ÁN MÔN HỌC TIN HỌC
ĐỀ TÀI:
HIỆN THỰC CÁC BÀI THỰC HÀNH VI ĐIỀU KHIỂN
HỌ 8051 BẰNG HỢP NGỮ TRONG MÔI TRƯỜNG
Trang 2Mục lục nội dung
***
Nội dung đề tài 1
Tầm quan trọng 2
Nội dung 3
1 Nhóm 1: Làm quen với các port và các lệnh đơn giản của 8051 3
Bài 1: Mô phỏng hoạt động của công tắt đèn 3
Bài 2: Điều khiển hai đèn chớp nháy liên tục 4
Bài 3: Thực hiện cộng hai trừ hai số nhị phân 6
2 Nhóm 2: Làm quen với hoạt động ngắt ngoài và timer của 8051 8
Bài 4: Xuất xung có tầng số 100hz 8
Bài 5:Sử dụng ngắt điều khiển đèn 10
3 Nhóm 3: Làm quen với LCD và kỹ thuật quét led, quét phím 11
Bài 7: Nhận phím từ ma trận phím và hiển thị phím đó lên led 7 đoạn 13
Bài 8: Giao tiếp với LCD và xuất ra 1 dòng chữ 15
Bài 9: Mô phỏng việc cộng trừ 2 số 2 chữ số 17
4 Nhóm 4: Một vài bài toán ứng dụng vi điều khiển họ 8051 20
Bài 10: Sử dụng vi điều khiển 8051 làm đồng hồ thể thao 20
Bài 11: Mô phỏng hiệu ứng lighriver trên 8 led đơn 23
Bài 12: Sử dụng vi điều kiển 8051 để giao tiếp với LCD 27
Kết luận 30
Tài liệu tham khảo 31
Trang 3Hình 1.1a: Mô phỏng hoạt động của công tắt đèn 3
Hình 1.1b: Sơ đồ khối 4
Hình 1.2a: Điều khiển hai đèn chớp nháy liên tục 5
Hình 1.2b: Sơ đồ khối 6
Hình 1.3a: Cộng trừ hai số nhị phân 7
Hình 1.3b: Sơ đồ khối 8
Hình 2.1a: Xuất xung với tần số 100hz 9
Hình 2.1b: Sơ đồ khối 9
Hình 2.2a: Mô phỏng hoạt động công tắt đèn 10
Hình 2.2b: Sơ đồ khối 11
Hình 3.1a: Kỹ thuật quét led 12
Hình 3.1b: Sơ đồ khối 13
Hình 3.2a: Nhận phím và hiển thị phím lên led 7 đoạn 14
Hình 3.2b: Sơ đồ khối 15
Hình 3.3a: Giao tiếp LCD 16
Hình 3.3b: Sơ đồ khối 17
Hình 3.4a: Mô phỏng việc cộng trừ hai số có hai chữ số 18
Hình 3.4b: Sơ đồ khối 19
Hình 4.1a: Đồng hồ thể thao 20
Hình 4.1b: Sơ đồ khối 22
Hình 4.2a: Mô phỏng hiệu ứng lighriver 24
Hình 4.2b: Sơ đồ khối 25
Hình 4.3a: Giao tiếp với LCD 27
Hình 4.3b: Sơ đồ khối 29
Trang 4Các bài thực hành vi điều khiển 8051 GVHD:TS Phạm Tường Hải
Nội dung đề tài
Sử dụng hợp ngữ 8051 và môi trường thiết kế và mô phỏng mạch-proteus để hiện thựccác bài tập thực hành về vi điều khiển 8051 nhằm mục đích hổ trợ cho những người mớihọc dễ dàng tiếp xúc với vi điều khiển họ 8051 và hợp ngữ 8051
*****************************
Trang 5Tầm quan trọng
Bên cạnh sự phát triển nhanh chóng của lĩnh vực công nghệ phần mềm thì hệ thốngnhúng đang là một lĩnh vực đầy tiềm năng cho tương lai Xu hướng này đang được sựđầu tư mạnh từ các công ty lớn cũng như các quốc gia, và được dự báo là sẽ phát triển rấtmạnh trong vài năm tới Vi điều khiển và phần dẻo (-firmware-phần mềm được nạp vàoROM của vi điều khiền) là hai phần chính của một hệ thống nhúng
Với sự phát triển nhanh chóng công nghệ điện tử ngày nay thì có rất nhiều loại vi điềukhiển của nhiều hãng khác nhau, tuy nhiên 8051 là họ vi điều khiển rất thông dụng và dễdùng hiện nay Hơn nữa 8051 có thể nói là họ vi điều khiển “tiền đề” cho những ngườimuốn học về vi điều khiển Sử dụng họ vi điều khiển 8051 thành thạo sẽ giúp bạn dễdàng tìm hiểu một họ vi điều khiển khác
Với những nội dung trên đề tài này được soạn thảo nhằm phục vụ cho những học viênphần cứng máy tính có thể làm quen được với họ vi điều khiển 8051 một cách nhanhchóng và dễ dàng trên môi trường thiết kế và mô phỏng mạch-proteus
*****************************
Trang 6Các bài thực hành vi điều khiển 8051 GVHD:TS Phạm Tường Hải
Nội dung
Các bài thực hành dưới đây sẽ được thực hiện mô phỏng với vi điều khiển 89C51 Nội dung của đề tài được chia thành bốn nhóm bài thực hành như sau:
1. Nhóm 1: Làm quen với các port và các lệnh đơn giản của 8051
Bài 1: Sử dụng vi điều khiển họ 8051 thực hiện mô phỏng hoạt động của công tắt
đèn
Yêu cầu của bài thực hành: Sử dụng vi điều khiển họ 8051 thực hiện công
việc của một công tắt đèn
Mục đích bài thực hành này:
Làm quen với các cổng của vi điều khiển
Sử dụng các lệnh hợp ngữ đơn giản
Biết được cấu trúc của một chương trình hợp ngữ đơn giản
Làm quen vơi môi trường Proteus
Phương án giải quyết yêu cầu bài thực hành:
Kết nối phần cứng:(xem hình 1.1a)
Hình 1.1a: Mô phỏng hoạt động của công tắt đèn
o P1.1 của vi điều khiển được nối với led
o P2.1 được nối với switch (xem hình 1.1a)
o Các cổng còn lại không dùng
Hiện thực phầm mềm:
o Sử dụng câu lệnh nhảy ở vị trí hiện tại để chờ sự thay đổi từ bít P2.1
o Mỗi lần thay đổi (P2.1 thay đổi từ mức 0 chuyển sang mức 1 hayngược lại) thì đảo bít P1.1 làm cho đèn này thay đổi trạng thái (tắthay sáng)
Trang 7o Sơ đồ chương trình:
Hình 1.1b: Sơ đồ khối
Cách vận hành bài thực hành:
Nối switch với với đất (GRN) thì đèn tắt
Nối switch với nguồn (Vcc) thì đèn sáng
Bài 2: Điều khiển hai đèn chớp nháy liên tục
Yêu cầu: Sử dụng ví điều khiển 89C51 để điều khiển hai đèn luân phiên nhau
sáng
Mục đích bài thực hành:
Làm quen với các cổng của vi điều khiển
Làm quen với kỹ thuật delay bằng lệnh nhảy tại chổ
Biết cách chọn lựa linh kiện và cách đặt nhãn trong Proteus
Biết cách dịch và nạp một chương trình hợp ngữ 8051
Phương án giải quyết yêu cầu bài thực hành:
Kết nối phần cứng: (xem hình 1.2a)
ĐúngSai
Sai
Trang 8Các bài thực hành vi điều khiển 8051 GVHD:TS Phạm Tường Hải
Hình 1.2a: Điều khiển hai đèn chớp nháy liên tục
o P1.0 được nối với led 1
o P1.1 được nối với led 2
o Các chân còn lại được nối như hình 1.2a
Trang 9Hình 1.2b: Sơ đồ khối
Cách vận hành bài thực hành:
Hai đèn led 1 va led 2 sẽ luân phiên nhau sáng
Bài 3: Thực hiện cộng hai trừ hai số nhị phân
Yêu cầu:
Sử dụng vi điều khiển 89C51 để thực hiện việc cộng trừ hai số nhị phân
Dữ liệu nhập vào thông qua các cổng của vi điều khiển và được hiển thị raled
Dữ liệu xuất ra cũng được hiển thị trên led
Mục đích bài thực hành:
Sử dụng các cổng của vi điều khiển
Thành thạo việc nạp và dịch một chương trình hợp ngữ
Phương án giải quyết yêu cầu bài thực hành:
Kết nối phần cứng: (xem hình 1.3a)
Sai
Trang 10Các bài thực hành vi điều khiển 8051 GVHD:TS Phạm Tường Hải
Hình 1.3a: Cộng trừ hai số nhị phân
o Cổng P1 được nối với 8 switch để nhập số thứ nhât
o Cổng P2 được nối với 8 switch để nhập số thứ hai
o Cổng P0 nối với 8 led để xuất kết quả
o P3.1 nối với switch 1: tín hiệu điều khiển việc thực hiện phép toán
o P3.2 nối với switch 2: tín hiệu điều khiển việc lựa chọn phép toán(cộng hay trừ)
Hiện thực phần mềm:
o Chương trình là một vòng lặp vô tận chờ nhận tín hiệu từ P3.1 vàP3.2 Nếu P3.1 bằng 1 thì thực hiện phép toán, và P3.2 bằng 1 thì viđiều khiển thực hiện phép cộng ngược lại thực hiện phép trừ
o Sơ đồ chương trình:
Switch 1
Switch 2
Trang 11Hình 1.3b: Sơ đồ khối
Cách vận hành bài thực hành:
Nhập hai số cần thực hiện phép toán thông qua các switch (switch nối vớiđất tương ứng với giá trị 0 ngược lại giá trị 1) Các thông số vừa nhập sẽđược hiển thị lên dãy led
Nối switch 2 với đất nếu muốn thực hiện phép trừ và nối với nguồn nềumuốn thực hiện phép cộng
Bật switch 1 lên nguồn để thực hiện phép toán
Kết quả sẽ được xuất ra ở dãy led kết quả
2. Nhóm 2: Làm quen với hoạt động ngắt ngoài và timer của 8051
Bài 4: Xuất xung có tầng số 100hz (sử dụng timer)
Yêu cầu: Sử dụng bộ đếm của vi điều khiển để xuất xung với tần số 100hz
Mục đích bài thực hành:
Biết cấu trúc hoàn chỉnh một chương trình hợp ngữ
Làm quen với hoạt động ngắt timer 0 của vi điều khiển
Phương án giải quyết yêu cầu bài thực hành:
Kết nối phần cứng: (xem hình 2.1a)
P3.1=
0
P3.2=
0Trừ
Cộng
Đúng
ĐúngSai
Sai
Trang 12Các bài thực hành vi điều khiển 8051 GVHD:TS Phạm Tường Hải
Hình 2.1a: Xuất xung với tần số 100hz
o Nối P1.0 với led đơn (như hình vẽ 2.1a)
Hiện thực phần mềm:
o Sử dụng hàm ngắt int_timer0 (hàm ngắt timer0), ngắt định kỳ cứ 5miligiây thì ngăt một lân, mỗi lần ngắt thì đảo P1.0 để tạo xung100hz
TF0=0,TR0=1
CPL P1.0
Đúng
Chương trình ngắt int_timer0
Trang 13 Cách vận hành bài thực hành:
Đèn led sẽ chớp nháy với tần số 100hz
Bài 5:Sử dụng ngắt điều khiển đèn.
Yêu cầu: Sử dụng ngắt của vi điều khiển để mô phỏng hoạt động công tắt đèn
Mục đích bài thực hành:
Giới thiệu ngắt ngoài 0 của vi điều khiển
Phương án giải quyết yêu cầu bài thực hành:
Kết nối phần cứng (xem hình 2.2a)
Hình 2.2a: Mô phỏng hoạt động công tắt đèn
o Bit P1.0 được nối với led
o Bít P3.2 được nối với nút nhấn (nơi nhận tín hiệu ngắt ngoài)
o Các chân còn lại được nối như hình vẽ 2.2a
Hiện thực phần mềm:
o Sử dụng hàm ngắt ngoài int_ext0 Chương trình chính là một lệnhnhảy tại chổ để chờ tín hiệu ngắt ngoài Cứ mỗi lần ngắt thì đảo P1.0
o Sơ đồ chương trình:
Trang 14Các bài thực hành vi điều khiển 8051 GVHD:TS Phạm Tường Hải
Hình 2.2b: Sơ đồ khối
Cách vận hành bài thực hành:
Ban đầu đèn tắt Nhấn nút nhấn thì đèn sáng, tiếp tục nhấn thì đèn tắt
3. Nhóm 3: Làm quen với LCD và kỹ thuật quét led, quét phím
Bài 6: Xuất các số từ 0 đến 7 trên 8 led 7 đoạn
Yêu cầu: Sử dụng vi điều khiển xuất 8 số(từ 0 đến 7) ra 8 led 7 đoạn cùng một
lúc
Mục đích bài thực hành:
Giới thiệu kỹ thuật quét led
Giới thiệu ngắt timer0 và ngắt timer1 của vi điều khiển
Phương án giải quyết yêu cầu bài thực hành:
Kết nối phần cứng: (xem hình 3.1a)
Sjmp $
P3.1=
0CPL P1.0
Đúng
Chương trình ngắt ngoài int_ext0
Trang 15Hình 3.1a: Kỹ thuật quét led
o Cổng P1 nối với các đường dữ liệu của 8 led 7 đoạn, để xuất dữ liệu
o Hàm quét led sử dụng int_timer1 như một hàm delay
o Thay đổi hàm int_timer1 bởi hàm int_timer0 để thấy được sự khácbiệt (khi sử dụng int_timer0 sẽ thấy các đèn led không sáng cùnglúc)
o Sơ đồ chương trình
Trang 16Các bài thực hành vi điều khiển 8051 GVHD:TS Phạm Tường Hải
Hình 3.1b: Sơ đồ khối
Vận hành:
Vi điều khiển sẽ xuất ra các số từ 0 đến 7 trên 8 led 7 đoạn
Bài 7: Nhận phím từ ma trận phím và hiển thị phím đó lên led 7 đoạn
Yêu cầu: Sử dụng vi điều khiển 89C51 để nhận phím từ ma trận phím và hiển
thị lên led 7 đoạn
Mục đích bài thực hành:
Thành thạo hoạt động ngắt của vi điều khiển
Giới thiệu kỹ thuật giải mã led 7 đoạn
Giới thiệu kỹ thuật quét phím
Phương án giải quyết yêu cầu bài thực hành:
Kết nối phần cứng: (xem hình 3.2a)
Trang 17Hình 3.2a: Nhận phím và hiển thị phím lên led 7 đoạn
o Cổng P2 nối với các chân dữ liệu của led 7 đoạn, dùng để xuất dữliệu ra led 7
o Cổng P0 dùng để xuất số lần nhấn phím (có nối vào điện trở kéo xem hình 3.2a)
lên-o Cổng P1 được nối với ma trận phím, dùng để quét phím
o Các chân còn lại được nối như hình vẽ 3.2a
Trang 18Các bài thực hành vi điều khiển 8051 GVHD:TS Phạm Tường Hải
Hình 3.2b: Sơ đồ khối
Vận hành:
Nhấn một phím bất kỳ và phím đó sẽ được hiển thị lên led 7 đoạn
Số lần nhấn phím sẽ được hiển thị trên 8 led đơn
Bài 8: Sử dụng vi điều khiển 8051 giao tiếp với LCD và xuất ra dòng chữ
Yêu cầu: Sử dụng vi điều khiển 89C51 giao tiếp với LCD, xuất ra dòng chữ
Mục đích bài thực hành:
Giới thiệu về LCD (LCD-2x16)
Giao tiếp giửa vi điều khiển và LCD
Phương án giải quyết yêu cầu bài thực hành:
Kết nối phần cứng: (xem hình 3.3a)
TF0=0,TR0=1
Quét Phím
Xuất led
Hàm ngắt timer 0-int_timer0
Trang 19Hình 3.3a: Giao tiếp LCD
o Nối cổng P1 với 8 chân dữ liệu của LCD (7 đến 14)
o Nối chân số 1 (chân nguồn) của LCD với nguồn
o Nối hai chân 2 (tương phản) và 3(chân đất) với đất
o Chân 4 (RS) nối với P3.0, chân 5 (RW) nối với P3.1, chân 6 (EN)nối với P3.2
Hiện thực phần mềm:
o Xây dựng các hàm:
Init_LCD: khởi động LCD
Write_cmd: viết lệnh điều khiển vào LCD
Delay: tạo một khoảng thời gian delay (sử dụng ngắt timer0).Tạo một khoảng thời gian để LCD có thể thực hiện lệnh
Write_data: Ghi dữ liệu cần hiển thị xuống LCD
Clear1: xóa dòng trên của LCD
Clear2:Xóa dòng thứ hai của LCD
Write_LCD: ghi từng ký tự cụ thể vào LCD
Set_cursor: thiết lập vị trí con trỏ của LCD
LCD_clear: xóa LCD
o Hàm chính thực hiện việc gọi hàm Write_data liên tục
o Sơ đồ chương trình:
Trang 20Các bài thực hành vi điều khiển 8051 GVHD:TS Phạm Tường Hải
Hình 3.3b: Sơ đồ khối
Cách vận hành bài thực hành
LCD sẽ hiển thị dòng chữ chạy từ trái sang phải
Bài 9: Mô phỏng việc cộng trừ 2 số 2 chữ số
Yêu cầu:
Sử dụng vi điều khiển mô phỏng việc cộng trừ hai số có hai chữ số
Dữ liệu nhập vào qua hệ thống phím nhấn và được hiển thị trên 4 led 7đoạn
Dữ liệu xuất được hiển thị trên 3 led 7 đoạn
Mục đích bài thực hành:
Sử dụng thành thạo kỹ thuật quét led và kỹ thuật quét phím
Kỹ thuật giải mã led 7 đoạn
R0 16
Đưa con trỏ về đàu hàngDPTR = #string
R0 = #0
A=R0
A,@A+DPTR
R0 32
Clear1 (xóa hàng 1)
Đưa con trỏ về đầu hàng 1
Clear2(xóa hàng 2)
Đưa con trỏ về đầu hàng 2Write_LCD
Inc R0
Trang 21 Phương án giải quyết yêu cầu bài thực hành:
Kết nối phần cứng: (xem hình 3.4a)
Hình 3.4a: Mô phỏng việc cộng trừ hai số có hai chữ số
o Cổng P0 nối với ma trận phím để quét phím
o Cổng P1 nối với các chân dữ liệu của led 7 đoạn dùng để xuất dữliệu ra led 7 đoạn (sử dụng trong quét led)
o Cổng P2 nối với các chân nguồn của led 7 đoạn thông qua BJT dùng
để chọn led 7 đoạn (sử dụng trong quét led)
o Các chân còn lại được nối như hình vẽ 3.4a
Hiện thực phần mềm:
o Xây dựng các hàm con:
Int_timer0: hàm ngắt timer0 cứ 1 miligiây thì ngắt một lần Hàmnày thực hiện việc gọi hàm quét phím, hàm xử lý và hàm quétphím
Int_timer1: hàm ngắt timer1 cứ 1 miligiây thì quét 1 lần
Quet_led: để xuất dữ liệu ra led 7 đoạn
Trang 22Các bài thực hành vi điều khiển 8051 GVHD:TS Phạm Tường Hải
Hình 3.4b: Sơ đồ khối
Cách vận hành bài thực hành:
Ma trận phím được đánh số 0 đến 15 từ trái qua phải trên xuống dưới
Nhấn các phím từ 0 đến 9 để nhập hai thông số cần tính toán (hai số này
sẽ được hiển thị trên 4 led 7 đoạn, từ led 0 đến 3)
Nút thứ 10: (change)để thay đổi số nhập (ví dụ đạng nhập số thứ 2 nhấn
nút này sẽ chuyển sang nhập số thứ nhất)
Nút 11: (reset) xóa hai số vừa nhập (đưa hai số đó về 0).
Nút 12: (add) thực hiện phép cộng hai số vừa nhập (kết quả hiển thị trên 3
led 4,5,6)
Nút 13: (sub) thực hiện phép trừ hai số vừa nhập (kết quả hiển thị trên 3
led 4,5,6)
Nút 14: (inc) tăng số đang nhập lên 1 đơn vị(ví dụ đang nhập số thứ nhất
thì nếu nhấn nút này số thứ nhất sẽ được cộng thêm 1 đơn vị)
Trang 23 Nút 15: (dec) giảm số đang nhập xuống 1 đơn vị(ví dụ đang nhập số thứ
nhất thì nếu nhấn nút này số thứ nhất sẽ được cộng trừ đi 1 đơn vị)
4. Nhóm 4: Một vài bài toán ứng dụng vi điều khiển họ 8051
Bài 10: Sử dụng vi điều khiển 8051 làm đồng hồ thể thao
Yêu cầu:
Sử dụng vi điều khiển làm đồng hồ tính giờ Đếm đúng giờ và hiển thị giờphút giây trên led 7 đoạn
Thiết bị phải cho phép chỉnh sửa giờ
Thiết bị cho phép tính giờ thể thao (bấm giờ) Đơn vị tính là sao
Mục đích bài thực hành:
Sử dụng ngắt timer của vi điều khiển
Sử dụng kỹ thuật quét led và quét phím, giải mã led 7 đoạn
Tổng hợp các kỹ năng có được từ các bài thực hành trước để thực hiệnmột công việc cụ thể
Cho thấy một ứng dụng cụ thể của vi điều khiển
Phương án giải quyết yêu cầu bài thực hành:
Kết nối phần cứng:(xem hình 4.1a)
Hình 4.1a: Đồng hồ thể thao
o Cổng P0 nối vào ma trận phím: dùng để quét phím (kiểm tra phímnhấn)
Trang 24Các bài thực hành vi điều khiển 8051 GVHD:TS Phạm Tường Hải
o Cổng P2 nối vào các chân nguồn của các led 7 đoạn: dùng để chọnled 7 (sử dụng trong quét led)
o Các chân khác được nối như hình vẽ 4.1a
Hiện thực phần mềm:
o Xây dựng các hàm
Init_port: hàm khởi động các cổng cho vi điều khiển
Init_other: hàm khởi động các thông số còn lại cho vi điều khiển
Int_timer0: hàm ngắt timer 0 (cứ 1 miligiây thì ngắt một lần) đểthực hiện việc tính toán giờ
Quet_led: hàm quét led
Xuat: hàm bổ trợ cho việc xuất led Đổi kết quả giờ phút giây ởdạng thập lục phân ra thành số BCD và đưa vào các thanh ghitạm đê thuận tiện cho việc xuất ra led