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
Trang 1LỜ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, …
*) Phần mềm:Phần logic bao gồm hệ điều hành và 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 Lưu đồ thuật toán
2.3 Mạch đo và chương trình hợp ngữ
Trang 2CHƯƠ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 Intelcủ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 :
Sơ đồ khối của 8951:
INT1\
INT0\
SERIAL PORT TIMER 0 TIMER 1
Trang 31.2 Sơ đồ chân và chức năng từng chân
1.2.1 Sơ đồ chân 8951:
5v
+ C3 10MF
R3 10K
12M C4 30P
C4 30P
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
P3.3/INT1 P3.4/T0 P2.7/A15 P3.5/T1 P2.6/A14 P3.6/WR P2.5/A13 P3.7/RD P2.4/A12
P2.3/A11
P2.0/A8 AT89C51
39 38 37 36 35 34 33 32
31 30 29
28 27 26 25 24 23 22
21
Trang 4Sơ đồ chân IC 89C51
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 I/O Đố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 P0 được dồn kênh giữa bus dữ liệu (D0 – D7) và bus địa chỉ (A0 –D7)
Port 1:
- Port 1 là port I/O trên các chân 1 đến 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 1 khô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 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:
Trang 5
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ệnhcủ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, nó 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, 8951 thi 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 XTAL1, XTAL2:
- Hai chân XTAL1 và XTAL2 (chân 18 và 19) 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
Trang 6CHƯƠ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:
- Vcc cung cấp cho IC có thể sử dụng từ 4.5v đến 15v Đường mạch màu đỏ là dương nguồn ,đường mạch màu đen dưới cùng là âm nguồn
- Khi thay đổi các điện trở R1 , R2 và giá trị tụ C1 sẽ thu được dao động có tần số và độ rộng xung như ý muốn theo công thức sau :
T=0.7 *(R1 + 2*R2) *C1
Và f=1.4*(R1 +2*R2)*C1 Trong đó :
+ T=thời gian của một chu kỳ tính bằng (s) + f=tần số dao động tính bằng (Hz)
Trang 7+ Ts là thời gian điện thấp Ts=0.7 *R2*C1
Chu kỳ toàn phần T bao gồm thời gian có điện mức cao Tm và thời gian có điện áp mức thấp Ts
Từ các công thức trên ta có thể tạo ra một dao động xung vuông Tm và Ts bất kỳ
Sau khi đã tạo ra xung có Tm và Ts ta có : T=Tm + Ts và f=1/T
2.2 Lựa chọn chuẩn truyền thông.
[1] Trang 313- 318 Thuật ngữ hiện nay phân chia thiết bị truyền thông dữ liệu thành
một thiết bị đầu cuối dữ liệu DTE (Data Terminal Equipment) hoặc thiết bị truyền
thông dữ liệu DCE (Data Communication Equipment) DTE chủ yếu là các máy tính và
các thiết bị đầu cuối gửi và nhận dữ liệu, còn DCE là thiết bị truyền thông chẳng
hạn như các modem chịu trách nhiệm về truyền dữ liệu Lưu ý rằng tất cả mọi định
nghĩa về chức năng các chân RS232 trong các bảng 1 và đều xuất phát từ gốc độ của
DTE
Kết nối đơn giản nhất giữa một PC và bộ vi điều khiển yêu cầu tối thiểu là
những chân sau: TxD, RxD và đất như chỉ ra ở hình 7 Để ý rằng trên hình này thì các
chân TxD và RxD được đổi cho nhau
Hình 7: Sơ đồ đầu nối DB - 9 của RS232
Trang 8Bảng 1: Các tín hiệu của các chân đầu nối DB - 9 trên máy tính IBM PC.
Hình 8: Nối kết không modem
+ Nối ghép 8051 tới RS232
Chuẩn RS232 không tương thích với mức lô-gíc TTL, do vậy nó yêu cầu một bộ điềukhiển đường truyền chẳng hạn như chíp MAX232 để chuyển đổi các mức điện ápRS232 về các mức TTL và ngược lại Nội dung chính của phần này là bàn về nối ghép
8051 với các đầu nối RS232 thông qua chíp MAX232 10.2.1 Các chân RxD và TxDtrong 8051
8051 có hai chân được dùng chuyên cho truyền và nhận dữ liệu nối tiếp Hai chân nàyđược gọi là TxD và RxD và là một phần của cổng P3 (đó là P3.0 và P3.1) chân 11 của
8051 là P3.1 được gán cho TxD và chân 10 (P3.0) được dùng cho RxD Các chân nàytương thích với mức lô-gích TTL Do vậy chúng đòi hỏi một bộ điều khiển đườngtruyền để chúng tương thích với RS232 Một bộ điều khiển như vậy là chíp MAX232
- Bộ điều khiển đường truyền MAX232
Trang 9Vì RS232 không tương thích với các bộ vi xử lý và vi điều khiển hiện nay nên ta cầnmột bộ điều khiển đường truyền (bộ chuyển đổi điện áp) để chuyển đổi các tín hiệuRS232 về các mức điện áp TTL sẽ được chấp nhận bởi các chân TxD và RxD của 8051.
Bộ MAX232 chuyển đổi từ các mức điện áp RS232 sẽ về mức điện áp TTL và ngượclại Một điểm mạnh của chíp MAX232 là nó dùng điện áp nguồng +5v cùng với điện ápnguồn của 8051 Hay nóic cách khác với nguồn điện áp nuối +5 chúng ta mà có thể nuôi
8051 và MAX232 mà không phải dùng hai nguồn nuôi khác nhau như phổ biến trongcác hệ thống trước đây
Bộ điều khiển MAX232 có hai bộ điều khiển thường để nhận và truyền dữ liệu nhưtrình bày trên hình 9 Các bộ điều khiển đường được dùng cho TxD được gọi là T1 vàT2 Trong nhiều ứng dụng thì chỉ có một cặp được dùng Ví dụ T1 và R1 được dùng vớinhau đối với TxD và RxD của 8051, còn cặp R2 và T2 thì chưa dùng đến Để ý rằngtrong MAX232 bộ điều khiển T1 có gán T1in và T1out trên các chân số 11 và 1 tươngứng Chân T1in là ở phía TTL và được nối tới chân RxD của bộ vi điều khiển, cònT1out là ở phía RS232 được nối tới chân RxD của đầu nối DB của RS232
Bộ điều khiển đường R1 cũng có gán R1in và R1out trên các chân số 13 và 12 tươngứng Chân R1in (chân số 13) là ở phía RS232 được nối tới chân TxD của đầu nối DBcủa RS232 và chân R1out (chân số 12) là ở phía TTL mà nó được nối tới chân RxD của
bộ vi điều khiển, xem hình 9 Để ý rằng nối ghép modem không là nối ghép mà chânTxD bên phát được nối với RxD của bên thu và ngược lại
Trang 10Hình 9: a) Sơ đồ bên trong của MAX232
b) Sơ đồ nối ghép của MAX232 với 8051 theo moden không
Bộ MAX232 đòi hỏi 4 tụ điện giá trị từ 1 đến 22μF Giá trị phổ biến nhất cho các tụ này là 22μF
2.3 Lưu đồ thuật toán:
Trang 112.3.Mạch đo và chương trình
Trang 12b c d f
c1 e1 f1 g1
a
e f
g2
a2 c2 e2 f2
b c d f
b3 d3 f3
b c d f
d4 f4
g4
a4 c4 d4 f4
b3 c3 d3 f3
b2 c2 d2 f2 g2
b1 c1 d1 f1
LED2 LED1
LED3
LED4
c d LED1 LED4 LED2 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
4 Q1 5 D2
7 Q2 6 D3
8 Q3 9 D4
13 Q4 12 D5
14 Q5 15 D6
17 Q6 16 D7
18 Q7 19 OE 1 LE 11
D0
3 Q0 2 D1
4 Q1 5 D2
7 Q2 6 D3
8 Q3 9 D4
13 Q4 12 D5
14 Q5 15 D6
17 Q6 16 D7
18 Q7 19 OE 1 LE 11
D0
3 Q0 2 D1
4 Q1 5 D2
7 Q2 6 D3
8 Q3 9 D4
13 Q4 12 D5
14 Q5 15 D6
17 Q6 16 D7
18 Q7 19 OE 1 LE 11
U4
74LS373
D0
3 Q0 2 D1
4 Q1 5 D2
7 Q2 6 D3
8 Q3 9 D4
13 Q4 12 D5
14 Q5 15 D6
17 Q6 16 D7
18 Q7 19 OE 1 LE 11
Trang 13MOV SP,#50H
MOV DPTR,#MANG
SETB P1.1; CHON DAU VAO START SETB P1.2 ;CHON DAU VAO STOP SETB P1.3 ; CHON DAU VAO XUNG MOV TMOD,#02H
JNB P1.2,CHECK_STOP CHECK_555:
JNB P1.3,CHECK_555 CHECK_555_2:
JB P1.3,CHECK_555_2 SETB TRO
Trang 14LCALL HIEN_THI HIGH_BYTE :
ADD_IT :
ADD R6,A
BJNZ R1,HIGH_BYTE MOV B,#10
CLR P3.1
LCALL DELAY 10ms SETB P3.1
Trang 16#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
Trang 17ORL 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
Trang 18MOV A,#38H LCALL XLENH LCALL TREMOV A,#0EH LCALL XLENH LCALL TRESJMP $
XLENH:
MOV P2, A CLR P0.5 ;LCD 5X7 , 2 dong
;BAI HIEN THI VA NHAP NHAY CON TRO
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 MOV TH1, #0DEH SETB TR1
LAP:
JNB TF1,LAP CLR TR1CLR TF1 RET
;CHE DO 2, TIMER 1
Trang 19;======================================================== DIV16:
ANL PSW, #0E7H MOV A, R3
ORL A, R2 JNZ DIV_OK SETB C
RET DIV_OK:
PUSH DPL PUSH DPH PUSH B ACALL CR0R1 ACALL CR2R3 ACALL UDIV16 ACALL MR0R1 CLR C
POP B POP DPHPOP DPLRET
SETB 21HMOV A, R0 CPL A ADD A, #1 MOV R0, A MOV A, R1 CPL A ADDC A, #0MOV R1, ARET
CR2R3:
MOV A, R3
JB ACC.7, C1A
Trang 20SETB 22HMOV A, R2 CPL A ADD A, #1 MOV R2, A MOV A, R3 CPL A ADDC A, #0MOV R3, ARET
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
Trang 21DIV_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:
RETMR0R1B:
RET MR0R1A:
MOV A, R0 CPL A ADD A, #1 MOV R0, A MOV A, R1 CPL A ADDC A, #0MOV R1, ARET
END