Eddison

New Member

Download miễn phí Giáo trình Vi điều khiển (45 tiết)





MỤC LỤC
Chương 1: Tổng quan vềhọMCS-51 . 1
1. Giới thiệu . 1
2. Vi điều khiển AT89C51 . 1
2.1. Sơ đồ. 2
2.2. Định thì chu kỳmáy . 6
2.3. Tổchức bộnhớ. 8
2.4. Các thanh ghi chức năng đặc biệt (SFR – Special FunctionRegisters) . 17
2.5. Cấu trúc port . 21
2.6. Hoạt động Reset . 22
2.7. Các vấn đềkhác . 23
Bài tập chương 1 . 34
Chương 2: Lập trình hợp ngữ. 35
1. Các phương pháp định địa chỉ. 35
2. Các vấn đềliên quan khi lập trình hợp ngữ. 36
2.1. Cú pháp lệnh . 36
2.2. Khai báo dữliệu . 37
2.3. Các toán tử. 38
2.4. Cấu trúc chương trình . 39
3. Tập lệnh . 41
3.1. Nhóm lệnh chuyển dữliệu . 41
3.2. Nhóm lệnh xửlý bit . 46
3.3. Nhóm lệnh chuyển điều khiển . 47
3.4. Nhóm lệnh logic . 51
3.5. Nhóm lệnh sốhọc . 53
Bài tập chương 2 . 56
Chương 3: Các hoạt động . 57
1. Hoạt động định thời (Timer / Counter) . 57
1.1. Giới thiệu . 57
1.2. Hoạt động Timer / Counter . 57
1.3. Các thanh ghi điều khiển hoạt động . 58
1.3.1. Thanh ghi điều khiển timer (Timer/Counter Control Register) . 58
1.3.2. Thanh ghi chế độtimer (TMOD – Timer/Counter Mode) . 59
1.4. Các chế độhoạt động . 59
1.4.1. Chế độ0 . 60
1.4.2. Chế độ1 . 60
1.4.3. Chế độ2 . 61
1.4.4. Chế độ3 . 61
1.5. Timer 2 . 62
1.5.1. Các thanh ghi điều khiển Timer 2 . 62
1.5.2. Chế độcapture . 64
1.5.3. Chế độtự động nạp lại . 64
1.5.4. Chế độtạo xung clock . 65
1.5.5. Chế độtạo tốc độbaud . 66
1.6. Các ví dụ. 67
2. Cổng nối tiếp (Serial port) . 71
2.1. Các thanh ghi điều khiển hoạt động . 72
2.1.1. Thanh ghi SCON (Serial port controller) . 72
2.1.2. Thanh ghi BDRCON (Baud RateControl Register) . 73
2.2. Tạo tốc độbaud . 73
2.2.1. Tạo tốc độbaud bằng Timer 1 . 74
2.2.2. Tạo tốc độbaud bằng Timer 2 . 76
2.2.3. Bộtạo tốc độbaud nội (Internal Baud Rate Generator) . 77
2.3. Truyền thông đa xửlý . 77
2.4. Nhận dạng địa chỉtự động . 78
2.5. Kiểm tra lỗi khung . 79
2.6. Các ví dụ. 79
3. Ngắt (Interrupt) . 81
3.1. Các thanh ghi điều khiển hoạt động . 82
3.1.1. Thanh ghi IE (Interrupt Enable) . 82
3.1.2. Thanh ghi IP (Interrupt Priority) . 82
3.1.3. Thanh ghi TCON (Timer/Counter Control) . 83
3.2. Xửlý ngắt . 84
3.3. Ngắt do bộ định thời . 86
3.4. Ngắt do cổng nối tiếp . 89
3.5. Ngắt ngoài . 91
Bài tập chương 3 . 94
Chương 4: Các ứng dụng dựa trên họvi điều khiển MCS-51. 95
1. Điều khiển Led đơn . 95
2. Điều khiển Led 7 đoạn . 98
2.1. Cấu trúc và bảng mã hiển thịdữliệu trên Led 7 đoạn . 98
2.2. Các phương pháp hiển thịdữliệu . 100
2.2.1. Phương pháp quét . 100
2.2.2. Phương pháp chốt . 104
3. Điều khiển ma trận Led . 107
4. Điều khiển động cơbước. 112
5. Điều khiển LCD (Liquid Crystal Display) . 115
6. Giao tiếp với PPI8255 . 129
Bài tập chương 4 . 135
Phụlục 1: Soạn thảo và nạp chương trình . 136
Phụlục 2: Mô phỏng bằng Proteus . 181
Phụlục 3: Tóm tắt tập lệnh . 191
Phụlục 4: Mô tảtập lệnh . 195



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

