1 of 243

KỸ THUẬT VI ĐIỀU KHIỂN

Giảng viên: TS. Đỗ Văn Cần

Web: noibunphodien.com

ĐT: 0935263630

1

2 of 243

  1. Tổng quan về vi điều khiển (2 tiết)
  2. Cấu trúc họ 8051 (2 tiết)
  3. Tổ chức bộ nhớ họ 8051 (2 tiết)
  4. Chức năng timer counter (2 tiết)
  5. Chức năng truyền thông (2 tiết)
  6. Chức năng ngắt (2 tiết)
  7. Tập lệnh họ 8051 (2 tiết)
  8. Cấu trúc chương trình hợp ngữ (2 tiết)
  9. Cấu trúc chương trình C (2 tiết)
  10. Giao tiếp vào ra đơn bít (2 tiết)
  11. Giao tiếp vào ra dữ liệu (2 tiết)
  12. Bài tập ứng dụng và kiểm tra (2 tiết)
  13. Giao tiếp ma quét (2 tiết)
  14. Giao tiếp truyền thông (2 tiết)
  15. Bài tập và ôn tập (2 tiết)

2

NỘI DUNG HỌC PHẦN

3 of 243

  • Tổng quan về vi điều khiển (2 tiết)

Định nghĩa

3

KỸ THUẬT VI ĐIỀU KHIỂN

Bộ vi xử lý (microprocessor)

Bộ vi xử lý (microprocessor) là một máy tính nhỏ hoặc CPU (đơn vị xử lý trung tâm) được sử dụng để tính toán, thực hiện phép toán logic, kiểm soát hệ thống và lưu trữ dữ liệu vv. Vi xử lý sẽ xử lý các dữ liệu đầu vào / đầu ra (input/output) thiết bị ngoại vi và đưa ra kết quả trở lại để chúng hoạt động. Dòng vi xử lý 4 bit đầu tiên được Intel sản xuất vào tháng 11/1971 với tên gọi là 4004

4 of 243

  • Tổng quan về vi điều khiển (2 tiết)

4

KỸ THUẬT VI ĐIỀU KHIỂN

Vi điều khiển (microcontroller)

Nó cũng là một máy tính nhỏ, trong đó CPU, bộ nhớ (RAM, ROM), I / O thiết bị ngoại vi, timers, counters, được nhúng vào trong một mạch tích hợp (IC) nơi mà các bộ vi xử lý và tất cả các khối này được kết hợp vào trong một board thông qua hệ thống bus. Vi điều khiển có thể dễ dàng giao tiếp với thiết bị ngoại vi bên ngoài như cổng nối tiếp, ADC, DAC, Bluetooth, Wi-Fi, …vv quá trình giao tiếp nhanh hơn khi so sánh với các bộ vi xử lý. Hầu hết các vi điều khiển sử dụng cấu trúc RISC. Ngoài ra còn có một số vi điều khiển sử dụng cấu trúc CISC như 8051, Motorolla, vv

Phân biệt Vi xử lý (Microprocessor -mP)

và Vi điều khiển (Microcontroller-mC)?

Định nghĩa

5 of 243

  • Tổng quan về vi điều khiển (2 tiết)

5

KỸ THUẬT VI ĐIỀU KHIỂN

Định nghĩa

6 of 243

  • Tổng quan về vi điều khiển (2 tiết)

Lịch sử sơ lượt

6

KỸ THUẬT VI ĐIỀU KHIỂN

  • Thập niên 1970 – Thế hệ vi xử lý đầu tiên
  • 1971: Intel ra mắt 4004, vi xử lý thương mại đầu tiên (4-bit, 740 kHz).
  • 1972: Intel 8008 (8-bit) ra đời, mở đường cho các thế hệ vi xử lý mạnh hơn.
  • 1974: Intel 8080 (8-bit, 2 MHz) – được sử dụng trong máy tính Altair 8800, đánh dấu sự khởi đầu của PC. Vi xử lý đầu tiên:TMS1000 của Texas Instruments (ra mắt năm 1974)
  • Thập niên 1980 – Thời kỳ bùng nổ vi xử lý 16-bit và 32-bit
  • Thập niên 1990 – Sự phát triển mạnh mẽ của vi xử lý 32-bit và 64-bit
  • Thập niên 2000 – Bùng nổ đa nhân và vi xử lý 64-bit
  • Thập niên 2010 – Hiện tại: CPU đa lõi, AI và điện toán đám mây
  • 2020: Apple giới thiệu Apple M1, vi xử lý ARM hiệu suất cao cho MacBook.
  • Xu hướng tương lai: vi xử lý AI, Quantum Computing (3nm, 2nm)...

7 of 243

  • Tổng quan về vi điều khiển (2 tiết)

Cấu trúc vi xử lý

7

KỸ THUẬT VI ĐIỀU KHIỂN

Mô tả chức năng các chân của vi xử lý 8086

- AD0 ÷ AD15 [I, O]: Các chân dồn kênh cho các tín hiệu của bus dữ liệu và bus địa chỉ. Xung ALE sẽ báo cho mạch ngoài biết khi nào trên các đường đó có tín hiệu dữ liệu (ALE=0) hoặc địa chỉ (ALE=1). Tín hiệu này chuyển sang trạng thái trở kháng cao khi Bus nội bộ ghi nhận tín hiệu treo.

- A16/S3, A17/S4, A18/S5, A19/S6 [O]: Địa chỉ/trạng thái. Địa chỉ A16 – A19 sẽ có mặt tại các chân đó khi ALE=1 còn khi ALE=0 thì trên các chân đó có tín hiệu trạng thái S3 – S6. Bit S6=0 liên tục, bit S5 phản ánh giá trị bit IF của thanh ghi cờ, hai bit S3, S4 phối hợp với nhau để chỉ ra việc truy nhập các thanh ghi đoạn. Tín hiệu này chuyển sang trạng thái trở kháng cao khi Bus nội bộ ghi nhận tín hiệu treo.

8 of 243

  • Tổng quan về vi điều khiển (2 tiết)

EU: Execution Unit, khối thực hiện lệnh.

BIU: Bus Interface Unit, khối phối ghép bus.

ALU: Arithmetic and Logic Unit, khối số học và logic.

Cấu trúc vi xử lý

8

KỸ THUẬT VI ĐIỀU KHIỂN

9 of 243

  • Tổng quan về vi điều khiển (2 tiết)

1. Đơn vị số học và logic (ALU - Arithmetic Logic Unit)

  • Thực hiện các phép toán số học (cộng, trừ, nhân, chia).
  • Thực hiện các phép toán logic (AND, OR, XOR, NOT, so sánh).

2. Đơn vị điều khiển (CU - Control Unit)

  • Điều phối hoạt động của CPU.
  • Giải mã lệnh và gửi tín hiệu điều khiển đến các bộ phận khác.
  • Điều khiển luồng dữ liệu giữa các thành phần bên trong và bên ngoài CPU.

9

KỸ THUẬT VI ĐIỀU KHIỂN

10 of 243

  • Tổng quan về vi điều khiển (2 tiết)

3. Thanh ghi (Registers)

  • Là bộ nhớ tốc độ cao bên trong CPU, dùng để lưu trữ tạm thời dữ liệu và lệnh.
  • Các loại thanh ghi phổ biến:
    • Thanh ghi lệnh (IR - Instruction Register): Lưu trữ lệnh đang được thực thi.
    • Bộ đếm chương trình (PC - Program Counter): Chỉ địa chỉ lệnh tiếp theo.
    • Thanh ghi đa dụng (General Purpose Registers - AX, BX, CX, DX...): Lưu dữ liệu tạm thời.

4. Bộ nhớ Cache

  • Là bộ nhớ đệm tốc độ cao giúp tăng tốc độ truy xuất dữ liệu.
  • Có các cấp độ: L1 (nhanh nhất, gần CPU nhất), L2, L3.

10

KỸ THUẬT VI ĐIỀU KHIỂN

11 of 243

  • Tổng quan về vi điều khiển (2 tiết)

5. Bus hệ thống

Là tập hợp các đường truyền dữ liệu giữa CPU và các thành phần khác.

Bus địa chỉ (Address Bus): Xác định vị trí của dữ liệu trong bộ nhớ.

Bus dữ liệu (Data Bus): Truyền dữ liệu giữa CPU và các thiết bị khác.

Bus điều khiển (Control Bus): Gửi tín hiệu điều khiển đến các thiết bị ngoại vi.

6. Đơn vị quản lý bộ nhớ (MMU - Memory Management Unit)

Quản lý không gian địa chỉ bộ nhớ.

Dịch địa chỉ ảo thành địa chỉ vật lý trong hệ thống bộ nhớ.

7. Bộ tạo xung nhịp (Clock Generator)

Cung cấp tín hiệu xung nhịp để đồng bộ hóa hoạt động của CPU.

Tốc độ được đo bằng MHz hoặc GHz (ví dụ: 3.2 GHz).

11

KỸ THUẬT VI ĐIỀU KHIỂN

12 of 243

  • Tổng quan về vi điều khiển (2 tiết)

Thanh ghi

12

KỸ THUẬT VI ĐIỀU KHIỂN

13 of 243

  • Tổng quan về vi điều khiển (2 tiết)

Cơ số

13

KỸ THUẬT VI ĐIỀU KHIỂN

