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

Giáo trình điều khiển: Phần 2 - Phan Văn Vượng (Chủ biên)

146 20 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 146
Dung lượng 24,98 MB

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

Nội dung

(NB) Nối tiếp phấn 1, phần 2 giáo trình trình gồm các nội dung sau: giới thiệu hoạt động của bộ định thời trong vi điều khiển 8051; giới thiệu hoạt động của port nối tiếp trong vi điều khiển 8051; giới thiệu hoạt động của ngắt trong vi điều khiển 8051. Giáo trình được biên soạn ngắn gọn, dễ hiểu, bổ sung nhiều kiến thức mới và biên soạn theo quan điểm mở, nghĩa là, đề cập những nội dung cơ bản, cốt yếu để tùy theo tính chất của các ngành nghề đào tạo.

Trang 1

BÀI 4: GIỚI THIỆU HOẠT ĐỘNG CỦA BỘ ĐỊNH THỜI TRONG VI ĐIỀU KHIỂN 8051

 Nắm bắt được các chế độ định thời trong vi điều khiển 8051

 Nắm bắt được các chương trình điều khiển bộ định thời trong vi điều khiển 8051

 Tuân thủ nội quy và trình tự thực hiện

 Có tinh thần hợp tác giúp đỡ lẫn nhau

 Cẩn thận, đảm bảo an toàn vật liệu, linh kiện

 Bảo quản thiết bị đo, mô hình học cụ

 Vệ sinh mô hình, thiết bị học tập và phòng thực hành

Nội dung chính

4.1 Giới thiệu chung

Trang 2

 Tần số: tần số xung ngõ ra bằng tần số xung ngõ vào chia cho 2N

 Giá trị: giá trị nhị phân trong các FF của bộ định thời là số đếm của các xung clock tại ngõ vào từ khi bộ định thời bắt đầu đếm

 Tràn: xảy ra hiện tượng tràn (cờ tràn = 1) khi số đếm chuyển từ

giá trị lớn nhất xuống giá trị nhỏ nhất của bộ định thời

Ví dụ: Bộ định thời 16 bit (chứa 16 FF bên trong)

 Tần số: 216 65536

IN f IN f OUT

 Giá trị: số đếm nằm trong khoảng 0 (0000H)  65535 (FFFFH)

 Tràn: cờ tràn bằng 1 khi số đếm từ FFFFH chuyển xuống 0000H

 Hình minh họa đơn giản hoạt động của bộ định thời 3 bit:

Hoạt động của một bộ định thời 3 bit đơn giản được minh họa trong hình trên Mỗi một tầng là D FF kích khởi cạnh âm hoạt động như một mạch chia 2

do ta nối ngõ ra Q với ngõ vào D Flipflop cờ (Flag FF) là một mạch chốt D

Trang 3

được set bằng 1 bởi tầng cuối của bộ định thời Giản đồ thời gian cho thấy tầng

thứ nhất (Q 0 ) chia 2 tần số xung clock, tầng thứ hai (Q 1) chia 4 tần số xung clock, … Số đếm được ghi ở dạng thập phân và được kiểm tra dễ dàng bằng

cách khảo sát trạng thái của 3 flipflop Ví dụ, số đếm là 4 xuất hiện khi Q 2 = 1,

Q 1 = 0, Q 0 = 0 Các flipflop ở trên là các flipflop tác động cạnh âm (nghĩa là

trạng thái của các flipflop sẽ thay đổi theo cạnh âm của xung clock) Khi số đếm

tràn từ 111 xuống 000, ngõ ra Q2 có cạnh âm làm cho trạng thái của flipflop cờ

đổi từ 0 lên 1 (ngõ vào D của flipflop này luôn luôn ở logic 1)

 Ứng dụng định thời gian (TIMER): bộ định thời được lập trình

sao cho sẽ tràn sau một khoảng thời gian đã qui định và khi đó cờ tràn của bộ định thời sẽ bằng 1

 Ứng dụng đếm sự kiện (COUNTER): để xác định số lần xuất hiện

của một kích thích từ bên ngoài tới một chân của chip 8051 (kích thích là sự chuyển trạng thái từ 1 xuống 0)

 Ứng dụng tạo tốc độ baud cho port nối tiếp: xem thêm trong phần

“Hoạt động port nối tiếp.”

4.2 Bộ định thời của vi điều khiển 8051

4.2.1 Thanh ghi THx/TLx

 TL0: Chứa byte thấp của bộ định thời 0

 TL1: Chứa byte thấp của bộ định thời 1

 TH0: Chứa byte cao của bộ định thời 0

 TH0: Chứa byte cao của bộ định thời 1

4.2.2 Thanh ghi TMOD

Trang 4

 Thanh ghi TMOD (Timer Mode Register) chứa các bit dùng để thiết

lập chế độ hoạt động cho bộ định thời 0 và bộ định thời 1

 Thanh ghi TMOD được nạp giá trị một lần tại thời điểm bắt đầu của chương trình để qui định chế độ hoạt động của các bộ định thời

 Cấu trúc thanh ghi TMOD:

 Các chế độ hoạt động của bộ định thời:

Ví dụ 1: Cho biết giá trị cần nạp cho thanh ghi TMOD để

 Timer 0: là bộ định thời gian 16 bit, được điều khiển bằng phần

mềm (bit TR0)

