LỜI NÓI
ĐẦUBộ 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
Sơ đồ chân IC
89
C
511.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 :
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ỉ
và
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
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
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
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
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, #'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:
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, 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
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