14 of 243

  • Tổng quan về vi điều khiển (2 tiết)

Cơ số

Ghi nhớ

14

KỸ THUẬT VI ĐIỀU KHIỂN

15 of 243

  • Tổng quan về vi điều khiển (2 tiết)

Cơ số

15

KỸ THUẬT VI ĐIỀU KHIỂN

Bài tập: 123410 = ???2

16 of 243

  • Tổng quan về vi điều khiển (2 tiết)

Cơ số

11000 (2) = ? (10) = ? (16)

A7D (16) = ? (10) = ? (2)

987 (10) = ? (2) = ? (16)

16

KỸ THUẬT VI ĐIỀU KHIỂN

17 of 243

  • Tổng quan về vi điều khiển (2 tiết)

Phép toán số học

17

KỸ THUẬT VI ĐIỀU KHIỂN

Quy tắc:

0+0=0�0+1=1+0=1�1+1=10

Bài tập:

101101 + 111011 = ?

18 of 243

  • Tổng quan về vi điều khiển (2 tiết)

Phép toán số học

18

KỸ THUẬT VI ĐIỀU KHIỂN

Quy tắc:

0-0=0�0-1=-1(“mượn”, vì trong phép tính số nhị phân không được số âm )�1-0=1�1-1=0�-1-1=-10

Bài tập:

1101101 - 1010010 = ?

19 of 243

  • Tổng quan về vi điều khiển (2 tiết)

Phép toán số học

19

KỸ THUẬT VI ĐIỀU KHIỂN

Bài tập:

1011 x 1010 =

20 of 243

  • Tổng quan về vi điều khiển (2 tiết)

Phép toán số học

20

KỸ THUẬT VI ĐIỀU KHIỂN

Bài tập:

10011011:1101=

21 of 243

  • Tổng quan về vi điều khiển (2 tiết)

21

KỸ THUẬT VI ĐIỀU KHIỂN

22 of 243

  • Tổng quan về vi điều khiển (2 tiết)
  • Cấu trúc họ 8051 (2 tiết)
  • Tổ chức bộ nhớ họ 8051 (2 tiết)
  • Chức năng timer counter (2 tiết)
  • Chức năng truyền thông (2 tiết)
  • Chức năng ngắt (2 tiết)
  • Tập lệnh họ 8051 (2 tiết)
  • Cấu trúc chương trình hợp ngữ (2 tiết)
  • Cấu trúc chương trình C (2 tiết)
  • Giao tiếp vào ra đơn bít (2 tiết)
  • Giao tiếp vào ra dữ liệu (2 tiết)
  • Bài tập ứng dụng và kiểm tra (2 tiết)
  • Giao tiếp ma quét (2 tiết)
  • Giao tiếp truyền thông (2 tiết)
  • Bài tập và ôn tập (2 tiết)

22

NỘI DUNG HỌC PHẦN

23 of 243

2. Cấu trúc họ 8051 (2 tiết)

23

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

24 of 243

2. Cấu trúc họ 8051 (2 tiết)

24

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Các IC của họ MCS-51™ có các đặc trưng chung như sau:

  • 4 port I/O x 8 bit
  • 1 giao tiếp nối tiếp
  • 4k không gian bộ nhớ chương trình mở rộng
  • 128b không gian bộ nhớ dữ liệu mở rộng
  • Một bộ xử lý luận lý (thao tác trên các bit đơn)
  • 210 bit được địa chỉ hóa
  • Bộ nhân/chia 4 μs.

25 of 243

2. Cấu trúc họ 8051 (2 tiết)

25

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Các IC của họ MCS-51™ có các đặc trưng chung như sau:

Dòng SP

ROM

RAM

Số bộ định thời

8051

8751

8951

4K ROM

4K EPROM

4K FLASH

128 byte

128 byte

128 byte

2

2

2

8032

8052

8752

8952

0K

8K ROM

8K EPROM

8K FLASH

256 byte

256 byte

256 byte

256 byte

3

3

3

3

26 of 243

2. Cấu trúc họ 8051 (2 tiết)

26

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

27 of 243

2. Cấu trúc họ 8051 (2 tiết)

27

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Port 0:

Port 0 là một port xuất/nhập song hướng cực máng hở 8 bit. Nếu được sử dụng như là một ngõ xuất thì mỗi chân có thể kéo 8 ngõ vào TTL. Cần có các điện trở pullup (5k-10k) bên ngoài.

Ngoài ra còn có chức năng AD0- AD7

Port 1:

Port 1 là một port xuất/nhập song hướng 8 bit có các điện trở pullup bên trong.

Ngoài ra với họ 89x52 có thể các chức năng phụ

28 of 243

2. Cấu trúc họ 8051 (2 tiết)

28

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Port 2:

Port 2 là một port xuất/nhập song hướng 8 bit có các điện trở pullup bên trong.

Ngoài ra còn là A8-A15 trong lệnh MOVX @DPTR.

Port 3:

Port 3 là một port xuất - nhập song hướng 8 bit có điện trở pullup nội bên trong.

Ngoài ra Port 3 cũng cung cấp các chức năng của các đặc trưng đặc biệt như được liệt kê dưới đây:

29 of 243

2. Cấu trúc họ 8051 (2 tiết)

29

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

30 of 243

2. Cấu trúc họ 8051 (2 tiết)

30

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

31 of 243

  • Tổng quan về vi điều khiển (2 tiết)
  • Cấu trúc họ 8051 (2 tiết)
  • Tổ chức bộ nhớ họ 8051 (2 tiết)
  • Chức năng timer counter (2 tiết)
  • Chức năng truyền thông (2 tiết)
  • Chức năng ngắt (2 tiết)
  • Tập lệnh họ 8051 (2 tiết)
  • Cấu trúc chương trình hợp ngữ (2 tiết)
  • Cấu trúc chương trình C (2 tiết)
  • Giao tiếp vào ra đơn bít (2 tiết)
  • Giao tiếp vào ra dữ liệu (2 tiết)
  • Bài tập ứng dụng và kiểm tra (2 tiết)
  • Giao tiếp ma quét (2 tiết)
  • Giao tiếp truyền thông (2 tiết)
  • Bài tập và ôn tập (2 tiết)

31

NỘI DUNG HỌC PHẦN

32 of 243

3. Tổ chức bộ nhớ họ 8051 (2 tiết)

32

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

ROM 4kb: Từ 0000H-xxxxH: Lưu trữ chương trình

RAM 128b: Từ 00H - xxH: Thực thi chương trình

33 of 243

3. Tổ chức bộ nhớ họ 8051 (2 tiết)

33

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

RAM 128b: Từ 00H - xxH

  • Vùng bank thanh ghi

34 of 243

3. Tổ chức bộ nhớ họ 8051 (2 tiết)

34

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

RAM 128b: Từ 00H - xxH

  • Vùng địa chỉ hoá bit

35 of 243

3. Tổ chức bộ nhớ họ 8051 (2 tiết)

35

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

RAM 128b: Từ 00H - xxH

  • Vùng đa dụng

36 of 243

3. Tổ chức bộ nhớ họ 8051 (2 tiết)

36

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

RAM 128b: Từ 00H - xxH

  • Vùng thanh ghi đặc biệt

37 of 243

3. Tổ chức bộ nhớ họ 8051 (2 tiết)

37

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

PSW địa chỉ D0

Thanh ghi PSW

38 of 243

3. Tổ chức bộ nhớ họ 8051 (2 tiết)

38

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

39 of 243

  • Tổng quan về vi điều khiển
  • Cấu trúc họ 8051
  • Tổ chức bộ nhớ họ 8051
  • Chức năng timer counter
  • Chức năng truyền thông
  • Chức năng ngắt
  • Tập lệnh họ 8051
  • Cấu trúc chương trình hợp ngữ
  • Cấu trúc chương trình C
  • Giao tiếp vào ra đơn bít
  • Giao tiếp vào ra dữ liệu
  • Bài tập ứng dụng và kiểm tra
  • Giao tiếp ma quét
  • Giao tiếp truyền thông
  • Bài tập và ôn tập

39

NỘI DUNG HỌC PHẦN

40 of 243

4. Chức năng timer counter (2 tiết)

40

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng timer

Vị trí Timer trong bộ nhớ RAM

41 of 243

4. Chức năng timer counter (2 tiết)

Trong 8051 có 4 chế độ Timer/counter có 2 bít C/T thanh ghi TMOD ở địa chỉ byte 89H quyết định chế độ Timer/counter.

41

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng timer

42 of 243

4. Chức năng timer counter (2 tiết)

GATE = 0: Chế độ Timer/Counter;

GATE = 1: Chế độ Ngắt;

C/T = 0: Lựa chọn Timer;

C/T = 1: Lựa chọn Counter;

M1=0:

M0=1 :

Chế độ chế độ 1 (16 bit đếm)

M1=1:

M0=0 :

Chế độ chế độ 2 (8 bit đếm)

42

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng timer

43 of 243

4. Chức năng timer counter (2 tiết)

Chế độ chế độ 1 (16 bit đếm)

Chế độ chế độ 2 (8 bit đếm)

43

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

1

1

1

1

1

1

1

Chức năng timer

44 of 243

4. Chức năng timer counter (2 tiết)

Hoạt động Timer 0, chế độ 1 (16 bit) → TMOD=01H

Hoạt động Counter 1, chế độ 2 (8 bit) → TMOD=xxH