: www.daihoc.com.vn
Giáo trình Vi điều khiển Các hoạt động của vi điều khiển MCS-51
Phạm Hùng Kim Khánh Trang 78
- Mỗi slave được gán trước một địa chỉ. Khi cần trao đổi thông tin với slave
nào, master sẽ gởi dữ liệu 9 bit gồm 8 bit địa chỉ của slave và bit 9 = 1. Dữ
liệu này sẽ được tất cả các slave nhận về (do bit 9 = 1). Chương trình trong
slave sẽ kiểm tra giá trị địa chỉ tương ứng, nếu trùng với địa chỉ đã cài đặt
sẵn thì đảo bit SM2 (= 0), nếu khác thì bỏ qua.
- Tiếp tục, master sẽ gởi dữ liệu đến slave nhưng lúc này bit 9 = 0. Khi đó,
chỉ có slave nào có bit SM2 = 0 mới nhận được dữ liệu.
- Sau khi truyền xong dữ liệu, master gởi lại 8 bit địa chỉ và bit 9 = 1. Slave
nhận được sẽ đảo bit SM2 lần nữa để khôi phục trạng thái ban đầu.
Như vậy, trong quá trình truyền thông đa xử lý, có 2 loại thông tin gởi: byte địa
chỉ nếu bit 9 = 1 và byte dữ liệu nếu bit 9 = 0.
2.4. Nhận dạng địa chỉ tự động
Trong các phiên bản mới của MCS-51, địa chỉ của các slave có thể nhận dạng
bằng các thanh ghi SADDR và thanh ghi mặt nạ SADEN (các bit không quan tâm
trong thanh ghi địa chỉ SADDR sẽ tương ứng với các bit 0 trong thanh ghi SADEN).
Xét hệ thống có 1 master và 3 slave:
Slave 1: SADDR = 1111 0001b, SADEN = 1111 1010b
Slave 2: SADDR = 1111 0011b, SADEN = 1111 1001b
Slave 3: SADDR = 1111 0001b, SADEN = 1111 1010b
1111 0001b
1111 1010b
1111 0x0xb
1111 0011b
1111 1001b
1111 0xx1b
1111 1011b
1111 0101b
1111 x0x1b
Sưu tầm bởi: www.daihoc.com.vn
Giáo trình Vi điều khiển Các hoạt động của vi điều khiển MCS-51
Phạm Hùng Kim Khánh Trang 79
Nếu chỉ cần gởi dữ liệu cho slave 1, địa chỉ cần sử dụng có bit 0 = 0 (do địa chỉ
của slave 2 và slave 3 có bit 0 = 1 còn địa chỉ của slave 1 có bit 0 tuỳ ý), giả sử là
1111 0000b.
Nếu cần gởi cho slave 2 và slave 3 mà không gởi cho slave 1 thì địa chỉ cần
dùng có bit 1 = 1 (do địa chỉ của slave 1 có bit 1 = 0 còn slave 2 và 3 thì tuỳ ý), giả sử
như 1111 0011b.
™ Địa chỉ broadcast
Địa chỉ broadcast tạo thành từ phép toán OR giữa các thanh ghi SADDR và
SADEN trong đó các bit 0 xác định đó là các bit không quan tâm.
Giả sử SADDR = 0101 0000b và SADEN = 1111 1101b thì
Địa chỉ broadcast là 1111 11x1b.
2.5. Kiểm tra lỗi khung
Chế độ kiểm tra lỗi khung chỉ có trong các chế độ 1, 2 và 3 được thực hiện
bằng cách đặt bit SMOD0 lên 1 (trong thanh ghi PCON). Khi SMOD0 = 1, bộ thu sẽ
kiểm tra bit stop mỗi khi có dữ liệu đến. Nếu bit stop không hợp lệ, bit FE sẽ được đặt
lên 1 (trong thanh ghi SCON).
Phần mềm sau khi đọc byte dữ liệu sẽ kiểm tra bit FE để xác định có lỗi đường
truyền hay không. Lưu ý rằng bit FE chỉ xoá bằng phần mềm hay khi reset hệ thống
mà không bị xoá khi nhận bit stop hợp lệ.
2.6. Các ví dụ
Để điều khiển hoạt động của cổng nối tiếp, cần thực hiện các bước sau:
- Khởi động giá trị của thanh ghi SCON để xác định chế độ hoạt động.
- Chọn bộ tạo tốc độ baud (mặc định là timer 1) và xác định các thông số cần
thiết theo tốc độ baud yêu cầu.
- Kiểm tra các bit TI và RI để xác định cho phép truyền hay nhận dữ liệu
không.
- Nếu cần truyền dữ liệu thì kiểm tra TI và chuyển nội dung truyền vào thanh
ghi SBUF.
0101 0000b
OR 1111 1101b
1111 1101b
Sưu tầm bởi: www.daihoc.com.vn
Giáo trình Vi điều khiển Các hoạt động của vi điều khiển MCS-51
Phạm Hùng Kim Khánh Trang 80
- Nếu cần nhận dữ liệu thì kiểm tra RI và đọc nội dung từ SBUF vào thanh
ghi A.
Ví dụ 1: Khởi động cổng nối tiếp ở chế độ UART 8 bit với tốc độ baud 9600
bps, dùng timer 1 là bộ tạo tốc độ baud (giả sử tần số thạch anh là 11.0592 MHz).
Giải
- Nội dung thanh ghi SCON:
SM0 SM1 SM2 REN TB8 RB8 TI RI
0 1 0 1 0 0 1 0
UART 8
bit
Không ở chế độ đa xử

