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

tài liệu hướng dẫn thí nghiệm kỹ thuật vi xử lý

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.34 MB, 21 trang )

TR

NG Đ I H C NỌNG NGHI P HÀ N I
KHOA C
B

MỌN T

ĐI N
Đ NG HịA

*********o O o*********

TÀI LI U H

NG DẪN THệ NGHI M

KỸ THU T VI X

HÀ N I ậ 2018

Lụ


BÀI 1
THI T K VÀ MỌ PHỎNG M CH ĐI N T
-S

B NG PH N M M PROTEUS

D NG PH N M M KEIL C L P TRÌNH VI ĐI U KHI N 89C51



I. M c đích
Bài này trang bị cho sinh viên một số phần mềm thiết kế, mô phỏng và code trong lĩnh
vực vi xử lý, vi điều khiển. Hai phần mềm được giới thiệu là Proteus và Keil C. Vi điều khiển
được sử dụng trong các nội dung thực hành là 89C51.
II. Tóm t t lỦ thuy t
2.2. S d ng ph n m m Keil C l p trình vi đi u khi n
Bước 1: Khởi động phần mềm Keil C, giao diện như sau:

Hình 1.7
Bước 2: Mở một New project:


Hình 1.8
Đặt tên và lưu Project mới:

Bước 3: Lựa chọn vi điều khiển sử dụng:
Ví dụ chọn vi điều khiển AT89C51 của hãng Atmel


B

c 4: Mở New File


Save New file với đuôi .c hoặc .s/.scr/.a tùy vào ngơn ngữ sử dụng để lập trình là C hay
Assembly.


Add file vào project đang thực hiện:


Chọn loại file nguồn (đuôi .c nếu viết bằng C và đuôi .s/.src/.a nếu viết bằng Assembly) 
click vào file muốn Add  click button Add.

Newfile sẽ xuất hiện trong project và có thể viết chương trình.


Bước 5: Viết chương trình.
Bước 6: Biên dịch sang File .hex.
Các File nguồn được viết bằng ngôn ngữ C hay Assembly đều phải biên dịch sang file có
đi .hex thì vi xử lý mới hiểu và thực thi được chương trình. Q trình đó thực hiện như
sau:
-

Chọn Option for Target

 cửa sổ Option for Target xuất hiện  chọn mục Output  click vào mục Create hex file

như hinh  OK.


 chọn Build target để biên dịch chương trình.
Khi chương trình khơng có lỗi File .hex được tạo và lưu tại thư mục chứa project đang
thực hiện.

Trong trường hợp chương trình có lỗi, trình biên dịch sẽ báo lỗi  Quay lại bước 5 để

tìm và sửa lỗi  Biên dịch lại.



III. N i dung th c hƠnh:
1. Sử dụng phần mềm Proteus thiết kế sơ đồ mơ phỏng như hình sau:

2. Sử dụng phần mềm KeilC tạo project mới, sau đó viết lại đoạn chương trình sau, biên
dịch và nạp vào vi điều khiển trong file mô phỏng trên:
Đoạn chương trình 1:
ORG 0000h
Main:
JNB P1.0,ON
JB P1.0, TAT
ON:
CLR P0.0
CLR P0.1
Ret
TAT: SETB P0.0
SETB P0.1
Ret
end Main
Đoạn chương trình 2:Tạo xung nhấp nháy trên LED D1
ORG 0000h
MOV P0,#0FFh
Repeat: CLR P0.0
MOV R0,#200
MOV R3,#200
LCALL DELAY
MOV P3,R0


SETB P0.0
LCALL DELAY

SJMP Repeat
DELAY:MOV R0,#200
LOOP: DJNZ R0, LOOP
RET
end


BÀI TH C HÀNH S

2

T P L NH C A AT89C51 VÀ PORT XU T NH P
I. Tóm t t lỦ thuy t
2.1. Gi i thi u vi đi u khi n 89C51
a. Đặc đi m chung
- 4kByte bộ nhớ FLASH ROM bên trong dùng để lưu chương trình điều khiển. Độ bền: 1000
chu kỳ viết/ xóa.
- 128 bytes RAM nội.
- Có 32 đường xuất nhập 8 bit.
- Có 2 Timer/Counter 16 bit
- Có 6 nguồn ngắt
b. C u trúc


c. Các Port xu t/ nh p c a vi đi u khi n 89C51:
Port 0
Có 2 chức năng:
- Khi chỉ dùng bộ
nhớ bên trong: P0
làm đường xuất

nhập.
- Khi dùng bộ nhớ
bên ngoài: P0 làm
bus địa chỉ và dữ liệu
thấp (AD7 – AD0).

