CHƯƠNG I: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C511.1.Giới thiệu vi điều khiển 89C51AT89C51 là một hệ vi tính 8 bit đơn chíp CMOS có hiệu suất cao,công suất nguồn tiêu thụ thấp và có 4Kbyte bộ nhớ ROM Flash xoá được lập trình được. Chip này được sản xuất dựa vào công nghệ bộ nhớ không mất nội dung có độ tích hợp cao của Atmel. Chip AT89C51 cũng tương thích với tập lệnh và các chân ra của chuẩn công nghiệp MCS51. Flash trên chip này cho phép bộ nhớ chương trình được lập trình lại trên hệ thống hoặc bằng bộ lập trình bộ nhớ không mất nội dung qui ước. Bằng cách kết hợp một CPU linh hoạt 8 bit với Flash trên một chip đơn thể, Atmel 89C51 là một hệ vi tính 8 bit đơn chip mạnh cho ta một giải pháp có hiệu quả về chi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có các đặc trưng sau: 4Kbyte Flash, 128 byte Ram, 32 đường xuất nhập, hai bộ định thời đếm 16 bit, một cấu trúc ngắt 2 mức ưu tiên và 5 nguyên nhân ngắt, một port nối tiếp song công, mạch dao động và tạo xung clock trên chip. Ngoài ra AT8951 được thiết kế với logic tĩnh cho hoạt đông có tần số giảm xuống 0 và hỗ trợ hai chế độ tiết kiệm năng lượng được lựa chọn bằng phần mềm. Chế độ nghỉ dừng CPU trong khi vẫn cho phép RAM, các bộ định thời đếm, port nối tiếp và hệ thống ngắt tiếp tục hoạt động. Chế độ nguồn giảm duy trì nội dung của RAM nhưng không cho mạch dao động cung cấp xung clock nhằm vô hiệu hoá các hoạt động khác của chip cho đến khi có reset cứng tiếp theo. Các đặc điểm của 8951 được tóm tắt như sau:8 KB EPROM bên trong.128 Byte Ram nội.4 Port xuất nhập IO 8 bit.
Trang 1BÁO CÁO THIẾT KẾ MẠCH GHÉP NỐI 8 LED ĐƠN CỔNG P1 CỦA at89c51 VIẾT CHƯƠNG TRÌNH ĐIỀU KHIỂN CÁC LED SÁNG THEO
HIỆU ỨNG SAU:
-Sáng lần lượt led 1 đến led 8 trễ cách nhau 1s
-Sáng từ giữa sang 2 bên thời gian trễ cách nhau 0,5s
-LED sáng nhấp nháy cách nhau 1s
(full báo cáo demo slide)
Thành viên:
- Đỗ Tấn Sang (nhóm trưởng)
- Lê Thị Hợi
- Nguyễn Thị Phương
- Trần Thanh Tuấn
- Trần Văn Sáng.
Trang 2CHƯƠNG I: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51
AT89C51 là một hệ vi tính 8 bit đơn chíp CMOS có hiệu suất cao,công suất nguồn tiêu thụ thấp và có 4Kbyte bộ nhớ ROM Flash xoá được lập trình được Chip này được sản xuất dựa vào công nghệ bộ nhớ không mất nội dung có độ tích hợp cao của Atmel
Chip AT89C51 cũng tương thích với tập lệnh và các chân ra của chuẩn công nghiệp MCS-51 Flash trên chip này cho phép bộ nhớ chương trình được lập trình lại trên hệ thống hoặc bằng bộ lập trình bộ nhớ không mất nội dung qui ước Bằng cách kết hợp một CPU linh hoạt 8 bit với Flash trên một chip đơn thể, Atmel 89C51 là một hệ vi tính 8 bit đơn chip mạnh cho ta một giải pháp có hiệu quả về chi phí và rất linh hoạt đối với các ứng dụng điều khiển
AT89C51 có các đặc trưng sau: 4Kbyte Flash, 128 byte Ram, 32 đường xuất nhập, hai bộ định thời / đếm 16 bit, một cấu trúc ngắt 2 mức ưu tiên và 5 nguyên nhân ngắt, một port nối tiếp song công, mạch dao động và tạo xung clock trên chip
Ngoài ra AT8951 được thiết kế với logic tĩnh cho hoạt đông có tần số giảm xuống 0 và hỗ trợ hai chế độ tiết kiệm năng lượng được lựa chọn bằng phần mềm
Chế độ nghỉ dừng CPU trong khi vẫn cho phép RAM, các bộ định thời / đếm, port nối tiếp và hệ thống ngắt tiếp tục hoạt động
Chế độ nguồn giảm duy trì nội dung của RAM nhưng không cho mạch dao động cung cấp xung clock nhằm vô hiệu hoá các hoạt động khác của chip cho đến khi có reset cứng tiếp theo
Các đặc điểm của 8951 được tóm tắt như sau:
Trang 3 8 KB EPROM bên trong.
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
64 KB vùng nhớ dữ liệu ngoại
Xử lí Boolean (hoạt động trên bit đơn)
210 vị trí nhớ có thể định vị bit
4 μs cho hoạt động nhân hoặc chia.s cho hoạt động nhân hoặc chia
Sơ đồ khối của 89C51:
1.2.1.Sơ đồ chân IC 89C51:
Trang 4Hình 1.2 Sơ đồ chân IC 89C51
1.2.2 Chức năng các chân của IC 89C51:
- 89C51 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 : 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 IO Đố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
Port 1: là port IO 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 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
Trang 5 Port 2: là 1 port có tác 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 bị dùng
bộ nhớ mở rộng
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:
Các ngõ tín hiệu điều khiển :
o 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ệnh củ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
o 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 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
Trang 6 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
o 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
o 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
o Các ngõ vào bộ dao động X1, X2:
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
o Chân 40 (Vcc) được nối lên nguồn 5V
1.3 Các thanh ghi điều khiển Timer
1.3.1 Thanh ghi điều khiển chế độ timer TMOD (timer mode register)
Trang 7- Thanh ghi mode gồm hai nhóm 4 bit là: 4 bit thấp đặt mode hoạt động cho Timer 0 và 4 bit cao đặt mode hoạt động cho Timer 1 8 bit của thanh ghi TMOD được tóm tắt như sau:
Hai bit M0 và M1 của TMOD để chọn mode cho Timer 0 hoặc Timer 1
- TMOD không có bit định vị, nó thường được LOAD một lần bởi phần mềm
ở đầu chương trình để khởi động mode Timer Sau đó sự định giờ có thể dừng
Trang 8lại, được khởi động lại như thế bởi sự truy xuất các thanh ghi chức năng đặc biệt của Timer khác
1.3.2 Thanh ghi điều khiển timer TCON (timer control register):
- Thanh ghi điều khiển bao gồm các bit trạng thái và các bit điều khiển bởi Timer 0 và Timer 1 Thanh ghi TCON có bit định vị Hoạt động của từng bit được tóm tắt như sau :
Trang 9CHƯƠNG 2: ĐIỀU KHIỂN KHIỂN LED ĐƠN
2.1 Nguyên lý điều khiển LED
kiến thức về phần cứng (Hardware) để khi nhìn sơ đồ mạch có thể hiểu được khi nào thì led sẽ sáng và khi nào led sẽ tắt.
Có những mạch khi xuất mức 0 (0V) ra chân của vi điều khiển thì led sáng, nhưng cũng có những mạch khi xuất mức 1(5V) ra chân của vi điều khiển thì led mới sáng Nhưng cho dù có ở mạch nào thì để điều khiển led đơn sáng thì phải tuân thủ nguyên tắc led sáng khi có dòng điện chạy qua led, nghĩa là phải có sự chênh lệch áp giữa hai cực Anot và Katot của led Hai dạng mạch điện điều khiển led đơn dùng vi điều khiển :
Hình 2 1 Led sáng mức 0
Trang 10Hình 2 2 Led sáng mức 1
Giải thích sơ đồ hình 2.1: Để led sáng thì cần làm sao cho có dòng điện chạy qua led, nghĩa là có sự chênh lệch áp giữa 2 cực Anot, Katot của led Nhìn vào hình 2.1 ta thấy cực Anot của led được nối qua trở 330R lên nguồn 5V, vậy để có dòng điện chạy qua led ta cần xuất mức 0 (0V) ra chân của vi điều khiển, khi đó led sẽ sáng, và để tắt led ta sẽ xuất mức 1(5V) ra chân của vi điều khiển, khi đó
sẽ không có dòng chạy qua led và led sẽ tắt Dòng chạy qua led không được quá lớn nên chúng ta cần phải sử dụng trở hạn dòng để tránh cháy led như trên 2 sơ
đồ đã cho
Sơ đồ hình 2.2 Ngược lại sơ đồ hình 2.1 cực katot của led được nối xuống đất
2.2 Viết chương trình
2.2.1 Thiết kế mạch mô phỏng
Trang 11Hình 2 3 Mạch mô phỏng 8 led đơn
2.2.2 Chương trình điều khiển 8 LED đơn
Khai báo thư viện:
#include <REGX51.H>
Tạo mảng hiệu ứng
Hàm tạo trễ sử dụng tần số thạch 12MHz, timer 1, che do 1, 116 bit
Hiệu ứng nhấp nháy có độ trễ 1s
Trang 12- Hiệu ứng led sáng từ giữa sang hai bên độ trễ 0.5s
- Hiệu ứng sáng dần từ 1-8 độ trễ 1s