Tải bản đầy đủ (.docx) (19 trang)

báo cáo thực hành vi xử lý trong điều khiển

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.9 MB, 19 trang )

BÀI 1
THIẾT KẾ VÀ MÔ PHỎNG MẠCH ĐIỂN TỬ BẰNG PHẦN MỀM PROTEUS
- SỬ DỤNG PHẦN MỀM KEIL C LẬP TRÌNH VI ĐIỀU KHIỂN
File mô phỏng

BÀI 2
TẬP LỆNH CỦA AT89C51 VÀ PORT XUẤT NHẬP
I. Tóm tắt lý thuyết
1. Các Port xuất nhập của AT89C51
AT89C51 có 4 Port xuất nhập tương ứng P0, P1, P2, P3 như hình H.2.1.


Bảng 2.1. Chức năng của các chân trên Port 3

- 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 ngoài
Port0 như hình H.2.2.
- 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
(Hình H.2.1 và Bảng 2.1)
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
II. Nội dung thực hành:
Bài2.1: Cấu hình port P1 là Port đầu vào, port P0 là Port đầu ra. Khi ấn Button (P1.0) thì gửi ra
P0 giá trị bằng 45.


Khi ấn Button 2 (P1.1) thì gửi ra một xung từ cao xuống thấp lên chân P0.0.
org 0000H
main:
jnb p1.0,nhan1
jnb p1.1,nhan2
sjmp main
nhan1: mov p0,#45
ret
nhan2:
clr p0.0
ret
end


Khi ấn buton1

Khi ấn button2


Bài 2.2 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.
org 0000H
main:
clr p0.0
call delay
setb p0.0
call delay
jmp main
delay:mov r5,#20
d1:mov r6,#20
d2: mov r7,#255

djnz r6,d2
djnz r5,d1
ret
end
Tín hiệu xuất ra chân p0.0


Bài 2.3 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.
org 0000H
mov a,#01010101b
main:
mov p0,a
delay: mov r0,#255
agin: mov r1,#255
here: nop
djnz r1,here
djnz r0,agin
rl a
sjmp main
end
Tín hiệu xuất ra mạch mô phỏng


Bài 2.4 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.
org 0000H
main:
mov a,1f

mov p0,a
rl a
call delay
call delay
sjmp main
delay: mov r0,#250
loop1: mov r1,#250
loop2: djnz r1,loop2
djnz r0,loop1
ret
end.
Tín hiệu xuất ra mạch mô phỏ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 .
Đố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
á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:

Đố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:


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:


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.
Phương pháp quét 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ẽ su
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ạ
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ực hành:
Bài 3.1 Chương trình đếm số xung được đưa vào chân P1.0 và hiển thị lên Led đoạn.
Khi đếm đến 9 thì reset về 0. Quá trình được lặp đi lặp lại.
org 0000h
main:
mov P2,#0C0h
call delay
mov p2,#0F9h
call delay
mov p2,#0A4h
call delay
mov p2,#0B0h
call delay
mov p2,#99h
call delay
mov p2,#92h
call delay
mov p2,#82h



call delay
mov p2,#0F8h
call delay
mov p2,#80h
call delay
mov p2,#90h
call delay
jmp main
delay:
mov r0,#200
gain: mov r1,#200
loop: djnz r1,loop
djnz r0,gain
ret
end

Tín hiệu xuất ra mạch mô phỏng


Bài3.2 Chương trình đếm từ 0-99
org 0000h
main:
mov dptr,#maled
mov r0,#00
lap:
call ht
call delay
call delay
call delay

call delay
call delay
call delay
inc r0
cjne r0,#100,lap
jmp main
ht:
quay:
mov a,r0
mov b,#10
div ab
movc a,@a+dptr
mov p2,a
setb p1.1
setb p1.1
call delay
clr p1.1
mov a,b
movc a,@a+dptr
mov p2,a
setb p1.0
clr p1.0
ret
maled: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h
delay:
mov tmod,#01h
mov th0,#0b1h
mov tl0,#0e0h
setb tr0
here:

jnb tf0,here
clr tr0
clr tf0
ret
end.
Tín hiệu xuất ra


Bài3 chương trình hien thi so 56
org 0000h
main:
setb p1.1
mov p2,#82h
call delay
clr p1.1
setb p1.0
mov p2,#92h
call delay
clr p1.0
sjmp main
delay:
mov tmod,#01h
mov th0,#0b1h


Tín hiệu xuất ra.

mov tl0,#0e0h
setb tr0
here:

jnb tf0,here
clr tr0
clr tf0
ret
end.

BÀI 4
TIMER /COUNTER – NGẮT

I.Tóm tắt lý thuyết
1. Timer/Counter:
a. Thanh ghi định thời
- 8051 có hai bộ điều khiển định thời là Timer 0 và Timer 1.
- Mỗi Timer có một thanh ghi định thời 16bit, và được chia thành hai thanh ghi 8bit: Timer
high (TH) và Timer Low (TL).
b.Thanh ghi điều khiển TCON:
- TFx: Cờ tràn Timerx. Được set và clear bởi phần cứng
Dùng khi ngắt Timer 0,1.
- TRx: bit điều khiển Timerx: TRx=0  dừng Timerx
TRx=1  bật Timerx