Port 1
Chỉ có một
chức năng làm
các đường xuất
nhập

Port 3
Có nhiều chức
năng
(Xem bảng 2.1)

Sơ đồ chân của AT89C51

Port 2
Có 2 chức năng:
-Khi chỉ dùng bộ nhớ
bên trong: P0 làm
đường xuất nhập.
-Khi dùng bộ nhớ
bên ngoài: P0 làm
bus địa chỉ và dữ liệu
cao (AD15 – AD8).

- Port 0 khi được dùng làm Port xuất nhập cần phải sử dụng điện trở kéo lên bên ngồi

Port0 như hình H.2.2.

Hình H.2.2. Điện trở kéo lên của Port 0
- Port P1, P2, P3 có thể cấu hình làm port xuất nhập mà khơng cần dùng điện trở kéo lên do
bên trong đã tích hợp sẵn điện trở.
- Port P0, P2, P3 ngoài chức năng làm Port xuất nhập cịn có thêm các chức năng khác như
dưới đây.


Chức năng các chân của PORT 3:
• PORT 3 có thể giữ vai trị Port xuất nhập thơng thường.
• Các chức năng khác:

Chức năng các chân khác của vi điều khiển:



Chân RST(Chân 9):
- Reset vi điều khiển khi điện áp ở mức cao.

- Quá trình Reset chỉ thực hiện được khi điện áp mức cao được duy trì trong hai chu kỳ
máy.
- Sơ đồ nối chân Reset:



Chân XTAL1 và XTAL2 : được dùng để tạo tần số làm việc cho vi điều khiển.

Có 2 phương pháp tạo tần số làm việc cho vi điều khiển:


Phương pháp 1: Dùng bộ tạo dao động tích hợp bên trong vi điều khiển  Cần nối thêm dao
động thạch anh hoặc bộ cộng hưởng sứ cùng các tụ khác như hình.
Chú ý:
+ Tụ thạch anh được chọn từ 3-24MHz
+ Các tụ C1, C2 được chọn như sau: C1, C2 = 30 pF±10pF khi dùng dao động thạch anh.
C1,C2 = 40pF±10pF khi dùng bộ cộng hưởng sứ.
Phương pháp 2: Dùng bộ tạo dao động bên ngồi: Tín hiệu dao động được đưa vào chân
XTAL1; chân XTAL2 không sử dụng.


 Chân Vcc (40) được nối lên nguồn 5V và chân GND (20) nối mass.
 Chân
:
- Chức năng là tín hiệu ngõ ra cho phép đọc bộ nhớ chương trình mở rộng thường nối với
chân
của bộ nhớ EPROM bên ngoài cho phép đọc mã lệnh.
- Tích cực ở mức thấp.
- Chỉ dùng khi có sử dụng thêm bộ nhớ bên ngồi, nếu khơng có giao tiếp với bộ nhớ ngồi
thì bỏ trống .
: Xác định chương trình được vi điều khiển thực thi. Cụ thể:
 Chân
- Khi được nối với mức logic 1(+5V): vi điều khiển thực thi chương trình trong bộ nhớ
nội.
- Khi được nối với mức logic 0 (0V) : Vi điều khiển thực thi chương trình trong bộ nhớ
ngoại
 ALE/PROG (Address Latch Enable/Program):
- Chốt byte thấp của Bus địa chỉ khi thực hiện truy xuất vào bộ nhớ ngoài.
- Cấp xung clock cho các phần cứng khác của hệ thống( =1/6 xung của dao động thạch
anh)
- Nhận xung từ bên ngồi trong chế độ lập trình song song lưu vào bộ nhớ Flash ROM.

d. Tổ chức b nh :
AT89C51 có bộ nhớ nội bên trong (Internal memory) và có thể giao tiếp với bộ nhớ bên
ngồi nếu bộ nhớ bên trong không đủ khả năng lưu giữ chương trình.
Bộ nhớ nội của AT89C51có kiến trúc kiểu Harvard gồm:
- Một bộ nhớ chương trình (Flash Rom): có dung lượng 4Kbyte cho phép xóa và lập
trình lại bằng xung điện.
- Một bộ nhớ dữ liệu (RAM) có dung lượng 128 byte.
Bộ nhớ RAM nội
Gồm 128 byte được chia thành 3 vùng:
- Vùng các bank thanh ghi có địa chỉ từ 00H đến 1FH.
Được chia thành 4 bank: Register bank 0  register Bank 3. Mỗi bank thanh ghi gồm 8 thanh
ghi: Ký hiệu từ R0  R7.
Chức năng: Nếu trong hệ thống có nhiều chương trình và mỗi chương trình phải sử dụng các
thanh ghi để xử lý dữ liệu thì mỗi một bank có thể được sử dụng để lưu trữ dữ liệu của một
chương trình nào đó  dữ liệu của chương trình này khơng bị mất đi khi dữ liệu chương trình
khác đang được xử lý.
Truy xuất đến vùng nhớ bank thanh ghi:
+ Truy xuất qua địa chỉ của mỗi thanh ghi: Truy xuất được ngay cả khi bank đã được chọn
hoặc không được chọn.
+ Chọn bank sử dụng và truy xuất qua các thanh ghi R0  R7.
Bank được chọn do bit RS0, RS1 trên thanh ghi trạng thái chương trình PSW qui định.