Hoạt động Timer 1, chế độ 1 (16 bit);Timer 0, chế độ 1 (16 bit); → TMOD=xxH

Bài tập xác định tất cả các trường hợp còn lại

44

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng timer

45 of 243

4. Chức năng timer counter (2 tiết)

45

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng Counter

46 of 243

4. Chức năng timer counter (2 tiết)

Thanh ghi TCON ở địa chỉ byte 88H quyết định hoạt động Timer/counter.

46

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

TMOD = 01H;

TH0= C3H;

TL0= 50H;

TR0=1;

Chức năng timer

MOV TMOD, #01H; chọn Timer0, chế độ 1

MOV TH0, #0C3H; nạp giá trị C3 vào nữa cao timer

MOV TL0,#050H; nạp giá trị 50 vào nữa thấp timer

SETB TR0; kích hoạt timer bắt đầu đếm

LL: JNB TF0, LL ; chờ timer đầy tràn

47 of 243

4. Chức năng timer counter (2 tiết)

47

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng timer

48 of 243

4. Chức năng timer counter (2 tiết)

Tạo thời gian 1s timer 0 chế độ 1.

1s=1000.000us = 50 lần x 20.000 xung; 20.000 (10) → 4E20 (16) - 1 = 4E1F(16)

Cấu trúc:

TMOD = 01H

TH0 = 4E

TL0 =1F

TR0=1

lập lại 50 lần

48

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng timer

Bài tập: Xây dựng cấu trúc tạo Timer 1 chế độ 2, thời gian 500ms

49 of 243

4. Chức năng timer counter (2 tiết)

Ví dụ:

49

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng timer

50 of 243

4. Chức năng timer counter (2 tiết)

50

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

51 of 243

  • Tổng quan về vi điều khiển
  • Cấu trúc họ 8051
  • Tổ chức bộ nhớ họ 8051
  • Chức năng timer counter
  • Chức năng truyền thông
  • Chức năng ngắt
  • Tập lệnh họ 8051
  • Cấu trúc chương trình hợp ngữ
  • Cấu trúc chương trình C
  • Giao tiếp vào ra đơn bít
  • Giao tiếp vào ra dữ liệu
  • Bài tập ứng dụng và kiểm tra
  • Giao tiếp ma quét
  • Giao tiếp truyền thông
  • Bài tập và ôn tập

51

NỘI DUNG HỌC PHẦN

52 of 243

5. Chức năng truyền thông (2 tiết)

Chức năng của port nối tiếp là thực hiện việc chuyển đổi dữ liệu song song thành nối tiếp khi phát và chuyển đổi dữ liệu nối tiếp thành song song khi thu. Các mạch phần cứng bên ngoài truy xuất thông qua chân TxD (P3.1 phát dữ liệu) và RxD (P3.0 thu dữ liệu)

52

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng truyền thông nối tiếp

53 of 243

5. Chức năng truyền thông (2 tiết)

53

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng truyền thông nối tiếp

54 of 243

5. Chức năng truyền thông (2 tiết)

54

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng truyền thông nối tiếp

55 of 243

5. Chức năng truyền thông (2 tiết)

Thanh ghi chọn chế độ SCON của port nối tiếp ở địa chỉ 98H, trước khi sử dụng port nối tiếp, thanh ghi SCON phải được khởi động đúng chế độ yêu cầu

55

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng truyền thông nối tiếp

56 of 243

5. Chức năng truyền thông (2 tiết)

Bằng cách ghi giá trị 0 vào SM0, SM1. Dữ liệu nối tiếp được thu và phát thông qua chân RxD, TxD xuất xung clock dịch bit.

56

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng truyền thông nối tiếp

57 of 243

5. Chức năng truyền thông (2 tiết)

Thiết lập truyền dữ liệu UART 8 bit (thay đổi)

SCON = 40H; //0100 0000

Bài tập áp dụng tất cả các trường hợp còn lại

Tương tự thiết lập Nhận UART 9 bít (thay đổi) SCON=??H

Tương tự thiết lập Nhận UART 9 bít (Cố định) SCON=??H

Tương tự thiết lập TRUYỀN UART 9 bít (thay đổi) SCON=??H

Tương tự thiết lập TRUYỀN UART 9 bít (Cố định) SCON=??H

57

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng truyền thông nối tiếp

58 of 243

5. Chức năng truyền thông (2 tiết)

58

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng truyền thông nối tiếp

59 of 243

5. Chức năng truyền thông (2 tiết)

59

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng truyền thông nối tiếp

60 of 243

5. Chức năng truyền thông (2 tiết)

1. Nạp thanh ghi TMOD giá trị 20H: báo rằng sử dụng Timer1 ở chế độ 2 để thiết lập chế độ baud.

2. Nạp thanh ghi TH1 các giá trị phù hợp để thiết lập chế độ baud truyền dữ liệu nối tiếp.

3.  Nạp thanh ghi SCON giá trị 40H/? UART 8/9 thay đổi.

4. Bật TR1=1 để khởi động Timer1.

5. Xoá bit cờ truyền dữ liệu: TI=0.

6. Byte ký tự cần phải truyền được ghi vào SBUF.

7.  Bit cờ truyền TI được kiểm tra bằng một vòng lặp để đợi đến lúc dữ liệu được truyền xong (cờ TI=1).

8.  Để truyền ký tự tiếp theo quay trở về bước 5.

60

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng truyền thông nối tiếp

61 of 243

5. Chức năng truyền thông (2 tiết)

61

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng truyền thông nối tiếp - NHẬN

62 of 243

5. Chức năng truyền thông (2 tiết)

62

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng truyền thông nối tiếp - TRUYỀN

63 of 243

5. Chức năng truyền thông (2 tiết)

63

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

64 of 243

5. Chức năng truyền thông (2 tiết)

Ví dụ: Truyền ký tự “B” ra ngoài ở chế độ UART 9- cố định

ký tự “B” có mã 42H = 01000010 → P (chẵn) = 0

Cấu trúc:

SCON = 80h; UART 9- cố định

SBUF = “B” ; đưa mã SCII vào SBUF

Chờ TI =1 ; Chờ truyền xong

Xoá TI=0 ; Xoá chuẩn bị lần sau

64

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng truyền thông nối tiếp

65 of 243

5. Chức năng truyền thông (2 tiết)

Ví dụ: Nhận chuỗi ký tự “ không biết trước” cất vào vùng RAM tại thanh ghi A, ở chế độ UART 8 thay đổi (9600)

REN =1

Cấu trúc:

TMOD = 20H; timer1, chế độ 1

TH1 = 0FDH

SCON = 50H; UART 8 thay đổi

TR1 = 1

Chờ RI =1 ; Chờ nhận xong

E0H = SBUF ; lấy dữ liệu nhận được ở SBUF cất vào thanh ghi A

Xoá RI=0 ; Xoá chuẩn bị lần sau

65

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng truyền thông nối tiếp

66 of 243

5. Chức năng truyền thông (2 tiết)

66

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

67 of 243

  • Tổng quan về vi điều khiển
  • Cấu trúc họ 8051
  • Tổ chức bộ nhớ họ 8051
  • Chức năng timer counter
  • Chức năng truyền thông
  • Chức năng ngắt
  • Tập lệnh họ 8051
  • Cấu trúc chương trình hợp ngữ
  • Cấu trúc chương trình C
  • Giao tiếp vào ra đơn bít
  • Giao tiếp vào ra dữ liệu
  • Bài tập ứng dụng và kiểm tra
  • Giao tiếp ma quét
  • Giao tiếp truyền thông
  • Bài tập và ôn tập

67

NỘI DUNG HỌC PHẦN

68 of 243

6. Chức năng ngắt (2 tiết)

8051 có 5 nguyên nhân ngắt:

2 do bên ngoài,

2 ngắt do bộ định thời

1 ngắt do port nối tiếp.

8052 có thêm 1 ngắt do bộ định thời thứ 3.

Khi thiết lập trạng thái ban đầu cho hệ thống (cấp nguồn, Reset) tất cả các ngắt đều bị vô hiệu hóa và sau đó chúng cho phép riêng rẽ theo chương trình

68

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng ngắt

69 of 243

6. Chức năng ngắt (2 tiết)

69

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng ngắt

70 of 243

6. Chức năng ngắt (2 tiết)

70

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng ngắt

71 of 243

6. Chức năng ngắt (2 tiết)

71

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng ngắt

72 of 243

6. Chức năng ngắt (2 tiết)

Ví dụ Kích hoạt ngắt ngoài 1 thì

EA=1

EX1=1

hoặc

IE.7=1

IE.2=1

Tương tự thiết lập các ngắt sau

  • Kích hoạt 2 ngắt là timer 0 và truyền thông nối tiếp
  • Kích hoạt 3 ngắt là Ngoài 0, timer 0 và truyền thông nối tiếp

72

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng ngắt

73 of 243

6. Chức năng ngắt (2 tiết)

Mỗi 1 nguyên nhân ngắt được lập trình riêng để có 1 trong 2 mức ưu tiên thông qua thanh ghi ưu tiên ngắt IP (interrup priority) có địa chỉ byte 0B8H

73

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng ngắt

74 of 243

6. Chức năng ngắt (2 tiết)