- IEx: Ngắt ngoài 0,1
- ITx:Ngắt nối tiếp 0,1
c.Thanh ghi chế độ định thời TMOD:
Để thiết lập chế độ làm việc của các Timer ta sử dụng thanh ghi TMOD 8bit. Cả Timer
0 và Timer 1 đều dùng chung thanh ghi TMOD để điều khiển, trong đó: 4bit thấp thiết lập chế
độ điều khiển cho Timer 0 và 4bit cao thiết lập chế độ điều khiển cho Timer 1.
-Gate: Khi Gate =1 thì Timer/Counter chỉ làm việc khi cả TRx =1 và INTx=1.
Khi Gate = 0 thì Timer/Counter làm việc được khi TRx=1.

- C/T: Bit lựa chọn chế độ đếm (counter) hay định thời (Timer).
C/T = 0: chế độ Timer
C/T=1: chế độ định thời.
- M0,M1: Lựa chọn chế độ định thời.
2. Ngắt:
89C51 có 5 nguồn ngắt: 2 ngắt ngoài, 2 ngắt timer và ngắt nối tiếp.
Thanh ghi điều khiển ngắt IE:
- EA: =1 cho phép ngắt toàn cục
=0 không cho phép ngắt
- ES: cho phép ngắt nối tiếp
- ET1, ET0: cho phép ngắt Timer 1, Timer0.
- EX1, EX0: cho phép ngắt ngoài 1, ngắt ngoài 0.
Muốn cho phép một ngắt nào xảy ra phải set 2 bit: Bit cho phép ngắt toàn cục và bit cho
phép từng ngắt riêng rẽ.
Dưới đây là các vector ngắt và vị trí ngắt tương ứng:
II. Nội dung thực hành:

Bài4.1 Chương trình đếm từ 0-9 dùng Timer/counter.
org 0000h
main:
mov P2,#0C0h
call delay
mov p2,#0F9h
call delay
mov p2,#0A4h
call delay
mov p2,#0B0h
call delay
mov p2,#99h



call delay
mov p2,#92h
call delay
mov p2,#82h
call delay
mov p2,#0F8h
call delay
mov p2,#80h
call delay
mov p2,#90h
call delay
jmp main
delay:
mov tmod,#01h
mov th0,#03ch
mov tl0,#0b0h
setb tr0
here: jnb tf0,here
clr tr0
clr tf0
ret
end .
Tín hiệu xuât ra

Bài4.2 Chương trình tạo một xung vuông có tần số 4Khz trên chân P3.7 dùng ngắt Timer .
org 0000h

main:
setb p3.7

call delay
clr p3.7
call delay
sjmp main


delay:
mov tmod,01h
mov th0,#0f
mov tl0,#06h
setb tr0
here:
jnb tf0,here
clr tr0
clr tf0
ret
end
Bài4.3 Chương trình tạo đàn điện tử với các phím tạo ra âm thanh có tần số như sau:

Các phím tương ứng từ button 1  Button 8.
org 0000h
main:
jnb p1.0,nhan1
jnb p1.1,nhan2
jnb p1.2,nhan3
jnb p1.3,nhan4
jnb p1.4,nhan5
jnb p1.5,nhan6
jnb p1.6,nhan7
jnb p1.7,nhan8

sjmp main
nhan1:setb p3.7
call delay1
clr p3.7
call delay1
sjmp main
nhan2: setb p3.7
call delay2
clr p3.7
call delay2
sjmp main
nhan3: setb p3.7
call delay3
clr p3.7
call delay3
sjmp main
nhan4: setb p3.7
call delay4
clr p3.7
call delay4
sjmp main


nhan5: setb p3.7
call delay5
clr p3.7
call delay5
sjmp main
nhan6: setb p3.7
call delay6

clr p3.7
call delay6
sjmp main
nhan7: setb p3.7
call delay7
clr p3.7
call delay7
sjmp main
nhan8: setb p3.7
call delay8
clr p3.7
call delay8
sjmp main
delay1:
mov r1,#191
loop1:
call delaydv
djnz r1 , loop1
ret
delay2:
mov r1,#170
loop2:
call delaydv
djnz r1 , loop2
ret
delay3:
mov r1,#152
loop3:
call delaydv
djnz r1 , loop3

ret
delay4:
mov r1,#143
loop4:
call delaydv
djnz r1 , loop4
ret
delay5:
mov r1,#128
loop5:
call delaydv


djnz r1 , loop5
ret
delay6:
mov r1,#114
loop6:
call delaydv
djnz r1 , loop6
ret
delay7:
mov r1,#101
loop7:
call delaydv
djnz r1 , loop7
ret
delay8:
mov r1,#95
loop8:

call delaydv
djnz r1 , loop8
ret
delaydv:
mov TMOD,#02h
Mov TH0 , #246
setb TR0
loop9: JNB TF0 ,loop9
clr TR0
clr TF0
ret
end.
Tín hiệu xuất ra là dạng âm thanh. Đô rể mi pha son la si đố



×