RS1 RS0
0
0
0
1
1
0

1
1

Bank
0
1
2
3

- RAM truy xuất từng bit có địa chỉ từ 20H đến 2FH
Kích thước: Gồm 16byte bộ nhớ tương ứng với 128 bit
Các byte ơ nhớ có địa chỉ từ 20H  2FH
Các bit ô nhớ được định địa chỉ từ 0078
Truy xuất: Cho phép truy xuất từng bit và truy xuất từng byte.
Chức năng: Dùng lưu trữ những dữ liệu phải xử lý bit
- Vùng RAM đa dụng: Gồm 80 byte có địa chỉ từ 30H đến 7FH, cho phép truy xuất trực tiếp,
gián tiếp. Mọi địa chỉ trong vùng RAM đa dụng đều có thể truy xuất tự do dùng kiểu định địa
chỉ trực tiếp hoặc gián tiếp.
e. Các thanh ghi chức năng đặc bi t

2. T p l nh c a AT89C51
Lệnh của AT89C51 có độ dài 8bit, tương ứng có 256
câu lệnh, được chia thành các nhóm cơ bản như sau:






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

Nhóm lệnh số học
Nhóm lệnh logic
Nhóm lệnh nhảy
Nhóm lệnh xử lý bit


Chi tiết các lệnh tham khảo trong Phụ lục 1
II. N i dung th c hƠnh:
Sử dụng file sodomophong đã có ở bài 1. Hãy thực hiện các cơng việc sau:
1. Sử dụng lệnh nhảy và lặp viết chương trình để led ở chân P0.0 nhấp nháy.
2. Viết chương trình để các Led trên Port 0 sáng xen kẽ nhau: led 1,3,5,7 sáng – 2,4,6,8 tắt
và ngược lại.
Quá trình được lặp đi lặp lại.
3. Viết chương trình để các led trên Port 0 lần lượt sáng từ 1-8. Quá trình trên lặp lại
không ngừng.


BÀI 3
GIAO TI P VI ĐI U KHI N V I LED7 THANH
I.Tóm t t lỦ thuy t
1. Gi i thi u v Led 7 thanh

Hình 3.1. Led 7 đoạn
Led 7 thanh gồm 2 loại: loại có anot chung và loại có catot chung, thực chất là 7 đèn led
được nối với nhau như sau:

a) Loại nối anot chung

b) Loại nối catot chung


Hình 3.2. Phân loại Led 7 đoạn


Đ i v i lo i có anot chung, chân COM phải được đưa lên mức logic 1 và muốn led nào
sáng phải đặt các chân tương ứng từ a-f xuống mức thấp.
Ví dụ: Muốn hiển thị số 5 bằng Led 7 đoạn có anot chung, các led a – f – g – c – d phải sáng.
Để thực hiện được điều này thì các chân a – f – g – c – d phải được đặt ở mức logic 0.
Do đó ta có mã hiển thị số 5 như sau:
S

dp

g

f

e

d

c

b

a

Mã hex

5


1

0

0

1

0

0

1

0

92h

Tương tự như vậy đối với các số khác.
Đ i v i Led7 thanh có catot chung ta làm ngược lại, chân COM được đặt ở mức 0 và
muốn một led nào đó sáng phải đặt chân tương ứng với Led đó lên mức cao.
Ví dụ muốn hiển thị số 6 bằng led 7 thanh có catot chung, ta phải đặt các chân a – f – g – c – de lên mức cao. Tương ứng có mã hiển thị như sau:
S

dp

g

f


e

d

c

b

a

Mã hex

6

0

1

1

1

1

1

0

1


7Dh

Bảng 3.1. Bảng mã hiển thị của Led 7 thanh có anot chung:


Bảng 3.2. Bảng mã hiển thị của Led 7 thanh có catot chung:

2. Hi n th nhi u Led 7 đo n:
Trong các ứng dụng thực tế thường phải sử dụng nhiều Led 7 đoạn để hiển thị số liệu,
nhưng mỗi Led 7 đoạn địi hỏi phải có 8 đường dữ liệu, trong khi số port xuất nhập của vi xử
lý có hạn. Để tiết kiệm đường truyền dữ liệu của vi xử lý người ta thường sử dụng một Port
truyền dữ liệu chung cho tất cả các led (Hình 3.3, Hình 3.4). Điều này làm xuất hiện vấn đề là
làm thế nào để gửi được chính xác dữ liệu cần hiển thị đến từng led. Có hai phương pháp phổ
biến hiện nay đang được sử dụng là phương pháp quét Led và phương pháp chốt led.
a. Ph

ng pháp quét Led:
Phương pháp này dựa trên hiện tượng lưu ảnh trên võng mạc, tức là nếu một hình ảnh

xuất hiện tối thiểu 24 lần/s sẽ tạo cho người quan sát cảm giác là một hình ảnh liên tục.
Khi nhiều led cùng dùng chung một đường dữ liệu như Hình 3.3, dữ liệu từ vi xử lý sẽ
đồng thời được gửi đến tất cả các Led, do đó ta khơng thể để các Led sáng cùng một lúc. Tại
mỗi thời điểm chỉ có duy nhất một led sáng, các led cịn lại sẽ tắt. Sau thời gian duy trì, Led đó
sẽ tắt và Led tiếp theo sẽ sáng. Do hiện tượng lưu ảnh trên mắt nên người quan sát sẽ nhìn thấy
các led sẽ hiển thị đồng thời với các số khác nhau. Quá trình quét LED được hiển thị như sau:
Bật led sáng – Hiển thị dữ liệu  Trễ  Tắt Led xóa dữ liệu.


Việc lựa chọn Led nào sáng/tắt được thực hiện bằng cách đóng mở các Tranzitor (xem
Hình 3.3)

Thơng thường chọn tần số sáng/tối cho một led là 25Hz (Tức là led hiển thị 25 lần/s)

Hình 3.3. Phương pháp qt Led
Do đó có thể tính được thời gian duy trì cho từng led sáng như sau:
Giả sử có n Led cần hiển thị.
-Tần số cho một chu kỳ quét n led = 25hz X n
-Thời gian duy trì cho một lần sáng của từng led = 1/Tần số chu kỳ quét led.
Phương pháp này tiện dụng ở phần cứng lẫn phần mềm, tuy nhiên nếu số lượng led quá
nhiều thì thời gian sáng trung bình dành cho mỗi led giảm đi. Điều này kéo theo các led sẽ suy
giảm độ sáng. Mặt khác phải tích hợp thêm IC giải mã, nhiều việc phát sinh cho thiết kế mạch
lẫn lập trình. Phương pháp này ứng dụng cho các hiển thị thơng tin ít, khoảng 20 led bảy đoạn
trở xuống nhưng thông tin nhiều như bảng tỉ giá ngoại tệ cần vài trăm led thì khơng được.
b. Ph

ng pháp ch t Led:
Vẫn chia sẻ bus dữ liệu cho tất cả các led như phương pháp quét , đồng thời các led đều

có chân A (hoặc C) chung nối sẵn lên nguồn (hoặc đất) nghĩa là các Led lúc nào cũng sẵn
sàng hiển thị. Mỗi led bảy đoạn kết hợp với 1 IC chốt, vi xử lý điều khiển chốt dữ liệu cho
chính xác. Dữ liệu cho từng led sẽ lần lượt đưa lên Bus, ứng với dữ liệu của led nào thì IC
chốt của led đó sẽ chốt dữ liệu lại, động tác này do vi xử lý thực hiện. Sau một lượt dữ liệu sẽ
xuất hiện đầy đủ trên tất cả các led bảy đoạn, kể từ đó vi xử lý khơng cần mất công hiển thị


nữa, các led sẽ sáng liên tục chứ không như phương pháp quét. Như vậy hình ảnh của phương
pháp chốt sáng hơn và không nhấp nháy.
Hạn chế của phương pháp này là tốn nhiều IC chốt, mạch điều khiển chốt phức tạp (có thể
dùng IC giải mã 74138, 74154 như phương pháp quét)

II. N i dung thí nghi m

1. Hãy viết chương trình đếm số xung được đưa vào chân P1.0 và hiển thị lên Led 7 đoạn.
Khi đếm đến 9 thì reset về 0. Quá trình được lặp đi lặp lại.
2. Vẽ sơ đồ mơ phỏng hình 3.3 và thực hiện các cơng việc sau:
-

Viết chương trình đếm từ 0-99

-

Viết chương trình giảm từ 99-0.

3. Vẽ sơ đồ mơ phỏng hình 3.4 và thực hiện các cơng việc tương tự ở câu 2.



×