Vecto reset hệ thống (RST ở địa chỉ 0000H) được chứa trong bảng này vì vậy cũng được xem như 1 ngắt: chương trình chính bị ngắt và PC được nạp giá trị mới

74

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng ngắt

75 of 243

6. Chức năng ngắt (2 tiết)

Vecto reset hệ thống (RST ở địa chỉ 0000H) được chứa trong bảng này vì vậy cũng được xem như 1 ngắt: chương trình chính bị ngắt và PC được nạp giá trị mới

75

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng ngắt

76 of 243

6. Chức năng ngắt (2 tiết)

  • VD1: Thiết lập các ngắt và ưu tiên theo thứ tự: Truyền thông, Timer 0, Ngoài 1

  • VD2: Thiết lập các ngắt và ưu tiên theo thứ tự: Timer 1, Truyền thông, Ngoài 0

76

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

Chức năng ngắt

77 of 243

6. Chức năng ngắt (2 tiết)

77

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

78 of 243

  • Tổng quan về vi điều khiển
  • Cấu trúc họ 8051
  • Tổ chức bộ nhớ họ 8051
  • Chức năng timer counter
  • Chức năng truyền thông
  • Chức năng ngắt
  • Tập lệnh họ 8051
  • Cấu trúc chương trình hợp ngữ
  • Cấu trúc chương trình C
  • Giao tiếp vào ra đơn bít
  • Giao tiếp vào ra dữ liệu
  • Bài tập ứng dụng và kiểm tra
  • Giao tiếp ma quét
  • Giao tiếp truyền thông
  • Bài tập và ôn tập

78

NỘI DUNG HỌC PHẦN

79 of 243

7. Tập lệnh họ 8051 (2 tiết)

79

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

80 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh di chuyển dữ liệu

MOV đích ; nguồn

MOV A, # 15 ; Thập phân

MOV A , #1111B ; Nhị phân

MOV A , #30H ; Hex

MOV A , #315D ; Thập phân

80

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

81 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh di chuyển dữ liệu Lệnh MOV (Di chuyển dữ liệu)

81

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

82 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh di chuyển dữ liệu MOVX (Di chuyển dữ liệu với bộ nhớ ngoài)

82

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

83 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh toán học

  • ADD A, <src, byte>
  • SUBB A, <src, byte>
  • MULL AB ; (A) LOW [(A) x (B)];
  • DIV AB ; (A) Integer Result of [(A)/(B)];
  • INC <byte>
  • DEC <byte>

83

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

84 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh toán học

84

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

85 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh toán học Lệnh ADD (Cộng hai số)

85

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

86 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh toán học Lệnh ADDC (Cộng có nhớ)

86

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

87 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh toán học Lệnh SUBB (Trừ có nhớ)

87

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

88 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh toán học Lệnh INC (Tăng giá trị lên 1)

88

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

89 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh toán học Lệnh DEC (Giảm giá trị đi 1)

89

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

90 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh toán học Lệnh MUL (Nhân hai số 8-bit)

90

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

91 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh toán học Lệnh DIV (Chia hai số 8-bit)

91

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

92 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh toán học Lệnh DA (Điều chỉnh A sau phép cộng nhị phân thập phân)

92

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

93 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh toán học Lệnh CPL (Đảo bit)

93

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

94 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh toán học Lệnh CLR (Xóa thanh ghi hoặc cờ)

94

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

95 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh Logic

ANL <dest> <src>

ORL <dest> <src>

XRL <dest> <src>

CLR A

CLR C

RL A ;Quay vòng thanh ghi A qua trái 1 bit

RLC A ; Quay vòng thanh ghi A qua trái 1 bit có cờ Carry

RR A ; Quay vòng thanh ghi A qua phải 1 bit

RRC A ; Quay vòng thanh ghi A qua phải 1 bit có cờ Carry

95

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

96 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh Logic

96

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

97 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh Logic

97

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

98 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh Logic

98

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

99 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh Logic

99

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

100 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh Logic

100

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

101 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh Logic

101

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

102 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh Logic

102

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

103 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh Logic

103

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

104 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh Logic

104

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

105 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh Logic

105

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

106 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh rẽ nhánh

JC rel ; Nhảy đến “rel” nếu cờ Carry C = 1.

JNC rel ; Nhảy đến “rel” nếu cờ Carry C = 0.

JB bit, rel ; Nhảy đến “rel” nếu (bit) = 1.

JNB bit, rel ; Nhảy đến “rel” nếu (bit) = 0.

JBC bit, rel ; Nhảy đến “rel” nếu bit = 1 và xóa bit.

AJMP Addr11 ; Nhảy tuyệt đối không điều kiện trong 2K.

LJMP Addr16 ; Nhảy dài không điều kiện trong 64K

SJMP rel ;Nhảy ngắn không điều kiện

JZ rel ; Nhảy đến A = 0. Thực hành lệnh kế nếu A 0.

JNZ rel ; Nhảy đến A 0. Thực hành lệnh kế nếu A = 0.

CJNE A, direct, rel ; So sánh và nhảy đến A direct

DJNE Rn, rel ; Giảm Rn và nhảy nếu Rn 0.

DJNZ direct, rel ; Tương tự lệnh DJNZ Rn, rel.

106

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

107 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh rẽ nhánh

107

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

108 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh rẽ nhánh

108

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

109 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh rẽ nhánh

109

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

110 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh rẽ nhánh Lệnh LJMP (Nhảy xa)

110

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

111 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh rẽ nhánh Lệnh JZ (Nhảy nếu A = 0)

111

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

112 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh rẽ nhánh Lệnh JNZ (Nhảy nếu A ≠ 0)

112

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

113 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh rẽ nhánh Lệnh JC (Nhảy nếu C = 1)

113

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

114 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh rẽ nhánh Lệnh JNC (Nhảy nếu C = 0)

114

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

115 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh rẽ nhánh Lệnh JB (Nhảy nếu bit = 1)

115

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

116 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh rẽ nhánh Lệnh JNB (Nhảy nếu bit = 0)

116

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

117 of 243

7. Tập lệnh họ 8051 (2 tiết)

Nhóm lệnh rẽ nhánh Lệnh DJNZ (Giảm và nhảy nếu ≠ 0)

117

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

118 of 243

7. Tập lệnh họ 8051 (2 tiết)

118

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

119 of 243

119

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

120 of 243

  • Tổng quan về vi điều khiển
  • Cấu trúc họ 8051
  • Tổ chức bộ nhớ họ 8051
  • Chức năng timer counter
  • Chức năng truyền thông
  • Chức năng ngắt
  • Tập lệnh họ 8051
  • Cấu trúc chương trình
  • Hướng dẫn phần mềm
  • Giao tiếp vào ra đơn bít
  • Giao tiếp vào ra dữ liệu
  • Bài tập ứng dụng và kiểm tra
  • Giao tiếp ma quét
  • Giao tiếp truyền thông
  • Bài tập và ôn tập

120

NỘI DUNG HỌC PHẦN

121 of 243

9. Cấu trúc chương trình C (2 tiết)

121

Chương 3: NGÔN NGỮ LẬP TRÌNH

122 of 243

9. Cấu trúc chương trình C (2 tiết)

122

Chương 3: NGÔN NGỮ LẬP TRÌNH

123 of 243

9. Cấu trúc chương trình C (2 tiết)

123

Chương 3: NGÔN NGỮ LẬP TRÌNH

124 of 243

9. Cấu trúc chương trình C (2 tiết)

124

Chương 3: NGÔN NGỮ LẬP TRÌNH

125 of 243

9. Cấu trúc chương trình C (2 tiết)

125

Chương 3: NGÔN NGỮ LẬP TRÌNH

126 of 243

9. Cấu trúc chương trình C (2 tiết)

126

Chương 3: NGÔN NGỮ LẬP TRÌNH

127 of 243

9. Cấu trúc chương trình C (2 tiết)

127

Chương 3: NGÔN NGỮ LẬP TRÌNH

128 of 243

9. Cấu trúc chương trình C (2 tiết)

128

Chương 3: NGÔN NGỮ LẬP TRÌNH

129 of 243

9. Cấu trúc chương trình C (2 tiết)

129

Chương 3: NGÔN NGỮ LẬP TRÌNH

130 of 243

9. Cấu trúc chương trình C (2 tiết)

130

Chương 3: NGÔN NGỮ LẬP TRÌNH

131 of 243

9. Cấu trúc chương trình C (2 tiết)

131

Chương 3: NGÔN NGỮ LẬP TRÌNH

Cấu trúc WHILE trong C

Cấu trúc WHILE (điều kiện) { ... } trong C có dạng:

while (condition) {

// Nội dung vòng lặp

}

132 of 243

9. Cấu trúc chương trình C (2 tiết)

132

Chương 3: NGÔN NGỮ LẬP TRÌNH

Ví dụ: Vòng lặp WHILE đếm từ 10 về 0

#include <stdio.h>

int main() {

int R0 = 10; // Gán R0 = 10

while (R0 != 0) { // Nếu R0 ≠ 0, tiếp tục lặp

printf("Giá trị R0: %d\n", R0);

R0--; // Giảm R0

}

return 0;

}

133 of 243

9. Cấu trúc chương trình C (2 tiết)

133

Chương 3: NGÔN NGỮ LẬP TRÌNH

Cấu trúc DO-WHILE trong C

Cấu trúc DO { ... } WHILE (điều kiện); trong C có dạng:

do {

// Nội dung vòng lặp

} while (condition);

134 of 243

9. Cấu trúc chương trình C (2 tiết)

134

Chương 3: NGÔN NGỮ LẬP TRÌNH

Ví dụ: Vòng lặp DO-WHILE đếm từ 5 về 0

#include <stdio.h>

int main() {

int R1 = 5; // Gán R1 = 5

do {

printf("Giá trị R1: %d\n", R1);

R1--; // Giảm R1

} while (R1 != 0); // Nếu R1 ≠ 0, tiếp tục lặp

return 0;

}

135 of 243

9. Cấu trúc chương trình C (2 tiết)

135

Chương 3: NGÔN NGỮ LẬP TRÌNH

Cấu trúc REPEAT-UNTIL trong C

Trong C không có REPEAT ... UNTIL trực tiếp như Pascal, nhưng có thể thay thế bằng DO-WHILE với điều kiện phủ định.

do {

// Nội dung vòng lặp

} while (!condition);

136 of 243

9. Cấu trúc chương trình C (2 tiết)

136

Chương 3: NGÔN NGỮ LẬP TRÌNH

Ví dụ: Lặp lại giảm giá trị R2 từ 10 về 0 và dừng khi R2 = 0

#include <stdio.h>

int main() {

int R2 = 10; // Gán R2 = 10

do {

printf("Giá trị R2: %d\n", R2);

R2--; // Giảm R2

} while (R2 != 0); // Nếu R2 ≠ 0, tiếp tục lặp

return 0;

}

137 of 243

9. Cấu trúc chương trình C (2 tiết)

137

Chương 3: NGÔN NGỮ LẬP TRÌNH

Cấu trúc IF trong C

Cấu trúc IF (điều kiện) { ... } trong C có dạng:

if (condition) {

// Lệnh thực hiện nếu điều kiện đúng

}

138 of 243

9. Cấu trúc chương trình C (2 tiết)

138

Chương 3: NGÔN NGỮ LẬP TRÌNH

Ví dụ: Nếu giá trị R0 = 5, thì bật LED tại P1.0

#include <reg51.h>

void main() {

unsigned char R0 = 5;

if (R0 == 5) {

P1_0 = 1; // Bật LED tại P1.0

}

while (1); // Vòng lặp vô hạn

}

139 of 243

9. Cấu trúc chương trình C (2 tiết)

139

Chương 3: NGÔN NGỮ LẬP TRÌNH

Cấu trúc IF-ELSE trong C

Cấu trúc IF ... ELSE trong C có dạng:

if (condition) {

// Lệnh thực hiện nếu điều kiện đúng

} else {

// Lệnh thực hiện nếu điều kiện sai

}

140 of 243

9. Cấu trúc chương trình C (2 tiết)

140

Chương 3: NGÔN NGỮ LẬP TRÌNH

Ví dụ: Nếu R0 = 5, bật LED tại P1.0, ngược lại tắt LED

#include <reg51.h>

void main() {

unsigned char R0 = 5;

if (R0 == 5) {

P1_0 = 1; // Bật LED

} else {

P1_0 = 0; // Tắt LED

}

while (1);

}

141 of 243

9. Cấu trúc chương trình C (2 tiết)

141

Chương 3: NGÔN NGỮ LẬP TRÌNH

Cấu trúc IF-ELSE IF-ELSE trong C

Cấu trúc IF ... ELSE IF ... ELSE trong C có dạng:

if (condition1) {

// Xử lý khi condition1 đúng

} else if (condition2) {

// Xử lý khi condition2 đúng

} else {

// Xử lý nếu không điều kiện nào đúng

}

142 of 243

9. Cấu trúc chương trình C (2 tiết)

142

Chương 3: NGÔN NGỮ LẬP TRÌNH

Ví dụ: Nếu R0 = 1 bật LED, nếu R0 = 2 tắt LED, nếu khác thì nhấp nháy LED

#include <reg51.h>

void delay() {

int i;

for (i = 0; i < 30000; i++); // Tạo trễ

}

void main() {

unsigned char R0 = 2;

if (R0 == 1) {

P1_0 = 1; // Bật LED

} else if (R0 == 2) {

P1_0 = 0; // Tắt LED

} else {

while (1) {

P1_0 = !P1_0; // Nhấp nháy LED

delay();

}

}

while (1);

}

143 of 243

9. Cấu trúc chương trình C (2 tiết)

143

Chương 3: NGÔN NGỮ LẬP TRÌNH

144 of 243

9. Cấu trúc chương trình C (2 tiết)

144

Chương 3: NGÔN NGỮ LẬP TRÌNH

145 of 243

9. Cấu trúc chương trình C (2 tiết)

145

Chương 3: NGÔN NGỮ LẬP TRÌNH

146 of 243

  • Tổng quan về vi điều khiển
  • Cấu trúc họ 8051
  • Tổ chức bộ nhớ họ 8051
  • Chức năng timer counter
  • Chức năng truyền thông
  • Chức năng ngắt
  • Tập lệnh họ 8051
  • Cấu trúc chương trình
  • Hướng dẫn phần mềm
  • Giao tiếp vào ra đơn bít
  • Giao tiếp vào ra dữ liệu
  • Bài tập ứng dụng và kiểm tra
  • Giao tiếp ma quét
  • Giao tiếp truyền thông
  • Bài tập và ôn tập

146

NỘI DUNG HỌC PHẦN

147 of 243

9. Cấu trúc chương trình C (2 tiết)

Chương trình timer

147

Chương 3: NGÔN NGỮ LẬP TRÌNH

Chương trình con

void delay()

{

TMOD = 0x01; Timer0, chế độ 1 (16 bit)

TH0=0xFF; // Đếm bao xung???

TL0 =0x9C;

TR0=1; ‘’ kích hoạt timer

while (!TF0) đợi timer tràng

TR0=0; TF0=0 ; // xoá

}// Kết thúc CT con

Bài tập 1: Chương trình con

Sử dụng timer 1 chế độ 8 bit

Bài tập 2: Chương trình con

Sử dụng timer 1 chế độ 16 bit, có thời gian 50ms

148 of 243

9. Cấu trúc chương trình C (2 tiết)

Chương trình truyền thông

148

Chương 3: NGÔN NGỮ LẬP TRÌNH

#include<at89x51.h>         //khai báo thư viện cho 89c51

void send(unsigned char a);  //khai báo nguyên mẫu hàm

main()         //Chương trình chính

{     

TMOD=0x20;    //Chọn Timer1, chế độ 2

   TH1=0xFA; //Cài đặt tốc độ 4800 baud

SCON=0x40;   //0100 0000: Chọn chế độ 1,

TR1=1;              //Khởi động Timer1

  while(1)                //Vòng lặp vô hạn

 {   send('D');  //Gọi hàm gửi 1 ký tự D

send('K');  //Gọi hàm gửi 1 ký tự K

send('T');  //Gọi hàm gửi 1 ký tự T

……………………..

      }

}

void send(unsigned char a)     //Định nghĩa hàm gửi 1 ký tự

{

 SBUF=a;             //Ghi 1 byte dữ liệu vào thanh ghi SBUF

while(TI==0){}       //vòng lặp để đợi cờ truyền TI lên 1

TI=0;                        //Xóa cờ truyền TI sau khi truyền xong

}

149 of 243

9. Cấu trúc chương trình C (2 tiết)

Chương trình truyền thông

149

Chương 3: NGÔN NGỮ LẬP TRÌNH

Viết chương trình nhận:

150 of 243

9. Cấu trúc chương trình C (2 tiết)

Chương trình ngắt

150

Chương 3: NGÔN NGỮ LẬP TRÌNH

Trong lập trình C trên Keil c cho 8051, chúng ta khai báo trình phục vụ ngắt theo cấu trúc sau:

Void Name (void) interrupt X //( X: là số thứ tự của ngắt 0-5)

{

// chương trình phục vụ ngắt

}Khi đó địa chỉ ngắt sẽ được tự động tính bằng

Interrupt Address = (X * 8) + 3

151 of 243

9. Cấu trúc chương trình C (2 tiết)

Chương trình ngắt

151

Chương 3: NGÔN NGỮ LẬP TRÌNH

#include<at89x51.h>

main()

{

//a)

IE=0x96; //1001 0110: lệnh này tương đương với 4 lệnh phía dưới

EA=1; //Cho phép sử dụng ngắt

ES=1; //Cho phép ngắt cổng nối tiếp

ET0=1; //Cho phép ngắt timer0

EX1=1; //Cho phép ngắt ngoài 1

while(1)

{

//Chương trình chính

//…

}

}

152 of 243

9. Cấu trúc chương trình C (2 tiết)

Chương trình ngắt

152

Chương 3: NGÔN NGỮ LẬP TRÌNH

void ctngattimer0(void) interrupt 1

{

}

void ctngatngoai1(void) interrupt 2

{ // chuong trình ngat

}

void ctngattruyenthongnoitiep(void) interrupt 4

{ // chuong trình ngat

}

153 of 243

9. Cấu trúc chương trình C (2 tiết)

Ví dụ:

153

Chương 3: NGÔN NGỮ LẬP TRÌNH

154 of 243

9. Cấu trúc chương trình C (2 tiết)

Ví dụ chương trình

154

Chương 3: NGÔN NGỮ LẬP TRÌNH

