Nhóm chân điều khiển vào/ra:
Port 0:
gồm 8 chân (từ chân 32 đến 39) có hai chức năng:
-Chức năng xuất/nhập :các chân này được dùng để nhận tín hiệu từ bên ngoài vào để xử lí, hoặc dùng để xuất tín hiệu ra bên ngoài, chẳng hạn xuất tín hiệu để điều khiển led đơn sáng tắt.
- Chức năng là bus dữ liệu và bus địa chỉ (AD7-AD0) : 8 chân này (hoặc Port 0) còn làm nhiệm vụ lấy dữ liệu từ ROM hoặc RAM ngoại (nếu có kết nối với bộ nhớ ngoài), đồng thời Port 0 còn được dùng để định địa chỉ của bộ nhớ ngoài.
Port 1 (P1):
gồm 8 chân (từ chân 1 đến chân 8), chỉ có chức năng làm các đường xuất/nhập, không có chức năng khác.
Port 2 (P2) :
gồm 8 chân (từ chân 21 đến chân 28) có hai chức năng:
-Chức năng xuất/nhập
-Chức năng là bus địa chỉ cao (A8-A15): khi kết nối với bộ nhớ ngoài có dung lượng lớn,cần 2 byte để định địa chỉ của bộ nhớ, byte thấp do P0 đảm nhận, byte cao do P2 này đảm nhận.
Port 3 (P3):
gồm 8 chân (từ chân 10 đến 17):
Chức năng xuất/nhập
Với mỗi chân có một chức năng riêng:
P3.0 RxD : Ngõ vào nhận dữ liệu nối tiếp
P3.1 TxD : Ngõ xuất dữ liệu nối tiếp
P3.2 INT0: Ngõ vào ngắt cứng thứ 0
P3.3 INT1: Ngõ vào ngắt cứng thứ 1
P3.4 T0 : Ngõ vào của Timer/Counter thứ 0
25 trang |
Chia sẻ: netpro | Lượt xem: 9965 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đề tài Dùng vi điều khiển IC 89s52 điều khiển chạy các hiệu ứng trên các led được xếp thành hình hai trái tim lồng nhau, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BÀI TẬP LỚN:
MÔN:KỸ THUẬT LẬP TRÌNH NHÚNG
ĐỀ TÀI:
Dùng vi điều khiển IC 89s52 điều khiển chạy các hiệu ứng trên các led được xếp thành hình hai trái tim lồng nhau.
Giảng viên hướng dẫn: Phạm Quốc Thịnh
Nhóm sinh viên thực hiện đề tài:
Nguyễn Ngọc Trường
Lê Văn Nguyên
Nguyễn Thị Minh Hiến
Vũ Thị Huệ
Đoàn Thị Vẻ
Hoàng Văn Thơm
Phụ lục
Lời nói đầu
Giới thiệu vi điều khiển AT89s52
Tác dụng của các linh kiện trong mạch
Sơ đồ nguyên lý
Nguyên lý hoạt động của mạch
Code
Hình ảnh mô phỏng
Tài liệu tham khảo
Lời nói đầu:
Như chúng ta đã biết yêu cầu điều khiển càng cao thì hệ thống càng phức tạp và nếu yêu cầu điều khiển có đơn giản ví dụ như điều khiển đóng mở một con led theo một thời gian yêu cầu nào đó thì hệ thống vi xử lí cũng phải có đầu đủ các khối:bộ vi xử lí,bộ nhớ,các IC ngoại vi.
Để kết nối các khối trên tạo thành một hệ thống đòi hỏi người thiết kế phải hiểu biết các khối.hệ thống tạo ra khá phức tạp ,chiếm nhiều không gian mạch in và in ấn.Một lí do nữa là vi xử lí thường xử lí dữ liệu theo byte hoặc word trong khi đó các đói tượng điều khiển trong công nghiệp thường điều khiển theo bit.
Chính vì sự phức tạp này nên các nhà thiết kế tạo đã tích hợp một ít bộ nhớ và một số các thiết bị ngoại vi cùng với vi xử lí tạo thành một IC gọi là vi điều khiển.
Khi vi điều khiển ra đời đã mang lại sư tiện lợi là dễ dàng sử dụng trong điều khiển công nghiệp, việc sử dụng vi điều khiển không đòi hỏi người sử dụng phải hiểu biết về một lượng kiến thức quá nhiều như sử dụng vi xử lí.
Có rất nhiều hãng chế tạo được vi điều khiển ,hãng sản xuất là ATMEL . Có nhiều họ vi điều khiển mang cácmax số khác nhau,một trong số họ nổi tiếng là họ MCS-51
Song song với họ MCS-51 là họ MCS-52 có nhiều timer hơn họ MCS-51 một timer và dung lượng bộ nhớ nội lớn gấp đôi tức 8Kbyte .
Ứng dụng của vi điều khiển rất nhiều trong các hệ thống điều khiển công nghiệp,các dây chuyền sản xuất,các bộ điều khiển lập trình,máy giặt,máy điều hòa nhiệt độ…..
Sau đây nhóm chúng em xin trình bày một trong những ứng dụng của vi điều khiển.Đó là lập trình cho vi điều khiển 89S52 điều khiển chạy các LED đơn xếp thành hình hai trái tim lồng nhau.
I.giới thiệu về IC 89s52:
1.Sơ lược về IC89s52:
Năm 1980 khi intel tung ra chip 8051, bộ Vi điều khiển đầu tiên của họ MCS-51 và là chuẩn công nghệ cho nhiều họ Vi điều khiển được sản xuất sau này.
Năm 1980 Intel công bố chíp 8051(80C51), bộ vi điều khiển đầu tiên của họ vi điều khiển MCS-51bao gồm :
+4KB ROM,
+128 byte RAM,
+32 đường xuất nhập,
+1 port nối tiếp và 2 bộ định thời 16 bit.
Tiếp theo sau đó là sự ra đời của chip 8052,8053,8055 với nhiều tính năng được cải tiến . Hiện nay Intel không còn cung cấp các loại Vi điều khiển họ MCS-51 nữa, thay vào đó các nhà sản xuất khác như Atmel, Philips/signetics, AMD, Siemens, Matra&Dallas, Semiconductors được cấp phép làm nhà cung cấp thứ hai cho các chip của họ MSC-51.
Chip Vi điều khiển được sử dụng rộng rãi trên thế giới cũng như ở Việt Nam hiện nay là Vi điều khiển của hãng Atmel.các mã số chip được thay đổi chút ít khi được Atmel sản xuất. Mã số 80 chuyển thành 89, chẳng hạn 80C52 của Intel khi sản xuất ở Atmel mã số thành 89C52 (Mã số đầy đủ: AT89C52) với tính năng chương trình tương tự như nhau. Tương tự 8051,8053,8055 có mã số tương đương ở Atmel là 89C51,89C53,89C55.
Sau khoảng thời gian cải tiến và phát triển, hãng Atmel tung ra thị trường dòng Vi điều khiển mang số hiệu 89Sxx với nhiều cải tiến và đặc biệt là có thêm khả năng nạp chương trình theo chế độ nối tiếp rất đơn giản và tiện lợi cho người sử dụng.
Dung lượng RAM
Dung lượng ROM
Chế độ nạp:
89S51
128 byte
4 Kbyte
nối tiếp
89S52
128 byte
8 Kbyte
nối tiếp
89S53
128 byte
12 Kbyte
nối tiếp
89S55
128 byte
20 Kbyte
nối tiếp
2.Sơ đồ chân:
Nhóm chân nguồn:
VCC: chân 40, điện áp cung cấp 5VDC
GND: chân 20(hay nối Mass).
Nhóm chân dao động: gồm chân 18 và chân 19 (Chân XTAL1 và XTAL2), cho phép ghép nối thạch anh vào mạch dao động bên trong vi điều khiển, được sử dụng để nhận nguồn xung clock từ bên ngoài để hoạt động, thường được ghép nối với thạch anh và các tụ để tạo nguồn xung clock ổn định.
.XTAL 1: Ngõ vào đến mạch khuếch đại dao động đảo và ngõ vào đến mạch tạo xung clock bên trong.
.XTAL 2: Ngõ ra từ mạch khuếch đại dao động đảo.
Chân chọn bộ nhớ chương trình: chân 31 (EA/VPP): dùng để xác định chương trình thực hiện được lấy từ ROM nội hay ROM ngoại. - Chân 31 nối mass: sử dụng bộ nhớ chương trình bên ngoài vi điều khiển
-Chân 31 nối VCC: sử dụng bộ nhớ chương trình (4Kb) bên trong vi điều
RST(Chân RESET): Ngõ vào RST ở chân 9 là ngõ vào Reset dùng để thiết lập trạng thái ban đầu cho vi điều khiển. Hệ thống sẽ được thiết lập lại các giá trị ban đầu nếu ngõ này ở mức 1 tối thiểu 2 chu kì máy.
Chân cho phép bộ nhớ chương trình PSEN:PSEN ( program store enable) tín hiệu được xuất ra ở chân 29 dùng để truy xuất bộ nhớ chương trình ngoài. Chân này thường được nối với chân OE (output enable) của ROM ngoài. Khi vi điều khiển làm việc với bộ nhớ chương trình ngoài, chân này phát ra tín hiệu kích hoạt ở mức thấp và được kích hoạt 2 lần trong một chu kì máy Khi thực thi một chương trình ở ROM nội, chân này được duy trì ở mức logic không tích cực (logic 1) (Không cần kết nối chân này khi không sử dụng đến).
Chân ALE :(chân cho phép chốt địa chỉ-chân 30) Khi Vi điều khiển truy xuất bộ nhớ từ bên ngoài, port 0 vừa có chức năng là bus địa chỉ, vừa có chức năng là bus dữ liệu do đó phải tách các đường dữ liệu và địa chỉ. Tín hiệu ở chân ALE dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và các đường dữ liệu khi kết nối chúng với IC chốt. Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động đưa vào Vi điều khiển, như vậy có thể dùng tín hiệu ở ngõ ra ALE làm xung clock cung cấp cho các phần khác của hệ thống. *Ghi chú : khi không sử dụng có thể bỏ trống chân này .
Nhóm chân điều khiển vào/ra:
Port 0:
gồm 8 chân (từ chân 32 đến 39) có hai chức năng: -Chức năng xuất/nhập :các chân này được dùng để nhận tín hiệu từ bên ngoài vào để xử lí, hoặc dùng để xuất tín hiệu ra bên ngoài, chẳng hạn xuất tín hiệu để điều khiển led đơn sáng tắt.
- Chức năng là bus dữ liệu và bus địa chỉ (AD7-AD0) : 8 chân này (hoặc Port 0) còn làm nhiệm vụ lấy dữ liệu từ ROM hoặc RAM ngoại (nếu có kết nối với bộ nhớ ngoài), đồng thời Port 0 còn được dùng để định địa chỉ của bộ nhớ ngoài.
Port 1 (P1): gồm 8 chân (từ chân 1 đến chân 8), chỉ có chức năng làm các đường xuất/nhập, không có chức năng khác.
Port 2 (P2) :gồm 8 chân (từ chân 21 đến chân 28) có hai chức năng: -Chức năng xuất/nhập -Chức năng là bus địa chỉ cao (A8-A15): khi kết nối với bộ nhớ ngoài có dung lượng lớn,cần 2 byte để định địa chỉ của bộ nhớ, byte thấp do P0 đảm nhận, byte cao do P2 này đảm nhận.
Port 3 (P3): gồm 8 chân (từ chân 10 đến 17): Chức năng xuất/nhập Với mỗi chân có một chức năng riêng:
P3.0 RxD : Ngõ vào nhận dữ liệu nối tiếp P3.1 TxD : Ngõ xuất dữ liệu nối tiếp P3.2 INT0: Ngõ vào ngắt cứng thứ 0 P3.3 INT1: Ngõ vào ngắt cứng thứ 1 P3.4 T0 : Ngõ vào của Timer/Counter thứ 0 P3.5 T1 : Ngõ vào của Timer/Counter thứ 1 P3.6 WR : Ngõ điều khiển ghi dữ liệu lên bộ nhớ ngoài P3.7 RD : Ngõ điều khiển đọc dữ liệu từ bộ nhớ bên ngoài P1.0 T2 : Ngõ vào của Timer/Counter thứ 2 P1.1 T2X : Ngõ Nạp lại/thu nhận của Timer/Counter thứ 2
II.Tác dụng của các linh kiện trong mạch:
AT89S52
Chức năng: Là vi điều khiển chính của mạch.
.8 KB EPROM bên trong.
.256 Byte RAM nội.
.4 Port xuất /nhập I/O 8 bít.
.3 bộ định thời 16 bit
.Watch dog timer
.Các đặc điểm khác giống AT89C51
2.thạch anh 12MHz:
Chức năng: Là nguồn tạo xung nhịp dao động clock ổn định (12 MHz) cho dao động của 8051. Thạch anh sẽ được gắn vào chân XTAL1 và XTAL2 (Chân số 18 và 19) của 8051.
3.tụ gốm:
Chức năng: Lọc nhiễu cho dao động thạch anh. 2 tụ gốm 33pF sẽ được nối một đầu với chân của thạch anh, đầu còn lại đấu ra Mass.
4.tụ hóa 10µF:
Chức năng: Tụ hóa 10μF được gắn đầu âm vào chân reset, đầu dương lên nguồn. Khi cấp điện cho mạch, tụ sẽ phóng điện khiến chân reset bật lên mức cao, khi đó toàn bộ hệ thống sẽ được nạp lại từ đầu. Khi đang vận hành thì tụ hóa ngăn dòng đi vào chân reset.
5.điện trở 220Ω:
Có tác dụng hạn chế dòng điện và phân cực cho transistor
6.transistor:
Có công dụng như một khóa.
7.các con LED:
III.SƠ ĐỒ NGUYÊN LÝ:
IV.Nguyên lý hoạt động của mạch:
IC điều khiển chính 89S52 điều khiển toàn bộ hoạt động của mạch, chương trình code được nạp vào IC (code được dịch ra file .hex rồi đưa vào IC qua bộ nạp nối cổng LPT bằng chương trình nạp Aec_isp.exe). Code lập trình cho các port của IC 89S52, điều khiển đèn LED sáng ở mức 1.
Các cổng sử dụng để lập trình:
.Port1 (p1.0 đến p1.5)
.port2 (p2.0 đến p2.7)
.port3 (p3.0 đến p3.3)
Mỗi chân sử dụng để lập trình cho vi điều khiển xuất dữ liệu sẽ được nối với cực B của transistor loại PNP thông qua 1 trở 220Ω để phân cực. Transistor ở đây mang nhiệm vụ nhưư 1 khóa. Cực E của transistor A1015(transistor thuận PNP)nối với nguồn +5V, cực C sẽ qua trở và nối ra LED. Khi tín hiệu điều khiển của IC ra mức 1, transistor sẽ được phân cực thuận, khóa sẽ đóng cho phép dòng điện từ cực E đi đến cực C. Khi tín hiệu điều khiển ở mức 0, khóa mở, dòng điện sẽ bị cắt,LED tắt.
Cách nối các LED:
Các LED nối vào cùng một chân của vi điều khiển được nối song song với nhau.
Đầu katot của tất cả các LED được nối đất(nối mass),trở 220 được sử dụng để hạn dòng vào LED(LED chịu được dòng tối đa là 10mA).
V.Chương trình ASM lập trình cho vi điều khiển:
; CHUONG TRINH CHAY LED TRAI TIM
ORG 0000H
BEGIN:
MOV A,#0FFFFH
MOV R1,#7
DRAGON1:
MOV P1,A
MOV P2,A
MOV P3,A
ACALL DELAY
CPL A
DJNZ R1,DRAGON1
;
MOV A,#1B
MOV R1,#8
MOV P1,#0H
MOV P2,#0H
DRAGON2:
MOV P2,A
ACALL DELAY
RL A
DJNZ R1,DRAGON2
;
MOV A,#1B
MOV R1,#8
MOV P2,#0H
MOV P1,#0H
DRAGON3:
MOV P1,A
ACALL DELAY
RL A
DJNZ R1,DRAGON3
;
MOV A,#10000000B
MOV R1,#8
MOV P2,#0H
MOV P1,#0H
DRAGON4:
MOV P1,A
ACALL DELAY
RR A
DJNZ R1,DRAGON4
;
MOV A,#10000000B
MOV P1,#0H
MOV P2,#0H
MOV R1,#7
DRAGON5:
MOV P2,A
ACALL DELAY
RR A
DJNZ R1,DRAGON5
;
MOV R1,#8
MOV P3,#0H
MOV P1,#0H
MOV P2,#0H
MOV A,#0FFFFH
DRAGON6:
MOV P1,A
MOV P2,A
ACALL DELAY
CPL A
DJNZ R1,DRAGON6
;
MOV R1,#8
MOV P3,#0H
MOV P1,#0H
MOV P2,#0H
MOV A,#0FFFFH
DRAGON7:
MOV P3,A
ACALL DELAY
CPL A
DJNZ R1,DRAGON7
;
MOV A,#1H
MOV P1,#0FFFFH
MOV P2,#0FFFFH
MOV P3,#0H
MOV R1,#7
DRAGON8:
MOV P3,A
ACALL DELAY
RR A
DJNZ R1,DRAGON8
;
MOV A,#1H
MOV P1,#0FFFFH
MOV P2,#0FFFFH
MOV P3,#0H
MOV R1,#7
DRAGON9:
MOV P3,A
ACALL DELAY
RL A
DJNZ R1,DRAGON9
;
MOV A,#01010101B
MOV P1,#0H
MOV P2,#0H
MOV P3,#0H
MOV R1,#8
DRAGON10:
MOV P2,A
ACALL DELAY
RR A
DJNZ R1,DRAGON10
;
MOV A,#01010101B
MOV P1,#0H
MOV P2,#0H
MOV P3,#0H
MOV R1,#8
DRAGON11:
MOV P1,A
ACALL DELAY
RR A
DJNZ R1,DRAGON11
;
MOV A,#01010101B
MOV P1,#0H
MOV P2,#0H
MOV P3,#0H
MOV R1,#8
DRAGON12:
MOV P1,A
MOV P2,A
ACALL DELAY
RR A
DJNZ R1,DRAGON12
;
MOV A,#01010101B
MOV P1,#0H
MOV P2,#0H
MOV P3,#0H
MOV R1,#8
DRAGON13:
MOV P3,A
ACALL DELAY
RR A
DJNZ R1,DRAGON13
LJMP BEGIN
DELAY:
MOV R5,#255
M1: MOV R6,#254
M2: MOV R7,#2
M3: DJNZ R7,M3
DJNZ R6,M2
DJNZ R5,M1
NOP
NOP
NOP
RET
END
VI.một số hình ảnh mô phỏng: