ĐỒ ÁN VI ĐIỀU KHIỂN
SVTH : HOÀNG PHI LONG-LỚP 05CDT1 TRANG 1
LỜI NÓI ĐẦU
Ngày nay với sự tiến bộ của khoa học kỹ thuật cộng với sự phát triển mạnh mẽ
của công cụ máy tính. Đã thay đổi phương thức sản suất đi theo một chiều hướng
mới đó là thời kỳ mà các dây chuyền, các máy sản xuất đã chuyển sang bán tự
động hoặc tự động hoá hoàn toàn.
Đối với các thiết bị tự động thì các chip vi điều khiển, các bộ vi xử lí trung
tâm đóng vai trò hết sức quan trọng là đầu não điều khiển mọi hoạt động của thiết
bị. Tuy nhiên với những thiết bị không đòi hỏi độ phức tạp trong xữ lí cao thì các
chip VĐK như họ 8051, PIC sử dụng rất tiện lợi, giá thành thấp.
Với mục đích của đồ án VĐK là nhằm giúp sinh viên làm quen, n ắm được
cách thức điều khiển một thiết bị thực tế bằng vi điều khiển. Em chọn chíp VĐK
89C51 cho đề tài của mình là: “Máy tính cộng trừ nhân chia hiển thị LCD”
Qua một thời gian tìm hiểu, thiết kế với sự cố gắng của bản thân và đặc biệt
là sự hướng dẩn của thầy Lê Xứng và các thầy giáo trong bộ môn đến nay em đã
hoàn thành đồ án VĐK này.
Em rất chân thành cảm ơn các thầy cô!
Đà Nẵng, ngày 12 tháng 6 năm 2009
Sinh viên thực hiện
Hoàng phi long
ĐỒ ÁN VI ĐIỀU KHIỂN
SVTH : HOÀNG PHI LONG-LỚP 05CDT1 TRANG 2
MỤC LỤC
Chương I: GIỚI THIỆU ĐỀ TÀI ................................ ................................ ......
Chương II: GIỚI THIỆU BỘ VI ĐIỀU KHIỂN 89C51
VÀ CÁC LINH KI ỆN LIÊN QUAN ................................ ...............
A.GIỚI THIỆU BỘ VĐK AT89C51 ................................ ................................ ......
2.1.Giới thiệu chung ................................ ................................ ...............................
2.2. Lịch sử phát triển của vi điều khiển ................................ ................................ .
Khi nghiên cứu đề tài này em muốn phát huy những ứng dụng của vi điều
khiển nhàm tạo ra sản phẩm của chính mình,trong quá trình phát tri ển đồ án em có
cơ hội nghiên cứu kỹ hơn về vi diều khiển ,phát hiện nhiều về khả năng ứng dụng
của vi điều khiển, đồng thời phát huy tính sáng t ạo ,khả năng giải quyết một vấn đề
yêu cầu đặt ra.
Sơ đồ chương trình:
Đợi
xử lý
Đọc phím
kết quả
Display
No push
ấn phím
ĐỒ ÁN VI ĐIỀU KHIỂN
SVTH : HOÀNG PHI LONG-LỚP 05CDT1 TRANG 4
CHƯƠNG II:
GIỚI THIỆU VỀ VI ĐIỀU KHIỂN
VÀ CÁC LINH KIỆN LIÊN QUAN
A.GIỚI THIỆU VỀ HỌ VI ĐIỀU KHIỂN 89C51:
2.1.Giới thiệu chung
Bộ vi điều khiển viết tắt là Micro-controller, là mạch tích hợp trên một chip có thể
lập trình được, dùng để điều khiển hoạt động của một hệ thống. Theo các tập lệnh
của người lập trình, bộ vi điều khiển tiến hành đọc, lưu trữ thông tin, xử lý thông
tin, đo thời gian và tiến hành đóng mở một cơ cấu nào đó.
Trong các thiếh bị điện và điện và điện tử dân dụng, các bộ vi điều khiển, điều
khiển hoạt động của TV, máy giặt, đầu đọc laser, điện thọai, lò vi-ba … Trong hệ
thống sản xuất tự động, bộ vi điều khiển được sử dụng trong Robot, dây chuy ền tự
động. Các hệ thống càng "thông minh" thì vai trò c ủa hệ vi điều khiển càng quan
trọng.
2.2. Lịch sử phát triển của vi điều khiển
- 4kbyte ROM (được lập trình bởi nhà sản xuất chỉ có ở 8051)
- 128 byte RAM
N VI IU KHIN
SVTH : HONG PHI LONG-LP 05CDT1 TRANG 5
- 4port I10 8bit
- Hai b nh thi 16bit
- Giao tip ni tip
- 64KB khụng gian b nh chng trỡnh m rng
- 64 KB khụng gian b nh d liu m rng
- mt b x lớ lun lớ (thao tỏc trờn cỏc bit n)
- 210 bit c a ch húa
- b nhõn / chia 4 s
2.3.1.Cu trỳc bờn trong ca IC 8951
Phn chớnh ca vi iu khin 8051 l b x lớ trung tõm (CPU: central processing
unit ) bao gm :
- Thanh ghi tớch ly A
- Thanh ghi tớch ly ph B, dựng cho phộp nhõn v phộp chia
- n v logic hc (ALU : Arithmetic Logical Unit )
- T trng thỏi chng trỡnh (PSW : Prorgam Status Word)
- Bn bng thanh ghi
- Con tr ngn xp
- Ngoi ra cũn cú b nh chng trỡnh, b gii mó lnh, b iu khin thi
gian v logic.
- n v x lớ trung tõm nhn trc tip xung t b giao ng, ngoi ra cũn cú
kh nng a mt tớn hiu gi nhp t bờn ngoi.
Chng trỡnh ang chy cú th cho dng li nh mt khi iu khin ngt bờn
trong. Cỏc ngun ngt cú th l : cỏc bin c bờn ngoi , s trn b m nh
thi hoc cng cú th l giao din ni tip.
Hai b nh thi 16 bit hot ng nh mt b m.
Cỏc cng (port0, port1, port2, port3 ). S dng vo mc ớch iu khin.
ấn định bằng một bộ định thời.
Trong vi điều khiển 8051 / 8031 có hai thành ph ần quan trọng khác đó là bộ nhớ
và các thanh ghi :
Bộ nhớ gồm có bộ nhớ Ram và bộ nhớ Rom (chỉ có ở 8031) dùng để lưu trữ dữ
liệu và mã lệnh.
Các thanh ghi sử dụng để lưu trữ thông tin trong quá trình x ử lí. Khi CPU làm
việc nó làm thay đổi nội dung cuả các thanh ghi.
2.3.2.Chức năng của các chân vi điều khiển
a.Port0 : là port có 2 chức năng ở trên chân từ 32 đến 39 trong các thiết kế cỡ nhỏ
( không dùng bộ nhớ mở rộng ) có hai chức năng như các đường IO. Đối với các
thiết kế cỡ lớn ( với bộ nhớ mở rộng ) nó được kết hợp kênh giữ a các bus )
b.Port1 : port1 là một port I/O 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 các thi ết bị ngoài nếu cần. Port1 không có ch ức
năng khác, vì vậy chúng ta chỉ được dùng trong giao ti ếp với các thiết bị ngoài.
c.Port2 : port2 là một port công 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 kế dùng bộ nhớ
mở rộng.
d.Port3 : port3 là một port công 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ín đặc
biệt của 8051 / 8031 như ở bảng sau :
VCC
U1
AT89C51
9
18
19
20
29
30
31
33
32
RST
XTAL2
XTAL1
GND
PSEN
ALE/PROG
EA/VPP
VCC
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15P3.0/RXD
P3.1/TXD
P3.2/INTO
P3.3/INT1
P3.4/TO
SW
Hình 2.2 : Sơ Đồ Chân 8051
ĐỒ ÁN VI ĐIỀU KHIỂN
SVTH : HOÀNG PHI LONG-LỚP 05CDT1 TRANG 7
Bit Tên Chức năng chuyển đổi
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
RXD
TXD
INTO
INT1
TO
T1
WR
RD
Dữ liệu nhận cho port nối tiếp
Dữ liệu phát cho port nối tiếp
Ngắt 0 bên ngoài
Ngắt 1 bên ngoài
Ngõ vào của timer/counter 0
Ngõ vào của timer/counter 1
Xung ghi bộ nhớ dữ liệu ngoài
Xung đọc bộ nhớ dữ liệu ngoài
Bảng 2.1 : Chức năng của các chân trên port3
trị thích hợp để khởi động hệ thống.
i.Chân XTAL:
ĐỒ ÁN VI ĐIỀU KHIỂN
SVTH : HOÀNG PHI LONG-LỚP 05CDT1 TRANG 8
Các ngõ vào bộ dao động trên chip :Như đã thấy trong các hình trên , 8051 có m ột
bộ dao động trên chip. Nó thư ờng được nối với thạch anh giữa hai chân 18 và 19.
Các tụ giữa cũng cần thiết như đã vẽ. Tần số thạch anh thông thư ờng là 12MHz.
j.Các chân nguồn :
8051 vận hành với nguồn đơn +5V. Vcc được nối vào chân 40 và Vss (GND) đư ợc
nối vào chân 20.
2.3.3.Hoạt động của bộ định thời
2.3.3.1.Giới thiệu.
Một định nghĩa đơn giản của timer là một chuỗi các flip-flop chia đôi tần số nối
tiếp với nhau, chúng nhận tín hiệu vào làm nguồn xung nhịp. Ngõ ra của tần số
cuối làm nguồn xung nhịp cho flip-flop báo tràn của timer (flip-flop cờ). Giá trị
nhị phân trong các flip-flop của timer có thể xem như số đếm số xung nhịp (hoặc
các sự kiện) từ khi khởi động timer. Ví dụ timer 16 bit sẽ đếm lên từ 0000H đến
FFFFH. Cờ báo tràn sẽ lên 1 khi số đếm tràn từ FFFFH đến 0000H.
8051 có 2 timer 16 bit, m ỗi timer có bốn cách làm việc. Người ta sử dụng các
timer để : a) định khoảng thời gian, b) đếm sự kiện hoặc c) tạo tốc độ baud cho
port nối tiếp trong 8051
Trong các ứng dụng định khoảng thời gian, người ta lập trình timer ở một khoảng
đều đặn và đặt cờ tràn timer. Cờ được dùng để đồng bộ hóa chương trình để thực
hiện một tác động như kiểm tra trạng thái của các cửa ngõ vào hoặc gửi các sự
kiện ra các ngõ ra. Các ứng dụng khác có thể sử dụng việc tạo xung nhịp đều đặn
của timer để đo thời gian trôi qua giữa hai sự kiện (ví dụ : đo độ rộng xung).
Đếm sự kiện dùng để xác định số lần xẩy ra của một sự kiện. Một "sự kiện" là bất
cứ tác động ngoài nào có thể cung cấp một chuyển trạng thái trên một chân của
8051. Các timer cũng có thể cung cấp xung nhịp tốc độ baud cho port nối tiếp
trong 8051 Truy xu ất timer của 8051 dùng 6 thanh ghi ch ức năng đặc biệt cho
ĐỒ ÁN VI ĐIỀU KHIỂN
SVTH : HOÀNG PHI LONG-LỚP 05CDT1 TRANG 9
Bit
7
6
5
4
3
2
1
0
Tên Timer Mô t ả
GATE 1 Bit (Mở) cổng, khi lên 1 timer ch ỉ chạy khi INT1
ở mức cao.
C/T 1 Bit chọn chế độ counter/timer
1=bộ đếm sự kiện
0=bộ định khoảng thời gian
M1 1 Bit 1 của chế độ(mode)
M0 1 Bit 0 của chế độ
00: chế độ 0 : timer 13 bit
01: chế độ 1 : timer 16 bit
10: chế độ 2 : tự động nạp lại 8255A bit
11: chế độ 3 : tách timer
GATE 0 Bit (mở) cổng
C/T 0 Bit chọn counter/timer
M1 0 Bit 1 của chế độ
M0 0 Bit 0 của chế độ
Bảng 2.3: Tóm tắt thanh ghi TMOD
2.3.3.3. Thanh ghi đi ều khiển timer (TCON)
Thanh ghi TCON ch ứa các bit trạng thái và các bit đi ều khiển cho timer 0 và
ĐỒ ÁN VI ĐIỀU KHIỂN
SVTH : HOÀNG PHI LONG-LỚP 05CDT1 TRANG 10
Để tương thích với 8048 (có trứớc 8051)
Ba bit cao của TLX (TL0 và/hoăc TL1) không dùng
b)Chế độ định thời 16-bit(chế độ1):
Hoạt động như timer 16 bit đ ầy đủ.
Cờ báo tràn là bit TFx trong TCON có th ể đọc hoặc ghi bằng phầm mềm.
MSB của giá trị trong các thanh ghi timer là bit 7 c ủa THx và LBS là bit 0 của TLx.
Các thanh ghi timer (Tlx/THx) có th ể được đọc hoặc ghi bất cứ lúc nào bằng phầm
mềm.
c)Chế độ tự nạp lại 8 bit(chế độ 2):
TLx hoạt động như một timer 8 bit, trong khi đó THx v ẫn giữ nguyên giá trị được
nạp. Khi số đếm tràn tứ FFH đến 00H, không những cờ timer được set mà giá trị
trong THx đồng thời được nạp vào TLx. Việc đếm tiếp tục từ giá trị này lên đến
FFH xuống 00H và nạp lại... chế độ này rất thông dụng vì sự tràn timer xảy ra
trong những khoảng thời gian nhất định và tuần hoàn một khi đã khởi động TMOD
và THx.
d)Vấn đề xung clock:
+Nguồn xung clock được quết đinh bởi bit C/ ở thanh ghi TMOD n ếu nó ở
mức logic 0 thì nguồn xung được lấy ở mạch dao động bên trong chip (t ần số thạch
anh chia cho 12 đó là đ ầu vào của nguồn xung ).
+Nếu bit trên ở mức logic cao thì nguồn xung được lấy ở bên ngoài thông
qua chân P3.4 và P3.5.
2.3.4.Hoạt động của ngắt :
+Ngắt là sự xảy ra của một điều kiện - một sự kiện - làm cho chương trình
hiện hành bị tạm dừng, chương trình khác được thực hiện.
+Củng chính vì vậy nên ta có cảm giác là chip có khã n ăng xử lý nhiều
chương trình một lúc làm nâng cao tính hi ệu quả của con vi điều khiển, nhất là
trong kỹ thuật đáp ứng sự kiện với yêu cầu cập nhật một cách tự động.
+Chương trình xử lý không có sử dụng ngắt .
thực hiện mà có một ngắt ở mức thấp tác động thì lúc này chương trình không thể
dừng ngắt ở mức ưu tiên cao để thực hiện được mà nó phải thực hiện chương trình
ngắt ở mức cao xong rồi mới phục vụ ngắt ở mức thấp.
*Vấn đề được xem xét kỹ hơn đó là nếu có ngắt xuất hiện thì điều gì sẽ xãy
ra trong bộ vi điều khiển.
+Hoàn tất lệnh hiện hành.
+Thanh ghi PC cất vào Stack.
+Trạng thái các ngắt hiện thời được lưu giữ lại.
+Các ngắt được chận lại ở mức ngắt.
+Bộ đếm chương trình PC được nạp địa chỉ chương trình phục vụ ngắt.
+Chương trình phục vụ ngắt được thực hiện cho đến khi gặp lệnh RETI trở
về chương trình ở ban đầu.
2.3.4.2.Địa chỉ của vecto ngắt:
Nguyên nhân ngắt Cờ Địa chỉ
Ngắt ngoài 0 IE0 03h
Ngắt bộ định thời 0 TF0 0BH
Ngắt ngoài 1 IE1 13H
Ngắt do bộ định thời 1 TF1 1BH
Ngắt do cổng nối tiếp TI hay RI 23H
- Khảo sát thanh ghi liên quang đ ến ngắt.
MAIN
ISR
MAIN
EA - -
ES
ET1 EX1
ET0 EX0
7 6 5
4
3
+Các ngắt ngoài được lấy mẫu một lần ở mỗi chu kỳ máy , các ngỏ vào
này phải được duy trì tối thiểu 12 chu kỳ dao động để đảm bảo rằng việc lấy mẫu
là đúng. Nếu ngắt ngoài thuộc loại tác động cạnh, nguyên nhân ng ắt ngoài phải
được duy trì tại chân yêu cầu ở mức cao tối thiểu 1 chu kỳ và sau đó ở mức thấp
tối thiểu một chu kỳ và sau đó ở mức thấp tối thiểu một chu kỳ nữa để đảm bảo
rằng sự chuyển trạng thái được phát hiện. IE0 va IE1 tự động được xoá khi CPU
trỏ tới trình phục vụ ngắt tương ứng.
+Nếu ngắt ngoài thuộc loại tác động mức, nguyên nhân ngắt ngoài phải
được duy trì trạng thái tích cực cho đến khi ngắt theo yêu cầu thực sự được tạo ra.
Sau đó nguyên nhân ng ắt phải ở trạng thái thụ động trước khi trình phục vụ ngắt
được thực thi xong hoặc trước khi có một ngắt khác được tạo ra.
2.3.5.Tập lệnh của 8051 :
0
12
3
4
567
PX0PT0
PX1PT1
PS
---
0
12
3
4
567
IT0IE0
IT1IE1
TR0TF0
TR1TF1
DEC R7
b)Các lệnh logic:
+Thực hiệnh các phép toán logic như AND, OR, XOR và NOT:
Vd: giả sử thanh ghi A có giá tr ị là 30h và B có giá tr ị là 40 h khi đó ta ti ến hành
các phép toán sau:
ANL A,B : Khi đó thanh ghi A s ẽ nhận giá trị mới là:08h
ORL A,B : Khi đó thanh ghi A s ẽ nhận giá trị mới là:62h
XRL A,B : Khi đó thanh ghi A s ẽ nhận giá trị mới là:54h
c)Các nhóm lệnh di chuyển dữ liệu :
+Cũng giống như hầu hết các bộ vi xử lý thời gian mà CPU th ực hiện việc di
chuyển dữ liệu chiếm hết 2/3 thời gian hoạt động của nó.
+ Lệnh điển hình ở đây là : MOV <destination>,<source>.
d)Các lệnh xữ lý bit:
+Các bit có thể được set và xoá bằng 1 lệnh. Điều này rất linh hoạt mà ta
khó tìm thấy được ở bộ vi xử lý. Nó giúp ta ti ết kiệm được số cổng I/0 và thực hiện
kiểm tra điều khiển được dễ dàng hơn nhiều.
+Lệnh thường gặp ở trong trường hợp này đó là:
SETB <đối tượng> ; CLR <đối tượng>
e)Các lệnh rẽ nhánh:
ĐỒ ÁN VI ĐIỀU KHIỂN
SVTH : HOÀNG PHI LONG-LỚP 05CDT1 TRANG 14
+Trong thực tế không phải lúc nào chương tr ình lúc nào cũng đi theo
một đường thẳng nhất định mà đôi khi nó ch ịu tác động của yếu tố ngoại cảnh tác
động làm cho chiều hướng chương trình bị rẽ sang một hướng nào đó.
+Với yếu tố trên thì 8051 cung c ấp cho ta một số mã lệnh để thực hiện
công việc trên một cách dễ dàng.
+Các lệnh thường gặp đó là: JMP, JNB, JB, CJNE , DJNZ .v.v.
+Tuỳ theo các tình huốn cụ thể mà ta cho chương tr ình đi theo một
chiều hướng mong muốn.
B.GIỚI THIỆU CÁC LINH KIỆN LIÊN QUAN Đ ẾN MẠCH THIẾT KẾ:
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 12.1. Vị trí của các chân được mô tả trên hình 12.1 cho nhiều LCD
khác nhau.
1. Chân V
CC
, V
S S
và V
E E
: 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ữ