155 of 243

9. Cấu trúc chương trình C (2 tiết)

155

Chương 2: VI ĐIỀU KHIỂN HỌ 8051

156 of 243

  • Lịch sử phát triển và cấu trúc bộ vi xử lý (2 tiết)
  • Các cơ số tính toán nhị phân (2 tiết)
  • Cấu trúc và bộ nhớ họ 8051 (2 tiết)
  • Chức năng timer counter (2 tiết)
  • Chức năng truyền thông (2 tiết)
  • Chức năng ngắt (2 tiết)
  • Tập lệnh họ 8051 (2 tiết)
  • Cấu trúc chương trình hợp ngữ (2 tiết)
  • Cấu trúc chương trình C (2 tiết)
  • Giao tiếp vào ra đơn bít (2 tiết)
  • Giao tiếp vào ra dữ liệu (2 tiết)
  • Bài tập ứng dụng và kiểm tra (2 tiết)
  • Giao tiếp ma quét (2 tiết)
  • Giao tiếp truyền thông (2 tiết)
  • Bài tập và ôn tập (2 tiết)

156

NỘI DUNG HỌC PHẦN

157 of 243

4.1 Giao tiếp vào ra đơn bít (2 tiết)

157

Chương 4: GIAO TIẾP NGOẠI VI

158 of 243

10. Giao tiếp vào ra đơn bít (2 tiết)

158

Chương 4: GIAO TIẾP NGOẠI VI

159 of 243

10. Giao tiếp vào ra đơn bít (2 tiết)

159

Chương 4: GIAO TIẾP NGOẠI VI

#include <REGX52.H>

#define bat 1 // Dinh nghia gia tri bat den Led

#define tat 0 // Dinh nghia gia tri tat den Led

sbit Led = P1^0; // Khai bao bien Led kieu bit chan P1.0

void delay(long time)

{

while(time--);

}

void main(void)

{

while(1)

{

led = bat; // bat Led

delay(25000); // tre 1s

Led = tat; // tat Led

delay(25000); //tre 1s

}

}

160 of 243

10. Giao tiếp vào ra đơn bít (2 tiết)

160

Chương 4: GIAO TIẾP NGOẠI VI

161 of 243

10. Giao tiếp vào ra đơn bít (2 tiết)

//Bài 1: Bat tat LED tao tan so chan P2.0

#include <REGX51.H>

sbit LED = P2^0 ;

void delay()

{

TMOD = 0x01;

TH0=0xC350;

TL0=0xC350;

TR0=1;

while (!TF0);

TF0=0;

TR0=0;}

161

Chương 4: GIAO TIẾP NGOẠI VI

main()

{

while(1)

{

LED=1;

delay();

LED=0;

delay();

}

}

162 of 243

10. Giao tiếp vào ra đơn bít (2 tiết)

Bài Tập:

  • Tương tự viết Timer 1, chế độ 8 bít trễ 1s.
  • Viết chương trình tạo xung vuông tần số 10kHz

162

Chương 4: GIAO TIẾP NGOẠI VI

163 of 243

10. Giao tiếp vào ra đơn bít (2 tiết)

  • Viết chương trình hiệu ứng 8 LED đơn trên chân P2

163

Chương 4: GIAO TIẾP NGOẠI VI

164 of 243

10. Giao tiếp vào ra đơn bít (2 tiết)

//Bài 1: 8 LED chay port P2

#include <REGX51.H>

sbit LED = P2^0 ;

void delay_1(s) {

unsigned int f, t;

for(f=0; f<s; f++)

for(t=0;t<20;t++)

{ TMOD = 0x01;

TH0=0xC350;

TL0=0xC350;

TR0=1;

while (!TF0);

TF0=0;

164

Chương 4: GIAO TIẾP NGOẠI VI

TR0=0; } }

main()

{

while(1)

{

unsigned int y;

P2=0x01;

delay_1(1);

for(y=0;y<8;y++)

{

P2=P2<<1;

delay_1(1);

} } }

165 of 243

4.1 Giao tiếp vào ra đơn bít (2 tiết)

165

Chương 4: GIAO TIẾP NGOẠI VI

166 of 243

4.1 Giao tiếp vào ra đơn bít (2 tiết)

//Bài 1: 8 LED chay port P2

#include <REGX51.H>

sbit START = P1^0 ;

sbit STOP = P1^1 ;

sbit DC = P2^0 ;

void delay_1(s)

{

unsigned int f, t;

for(f=0; f<s; f++)

for(t=0;t<30;t++)

{

TMOD = 0x01;

TH0=0xC350;

166

Chương 4: GIAO TIẾP NGOẠI VI

TL0=0xC350;

TR0=1;

while (!TF0);

TF0=0;

TR0=0;

}

}

main()

{

DC=0;

while (!START)

{

while (1)

{

DC=1;

delay_1(1);

while (!STOP)

{DC=0;

delay_1(1);

while (START)

{}

}

}

}

}

167 of 243

4.1 Giao tiếp vào ra đơn bít (2 tiết)

// Sử dụng Ngắt trong giao tiếp

#include <REGX51.H>

sbit xung = P2^0;

void timer0_int(void) interrupt 1

{ TF0=0; xung = !xung; TH0 = 0xfe;

TL0 = 0x0c;

}

void main(void)

167

Chương 4: GIAO TIẾP NGOẠI VI

{

EA = 1;

ET0 = 1;

TMOD = 0x01;

xung = 0;

TH0 = 0xfe;

TL0 = 0x0c;

TR0 = 1;

while(1) PCON|=1;

}

168 of 243

Bài số 2: Lập trình 1 LED đơn sáng tắt chân P2.0

168

THỰC HÀNH VI ĐIỀU KHIỂN - LẬP TRÌNH

Bài tập về nhà: Bấm một nút chạy 1 hiệu ứng khác nhau

  • Vẽ mạch
  • Mô phỏng, giải thích chương trình

169 of 243

  • Lịch sử phát triển và cấu trúc bộ vi xử lý (2 tiết)
  • Các cơ số tính toán nhị phân (2 tiết)
  • Cấu trúc và bộ nhớ họ 8051 (2 tiết)
  • Chức năng timer counter (2 tiết)
  • Chức năng truyền thông (2 tiết)
  • Chức năng ngắt (2 tiết)
  • Tập lệnh họ 8051 (2 tiết)
  • Cấu trúc chương trình hợp ngữ (2 tiết)
  • Cấu trúc chương trình C (2 tiết)
  • Giao tiếp vào ra đơn bít (2 tiết)
  • Giao tiếp ma quét (2 tiết)
  • Giao tiếp vào ra dữ liệu (2 tiết)
  • Bài tập ứng dụng và kiểm tra (2 tiết)
  • Giao tiếp truyền thông (2 tiết)
  • Bài tập và ôn tập (2 tiết)

169

NỘI DUNG HỌC PHẦN

170 of 243

11. Giao tiếp mã quét (2 tiết)

170

Chương 4: GIAO TIẾP NGOẠI VI

171 of 243

11. Giao tiếp mã quét (2 tiết)

171

Chương 4: GIAO TIẾP NGOẠI VI

// Hien thi 2 so 7 doan

#include <AT89x51.h>

sbit LED1 = P3^0;

sbit LED2 = P3^1;

void delay()

{

int t;

for(t=0;t<2;t++)

{

TMOD = 0x01;

TH0=0x3C;

TL0=0xB0;

TR0=1;

while (!TF0);

TF0=0;

TR0=0;

}

}

void main ( void )

{

while (1)

{

P2 = 0xF9; // dua so 9 ra duong du lieu

LED1 = 0; // bat

LED2 = 1; // tat

delay();

P2 = 0xA4; // dua so 9 ra duong du lieu

LED1 = 1; // bat

LED2 = 0; // tat

delay();

}

}

172 of 243

11. Giao tiếp mã quét (2 tiết)

172

Chương 4: GIAO TIẾP NGOẠI VI

Dem so tu 0-9

#include <AT89x51.h>

sbit LED1 = P3^0;

sbit LED2 = P3^1;

void delay()

{

int t;

for(t=0;t<10;t++)

{

TMOD = 0x01;

TH0=0x3C;

TL0=0xB0;

TR0=1;

while (!TF0);

TF0=0;

TR0=0;

}

}

void main ( void )

{

P2 = 0xC0; // dua so 0 ra duong du lieu

LED1 = 0; // bat

LED2 = 1; // tat

delay();

P2 = 0xF9; // dua so 1 ra duong du lieu

LED1 = 0; // bat

LED2 = 1; // tat

delay();

P2 = 0xA4; // dua so 2 ra duong du lieu

LED1 = 0; // bat

LED2 = 1; // tat

delay();

…………

}

173 of 243

11. Giao tiếp mãquét (2 tiết)

173

Chương 4: GIAO TIẾP NGOẠI VI

Bài tập về nhà:

Đếm số từ 00-99

lặp lại

174 of 243

11. Giao tiếp mã quét (2 tiết)

174

Chương 4: GIAO TIẾP NGOẠI VI

175 of 243

11. Giao tiếp mã quét (2 tiết)

175

Chương 4: GIAO TIẾP NGOẠI VI

176 of 243

11. Giao tiếp mã quét (2 tiết)

176

Chương 4: GIAO TIẾP NGOẠI VI

#include <REGX51.H>

sbit LED1 =P3^0;