Cho phép
thu
Cho phép
truyền
SCON = 0101 0010b (52h)
- Nội dung thanh ghi TMOD:
GATE1 C/T1 M11 M10 GATE0 C/T0 M01 M00
0 0 1 0 0 0 0 0
Không dùng
INT1
Đếm bằng dao động
nội
Chế độ 8
bit
Timer 0 không dùng
TMOD = 0010 0000b (20h)
- Giá trị đếm (theo bảng 3.10): TH1 = -3
Đoạn chương trình khởi động như sau:
MOV SCON,#52h
MOV TMOD, #20h
MOV TH1,#-3
SETB TR1
Ví dụ 2: Viết chương trình xuất liên tục các ký tự từ ‘A’ đến ‘Z’ ra cổng nối
tiếp với tốc độ baud 4800 bps (giả sử tần số thạch anh là 11.0592 MHz).
Giải
Tốc độ = 4800 bps → giá trị đếm: TH1 = -6
Chương trình thực hiện như sau:
MOV SCON,#52h
MOV TMOD,#20h
MOV TH1,#-6
SETB TR1
Batdau:
MOV A,#’A’
Sưu tầm bởi: www.daihoc.com.vn
Giáo trình Vi điều khiển Các hoạt động của vi điều khiển MCS-51
Phạm Hùng Kim Khánh Trang 81
Truyen:
JNB TI,$ ; Nếu chưa cho phép truyền thì chờ
CLR TI ; Xoá TI để không cho phép truyền, sau khi
; truyền xong thì mới có thể truyền tiếp
MOV SBUF,A ; Truyền dữ liệu
INC A ; Qua ký tự kế
CJNE A,#’Z’+1,Truyen; Nếu đã truyền xong từ ‘A’
SJMP Batdau ; đến ‘Z’ thì lặp lại quá trình
Ví dụ 3: Viết chương trình nhận ký tự từ cổng nối tiếp với tốc độ baud
19200bps (giả sử tần số thạch anh là 11.0592 MHz).
Giải
Tốc độ = 1900 bps → giá trị đếm: TH1 = -3 và SMOD = 1
Chương trình thực hiện như sau:
MOV SCON,#52h
MOV TMOD,#20h
MOV A,PCON ; Gán bit SMOD = 1 (do PCON không cho
SETB ACC.7 ; phép định địa chỉ bit nên phải thực
MOV PCON,A ; hiện thông qua thanh ghi A)
MOV TH1,#-3
SETB TR1
Nhan:
JNB RI,$ ; Nếu chưa có ký tự đến thì chờ
CLR RI ; Xoá RI để không cho phép nhận, sau khi
; có ký tự tiếp theo thì mới nhận
MOV A,SBUF ; Nhận dữ liệu
SJMP Nhan
Lưu ý rằng, đối với các ví dụ trên, khi truyền hay nhận dữ liệu thì MCS-51 phải
chờ, không được thực hiện công việc khác. Vấn đề này có thể giải quyết bằng cách sử
dụng ngắt (xem thêm phần 3).
3. Ngắt (Interrupt)
Ngắt là quá trình dừng chương trình đang thực thi để phục vụ cho một chương
trình khác khi xảy ra một sự kiện. Chương trình xử lý sự kiện ngắt gọi là chương trình
phục vụ ngắt (ISR – Interrupt Service Routine).
Sưu tầm bởi: www.daihoc.com.vn
Giáo trình Vi điều khiển Các hoạt động của vi điều khiển MCS-51
Phạm Hùng Kim Khánh Trang 82
Họ MCS-51 có tổng cộng 5 nguồn ngắt khác nhau (không kể reset cũng có thể
xem như là một ngắt): ngắt ngoài 0, 1 (tại các chân INT0, INT1), timer 0, 1 (khi
timer tương ứng tràn), cổng nối tiếp (khi có ký tự đến hay khi truyền ký tự đi). Đối với
họ 89x52 sẽ có thêm ngắt timer 2.
3.1. Các thanh ghi điều khiển hoạt động
3.1.1. Thanh ghi IE (Interrupt Enable)
Bảng 3.11 – Nội dung thanh ghi IE
EA - ET2 ES ET1 EX1 ET0 EX0
Bit Ký hiệu Địa chỉ Mô tả
IE.7 EA AFh Enable All
Cấm tất cả (= 0) hay cho phép ngắt
IE.6 -
IE.5 ET2 ADh Enable Timer 2
Cho phép ngắt tại timer 2 (= 1)
IE.4 ES ACh Enable serial port
Cho phép ngắt tại cổng nối tiếp (= 1)
IE.3 ET1 ABh Enable Timer 1
Cho phép ngắt tại timer 1 (= 1)
IE.2 EX1 AAh Enable External interrupt 1
Cho phép ngắt tại ngắt ngoài 1 (= 1)
IE.1 ET0 A9h Enable Timer 0
Cho phép ngắt tại timer 0 (= 1)
IE.0 EX0 A8h Enable External interrupt 0
Cho phép ngắt tại ngắt ngoài 0 (= 1)
Giá trị khi reset: 00h, cho phép định địa chỉ bit
Thanh ghi IE cho phép một ngắt có xảy ra hay cấm ngắt (để cho phép cần dùng
2 bit: bit EA = 1 và bit cho phép tương ứng từng ngắt).
3.1.2. Thanh ghi IP (Interrupt Priority)
Bảng 3.12 – Nội dung thanh ghi IP
- - PT2 PS PT1 PX1 PT0 PX0
Bit Ký hiệu Đị...
 

01676167394

New Member
Trích dẫn từ daigai:
Trích dẫn từ 01676167394:
Cho mình xin link download nhé! Email:[email protected]


Không cần đăng email nhé'
Của bạn đây, nhớ thank cho tác giả

Thank bạn cũng như tác giả!

Bạn có thể kiếm giúp mình tài liệu theo link này được không?

Rất Thank bạn đã quan tâm và trả lời sớm.
 

Các chủ đề có liên quan khác

Top