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

BÀI BÁO CÁO THỰC TẬP-ĐO KHOẢNG THỜI GIAN GIỮA HAI SỰ KIỆN với vi điều khiển 8051

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 (497.14 KB, 22 trang )

LỜI NÓI
ĐẦU


Bộ Vi xử lí là hạt nhân của hệ VXL,nó thực hiện các phép tính logic hoặc số
học để điều khiển toàn bộ hoạt động của hệ:
- Đọc các lệnh từ ô nhớ,giải mã lệnh và thực hiện lệnh
- Trao đổi số liệu với bộ nhớ và các thiết bị vào ra
- Có thể đƣợc điều khiển từ 1 số tín hiệu bên ngoài đẻ thực hiện 1 số
chức năng đặc biệt nhƣ thâm nhập bộ nhớ,ngắt và treo
Một hệ VXL bao gồm 2 phần:
- Phần cứng
- Phần mềm
*) Phần cứng là toàn bộ các kết cấu vật lí cấu thành nên hệ nhƣ ROM, RAM,
P…

*) Phần mềm:Phần logic bao gòm hệ điều hành va chƣơng trình ứng dụng(do
ngƣời sử dụng viết)chƣơng trình đƣợc lƣu trữ trong bộ nhớ bằng mã nhị phân
của máy tính.Một chƣơng trình viết bằng ngôn ngữ máy là 1 chuỗi các byte nhị
phân biểu diễn các lệnh mã máy tính thực hiện đƣợc.Hợp ngữ thay thế các mã
nhị phân của ngôn ngữ máy bằng các mã gợi nhớ giúp ta dễ nhớ hơn và dễ lập
trình hơn.
BTL bao gồm:
CHƢƠNG 1: Giới thiệu họ vi điều khiển 8051
1.1. Cấu trúc phần cứng.
1.2. Sơ đồ chân và chức năng từng chân.

CHƢƠNG 2: Ứng dụng đo khoảng thời gian giữa 2 xung ( f < 1000 Hz )
2.1. Mạch tạo xung sử dụng time 555
2.2. Giới thiệu về LCD.
2.3. Lƣu đồ thuật toán


2.4. Mạch đo và chƣơng trình hợp ngữ.


Với BTL em nhận đƣợc có gì sai sót rất mong đƣợc sự chỉ bảo của Thầy để
BTL của em đƣợc thành công, em xin chân thành cảm ơn !

CHƢƠNG 1: GIỚI THIỆU HỌ VI ĐIỀU KHIỂN 8051


1.1. Cấu trúc phần cứng.
Đặc điểm và chức năng hoạt động của các IC họ MSC-51 hoàn toàn tƣơng
tự nhƣ nhau. Ở đây giới thiệu IC8951 là một họ IC vi điều khiển do hãng Intel
của Mỹ sản xuất. Chúng có các đặc điểm chung nhƣ sau:
Các đặc điểm của 8951 đƣợc tóm tắt nhƣ sau :
 8 KB EPROM bên trong.
 128 Byte RAM nội.
 4 Port xuất /nhập I/O 8 bit.
 Giao tiếp nối tiếp.
 64 KB vùng nhớ mã ngoài
 64 KB vùng nhớ dữ liệu ngoại.
 Xử lí Boolean (hoạt động trên bit đơn).
 210 vị trí nhớ có thể định vị bit.
 4 s cho hoạt động nhân hoặc chia.
Sơ đồ khối của 8951:


1.2. Sơ đồ chân và chức năng từng chân.
1.2.1 Sơ đồ chân 8951:


















Sơ đồ chân IC
89
C
51


1.2.2. Chức năng các chân của 8951:
- 8951 có tất cả 40 chân có chức năng nhƣ các đƣờng xuất nhập. Trong đó
có 24 chân có tác dụng kép (có nghĩa 1 chân có 2 chức năng), mỗi đƣờng có thể
hoạt động nhƣ đƣờng xuất nhập hoặc nhƣ đƣờng điều khiển hoặc là thành phần
của các bus dữ liệu và bus địa chỉ.
a.
Các Port:

Port 0 :


- Port 0 là port có 2 chức năng ở các chân 32 – 39 của 8951.


Trong các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng nhƣ
các đƣờng IO. Đối với các thiết kế cỡ lớn có bộ nhớ mở rộng, nó đƣợc kết
hợp giữa bus địa chỉ và bus dữ liệu.
Port 1:

- Port 1 là port IO trên các chân 1-8. Các chân đƣợc ký hiệu P1.0, P1.1,

P1.2, … có thể dùng cho giao tiếp với các thiết bị ngoài nếu cần. Port
1không có chức năng khác, vì vậy chúng chỉ đƣợc dùng cho giao tiếp với
các thiết bị bên ngoài.
Port 2 :

- Port 2 là 1 port có tác dụng kép trên các chân 21 - 28 đƣợc dùng nhƣ các

đƣờng xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết bị dùng bộ
nhớ mở rộng.
Port 3:

- Port 3 là port có tác dụng kép trên các chân 10 - 17. Các chân của
port

này có nhiều chức năng, các công dụng chuyển đổi có liên hệ với các đặc
tính đặc biệt của 8951 nhƣ ở bảng sau:














b. Các ngõ tín hiệu điều khiển :
Ngõ tín hiệu PSEN (Program store enable):

- PSEN là tín hiệu ngõ ra ở chân 29 có tác dụng cho phép đọc bộ nhớ

chƣơng trình mở rộng thƣờng đƣợc nói đến chân 0E\ (output enable) của Eprom
cho phép đọc các byte mã lệnh.
- PSEN ở mức thấp trong thời gian Microcontroller 8951 lấy lệnh. Các mã
lệnh của chƣơng trình đƣợc đọc từ Eprom qua bus dữ liệu và đƣợc chốt vào
thanh ghi lệnh bên trong 8951 để giải mã lệnh. Khi 8951 thi hành chƣơng trình
trong ROM nội PSEN sẽ ở mức logic 1.
Ngõ tín hiệu điều khiển ALE (Address Latch Enable ) :

- Khi 8951 truy xuất bộ nhớ bên ngoài, port 0 có chức năng là bus địa chỉ

bus dữ liệu do đó phải tách các đƣờng dữ liệu và địa chỉ. Tín hiệu ra ALE ở
chân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp các đƣờng địa chỉ và dữ
liệu khi kết nối chúng với IC chốt.

- Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai

trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động. Các xung tín hiệu ALE có
tốc độ bằng 1/6 lần tần số dao động trên chip và có thể đƣợc dùng làm tín hiệu
clock cho các phần khác của hệ thống. Chân ALE đƣợc dùng làm ngõ vào xung
lập trình cho Eprom trong 8951.
Ngõ tín hiệu EA\(External Access):

- Tín hiệu vào EA\ ở chân 31 thƣờng đƣợc mắc lên mức 1 hoặc mức 0. Nếu

mức 1, 8951thi hành chƣơng trình từ ROM nội trong khoảng địa chỉ thấp
8 Kbyte. Nếu ở mức 0, 8951 sẽ thi hành chƣơng trình từ bộ nhớ mở rộng.
Chân EA\ đƣợc lấy làm chân cấp nguồn 21V khi lập trình cho Eprom trong
8951.
Ngõ tín hiệu RST (Reset) :





-Ngõ vào RST ở chân 9 là ngõ vào Reset của 8951. Khi ngõ vào tín hiệu
này
đƣa lên cao ít nhất là 2 chu kỳ máy, các thanh ghi bên trong đƣợc nạp
những giá trị thích hợp để khởi động hệ thống. Khi cấp điện mạch tự động
Reset.
Các ngõ vào bộ dao động X1, X2:

- Bộ dao động đƣợc tích hợp bên trong 8951, khi sử dụng 8951 ngƣời thiết kế

chỉ cần kết nối thêm thạch anh và các tụ nhƣ hình vẽ trong sơ đồ.Tần số thạch
anh thƣờng sử dụng cho 8951 là 12Mhz.
Chân 40 (Vcc) đƣợc nối lên nguồn 5V.






CHƢƠNG 2: ỨNG DỤNG ĐO KHOẢNG THỜI GIAN GIỮA
2 XUNG ( F < 1000
HZ
)



2.1. Mạch tạo xung dùng Time 555:



2.2. Giới thiệu về LCD.
2.2.1. Hoạt động của LCD:
Trong những năm gần đây LCD đang ngày càng đƣợc sử dụng rộng rãi thay
thế dần cho các đèn LED (các đèn LED 7 đoạn hay nhiều đoạn). Đó là vì các
nguyên nhân sau:
 Các LCD có giá thành hạ.

 Khả năng hiển thị các số, các ký tự và đồ hoạ tốt hơn nhiều so với
các
đèn LED (vì các đèn LED chỉ hiển thị đƣợc các số và một số ký tự).


 Nhờ kết hợp một bộ điều khiển làm tƣơi vào LCD làm giải phóng
cho


CPU công việc làm tƣơi LCD. Trong khi đèn LED phải đƣợc làm tƣơi
bằng CPU (hoặc bằng cách nào đó) để duy trì việc hiển thị dữ liệu.
 Dễ dàng lập trình cho các ký tự và đồ hoạ.


2.2.2 Mô tả các chân của LCD:
LCD đƣợc nói trong mục này có 14 chân, chức năng của các chân đƣợc cho
trong bảng. Vị trí của các chân đƣợc mô tả trên hình vẽ cho nhiều LCD
khác nhau.
1. Chân V
CC
, V
SS
và V
EE
: Các chân V
CC
,V
SS
và V
EE
: Cấp dƣơng
nguồn - 5v và đất tƣơng ứng thì V
EE
đƣợc dùng để điều khiển độ tƣơng phản
của LCD.
2. Chân chọn thanh ghi RS (Register Select).Có hai thanh ghi rất quan
trọng bên trong LCD, chân RS đƣợc dùng để chọn các thanh ghi này nhƣ sau:
Nếu RS = 0 thì thanh ghi mà lệnh đƣợc chọn để cho phép ngƣời dùng gửi một

lệnh chẳng hạn nhƣ xoá màn hình, đƣa con trỏ về đầu dòng v.v… Nếu RS
= 1 thì thanh ghi dữ liệu đƣợc chọn cho phép ngƣời dùng gửi dữ liệu cần
hiển thị trên LCD.
3. Chân đọc/ghi (R/W).Đầu vào đọc/ ghi cho phép ngƣời dùng ghi thông
tin lên LCD khi R/W= 0 hoặc đọc thông tin từ nó khi R/W = 1.
4. Chân cho phép E (Enable).Chân cho phép E đƣợc sử dụng bởi LCD để
chốt thông tin hiện hữu trên chân dữ liệu của nó. Khi dữ liệu đƣợc cấp đến
chân dữ liệu thì một xung mức cao xuống thấp phải đƣợc áp đến chân này để
LCD chốt dữ liệu trên các chân dữ liêu. Xung này phải rộng tối thiểu là 450ns.
5. Chân D0 - D7.Đây là 8 chân dữ liệu 8 bít, đƣợc dùng để gửi thông tin lên
LCD hoặc đọc nội dung của các thanh ghi trong LCD. Để hiển thị các chữ cái và
các con số, chúng ta gửi các mã ASCII của các chữ cái từ A đến Z, a đến f và



các con số từ 0 - 9 đến các chân này khi bật RS =
1.
Cũng có các mã lệnh mà có
thể đƣợc gửi đến LCD để xoá màn hình hoặc đƣa con trỏ về đầu dòng hoặc nhấp
nháy con trỏ. Chúng ta cũng sử dụng RS = 0 để kiểm tra bít cờ bận để xem LCD
có sẵn sàng nhân thông tin. Cờ bận là D7 và có thể đƣợcđọc khi R/W = 1 và
RS= 0 nhƣ sau: Nếu R/W = 1, RS = 0 khi D7 = 1 (cờ bận 1) thì LCD bận bởi
các công việc bên trong và sẽ không nhận bất kỳ thông tin mới nào. Khi D7 = 0
thì LCD sẵn sàng nhận thông tin mới. Lƣu ý chúng ta nên kiểm tra cờ bận trƣớc
khi ghi bất kỳ dữ liệu nào lên LCD.
2.2.3 Gửi các lệnh và dữ liệu đến LCD với một độ trễ:
*Các mã lệnh LCD:
Mã (Hex)
Lệnh đến thanh ghi của LCD
1


Xoá màn hình hiển thị
2

Trở về đầu dòng
4

Giả con trỏ (dịch con trỏ sang trái)
6

Tăng con trỏ (dịch con trỏ sang phải)
5

Dịch hiển thị sang phải
7

Dịch hiển thị sang trái
8

Tắt con trỏ, tắt hiển thị
A

Tắt hiển thị, bật con trỏ
C
Bật hiển thị, tắt con trỏ
E
Bật hiển thị, nhấp nháy con trỏ
F

Tắt con trỏ, nhấp nháy con trỏ

10

Dịch vị trí con trỏ sang trái
14

Dịch vị trí con trỏ sang phải
18

Dịch toàn bộ hiển thị sang trái
1
C
Dịch toàn bộ hiển thị sang phải
80

Ép con trỏ Vũ đầu dòng thứ nhất
C
0

Ép con trỏ Vũ đầu dòng thứ hai
38

Hai dòng và ma trận 5


7


Để gửi một lệnh bất kỳ đến LCD ta phải đƣa chân RS về 0. Đối với dữ liệu
thì bật RS = 1 sau đó gửi một sƣờn xung cao xuống thấp đến chân E để cho
phép chốt dữ liệu trong LCD. Điều này đƣợc chỉ ra trong đoạn mã chƣơng

trình dƣới đây .


2.2.4. Gửi mã lệnh hoặc dữ liệu đến LCD có kiểm tra cờ bận.
Đoạn chƣơng trình trên đây đã chỉ ra cách gửi các lệnh đến LCD mà
không có kiểm tra cờ bận (Busy Flag). Lƣu ý rằng chúng ta phải đặt một độ trễ
lớn trong quá ảtình xuất dữ liệu hoặc lệnh ra LCD. Tuy nhiên, một cách tốt
hơn nhiều là hiển thị cờ bận trƣớc khi xuất một lệnh hoặc dữ liệu tới LCD.
Dƣới đây là một chƣơng trình nhƣ vậy.
Lƣu ý rằng trong chƣơng trình cờ bận D7 của thanh ghi lệnh. Để đọc
thanh ghi lệnh ta phải đặt RS = 0, R/W = 1 và xung cao - xuống - thấp cho bít
E để cấp thanh ghi lệnh cho chúng ta. Sau khi đọc thanh ghi lệnh, nếu bít D7
(cờ bận) ở mức cao thì LCD bận và không có thông tin (lệnh) nào đƣợc xuất
đến nó chỉ khi nào D7 = 0 mới có thể gửi dữ liệu hoặc lệnh đến LCD. Lƣu ý
trong phƣơng phát này không sử dụng độ trễ thời gian nào vì ta đang kiểm tra
cờ bận trƣớc khi xuất lệnh hoặc dữ liệu lên LCD.
2.3. Lƣu đồ thuật toán:




2.4. Mạch đo và chƣơng trình hợp ngữ.

#INCLUDE <SFR51.INC>
ORG 0H
LJMP MAIN
ORG 03H
MOV TMOD, #01
MOV TL0, #0H
MOV TH0, #0H

SETB TR0
JNB P3.2, $
CLR TR0
CLR TF0
MOV R0, TL0
MOV R1, TH0
MOV R2, #10H
MOV R3, #27H
LCALL DIV16
MOV A, R0



ORL A, #30H
LCALL
HIENTHI
LCALL TRE
MOV A, R2
MOV R0, A
MOV A, R3
MOV R1,
A
MOV R2, #0E8H
MOV R3, #3H
LCALL DIV16
MOV A, R0
ORL A, #30H
LCALL HIENTHI
LCALL
TRE

MOV A, R2
MOV R0, A
MOV A, R3
MOV R1, A
MOV R2, #64H
MOV R3, #0H
LCALL DIV16
MOV A, R0
ORL A, #30H
LCALL HIENTHI
LCALL TRE



MOV A, R2
MOV R0, A
MOV A, R3
MOV R1, A
MOV R2, #0AH
MOV R3, #0H
LCALL DIV16
MOV A, R0
ORL A, #30H
LCALL HIENTHI
LCALL TRE
MOV A, R2
ORL A, #30H
LCALL HIENTHI
LCALL TRE
MOV A, #'u' LCALL HIENTHI LCALL TRE

MOV A, #'S'
LCALL HIENTHI
LCALL TRE
SJMP $ MAIN:
MOV IE, #10000001B
SETB TCON.0
MOV A,#38H ;LCD 5X7 , 2 dong
LCALL XLENH
LCALL TRE
MOV A,#0EH ;BAI HIEN THI VA NHAP NHAY CON TRO
LCALL XLENH



LCALL TRE
SJMP $ XLEN
H:
MOV P2, A
CLR P0.5
CLR P0.6
SETB P0.7
CLR P0.7
RET HIENTHI:
MOV P2, A
SETB P0.5
CLR P0.6
SETB P0.7
CLR P0.7
RET
TRE:

MOV TMOD, #20H ;CHE DO 2, TIMER 1
MOV TH1, #0DEH
SETB TR1
LAP:
JNB TF1,LAP
CLR TR1
CLR TF1
RET
;======================================================





DIV16:
RET

ANL PSW, #0E7H
MOV A, R3
ORL A, R2
JNZ DIV_OK
SETB C
DIV_OK:
PUSH DPL
PUSH DPH
PUSH B
ACALL CR0R1
ACALL CR2R3
ACALL UDIV16
ACALL MR0R1

CLR C
POP B
POP DPH
POP DPL
RET
CR0R1:
MOV A, R1
JB ACC.7, C0A
CLR 21H
RET
C0A:
SETB 21H
MOV A, R0


CPL A
ADD A, #1
MOV R0, A
MOV A, R1
CPL A
ADDC A, #0
MOV R1, A
RET
CR2R3
MOV A, R3
JB ACC.7, C1A
CLR 22H
RET
C1A:
SETB 22H

MOV A, R2
CPL A
ADD A, #1
MOV R2, A
MOV A, R3
CPL A ADDC
A, #0
MOV R3, A
RET
UDIV16:
MOV R7, #0
MOV R6, #0
MOV B, #16
DIV_LOOP:

CLR C
MOV A, R0
RLC A
MOV R0, A
MOV A, R1
RLC A

MOV
R1, A
MOV
A, R6
RLC
A
MOV
R6, A

MOV
A, R7
RLC
A
MOV
R7, A
MOV
A, R6
CLR
C
SUBB
A, R2
MOV
DPL, A
MOV
A, R7
SUBB
A, R3
MOV
DPH, A
CPL
C
JNC
DIV_1
MOV
R7, DPH
MOV
R6, DPL
DIV_1:




MOV
A, R4

RLC
A

MOV
R4, A

MOV
A, R5

RLC
A

MOV
R5, A

DJNZ
B,
DIV_LOOP

MOV
A, R5

MOV
R1, A


MOV
A, R4

MOV
R0, A

MOV
A, R7

MOV
R3, A

MOV
A, R6

MOV
R2, A

RET




MR0R1:
JB 21H, MR0R1B
JB 22H, MR0R1A
RET
MR0R1:
JNB 22H, MR0R1A
RET

MR0R1A:
MOV A, R0
CPL A
ADD A, #1
MOV R0, A
MOV A, R1
CPL A
ADDC A, #0
MOV R1, A

RET
END




KẾT LUẬN


Tới đây việc thiết kế đã hoàn thành .Do khả năng bản thân còn hạn hẹp ,
thời gian có hạn nên bài tập thiết kế không tránh khỏi những sai sót. Mong
Thầy và các bạn góp ý để các bài tập lớn lần sau em ngày càng hoàn chỉnh .

Tài liệu tham khảo:


1. Kĩ thuật Vi xử lý Tác giả: Văn Thế Minh
2. Cấu trúc và lập trình họ vi điều khiển 8051 Tác giả: Nguyễn
Tăng Cường _ Phan Quốc Thắng
3. Trang Web : WWW.8052.COM




×