sbit H1 =P1^0;

sbit H2 =P1^1;

sbit H3 =P1^2;

sbit H4 =P1^3;

sbit C1 =P1^4;

sbit C2 =P1^5;

sbit C3 =P1^6;

sbit C4 =P1^7;

//unsigned char chuso[10]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

// Hàm chính main

void main(void)

{

while(1)

{

P1=0xff;

H1=0;

if (C1==0)

P2=0xC0;

LED1=0;

if (C2==0)

P2=0xF9;

LED1=0;

//……………

}

}

177 of 243

11. Giao tiếp mã quét (2 tiết)

177

Chương 4: GIAO TIẾP NGOẠI VI

178 of 243

11. Giao tiếp mã quét (2 tiết)

178

Chương 4: GIAO TIẾP NGOẠI VI

179 of 243

11. Giao tiếp mã quét (2 tiết)

179

Chương 4: GIAO TIẾP NGOẠI VI

180 of 243

11. Giao tiếp mã quét (2 tiết)

180

Chương 4: GIAO TIẾP NGOẠI VI

181 of 243

11. Giao tiếp mãquét (2 tiết)

181

Chương 4: GIAO TIẾP NGOẠI VI

Bài tập về nhà:

Bấm phím Matrix nào hiện số đó trên LED matrix

182 of 243

  • Lịch sử phát triển và cấu trúc bộ vi xử lý (2 tiết)
  • Các cơ số tính toán nhị phân (2 tiết)
  • Cấu trúc và bộ nhớ họ 8051 (2 tiết)
  • Chức năng timer counter (2 tiết)
  • Chức năng truyền thông (2 tiết)
  • Chức năng ngắt (2 tiết)
  • Tập lệnh họ 8051 (2 tiết)
  • Cấu trúc chương trình hợp ngữ (2 tiết)
  • Cấu trúc chương trình C (2 tiết)
  • Giao tiếp vào ra đơn bít (2 tiết)
  • Giao tiếp ma quét (2 tiết)
  • Giao tiếp vào ra dữ liệu (2 tiết)
  • Giao tiếp động cơa (2 tiết)
  • Giao tiếp truyền thông (2 tiết)
  • Bài tập và ôn tập (2 tiết)

182

NỘI DUNG HỌC PHẦN

183 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

183

Chương 4: GIAO TIẾP NGOẠI VI

LCD

184 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

184

Chương 4: GIAO TIẾP NGOẠI VI

LCD

185 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

185

Chương 4: GIAO TIẾP NGOẠI VI

Màn tinh thể lỏng LCD

Màn hình tinh thể lỏng LCD 02_16

Chân RS: “Register Select” =1/0 🡪 hiển thị dữ liệu/tín hiệu đk

Chân R/W: “Read/Write” =1/0 🡪 đọc/ghi lên LCD

Chân E: “Enable” =1/0 🡪 cho phép/chốt dữ liệu lên LCD

Màn hình tinh thể lỏng LCD 08_24

Tương tự như LCD 04_16 có 2 chân E1, E2 dùng nửa trên và nửa dưới của màn hình.

LCD

186 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

186

Chương 4: GIAO TIẾP NGOẠI VI

LCD

187 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

187

Chương 4: GIAO TIẾP NGOẠI VI

LCD

188 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

188

Chương 4: GIAO TIẾP NGOẠI VI

void LCDinit(void)

{

LCDcontrol(0x38);//2 dong va ma tran 5x7

LCDcontrol(0x0e);//bat man hinh, bat con tro

LCDcontrol(0x01);//xoa man hinh

}

LCDwrite(‘A’);

void LCDcontrol(unsigned char x)

{

RS=0;//chon thanh ghi lenh

RW=0;//ghi len LCD.

LCDdata=x ;// gia tri x

EN=1;//cho phep muc cao

EN=0;//xung cao xuong thap

wait();//?oi LCD san sang.

}

void LCDwrite(unsigned char c)

{

RS=1;//ghi du lieu

RW=0;//ghi du lieu len LCD

LCDdata=c;//gia tri C

EN=1;//cho phep muc cao

EN=0;//xung cao xuong thap

wait();//cho

}

LCD

189 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

189

Chương 4: GIAO TIẾP NGOẠI VI

LCD

190 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

190

Chương 4: GIAO TIẾP NGOẠI VI

LCD

Viết vòng lặp for cho chạy chữ LCD từ phải sang trái

191 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

191

Chương 4: GIAO TIẾP NGOẠI VI

void LCDwrites(unsigned char *s)

{

unsigned char data lens,count;

lens=strlen(s);

for(count=0;count<lens;count++)

{

LCDwrite(*(s+count));

}

}

void delay(long time)

{

while(time--);

}

void main(void)

{

LCDinit(); // khoi tao LCD

LCDcontrol(0x82);// dua con tro den vi tri thu 4 dong 1

LCDwrite('V');

LCDwrite('I');

LCDwrite('E');

LCDwrite('T');

LCDwrite(' ');

LCDwrite('N');

LCDwrite('A');

LCDwrite('M');

LCDcontrol(0xC0);

LCDwrites("VI DIEU KHIEN");

while(1); //vong lap vo han

}

LCD

192 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

192

Chương 4: GIAO TIẾP NGOẠI VI

LCD

193 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

193

Chương 4: GIAO TIẾP NGOẠI VI

LCD

194 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

194

Chương 4: GIAO TIẾP NGOẠI VI

ADC

195 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

195

Chương 4: GIAO TIẾP NGOẠI VI

ADC

196 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

196

Chương 4: GIAO TIẾP NGOẠI VI

ADC

197 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

197

Chương 4: GIAO TIẾP NGOẠI VI

ADC

198 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

198

Chương 4: GIAO TIẾP NGOẠI VI

ADC

199 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

199

Chương 4: GIAO TIẾP NGOẠI VI

ADC

RD=“0” đọc data

CS= “0” chọn chip

CS= “1” dừng chip

WR=“0” cho chuyển đổi

WR=“1->0” bắt đầu chuyển đổi

INTR =“0” đã chuyển xong

Vref/2: điện áp tham chiếu

CLK IN và CLK R: dao động R = 10k và C= 150pF

fout = 606kHz

200 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

200

Chương 4: GIAO TIẾP NGOẠI VI

ADC

201 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

201

Chương 4: GIAO TIẾP NGOẠI VI

ADC

202 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

202

Chương 4: GIAO TIẾP NGOẠI VI

ADC

203 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

203

Chương 4: GIAO TIẾP NGOẠI VI

ADC

204 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

204

Chương 4: GIAO TIẾP NGOẠI VI

ADC

205 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

205

Chương 4: GIAO TIẾP NGOẠI VI

ADC

206 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

206

Chương 4: GIAO TIẾP NGOẠI VI

ADC

207 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

207

Chương 4: GIAO TIẾP NGOẠI VI

ADC

208 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

208

Chương 4: GIAO TIẾP NGOẠI VI

ADC

209 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

209

Chương 4: GIAO TIẾP NGOẠI VI

ADC

210 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

210

Chương 4: GIAO TIẾP NGOẠI VI

ADC

211 of 243

12. Giao tiếp vào ra dữ liệu (2 tiết)

211

Chương 4: GIAO TIẾP NGOẠI VI

ADC

212 of 243

  • Lịch sử phát triển và cấu trúc bộ vi xử lý (2 tiết)
  • Các cơ số tính toán nhị phân (2 tiết)
  • Cấu trúc và bộ nhớ họ 8051 (2 tiết)
  • Chức năng timer counter (2 tiết)
  • Chức năng truyền thông (2 tiết)
  • Chức năng ngắt (2 tiết)
  • Tập lệnh họ 8051 (2 tiết)
  • Cấu trúc chương trình hợp ngữ (2 tiết)
  • Cấu trúc chương trình C (2 tiết)
  • Giao tiếp vào ra đơn bít (2 tiết)
  • Giao tiếp ma quét (2 tiết)
  • Giao tiếp vào ra dữ liệu (2 tiết)
  • Giao tiếp động cơ (2 tiết)
  • Giao tiếp truyền thông (2 tiết)
  • Bài tập và ôn tập (2 tiết)

212

NỘI DUNG HỌC PHẦN

213 of 243

13. Giao tiếp động cơ

213

Chương 4: GIAO TIẾP NGOẠI VI

214 of 243

13. Giao tiếp động cơ

214

Chương 4: GIAO TIẾP NGOẠI VI

215 of 243

13. Giao tiếp động cơ

215

Chương 4: GIAO TIẾP NGOẠI VI

Viết chương trình điều khiển động cơ một chiều

Và CT đảo chiều động cơ

#include <REGX51.H>

sbit START1 = P1^0 ;

sbit STOP = P1^1 ;

sbit START2 = P1^2 ;

sbit DC = P3^7 ;

sbit PWM1 = P0^0 ;

sbit PWM2 = P0^1 ;

main()

{

PWM1=0;

PWM2=0;

DC=0;

while (START1)

{}

DC = 1;

while (STOP)

{}

DC=0;

}

216 of 243

13. Giao tiếp động cơ

216

Chương 4: GIAO TIẾP NGOẠI VI

Viết chương trình điều khiển động cơ bước

main()

{

ABCD=0xFE;

delay_1(1);

ABCD=0xFD;

delay_1(1) ;

ABCD=0xFB;

delay_1(1) ;

ABCD=0xF7;

delay_1(1);

}