Trang 5

 Timer 1: là bộ đếm xung 13 bit, được điều khiển bằng phần cứng

Trang 7

4.2.3 Thanh ghi TCON

 Thanh ghi TCON (Timer Control Register) chứa các bit dùng để

điều khiển và báo trạng thái của bộ định thời 0 và bộ định thời 1

 Cấu trúc thanh ghi TCON:

Trang 8

 Lưu ý:Các bit IT0, IT1, IE0, IE1 không dùng để điều khiển các bộ

định thời Các bit này được dùng để phát hiện và khởi động các ngắt ngoài Việc

thảo luận các bit này sẽ được trình bày trong “Hoạt động ngắt.”

 Số đếm: 0000H  1FFFH nghĩa là từ 0  8191 Thời gian định

 Thanh ghi THx và TLx chứa giá trị của bộ định thời

 Khi có xung clock, bộ định thời bắt đầu đếm lên từ giá trị chứa trong THx/TLx

 Xảy ra tràn (cờ tràn TFx=1) khi số đếm chuyển từ 1FFFH sang 0000H và việc đếm sẽ tiếp tục đếm lên từ giá trị 0000H

Trang 9

Hình 4.2.1: Kiến trúc của Timer 0 ở chế độ 0 (Mode 0)

4.2.4.2 Chế độ định thời 16 bit (Chế độ 1):

Chế độ 1 (Mode 1):

 Chế độ định thời 16 bit

 Sử dụng thanh ghi THx và TLx để tạo ra bộ định thời

 Số đếm: 0000H  FFFFH nghĩa là từ 0  65535 Thời gian định

 Thanh ghi THx và TLx chứa giá trị của bộ định thời

 Khi có xung clock, bộ định thời bắt đầu đếm lên từ giá trị chứa trong THx/TLx

 Xảy ra tràn (cờ tràn TFx=1) khi số đếm chuyển từ FFFFH sang 0000H và việc đếm sẽ tiếp tục đếm lên từ giá trị 0000H

Hình 4.2.2: Kiến trúc của Timer 0 ở chế độ 1 (Mode 1)

4.2.4.3 Chế độ định thời 8 bit tự nạp lại (Chế độ 2):

Trang 10

Chế độ 2 (Mode 2):

 Chế độ định thời 8 bit tự nạp lại

 Sử dụng thanh ghi TLx để tạo ra bộ định thời

 Số đếm: 00H  FFH nghĩa là từ 0  255 Thời gian định thời: từ

1.TTimer 28.TTimer nghĩa là từ 1.TTimer 256.TTimer

 Thanh ghi TLx chứa giá trị của bộ định thời và thanh ghi THx chứa giá trị sẽ được dùng để nạp lại cho bộ định thời

 Khi có xung clock, bộ định thời bắt đầu đếm lên từ giá trị chứa trong TLx (THx không thay đổi giá trị)

 Xảy ra tràn (cờ tràn TFx=1) khi số đếm chuyển từ FFH sang 00H, đồng thời giá trị trong THx sẽ được nạp vào TLx và việc đếm sẽ tiếp tục đếm lên từ giá trị chứa trong thanh ghi TLx (giá trị này bằng với giá trị của THx)

Hình 4.2.3: Kiến trúc của Timer 0 ở chế độ 2 (Mode 2)

4.2.4.4 Chế độ định thời chia xẻ (Chế độ 3):

Trang 11

Chế độ 3 (Mode 3) là:

 Chế độ định thời chia xẻ

 Bộ định thời 0 được chia ra:

o Bộ định thời 8 bit thứ I:

 Sử dụng thanh ghi TL0 để tạo ra bộ định thời

 Số đếm: 00H  FFH nghĩa là từ 0  255 Thời gian

256.TTimer

 Thanh ghi TL0 chứa giá trị của bộ định thời

 Khi có xung clock, bộ định thời bắt đầu đếm lên từ giá trị chứa trong TL0

 Xảy ra tràn (cờ tràn TF0=1) khi số đếm chuyển từ

FFH sang 00H và việc đếm sẽ tiếp tục đếm lên từ giá trị 00H

o Bộ định thời 8 bit thứ II:

 Sử dụng thanh ghi TH0 để tạo ra bộ định thời

 Số đếm: 00H  FFH nghĩa là từ 0  255 Thời gian

256.TTimer

 Thanh ghi TH0 chứa giá trị của bộ định thời

 Khi có xung clock, bộ định thời bắt đầu đếm lên từ giá trị chứa trong TH0

 Xảy ra tràn (cờ tràn TF1=1) khi số đếm chuyển từ

FFH sang 00H và việc đếm sẽ tiếp tục đếm lên từ giá trị 00H

 Bộ định thời 1:

Trang 12

o Là bộ định thời 16 bit

o Không hoạt động ở chế độ 3 nhưng có thể hoạt động các chế

độ khác (chế độ 0, 1, 2)

o Không có cờ báo tràn như các bộ định thời khác

Hình 4.2.4: Kiến trúc của Timer 0 ở chế độ 3 (Mode 3)

4.2.5 Các nguồn xung clock

Nguồn xung cho bộ định thời được tạo ra từ:

 Mạch dao động trên chip dùng cho tính năng định thời gian

 Xung kích thích bên ngoài dùng cho tính năng đếm sự kiện

4.2.5.1 Trường hợp định thời gian:

Nếu C/T=0 thì:

 Bộ định thời được dùng để định thời gian (Timer)

