Sơ lược về VĐK 8051
● Là bộ vi điều khiển lâu đời nhất và có lẽ được sử dụng phổ biến nhất (Intel MCS-51 năm 1981). Và có nhiều nhà cung cấp bộ VĐK này
● Các đặc điểm chủ yếu
- Bộ xử lý 8 bit
- 4 cổng I/O mỗi cổng 8 bit
- Tối đa có 64K ROM on-chip
- Bộ nhớ dữ liệu ngoài tối đa 64K
- Bộ nhớ mã lệnh bên ngoài tối đa 64K
- 2 bộ định thời, một cỗng nối tiếp
- 128 byte RAM on-chip
- Tốc độ thay đổi từ 12MHz
41 trang |
Chia sẻ: ngtr9097 | Lượt xem: 2558 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Đồ án Hiển thị đèn LED dùng vi điều khiển, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Đại Học Thái Nguyên
Khoa Công Nghệ Thông Tin
----------(----------
/
BÀI TẬP LỚN
Môn: Kỹ thuật lập trình nhúng
Đề Tài: Hiển thị đèn LED dùng vi điều khiển
Giáo viên hướng dẫn: Phạn Quốc Thịnh
Nhóm SV thực hiện:
1. Nguyễn Thọ Khang
2. Đinh Văn Toàn
3. Đỗ Trung Hiếu
4. Nguyễn Thị Thu
5. Lâm Thị Hương
6. Nguyễn Thị Thanh In
Thái Nguyên, tháng 5 năm 2010
MỤC LỤC
Phần 1 : Lý thuyết cơ sở
Sơ lược về VĐK 0851…………………………………………....... 3
Sơ đồ chân của 8051…………………………………….………… 4
Các linh kiện cơ bản và sơ đồ của chúng trong mạch………….. 7
89S52………………………………………………...…… 7
Tụ…………...………………………………………….…. 8
Điện trở………………………………………….........……10
16 tranzitor H1061………………………...………… … . 10
LED đơn……………………………………………......... 11
Phần 2: Sơ đồ nguyên lý
2.1 Sơ đồ tượng trưng……………………………………………..…… 12
Phần 3: Chương trình điều khiển bài toán
3.1 Code điều khiển mạch chạy chữ ICTU-TN………….…………. .. 13
PHẦN I: LÝ THUYẾT CƠ SỞ
1.1 Sơ lược về VĐK 8051
● Là bộ vi điều khiển lâu đời nhất và có lẽ được sử dụng phổ biến nhất (Intel MCS-51 năm 1981). Và có nhiều nhà cung cấp bộ VĐK này
● Các đặc điểm chủ yếu
- Bộ xử lý 8 bit
- 4 cổng I/O mỗi cổng 8 bit
- Tối đa có 64K ROM on-chip
- Bộ nhớ dữ liệu ngoài tối đa 64K
- Bộ nhớ mã lệnh bên ngoài tối đa 64K
- 2 bộ định thời, một cỗng nối tiếp
- 128 byte RAM on-chip
- Tốc độ thay đổi từ 12MHz
89C51 của Atmel
/
8051 của Intel
1.2 Sơ đồ chân của 8051:
/
♣Nhóm chân nguồn:
- VCC: chân 40, điện áp cung cấp 5VDC
- GND: chân 20
♣ Chân RESET: chân 9, tác động cao (trong thời gian tối thiểu 2 chu kì máy) cho phép khởi động lại hệ thống.
♣ Nhóm chân dao động: gồm chân 18 và chân 19, cho phép ghép nối thạch anh vào mạch dao động bên trong vi điều khiển
♣ Chân chọn bộ nhớ chương trình: chân 31 (EA/VPP
- 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 khiển.
♣Nhóm chân điều khiển vào/ ra:
♦ Port 01:
- Kí hiệu P1, gồm 8 chân I/O từ 1 đến 8. Các chân port 1 được kí hiệu là P1.0, P1.1,…., P1.7 và được dùng để giao tiếp với thiết bị bên ngoài khi có yêu cầu.
♦ Port 02:
- Kí hiệu P2, gồm 8 chân đa hợp I/O và địa chỉ cao, từ chân 21 đến 28. Khi không sử dụng bộ nhớ ngoài, P2 sử dụng như các I/O; khi sử dụng bộ nhớ ngoài, P2 thay thế 8 chân địa chỉ cao để giao tiếp với IC nhớ.
♦Port 0:
- Kí hiệu P0, gồm 8 chân đa hợp I/O, địa chỉ thấp và dữ liệu, từ chân 39 đến 32. Port 0 làm nhiệm vụ xuất nhập trong các thiết kế tối thiểu thành phần. Trong các thiết kế lớn, có bộ nhớ ngoài, port 0 trở thành bus địa chỉ và bus dữ liệu đa hợp
♦ Port 03:
Kí hiệu P3, gồm 8 chân đa hợp I/O và các tín hiệu khác, từ chân 10 đến 18. Khi không hoạt động thì Port 3 có những chức năng riêng.
♦RST
Ngõ vào reset (thiết lập lại trạng thái ban đầu). Tất cả các chân I/O được reset đến mức logíc ngay sau khi RST lên mức cao. Việc duy trì chân RST ở mức cao trong 2 chu kỳ máy trong khi mạch dao động đang hoạt động sẽ reset chip.
♦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.
/
Sơ đồ khối của 89C51
1.3 Các linh kiện cơ bản và vai trò của chúng trong mạch:
1.3.1 89S52
/
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
1.3.2 Tụ
+ 1 Tụ hóa : C3(10μF)
Khi cắm điện thì ngay lập tức phóng được vào chân RST, và khởi động lại toàn bộ hệ thống. Khi đang chạy thì ngăn dòng vào RST.
+ 1 Thạch anh
//
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.
+ 2 tụ gốm C1, C2:
Chức năng: Lọc nhiễu cho dao động thạch anh. 2 tụ gốm 22pF sẽ được nối một đầu với chân của thạch anh, đầu còn lại đấu ra mass.
/
1.3.3 Điện trở:
+ R1: Trở đệm chân RST,để hạ dòng vào chân RST.
+R2: Phân cực tranzitor.
+R3: Trở đệm LED có tác dụng hạn dòng cho Led (mỗi Led cần 10mA, dòng IB =0.45mA tùy thuộc vào hệ số khuếch đại của tranzitor và dòng IC).
1.3.4 16 Tranzitor H1061: Có chức năng như là một khóa (dùng H1061 công suất lớn, thông số cơ bản là: UCE=50V, ICsat =1.0 A, IB =0.2 A, IC=2.0A)
//
1.3.5 LED đơn
/
LED trên thực tế
/
Cấu tạo và kí hiệu của LED đơn
PHẦN II: SƠ ĐỒ NGUYÊN LÝ
2.1 Sơ đồ tượng trưng
Chú thích: Tất cả các cổng P2, P3 đều được nối với trở, tranzitor và LED
Đối với LED thì các chân dương được nối với nhau và nối tới trở R3 và nối với cực E của tranzitor, các chân âm được nối với nhau và nối về đất
Trong sơ đồ, với mỗi con LED tương ứng với một chữ , ngoài thực tế các LED được nối song song với nhau để tạo thành một chữ.
Hoạt động: Khi phân cực thuận (ở mức cao 1) thì tranzitor cho phép dòng từ C qua E làm LED sáng. Khi phân cực ngược (ở mức thấp 0) thì tranzitor đóng. Ngược lại nếu dùng mức tích cực âm thì mắc ngược lại
/
PHẦN III: CHƯƠNG TRÌNH ĐIỀU KHIỂN BÀI TOÁN
3.1 Code điều khiển mạch chạy chữ ICTU- TN
///////////////////KHAI BAO HANG////////////////////////////////
#include //
//
#define led3 P3 //
#define led2 P2 //
//
#define Ido P3_4 //
#define Cdo P3_7 //
#define T1do P3_2 //
#define Udo P3_0 //
#define daudo P3_1 //
#define T2do P3_3 //
#define Ndo P2_4 //
//
#define Itrang P2_1 //
#define Ctrang P2_3 //
#define T1trang P2_0 //
#define Utrang P2_2 //
#define dautrang P2_5 //
#define T2trang P2_6 //
#define Ntrang P2_7 //
int i; //
//============================================================//
////////////////////CHUONH TRINH PHU TRO////////////////////////
//Chuong trinh xoa led //
void xoa() //
{ //
led2=0; //
led3=0; //
} //
//Chuong trinh Delay //
void delay(int x) //
{ //
int i; //
for (i=0;i<x;i++) {} //
} //
//============================================================//
///////////////////////NHAY SANG DAN////////////////////////////
//Nhay vong nho 1 //
void nhayvongnho1(x) //
{ //
xoa(); //
delay(x); //
Ido=1; //
delay(x); //
Cdo=1; //
delay(x); //
T1do=1; //
delay(x); //
Udo=1; //
delay(x); //
daudo=1; //
delay(x); //
T2do=1; //
delay(x); //
Ndo=1; //
delay(x); //
//
} //
//
//Nhay vong to 1 //
void nhayvongto1(x) //
{ //
led3=255; //
delay(x); //
Itrang=1; //
delay(x); //
Ctrang=1; //
delay(x); //
T1trang=1; //
delay(x); //
Utrang=1; //
delay(x); //
dautrang=1; //
delay(x); //
T2trang=1; //
delay(x); //
} //
//
//Nhay ca 2 vong duoi nhau //
void nhay2vong(x) //
{ //
xoa(); //
delay(x); //
Ido=1; //i //
delay(x); //
Cdo=1; //c //
Ido=0; //
Itrang=1; //I //
delay(x); //
T1do=1; //t //
Cdo=0; //
Ido=1; //i //
Itrang=0; //
Ctrang=1; //C //
delay(x); //
Udo=1; //
T1do=0; //
Cdo=1; //
Itrang=1; //
T1trang=1; //
Ctrang=0; //
Ctrang=1; //
delay(x); //
daudo=1; //
Udo=0; //
T1do=1; //
Utrang=1; //
T1trang=0; //
Ctrang=1; //
delay(x); //
T2do=1; //
daudo=0; //
Udo=1; //
dautrang=1; //
Utrang=0; //
T1trang=1; //
delay(x); //
Ndo=1; //
T2do=0; //
daudo=1; //
T2trang=1; //
dautrang=0; //
Utrang=1; //
delay(x); //
Ndo=0; //
T2do=1; //
Ntrang=1; //
T2trang=0; //
dautrang=1; //
delay(x); //
led2=255; //
led3=255; //
delay(x); //
} //
//============================================================//
//////////////////////////NHAY CHU DON//////////////////////////
//Nhay chu don //
void chudon1(x) //
{ //
xoa(); //
delay(x); //
Ido=1; //
delay(x); //
Cdo=1; //
Ido=0; //
Itrang=1; //
delay(x); //
T1do=1; //
Cdo=0; //
Ctrang=1; //
Itrang=0; //
delay(x); //
Udo=1; //
T1do=0; //
T1trang=1; //
Ctrang=0; //
delay(x); //
daudo=1; //
Udo=0; //
Utrang=1; //
T1trang=0; //
delay(x); //
T2do=1; //
daudo=0; //
dautrang=1; //
Utrang=0; //
delay(x); //
Ndo=1; //
T2do=0; //
T2trang=1; //
dautrang=0; //
delay(x); //
} //
//
//
//Nhay chu don2 //
void chudon2(x) //
{ //
delay(x); //
Ntrang=1; //
T2trang=0; //
T2do=1; //
Ndo=0; //
delay(x); //
daudo=1; //
T2do=0; //
T2trang=1; //
Ntrang=0; //
delay(x); //
Udo=1; //
daudo=0; //
dautrang=1; //
T2trang=0; //
delay(x); //
T1do=1; //
Udo=0; //
Utrang=1; //
dautrang=0; //
delay(x); //
Cdo=1; //
T1do=0; //
T1trang=1; //
Utrang=0; //
delay(x); //
Ido=1; //
Cdo=0; //
Ctrang=1; //
T1trang=0; //
delay(x); //
Ido=0; //
Itrang=1; //
Ctrang=0; //
delay(x); //
led3=0; //
led2=0; //
delay(x); //
} //
//============================================================//
//////////////////////////XEP CHU///////////////////////////////
//Xep chu N //
void chun(x) //
{ //
delay(x); //
T2trang=0; //
Ndo=1; //
Ntrang=1; //
delay(x); //
} //
//
//Xep chu T //
void chut(x) //
{ //
delay(x); //
Ndo=1; //
Ntrang=1; //
delay(x); //
Ido=1; //
delay(x); //
Cdo=1; //
Ido=0; //
Itrang=1; //
delay(x); //
T1do=1; //
Cdo=0; //
Ctrang=1; //
Itrang=0; //
delay(x); //
Udo=1; //
T1do=0; //
T1trang=1; //
Ctrang=0; //
delay(x); //
daudo=1; //
Udo=0; //
Utrang=1; //
T1trang=0; //
delay(x); //
T2do=1; //
daudo=0; //
dautrang=1; //
Utrang=0; //
delay(x); //
T2trang=1; //
dautrang=0; //
delay(x); //
} //
//Xep dau //
void dau(x) //
{ //
delay(x); //
Ndo=1; //
T2do=1; //
Ntrang=1; //
T2trang=1; //
delay(x); //
Ido=1; //
delay(x); //
Cdo=1; //
Ido=0; //
Itrang=1; //
delay(x); //
T1do=1; //
Cdo=0; //
Ctrang=1; //
Itrang=0; //
delay(x); //
Udo=1; //
T1do=0; //
T1trang=1; //
Ctrang=0; //
delay(x); //
daudo=1; //
Udo=0; //
Utrang=1; //
T1trang=0; //
delay(x); //
dautrang=1; //
Utrang=0; //
delay(x); //
} //
//
//Xep chu U //
void chuu(x) //
{ //
delay(x); //
dautrang=1; //
daudo=1; //
delay(x); //
Ido=1; //
delay(x); //
Cdo=1; //
Ido=0; //
Itrang=1; //
delay(x); //
T1do=1; //
Cdo=0; //
Ctrang=1; //
Itrang=0; //
delay(x); //
Udo=1; //
T1do=0; //
T1trang=1; //
Ctrang=0; //
delay(x); //
Utrang=1; //
T1trang=0; //
} //
//
//Xep chu T2 //
void chut2(x) //
{ //
delay(x); //
Utrang=1; //
Udo=1; //
delay(x); //
Ido=1; //
delay(x); //
Cdo=1; //
Ido=0; //
Itrang=1; //
delay(x); //
T1do=1; //
Cdo=0; //
Ctrang=1; //
Itrang=0; //
delay(x); //
T1trang=1; //
Ctrang=0; //
delay(x); //
} //
//
//Xep chu C //
void chuc(x) //
{ //
delay(x); //
T1do=1; //
T1trang=1; //
delay(x); //
Ido=1; //
delay(x); //
Cdo=1; //
Ido=0; //
Itrang=1; //
delay(x); //
Itrang=0; //
Ctrang=1; //
delay(x); //
} //
//Xep chu i //
void chui(x) //
{ //
delay(x); //
Ctrang=1; //
Cdo=1; //
delay(x); //
Ido=1; //
delay(x); //
Ido=0; //
Itrang=1; //
delay(x); //
led2=255; //
delay(x); //
} //
//
//============================================================//
////////////////////////////XEN KE//////////////////////////////
//Nhay cheo //
void nhaycheo(x) //
{ //
xoa(); //
delay(x); //
Ido=1; //
Ntrang=1; //
delay(x); //
Cdo=1; //
T2trang=1; //
delay(x); //
T1do=1; //
dautrang=1; //
delay(x); //
Udo=1; //
Utrang=1; //
delay(x); //
daudo=1; //
T1trang=1; //
delay(x); //
T2do=1; //
Ctrang=1; //
delay(x); //
Ndo=1; //
Itrang=1; //
delay(x); //
} //
//
//Nhay xem ke trong ngoai //