sfr ABCD = 0x90;

void delay_1(s)

{

unsigned int f, t;

for(f=0; f<s; f++)

for(t=0;t<30;t++)

{

TMOD = 0x01;

TH0=0x0C3;

TL0=0x50;

TR0=1;

while (!TF0);

TF0=0;

TR0=0;

}

}

217 of 243

13. Giao tiếp động cơ

217

Chương 4: GIAO TIẾP NGOẠI VI

PWM

218 of 243

13. Giao tiếp động cơ

218

Chương 4: GIAO TIẾP NGOẠI VI

PWM

219 of 243

13. Giao tiếp động cơ

219

Chương 4: GIAO TIẾP NGOẠI VI

Viết chương trình điều khiển PWM đủ 1 chu kỳ Sin

Tần số băm 1kHz, Tần số SIN 50Hz

220 of 243

  • Lịch sử phát triển và cấu trúc bộ vi xử lý (2 tiết)
  • Các cơ số tính toán nhị phân (2 tiết)
  • Cấu trúc và bộ nhớ họ 8051 (2 tiết)
  • Chức năng timer counter (2 tiết)
  • Chức năng truyền thông (2 tiết)
  • Chức năng ngắt (2 tiết)
  • Tập lệnh họ 8051 (2 tiết)
  • Cấu trúc chương trình hợp ngữ (2 tiết)
  • Cấu trúc chương trình C (2 tiết)
  • Giao tiếp vào ra đơn bít (2 tiết)
  • Giao tiếp ma quét (2 tiết)
  • Giao tiếp vào ra dữ liệu (2 tiết)
  • Giao tiếp động cơ (2 tiết)
  • Giao tiếp truyền thông (2 tiết)
  • Bài tập và ôn tập (2 tiết)

220

NỘI DUNG HỌC PHẦN

221 of 243

14. Giao tiếp truyền thông

221

Chương 4: GIAO TIẾP NGOẠI VI

SPI, I2C, RS232, RS 485…

222 of 243

14. Giao tiếp truyền thông

222

Chương 4: GIAO TIẾP NGOẠI VI

SPI: SPI (Serial Peripheral Interface) là một chuẩn giao tiếp nối tiếp đồng bộ tốc độ cao giữa vi điều khiển (MCU)các thiết bị ngoại vi.

✅ Đồng bộ: có tín hiệu xung Clock.� ✅ Nối tiếp: truyền từng bit theo thời gian.� ✅ Phổ biến trong: đọc/ghi Flash, LCD, ADC, RTC, Cảm biến tốc độ cao,...

223 of 243

14. Giao tiếp truyền thông

223

Chương 4: GIAO TIẾP NGOẠI VI

SPI:

224 of 243

14. Giao tiếp truyền thông

224

Chương 4: GIAO TIẾP NGOẠI VI

SPI:

225 of 243

14. Giao tiếp truyền thông

225

Chương 4: GIAO TIẾP NGOẠI VI

SPI: Quy tắc hoạt động SPI

  • Khi SCLK chạy, MasterSlave truyền/nhận dữ liệu đồng thời trên MOSI và MISO.
  • Dữ liệu thường truyền 8 bits hoặc 16 bits trong mỗi lần giao tiếp.
  • Các thông số cấu hình SPI rất quan trọng:
    • CPOL (Clock Polarity): mức điện áp mặc định của SCLK khi nhàn rỗi.
    • CPHA (Clock Phase): dữ liệu lấy tại cạnh lên hay cạnh xuống của SCLK.

226 of 243

14. Giao tiếp truyền thông

226

Chương 4: GIAO TIẾP NGOẠI VI

SPI:

227 of 243

14. Giao tiếp truyền thông

227

Chương 4: GIAO TIẾP NGOẠI VI

SPI:

Master Slave

------ ------

SCLK ---------> SCLK

MOSI ---------> MOSI

MISO <--------- MISO

SS ---------> SS

228 of 243

14. Giao tiếp truyền thông

228

Chương 4: GIAO TIẾP NGOẠI VI

I2C

229 of 243

14. Giao tiếp truyền thông

229

Chương 4: GIAO TIẾP NGOẠI VI

ADC

DS18B20: giao tiếp bus Comunicates hơn 1 dây nhiệt độ phạm vi hoạt động: -55ºC đến 125ºC Độ chính xác +/- 0,5 ºC (giữa -10ºC phạm vi đến 85ºC)

230 of 243

14. Giao tiếp truyền thông

230

Chương 4: GIAO TIẾP NGOẠI VI

231 of 243

14. Giao tiếp truyền thông

231

Chương 4: GIAO TIẾP NGOẠI VI

3. Lập trình giao tiếp

232 of 243

14. Giao tiếp truyền thông

232

Chương 4: GIAO TIẾP NGOẠI VI

3. Lập trình giao tiếp:

void delay_18B20(unsigned int ti){� while(ti--);�}�void Init_18B20(void){ //Khởi tạo cảm biến� DQ = 1;� delay_18B20(8);� DQ = 0;� delay_18B20(65);� DQ = 1;

delay_18B20(8);� DQ = 0;� delay_18B20(65);� DQ = 1;� delay_18B20(20);�}�unsigned char ReadOneChar(void){� unsigned char i=0;� unsigned char dat = 0;� for (i=8;i>0;i--){� DQ = 0;

233 of 243

14. Giao tiếp truyền thông

233

Chương 4: GIAO TIẾP NGOẠI VI

unsigned char i=0;� for (i=8; i>0; i--){� DQ = 0;� DQ = dat&0x01;� delay_18B20(5);� DQ = 1;� dat>>=1;� }�}�void ReadTemperature(void){

DQ = 0;� dat>>=1;� DQ = 1;� if(DQ)� dat |= 0x80;� delay_18B20(4);� }� return(dat);�}�void WriteOneChar(unsigned char dat){

234 of 243

14. Giao tiếp truyền thông

234

Chương 4: GIAO TIẾP NGOẠI VI

Init_18B20();

WriteOneChar(0xCC); // WriteOneChar(0x44);� delay_18B20(10);� Init_18B20();� WriteOneChar(0xCC);� WriteOneChar(0xBE); � delay_18B20(10);� a=ReadOneChar();� b=ReadOneChar();

void ReadTemperature(void){ //Hàm đọc nhiệt độ lưu vào biến temp� unsigned char a=0;� unsigned char b=0;� //EA=0; //Nếu có ngắt thì cấm ngắt để tránh ảnh hưởng quá trình giao tiếp� Init_18B20();� WriteOneChar(0xCC); // Bỏ qua ROM� WriteOneChar(0x44);� delay_18B20(10)

235 of 243

14. Giao tiếp truyền thông

235

Chương 4: GIAO TIẾP NGOẠI VI

temp=((b*256+a)>>4); //Giá trị nhiệt độ lưu vào biến temp� //EA=1; //Đọc xong thì cho phép ngắt�}//End code DS18B20

236 of 243

14. Giao tiếp truyền thông

236

Chương 4: GIAO TIẾP NGOẠI VI

RS232

237 of 243

14. Giao tiếp truyền thông

237

Chương 4: GIAO TIẾP NGOẠI VI

RS232

238 of 243

14. Giao tiếp truyền thông

238

Chương 4: GIAO TIẾP NGOẠI VI

Đề số 1: Giao tiếp RS232

Thực hiện theo https://www.youtube.com/watch?v=MscslGSbFBQ

239 of 243

14. Giao tiếp truyền thông

239

Chương 4: GIAO TIẾP NGOẠI VI

Đề số 2: Giao tiếp RS485

240 of 243

14. Giao tiếp truyền thông

240

Chương 4: GIAO TIẾP NGOẠI VI

Đề số 3: Giao tiếp không dây hồng ngoại IR

Giao tiếp hồng ngoại https://drive.google.com/file/d/1pP2jo6reqWvtkggdb5bfE7mppxLS1OFU/view?usp=sharing

241 of 243

14. Giao tiếp truyền thông

241

Chương 4: GIAO TIẾP NGOẠI VI

Bài tập: Tìm hiểu về SPI, I2C, RS232:

  1. Định nghĩa, khái niệm,
  2. Sơ đồ cấu trúc
  3. Cơ chế truyền thông
  4. Khả năng ứng dụng
  5. Ví dụ áp dụng

242 of 243

15. Ôn tập

242

Chương 4: GIAO TIẾP NGOẠI VI

  • Thiết kế và lập trình giao tiếp LED đơn, bài tập áp dụng
  • Thiết kế và lập trình giao tiếp phím đơn, bài tập áp dụng
  • Thiết kế và lập trình giao tiếp LED 7 đoạn, bài tập áp dụng
  • Thiết kế và lập trình giao tiếp phím ma trận, bài tập áp dụng
  • Thiết kế và lập trình giao tiếp LED ma trận, bài tập áp dụng
  • Thiết kế và lập trình giao tiếp LCD, bài tập áp dụng
  • Thiết kế và lập trình giao tiếp ADC, bài tập áp dụng
  • Thiết kế và lập trình giao tiếp động cơ, bài tập áp dụng
  • Thiết kế và lập trình tạo xung PWM, bài tập áp dụng
  • Thiết kế và lập trình giao tiếp truyền thông nối tiếp, bài tập áp dụng

243 of 243

Thank you

For your attention

243