Trang 13

 Nguồn xung clock định thời được lấy từ mạch dao động trên chip Lưu ý:

o Tần số xung clock cung cấp cho bộ định thời bằng 1/12 tần

số của mạch dao động trên chip 8051

o Thời gian định thời là khoảng thời gian được tính từ lúc bộ định thời bắt đầu đếm lên (từ giá trị chứa trong các thanh ghi THx/TLx) cho đến lúc bộ định thời bắt đầu tràn (thời gian này phụ thuộc vào giá trị ban đầu được nạp cho các thanh ghi THx và TLx)

Ví dụ: Tìm tần số xung clock và chu kỳ của bộ định thời đối với trường hợp

các hệ thống vi điều khiển xây dựng trên chip 8051 với tần số thạch anh như sau: 11,0592 MHz, 12 MHz và 16 MHz

Giải

Gọi fTIMER là tần số xung clock của bộ định thời, fOSC là tần số xung clock của thạch anh Theo như trên đã trình bày, ta có:

TIMER f

TIMER T

KHz MHz

OSC f TIMER f

MHz OSC

f

 085 , 1 6

, 921

1 1

6 , 921 12

0592 , 11 12

0592 , 11

      MHz  s TIMER f TIMER T MHz MHz OSC f TIMER f MHz OSC f  1 1 1 1 1 12 12 12 12        

      MHz  s TIMER f TIMER T MHz MHz OSC f TIMER f MHz OSC f  75 , 0 333 , 1 1 1 333 , 1 12 16 12 16        

4.2.5.2 Trường hợp đếm sự kiện:

Trang 14

Nếu C/T=1 thì:

 Bộ định thời được dùng để đếm sự kiện (Counter)

 Nguồn xung clock định thời được lấy từ xung kích thích bên ngoài tại hai chân T0 và T1 của chip 8051

Lưu ý:

o Tần số kích thích tối đa cho phép tại chân T0 và T1:

2)

(1,0

TIMER f

MAX T

T

fTIMER: tần số xung clock định thời

fT0,T1(MAX): tần số kích thích tối đa cho phép tại T0 và T1

Ví dụ: Tính tần số kích thích tối đa cho phép tại chân T0 và T1 đối với

trường hợp các hệ thống vi điều khiển xây dựng trên chip 8051 với tần số thạch anh như sau: 11,0592 MHz, 12 MHz và 16 MHz

Giải

MAX T

T f MHz OSC

2

6,9212

)(1,00592

T f MHz OSC

2

12

)(1,0

MAX T

T f MHz OSC

2

333,12

)(1,0

o Số lượng sự kiện (số xung) mà bộ định thời đếm được sẽ được chứa trong các thanh ghi THx/TLx, giá trị trong các thanh ghi này sẽ tăng

theo mỗi xung kích thích bên ngoài tại T0 và T1 của chip 8051

Một kích thích được gọi là một sự kiện (một xung) khi xảy ra sự chuyển trạng thái từ 1 xuống 0 ở chân T0 hoặc T1

4.3 Phương pháp lập trình điều khiển bộ định thời

4.3.1 Lập trình định thời gian

Các bước cơ bản để khởi động Timer:

 Chọn chế độ hoạt động cho Timer, cho bit GATE=0 và C/T=0:

MOV TMOD, # (1)…

 Chọn giá trị thích hợp (khoảng thời gian định thời) cho Timer:

MOV THx, # (2)…

MOV TLx, # (3)…

Trang 15

 Cho Timer chạy:

(2), (3): Giá trị này phụ thuộc vào khoảng thời gian cần định thời Cũng

cần lưu ý thêm, việc chọn giá trị cho không phải lúc nào ta cũng phải chọn giá trị cho cả hai thanh ghi này mà nó tùy thuộc vào từng chế hoạt động của Timer

(Mode 0: THx/TLx, Mode 1: THx/TLx, Mode 2: THx, Mode 3: THx hoặc TLx)

Các giá trị trên phải thoả mãn điều kiện sau:

 Chế độ 8 bit: giá trị trong khoảng từ -255 đến -1 (tương ứng từ 255.T TIMER đến 1.T TIMER)

Ví dụ: MOV TH1, #(-255) định thời 255.TTIMER

 Chế độ 13 bit: giá trị trong khoảng từ -8191 đến -1 (tương ứng từ 8191.T TIMER đến 1.T TIMER)

Ví dụ: MOV TL1, #LOW(-8000) định thời 8000.TTIMER

Trường hợp đặc biệt nếu giá trị (N) nạp vào thanh ghi THx/TLx là giá trị 0

thì thời gian định thời sẽ là lớn nhất cho từng chế độ

 Chế độ 8 bit: N = 0  tDELAY = 256.TTIMER

 Chế độ 13 bit: N = 0  tDELAY = 8192.TTIMER

Trang 16

 Chế độ 16 bit: N = 0  tDELAY = 65536.TTIMER

4.3.2 Lập trình đếm sự kiện

Các bước cơ bản để khởi động Counter:

 Chọn chế độ hoạt động cho Counter, cho bit GATE=0 và C/T=1:

MOV TMOD, # (1)…

 Xoá các giá trị chứa trong thanh ghi THx và TLx (nghĩa là cho số xung ban đầu bằng 0):

MOV THx, #00H MOV TLx, #00H

 Cho Counter chạy:

(1): Giá trị này phụ thuộc vào Counter được chọn và chế độ hoạt động

của Counter Giá trị này phải thoả mãn điều kiện sau:

 Chế độ 8 bit: số lượng xung tối đa mà Counter đếm được từ 0 đến

Trong quá trình đọc số xung đếm được chứa trong các thanh ghi THx/TLx

ta phải chú ý đến trường hợp Counter bị tràn Vì khi đó giá trị trong thanh ghi

THx/TLx (nơi chứa số xung đếm được) sẽ trở về 0 Cho nên nếu ta không có

biện pháp xử lý cho trường hợp này thì kết quả là số xung mà ta nhận được sẽ bị sai Vì thế, nếu ta giả sử ban đầu Counter được khởi động với giá trị là 0 thì cứ

Trang 17

mỗi lần Counter bị tràn thì ta phải cộng thêm vào số xung đọc về 256 xung

(trường hợp 8 bit) hoặc 8192 xung (trường hợp 13 bit) hoặc 65536 xung (trường hợp 16 bit)

4.4 Ứng dụng định thời gian trong lập trình điều khiển thiết bị ngoại vi Mục đích:

 Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào vi điều khiển và sử dụng mô hình thí nghiệm để kiểm chứng

 Viết các chương trình con tạo thời gian trễ sử dụng trong các ứng dụng điều khiển

Yêu cầu:

 Nắm vững tập lệnh của vi điều khiển MCS-51

 Biết cách tính toán các thông số thời gian tạo trễ trong vi điều khiển

D22 LED

D 23 LED

LED

D27 LED

J3 BARLED2

1 3 5 7

D25 LED D21

LED D19 LED

D31 LED D30 LED D12

LED D10 LED

D24 LED D7

LED

1 3 5 7 9

D 8 LED

D 26 LED D9

LED

1 3 5 7 9

D15 LED D2

LED

D 20 LED

D 14 LED

J5 BARLED4

1 3 5 7 J2

BARLED1

1 3 5 7

D5 LED

J4 BAR LED3

1 3 5 7

D 32 LED D3

LED

D 11 LED

1 3 5 7 9

D16 LED D6

LED

D18 LED

D 17 LED

D28 LED

Hình 4.4.1: Sơ đồ nguyên lý khối LED đơn (Point LED)

4.4.1.2 Sơ đồ bố trí linh kiện

Hình 4.4.2: Khối Khối LED đơn (Point LED)

BÀI THỰC HÀNH Viết chương trình, mô phỏng và lắp ráp mạch điều khiển 8 LED đơn được nối với Port 0 sáng tắt (có sử dụng bộ đệm đảo) với thời gian trễ là 500ms

4.4.2 Lưu đồ giải thuật

Trang 18

 Bước 1: Vẽ lưu đồ giải thuật của chương trình điều khiển

Hình 4.4.3: Lưu đồ giải thuật của chương trình

4.4.3 Chương trình điều khiển

Sử dụng phần mềm Topview Simulation để thực hiện việc viết chương trình

và biên dịch, kiểm tra lỗi cú pháp của chương trình

 Bước 2: Khởi động phần mềm Topview Simulation

 Bước 3: Mở chức năng soạn thảo một chương trình mới và đặt tên

tập tin chương trình là: A1.ASM

 Bước 4: Viết chương trình điều khiển dưới đây vào máy tính

Trang 19

MOVP0,#0FFH ;LED SANG

 Bước 5: Lưu chương trình trên vào máy tính

 Bước 6: Thực hiện biên dịch và kiểm tra lỗi chương trình

o Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh khắc phục các lỗi này Nguyên nhân phát sinh lỗi thông thường do cú pháp của các lệnh không chính xác, cần phải được kiểm tra lại Sau khi hoàn tất việc hiệu chỉnh sai sót thì quay trở về thực hiện từ Bước 5

o Nếu không có lỗi xuất hiện thì phần mềm sẽ tự động tạo tập

tin mã máy với tên là: A1.HEX và thực hiện tiếp theo các phần nội dung dưới

đây

4.4.4 Mô phỏng hoạt động

Sử dụng phần mềm ISIS 7 Professional (Protues 7.10) để thực hiện việc mô

phỏng quá trình hoạt động của hệ thống vi điều khiển

 Bước 7: Khởi động phần mềm ISIS 7 Professional (Protues 7.10)

 Bước 8: Vẽ sơ đồ thiết kế mạch mô phỏng điều khiển LED đơn như

Hình 4.5.4 dưới đây

Trang 20

D D D D D D D D AD7 AD7

AD0

D0 AD0 AD0

AD1 AD1 AD2 AD2 AD3 AD3 AD4 AD4 AD5 AD5 AD6 AD6

AD7 AD6 AD4 AD3 AD1

D7 D6 D4 D2 D1 D0 D2 D4 D5 D7

XTAL2 18 XTAL1 19

ALE 30 EA 31 PSEN 29

RST 9

P0.0/AD0 39P0.1/AD1 38P0.2/AD2 37P0.3/AD3 36P0.4/AD4 35P0.5/AD5 34P0.6/AD6 33P0.7/AD7 32

P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8

P3.0/RXD 10P3.1/TXD 11P3.2/INT0 12P3.3/INT1 13P3.4/T0 14P3.7/RD 17P3.6/WR 16P3.5/T1 15P2.7/A15 28

P2.0/A8 21P2.1/A9 22P2.2/A10 23P2.3/A11 24P2.4/A12 25P2.5/A13 26P2.6/A14 27

D2

R3

330 +5V

D3

R4

330 +5V

D4

R5

330 +5V

D5

R6

330 +5V

D6

R7

330 +5V

D7

R8

330 +5V

D8

R9

330 +5V

1B 1 2B 2 3B 3 4B 4 5B 5 6B 6 7B 7 8B 8

1C 182C 173C 164C 155C 146C 137C 128C 11

1

RP2

10K +5V

Hình 4.4.4: Sơ đồ nguyên lý mô phỏng hệ thống điều khiển

 Mạch mô phỏng này đã được thiết kế sẵn và lưu trong máy tính với tên tập

tin là: A-8LED.DSN Vì thế người học có thể tự vẽ thiết kế mạch mô phỏng hoặc lấy mạch mô phỏng có sẵn trong cơ sở dữ liệu của môn học

 Bước 9: Chọn tập tin chương trình cần mô phỏng (tập tin mã máy

đã được tạo ra từ Bước 6) cho hệ thống vi điều khiển: A1.HEX

 Bước 10: Thực hiện chạy mô phỏng và quan sát trực tiếp kết quả

trên màn hình máy tính

o Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh khắc phục các lỗi này Nguyên nhân phát sinh lỗi thông thường do giải thuật chương trình không chính xác hoặc do mạch mô phỏng vẽ không chính xác, cần phải được kiểm tra lại Sau khi hoàn tất việc hiệu chỉnh sai sót thì quay trở về thực hiện từ Bước 5 (do giải thuật chương trình không chính xác) hoặc Bước 8 (do mạch mô phỏng vẽ không chính xác)

o Nếu không có lỗi xuất hiện thì thực hiện tiếp theo các phần nội dung dưới đây

4.4.5 Lắp mạch và nạp chương trình điều khiển

Sử dụng các khối "Microcontroller Unit Slot", "Point LED", "Inverter" và

"Power Supply" có sẵn trên mô hình thực hành vi điều khiển để lắp ráp mạch

theo thiết kế bên trên

Trang 21

 Bước 11: Kết nối các khối trên mô hình như Hình 4.5.5 để tạo

thành hệ thống mạch điều khiển như bên trên

o Tắt nguồn AC cấp cho mô hình thực hành

o Dùng dây bus 8 nối J130 (PORT0) ở khối "Microcontroller

Unit Slot" với J61 (INPUT 1) ở khối "Driver Arrays (Inverter)"

o Dùng dây bus 8 nối J65 (OUTPUT 1) ở khối "Driver Arrays

(Inverter)" với J2 (BAR LED 1) ở khối "Point LED"

o Dùng hai dây bus 3 nối J1 (POWER) ở khối "Point LED" và

J62 (POWER) ở khối "Driver Arrays (Inverter)" với nguồn +5V ở khối

"Power Supply"

Hình 4.4.5: Sơ đồ kết nối mạch trên mô hình

Sử dụng phần mềm Flash Magic để thực hiện việc nạp chương trình cho vi

điều khiển P89V51RB2 trên mô hình thực hành

 Bước 12: Bật nguồn AC cấp cho mô hình thực hành

 Bước 13: Khởi động phần mềm Flash Magic

 Bước 14: Kiểm tra cấu hình phần mềm (loại vi điều khiển, cổng

COM, tốc độ truyền, chuẩn giao tiếp,

 Bước 15: Chọn tập tin chương trình điều khiển (tập tin mã máy đã

được tạo ra từ Bước 6): xxx.HEX

Trang 22

 Bước 16: Nạp chương trình vào vi điều khiển

 Bước 17: Nhấn nút "Master Reset" ở khối "Microcontroller Unit

Slot" để chạy chương trình và quan sát trực tiếp kết quả trên mô hình thực hành

o Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh khắc phục các lỗi này Nguyên nhân phát sinh lỗi thường do việc lắp ráp phần cứng không chính xác hoặc các linh kiện bị hư hỏng, cần phải được kiểm tra lại Sau khi hoàn tất việc kiểm tra và hiệu chỉnh sai sót thì quay trở về thực hiện từ Bước 15

o Nếu không có lỗi xuất hiện thì hoàn tất bài thực hành

Lưu đồ giải thuật:

Chương trình điều khiển:

Trang 23

;TUONG DOI: TIME = [R0]*[R1]*2T

;CHINH XAC: TIME = 2T+2T+1T+(1T+2T*[R1]+2T)*[R0]+2T+2T+2T

; VOI T LA CHU KY MAY

Trang 24

Chương trình điều khiển:

;TUONG DOI: TIME = (|TH0,TL0|)*T

;CHINH XAC: TIME = 2T+2T+2T+1T+(|TH0,TL0|)*T+1T+1T++2T

; VOI T LA CHU KY MAY

Trang 25

END

 Bài tập số 3:

Nội dung:

" Chương trình con điều khiển tạo thời gian trễ 2s sử dụng Timer."

Lưu đồ giải thuật:

Chương trình điều khiển:

Trang 26

;TUONG DOI: TIME = (|TH0,TL0|)*[R0]*T

Trang 27

 Bài 7: Hãy viết chương trình con điều khiển tạo thời gian trễ 1 phút

 Điều khiển thiết bị ngoại vi bằng các port của vi điều khiển

 Tìm hiểu các chế độ hoạt động của Timer và Counter

 Khảo sát nguyên lý hoạt động và phương pháp lập trình điều khiển Timer và Counter

 Thiết kế các ứng dụng thực tế có sử dụng các bộ định thời gian (Timer) và các bộ đếm sự kiện (Counter)

Yêu cầu:

 Nắm vững tập lệnh của vi điều khiển MCS-51

 Nắm vững phương pháp vận hành các Timer và Counter có trong chip vi điều khiển

 Biết cách lập trình Timer và Counter ở các chế độ khác nhau, cách tính toán các khoảng thời gian định thời mong muốn

 Thiết kế và điều khiển được các ứng dụng có sử dụng Timer và Counter như: đồng hồ, bộ đếm sản phẩm, …

4.5.1 Sơ đồ nguyên lý

4.5.1.1 Sơ đồ nguyên lý

Trang 28

C56 220p C55 220p

Y5

32.768 KHz

VCC

C57 104

VCC

C149 104

J249 CLOCK OUT

1 3

J246

POWER

1 3 VCC

GND +5V GND

2 Hz

R94

D 5 CLK 3

S 6

R 4

CLK 11 RST 12

VCC

Hình 4.5.1: Sơ đồ nguyên lý khối phát xung vuông (Square Wave Generator)

4.5.1.2 Sơ đồ bố trí linh kiện

Hình 4.5.2: Khối phát xung vuông (Square Wave Generator)

BÀI THỰC HÀNH Viết chương trình, mô phỏng và lắp ráp mạch điều khiển đếm liên tục số lượng xung (0000 – 9999) được đưa vào chân T1 của vi điều khiển và hiển thị số lượng xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1)

4.5.2 Lưu đồ giải thuật

 Bước 1: Vẽ lưu đồ giải thuật của chương trình điều khiển

Trang 29

Hình 4.5.3: Lưu đồ giải thuật của chương trình

4.5.3 Chương trình điều khiển

Sử dụng phần mềm Topview Simulation để thực hiện việc viết chương trình

và biên dịch, kiểm tra lỗi cú pháp của chương trình

 Bước 2: Khởi động phần mềm Topview Simulation

 Bước 3: Mở chức năng soạn thảo một chương trình mới và đặt tên

tập tin chương trình là: K1.ASM

 Bước 4: Viết chương trình điều khiển dưới đây vào máy tính

;***************************************************

;CHUONG TRINH DIEU KHIEN TIMER/COUNTER DEM (0000 - 9999) VA HIEN THI XUNG TAI CHAN T1

;***************************************************

;KET NOI: PORT0 -> 7 SEGMENT (DP -> A)

; PORT1 -> SELECT LED

; PULSE -> T1 PIN

;***************************************************

ORG 00H

MAIN:

MOVTMOD,#50H ;COUNTER 16 BIT (MODE 1)

MOV TH1,#0 ;XOA COUNTER 1

DONG

MP1:

Trang 30

MOV R7,TH1 ;CHUYEN SO XUNG DEM DUOC (TH1, TL1) RA HIEN THI

PUSHB ;CAT SO HANG DON VI

MOVB,#10

PUSHB ;CAT SO HANG CHUC

MOVB,#10

DIV AB ;TIEP TUC CHIA CHO 10

PUSHB ;CAT SO HANG TRAM, ACC CHUA SO HANG NGAN

SWAP A ;DUA SO HANG NGAN LEN 4 BIT CAO

POP B ;LAY SO HANG TRAM TU STACK

ORL A,B ;KET HOP SO HANG NGAN VA SO HANG TRAM

MOVR7,A ;R7 = NGAN - TRAM

POP ACC ;LAY SO HANG CHUC TU STACK

SWAP A ;DUA SO HANG CHUC LEN 4 BIT CAO

POP B ;LAY SO HANG DON VI TU STACK

ORL A,B ;KET HOP SO HANG CHUC VA SO HANG DON

DIV16TO8: ;CTC CHIA SO BINARY 16 BIT CHO SO BINARY 8 BIT

PUSH 02H ;CAT THANH GHI R2

PUSHACC ;CAT THANH GHI A

MOVR2,#16 ;CHO PHEP DICH 16 LAN

DIVIDE:

Trang 31

CLR C

XCH A,R6 ;DICH BIT 7 CUA R6 VAO

RLC A ;CARRY, BIT 0 CUA R6

XCH A,R6 ;BANG 0

XCH A,R7 ;DICH BIT CARRY VAO

RLC A ;BIT 0 CUA R7

RLC A ;DICH BIT 7 CUA R7 VAO A

CJNEA,B,NOT_EQUAL ;XEM SO BIT DA DICH >=

SJMP A_GREATER_EQ_B ;SO CHIA CHUA ?

DJNZR2,DIVIDE ;DICH TIEP DEN 16 LAN

XCH A,B ;SAU 16 LAN DICH TA DUOC B = SO DU

MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN

MOVA,R6 ;LAY SO BCD CAN GIAI MA

ANL A,#0FH ;XOA 4 BIT CAO

MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO

MOVA,R6 ;LAY SO BCD CAN GIAI MA

ANL A,#0F0H ;XOA 4 BIT THAP

SWAP A ;HOAN CHUYEN CAO - THAP

MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO

MOVA,R7 ;LAY SO BCD CAN GIAI MA

ANL A,#0FH ;XOA 4 BIT CAO

MOV 62H,A ;CAT BCD HANG TRAM VAO O NHO

MOVA,R7 ;LAY SO BCD CAN GIAI MA

Trang 32

ANL A,#0F0H ;XOA 4 BIT THAP

SWAP A ;HOAN CHUYEN CAO - THAP

MOV 63H,A ;CAT BCD HANG NGAN VAO O NHO

POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI

MOVA,#0F7H ;MA QUET

MOVR0,#63H ;DIA CHI VUNG MA HIEN THI

DISP:

MOVP0,@R0 ;XUAT MA HIEN THI

MOVP1,A ;XUAT MA QUET

MOVP1,#0FFH ;CHONG LEM

DEC R0 ;LAY MA HIEN THI KE TIEP

RR A ;CHUYEN SANG LED KE TIEP

CJNER0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA

POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI

Trang 33

 Bước 6: Thực hiện biên dịch và kiểm tra lỗi chương trình

o Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh khắc phục các lỗi này Nguyên nhân phát sinh lỗi thông thường do cú pháp của các lệnh không chính xác, cần phải được kiểm tra lại Sau khi hoàn tất việc hiệu chỉnh sai sót thì quay trở về thực hiện từ Bước 5

o Nếu không có lỗi xuất hiện thì phần mềm sẽ tự động tạo tập

tin mã máy với tên là: K1.HEX và thực hiện tiếp theo các phần nội dung dưới

đây

4.5.4 Mô phỏng hoạt động

Sử dụng phần mềm ISIS 7 Professional (Protues 7.10) để thực hiện việc mô

phỏng quá trình hoạt động của hệ thống vi điều khiển

 Bước 7: Khởi động phần mềm ISIS 7 Professional (Protues 7.10)

 Bước 8: Vẽ sơ đồ thiết kế mạch mô phỏng điều khiển xxx như

Hình 4.6.4 dưới đây

AD7

AD0

AD0 AD2 AD4 AD6

AD7 AD5 AD3 AD1

A C E G

A C E G

A C E G

C2 33p

X1

12MHz

2 4 6 8

1 RP1

LED6

Q2 A1015

+5V

R2 1K

R3 1K R4

56 R5

56 R6

56 R7

56 R8

56 R9

56 R10

56

LED5

Q3 A1015 +5V

LED4

Q4 A1015

+5V

R11 1K

R12 1K

Hình 4.5.4: Sơ đồ nguyên lý mô phỏng hệ thống điều khiển

 Mạch mô phỏng này đã được thiết kế sẵn và lưu trong máy tính với tên tập

tin là: xxx.DSN Vì thế người học có thể tự vẽ thiết kế mạch mô phỏng hoặc lấy mạch mô phỏng có sẵn trong cơ sở dữ liệu của môn học

 Bước 9: Chọn tập tin chương trình cần mô phỏng (tập tin mã máy

đã được tạo ra từ Bước 6) cho hệ thống vi điều khiển: K1.HEX

Trang 34

 Bước 10: Thực hiện chạy mô phỏng và quan sát trực tiếp kết quả

trên màn hình máy tính

o Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh khắc phục các lỗi này Nguyên nhân phát sinh lỗi thông thường do giải thuật chương trình không chính xác hoặc do mạch mô phỏng vẽ không chính xác, cần phải được kiểm tra lại Sau khi hoàn tất việc hiệu chỉnh sai sót thì quay trở về thực hiện từ Bước 5 (do giải thuật chương trình không chính xác) hoặc Bước 8 (do mạch mô phỏng vẽ không chính xác)

o Nếu không có lỗi xuất hiện thì thực hiện tiếp theo các phần nội dung dưới đây

4.5.5 Lắp mạch và nạp chương trình điều khiển

Sử dụng các khối "Microcontroller Unit Slot", "Square Wave Generator",

"7 Segment Display" và "Power Supply" có sẵn trên mô hình thực hành vi điều

khiển để lắp ráp mạch theo thiết kế bên trên

 Bước 11: Kết nối các khối trên mô hình như Hình 4.6.5 để tạo

thành hệ thống mạch điều khiển như bên trên

o Tắt nguồn AC cấp cho mô hình thực hành

o Dùng dây bus 4 nối J64 (PORT1) ở khối vi điều khiển với J1 (SEL IN1) ở khối LED 7 đoạn (chú ý là ta chỉ nối 4 bit thấp của J64 với J1)

o Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J4 (7SEG IN MUL) ở khối giải mã

o Dùng dây bus 1 nối J33 (PULSE) ở khối tạo xung với J66 (PORT3 / FUNCTION) ở khối vi điều khiển (chú ý là ta chỉ nối bit 5 (chân T1) của J66 và J33 lại với nhau)

o Dùng dây bus 3 nối J113 (POWER) ở khối tạo xung và J110 (POWER) ở khối LED 7 đoạn với nguồn +5V ở khối nguồn

Trang 35

Hình 4.5.5: Sơ đồ kết nối mạch trên mô hình

Sử dụng phần mềm Flash Magic để thực hiện việc nạp chương trình cho vi

điều khiển P89V51RB2 trên mô hình thực hành

 Bước 12: Bật nguồn AC cấp cho mô hình thực hành

 Bước 13: Khởi động phần mềm Flash Magic

 Bước 14: Kiểm tra cấu hình phần mềm (loại vi điều khiển, cổng

COM, tốc độ truyền, chuẩn giao tiếp,

 Bước 15: Chọn tập tin chương trình điều khiển (tập tin mã máy đã

được tạo ra từ Bước 6): K1.HEX

 Bước 16: Nạp chương trình vào vi điều khiển

 Bước 17: Nhấn nút "Master Reset" ở khối "Microcontroller Unit

Slot" để chạy chương trình và quan sát trực tiếp kết quả trên mô hình thực hành

o Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh khắc phục các lỗi này Nguyên nhân phát sinh lỗi thường do việc lắp ráp phần cứng không chính xác hoặc các linh kiện bị hư hỏng, cần phải được kiểm tra lại Sau khi hoàn tất việc kiểm tra và hiệu chỉnh sai sót thì quay trở về thực hiện từ Bước 15

o Nếu không có lỗi xuất hiện thì hoàn tất bài thực hành

4.5.6 Bài tập thực hành

4.5.6.1 Bài tập mẫu

 Bài tập số 1:

Trang 36

Nội dung:

"Chương trình điều khiển đo tần số của xung (0000 – 9999, đơn vị là Hz) được đưa vào chân T1 của vi điều khiển và hiển thị tần số của xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 – LED4 được nối

với Port0, SEL IN1 được nối với Port1)"

Lưu đồ giải thuật:

Chương trình điều khiển:

;***************************************************

Trang 37

;CHUONG TRINH DIEU KHIEN TIMER/COUNTER DO TAN SO XUNG TAI CHAN T1

SETBTR0 ;CHO TIMER BAT DAU CHAY

MOVIE,#82H ;CHO PHEP NGAT TIMER0 HOAT DONG

MP2:

CLR TR1 ;DUNG COUNTER SAU 1S -> SO XUNG TRONG 1S = TAN SO XUNG

Trang 38

ACALL DIV16TO8 ;LAY R7,R6 CHIA CHO 10

PUSHB ;CAT SO HANG DON VI

MOVB,#10

PUSHB ;CAT SO HANG CHUC

MOVB,#10

DIV AB ;TIEP TUC CHIA CHO 10

PUSHB ;CAT SO HANG TRAM, ACC CHUA SO HANG NGAN

SWAP A ;DUA SO HANG NGAN LEN 4 BIT CAO

POP B ;LAY SO HANG TRAM TU STACK

ORL A,B ;KET HOP SO HANG NGAN VA SO HANG TRAM

MOVR7,A ;R7 = NGAN - TRAM

POP ACC ;LAY SO HANG CHUC TU STACK

SWAP A ;DUA SO HANG CHUC LEN 4 BIT CAO

POP B ;LAY SO HANG DON VI TU STACK

ORL A,B ;KET HOP SO HANG CHUC VA SO HANG DON

DIV16TO8: ;CTC CHIA SO BINARY 16 BIT CHO SO BINARY 8 BIT

PUSH 02H ;CAT THANH GHI R2

PUSHACC ;CAT THANH GHI A

MOVR2,#16 ;CHO PHEP DICH 16 LAN

DIVIDE:

XCH A,R6 ;DICH BIT 7 CUA R6 VAO

RLC A ;CARRY, BIT 0 CUA R6

XCH A,R6 ;BANG 0

XCH A,R7 ;DICH BIT CARRY VAO

RLC A ;BIT 0 CUA R7

RLC A ;DICH BIT 7 CUA R7 VAO A

CJNEA,B,NOT_EQUAL ;XEM SO BIT DA DICH >=

SJMP A_GREATER_EQ_B ;SO CHIA CHUA ?

Trang 39

XCH A,R6

ORL A,#1 ;THUONG SO = 1

XCH A,R6 ;CAT TRONG R6

BELOW:

DJNZR2,DIVIDE ;DICH TIEP DEN 16 LAN

XCH A,B ;SAU 16 LAN DICH TA DUOC B = SO DU

MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN

MOVA,R6 ;LAY SO BCD CAN GIAI MA

ANL A,#0FH ;XOA 4 BIT CAO

MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO

MOVA,R6 ;LAY SO BCD CAN GIAI MA

ANL A,#0F0H ;XOA 4 BIT THAP

SWAP A ;HOAN CHUYEN CAO - THAP

MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO

MOVA,R7 ;LAY SO BCD CAN GIAI MA

ANL A,#0FH ;XOA 4 BIT CAO

MOV 62H,A ;CAT BCD HANG TRAM VAO O NHO

MOVA,R7 ;LAY SO BCD CAN GIAI MA

ANL A,#0F0H ;XOA 4 BIT THAP

SWAP A ;HOAN CHUYEN CAO - THAP

MOV 63H,A ;CAT BCD HANG NGAN VAO O NHO

POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI

RET

Trang 40

CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)

MOVA,#0F7H ;MA QUET

MOVR0,#63H ;DIA CHI VUNG MA HIEN THI

DISP:

MOVP0,@R0 ;XUAT MA HIEN THI

MOVP1,A ;XUAT MA QUET

MOVP1,#0FFH ;CHONG LEM

DEC R0 ;LAY MA HIEN THI KE TIEP

RR A ;CHUYEN SANG LED KE TIEP

CJNER0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA

POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI

Ngày đăng: 12/02/2020, 14:51

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

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