Port 0 có 2 chức năng: 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 IO, đối với thiết kế lớn có bộ nhớ mở rộng nó được kết hợp giữa bus địa chỉ và bu
Trang 1LỜI NÓI ĐẦU
Ngày nay với sự phát triển của khoa học kỹ thuật, kỷ nguyên công nghệ mới
đã và đang tiếp tục phát triển không ngừng nhằm thông minh hóa, hiện đại hóa các
hệ thống
Hệ thống nhúng (tiếng Anh: Embedded system) là một thuật ngữ để chỉ mộ t hệ thống cókhả năng tự trị được nhúng vào trong một môi trường hay một hệ thống mẹ, có vai tròđảm nhận một phần công việc cụ thể của hệ thống mẹ Hệ thống nhúng có thể là một hệthống phần cứng và cũng có thể là một hệ thống phần mềm Phát triển các hệ nhúng vàphần mềm nhúng là quốc sách của nhiều quốc gia trên thế giới, nhất là vào giai đoạnhậu PC hiện nay
Thiết kế các hệ thống nhúng là thiết kế phần cứng và phần mềm phối hợp vàđòi hỏi kiến thức đa ngành về điện tử, xử lý tín hiệu, vi xử lý, thuật điều khiển vàlập trình thời gian thực Qua đề tài bài tập lớn ” Lập trình hiệu ứng LED chạy hìnhtrái tim sử dụng vi điều khiển ” chúng em đã hiểu rõ thêm về mạch điện cơ bản, ứngdụng của nó trong đời sống thực tế và trên hết là hiểu được cấu tạo, chức năng của
vi điều khiển 89c52
Trong quá trình thực hiện do chưa có nhiều kinh nghiệm thực tế, lượng tài liệuthu thập được còn hạn hẹp nên chúng em gặp rất nhiều khó khăn trong việc thựchiện Dù đã rất cố gắng nhưng chắc chắn bài tập của nhóm em sẽ không tránh khỏithiếu sót Vậy chúng em mong nhận được các ý kiến đóng góp của thầy và các bạn
Cuối cùng chúng em xin gửi lời cảm ơn tới thầy ……… đã hướng dẫntận tình giúp chúng em hoàn thành bài tập này
Em xin chân thành cảm ơn!
Trang 2PHẦN 1: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN 89c52
AT89c52 cung cấp những đặc tính chuẩn như: 8 KByte bộ nhớ chỉ đọc có thểxóa và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O, 3TIMER/COUNTER 16 Bit, 5 vectơ ngắt có cấu trúc 2 mức ngắt, một Port nối tiếpbán song công, 1 mạch dao động tạo xung Clock và bộ dao động ON-CHIP
Các đặc điểm của chip AT89c52 được tóm tắt như sau:
• 8 KByte bộ nhớ có thể lập trình nhanh, có khả năng tới 1000 chu kỳ ghi/xoá
• Tần số hoạt động từ: 0Hz đến 24 MHz
• 3 mức khóa bộ nhớ lập trình
• 3 bộ Timer/counter 16 Bit
• 128 Byte RAM nội
• 4 Port xuất /nhập I/O 8 bit
• Giao tiếp nối tiếp
• 64 KB vùng nhớ mã ngoài
Trang 3• 64 KB vùng nhớ dữ liệu ngoại.
• 4 µs cho hoạt động nhân hoặc chia
Trang 42- CẤU TRÚC VI ĐIỀU KHIỂN 89c52 – CHỨC NĂNG TỪNG CHÂN
* Sơ đồ khối 89c52:
Trang 5• Sơ đồ các chân.
2.1 Sơ đồ chân 89c52
Mặc dù các thành viên của họ 8051 (ví dụ 8751, 89c52, 89C51, DS5000) đều
có các kiểu đóng vỏ khác nhau, chẳng hạn như hai hàng chân DIP (Dual In-LinePakage), dạng vỏ dẹt vuông QPF (Quad Flat Pakage) và dạng chip không có chân đỡLLC (Leadless Chip Carrier) thì chúng đều có 40 chân cho các chức năng khác nhau
như vào ra I/O, đọc RD, ghi WR, địa chỉ, dữ liệu và ngắt Cần phải lưu ý một sốhãng cung cấp một phiên bản 89c52 có 20 chân với số cổng vào ra ít hơn cho cácứng dụng yêu cầu thấp hơn Tuy nhiên vì hầu hết các nhà phát triển sử dụng chípđóng vỏ 40 chân với hai hàng chân DIP nên ta chỉ tập trung mô tả phiên bản này
AT8 9c5 2
AT 89 c5 2
Trang 62.2 Chức năng của các chân 89c52
Port 0 :từ chân 32 đến chân 39 (P0.0 _P0.7) Port 0 có 2 chức năng: 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 IO, đối với thiết kế lớn có bộ nhớ mở rộng nó được kết hợp giữa bus địa chỉ và bus dữ liệu.
Port 1: từ chân 1 đến chân 9 (P1.0 _ P1.7) Port 1 là port IO dùng cho giao tiếp với thiết bị bên ngoài nếu cần
Port 2: từ chân 21 đến chân 28 (P2.0 _P2.7) Port 2 là một port có tác dụng kép 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 bị dùng bộ nhớ mở rộng.
Port 3: từ chân 10 đến chân 17 (P3.0 _ P3.7) Port 3 là port có tác dụng kép Các chân của port này có nhiều chức năng, có công dụng chuyển đổi có liên hệ đến các đặc tính đặc biệt của 89c52 như ở bảng sau:
Bit Tên Chức năng chuyển đổi
Ngõ vào dữ liệu nối tiếp.
Ngõ xuất dữ liệu nối tiếp.
Ngõ vào ngắt cứng thứ 0.
Ngõ vào ngắt cứng thứ 1.
Ngõ vào TIMER/ COUNTER thứ 0.
Ngõ vào của TIMER/ COUNTER thứ 1.
Tín hiệu ghi dữ liệu lên bộ nhớ ngoài.
Tín hiệu đọc bộ nhớ dữ liệu ngoài.
Trang 7AT89c52 có bộ nhớ được tổ chức theo cấu trúc Harvard: có những vùng bộnhớ riêng biệt cho chương trình và dữ liệu Chương trình và dữ liệu có thể chứa bêntrong 89c52 nhưng 89c52 vẫn có thể kết nối với 64K byte bộ nhớ chương trình và64K byte dữ liệu bên ngoài.
Bản đồ bộ nhớ Data bên trong Chip 89c52 được tổ chức như sau:
Trang 8RAM bên trong AT89c52 được phân chia như sau:
Các bank thanh ghi có địa chỉ từ 00H đến 1FH
RAM địa chỉ hóa từng bit có địa chỉ từ 20H đến 2FH
3.2 RAM có thể định địa chỉ bit
Vùng địa chỉ từ 20h -2Fh gồm 16 byte có thể thực hiện như vùng RAM đadụng (truy xuât mỗi lần 8 bit) hay thực hiện truy xuất mỗi lần 1 bit bằng các lệnh xử
lý bit
3.3 Các bank thanh ghi
Vùng địa chỉ 00h – 1Fh được chia thành 4 bank thanh ghi: bank 0 từ 00h –07h, bank 1 từ 08h – 0Fh, bank 2 từ 10h – 17h và bank 3 từ 18h – 1Fh Các bankthanh ghi này được đại diện bằng các thanh ghi từ R0 đến R7 Sau khi khởi động thì
hệ thống bank 0 được chọn sử dụng
Do có 4 bank thanh ghi nên tại một thời điểm chỉ có một bank thanh ghi đượctruy xuất bởi các thanh ghi R0 đến R7 Viêc thay đổi bank thanh ghi được thực hiệnthông qua thanh ghi từ trạng thái chương trình (PSW)
Trang 93.4 Các thanh ghi có chức năng đặc biệt
Các thanh ghi trong 89c52 được định dạng như một phần của RAM trên chip
vì vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi bộ đếm chương trình vàthanh ghi lệnh vì các thanh ghi này hiếm khi bị tác động trực tiếp) Cũng như R0đến R7, 89c52 có 21 thanh ghi có chức năng đặc biệt (SFR: Special FunctionRegister) ở vùng trên của RAM nội từ địa chỉ 80H đến 0FFH
Sau đây là một vài thanh ghi đặc biệt thường được sử dụng:
3.4.1 Thanh ghi trạng thái chương trình (PSW: Program Status Word)
PSW.3 RS0 D3H Register Bank Select 0
00=Bank 0; address 00H÷07H01=Bank 1; address 08H÷0FH10=Bank 2; address 10H÷17H11=Bank 3; address 18H÷1FH
Chức năng từng bit trạng thái chương trình
- Cờ Carry CY (Carry Flag): Cờ nhớ thường nó được dùng cho các lệnh toánhọc: C =1 nếu phép toán cộng có sự tràn hoặc phép trừ có mượn và ngược lại
C = 0 nếu phép toán cộng không tràn và phép trừ không có mượn
Trang 10- Cờ Carry phụ AC (Auxiliary Carry Flag): Khi cộng những giá trị BCD(Binary Code Decimal), cờ nhớ phụ AC được set nếu kết quả 4 bit thấp nằmtrong phạm vi điều khiển 0AH - 0FH Ngược lại AC = 0
- Cờ 0 (Flag 0):
Cờ 0 (F0) là 1 bit cờ đa dụng dùng cho các ứng dụng của người dùng
- Những bit chọn bank thanh ghi truy xuất:
RS1 và RS0 quyết định dãy thanh ghi tích cực Chúng được xóa sau khi reset
hệ thống và được thay đổi bởi phần mềm khi cần thiết
Tùy theo RS1, RS0 = 00, 01, 10, 11 sẽ được chọn Bank tích cực tương ứng làBank 0, Bank1, Bank2 và Bank3
Trang 113.4.2 Thanh ghi TIMER
Vi Điều Khiển 89c52 có 3 timer 16 bit, mỗi timer có bốn cách làm việc Người
ta sử dụng các timer để:
o Định khoảng thời gian
o Đếm sự kiện
o Tạo tốc độ baud cho port nối tiếp trong 89c52
Trong các ứng dụng định khoảng thời gian, người ta lập trình timer ở nhữngkhoả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 ngõ vào hoặc gửi sự kiện racá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)
3.4.3 Thanh ghi ngắt (INTERRUPT)
Một ngắt là sự xảy ra một điều kiện, một sự kiện mà nó gây ra treo tạm thời thời chương trình chính trong khi điều kiện đó được phục vụ bởi một chương trình khác.
Các ngắt đóng một vai trò quan trọng trong thiết kế và cài đặt các ứng dụng viđiều khiển Chúng cho phép hệ thống đáp ứng bất đồng bộ với một sự kiện và giảiquyết sự kiện đó trong khi một chương trình khác đang thực thi
- Tổ chức ngắt của 89c52:
Có 5 nguồn ngắt ở 89c52: 2 ngắt ngoài, 2 ngắt từ timer và 1 ngắt port
nối tiếp Tất cả các ngắt theo mặc nhiên đều bị cấm sau khi reset hệ thống và đượccho phép từng cái một bằng phần mềm Mức độ ưu tiên của các ngắt được lưu trongthanh ghi IP (Interrupt Priority) hay nói cách khác thanh ghi IP cho phép chọn mức
ưu tiên cho các ngắt (giá trị thanh ghi IP khi reset là 00h)
Trang 12Bit Ký hiệu Địa chỉ bit Mô tả
IP.5 ET2 BDH Chọn mức ưu tiên cao (=1) hay thấp (=0)
tại timer 2IP.4 ES BCH Chọn mức ưu tiên cao (=1) hay thấp (=0)
tại cổng nối tiếp
IP.3 ET1 BBH Chọn mức ưu tiên cao (=1) hay thấp (=0)
tại timer 1IP.2 EX1 BAH Chọn mức ưu tiên cao (=1) hay thấp (=0)
tại ngắt ngoài 1IP.1 ET0 B9H Chọn mức ưu tiên cao (=1) hay thấp (=0)
tại timer 0IP.0 EX0 B8H Chọn mức ưu tiên cao (=1) hay thấp (=0)
tại ngắt ngoài 0Tóm tắt thanh ghi IP
Nếu 2 ngắt xảy ra đồng thời thì ngắt nào có nào có mức ưu tiên cao hơn sẽđược phục vụ trước
Nếu 2 ngắt xảy ra đồng thời có cùng mức ưu tiên thì thứ tự ưu tiên đượcthực hiện từ cao đến thấp như sau: ngắt ngoài 0 – timer 0 – ngắt ngoài 1 – timer 1 –cổng nối tiếp – timer 2
Trang 13 Nếu chương trình của một ngắt có mức ưu tiên thấp đang chạy mà có mộtngắt xảy ra với mức ưu tiên cao hơn thì chương trình này tạm dừng để chạy mộtchương trình khác có mức ưu tiên cao hơn.
- Cho phép và cấm ngắt:
Mỗi nguồn ngắt được cho phép hoặc cấm ngắt qua một thanh ghi chức năng đặt biệt có định địa chỉ bit IE (Interrupt Enable: cho phép ngắt) ở địa chỉ A8H
-Các cờ ngắt:
Khi điều kiện ngắt xảy ra thì ứng với từng loại ngắt mà loại cờ đó được đặt lên mức cao để xác nhận ngắt
Ngắt Cờ Thanh ghi SFR và vị trí bit
IE.5 ET2 ADH Cho phép ngắt từ Timer 2 (8052)
IE.4 ES ACH Cho phép ngắt port nối tiếp
IE.3 ET1 ABH Cho phép ngắt từ Timer 1
IE.1 ET0 A9H Cho phép ngắt từ Timer 0
Tóm tắt thanh ghi IE
Trang 14Bên ngoài 0 IE0 TCON.1
Trang 17MOV P2,#0
MOV P1,#0
SETB P2.0
SETB P1.4
Trang 21; -• Hình mô phỏng qua Proteus
Trang 23Bản mạch chính:
Trang 242- Linh kiện sử dụng cho bài tập.a- Vi điều khiển 89c52.
b- Transistor H1061:
Trang 25c- Điện trở.
d- Thạch anh
e- Tụ 33 pF
Trang 26f- Tụ hóa 10pF
g- LED đỏ
g- Dây nối
Trang 27PHẦN 3: NHẬN XÉT CỦA GIẢNG VIÊN.