Lời Nói Đầu Với sự ra đời của chip 8051 vào năm 1980 do INTEL sản xuất,nó đã tạo ra bướctiến quoan trọng trong lĩnh vưc vi điều khiển.vói sự ra đó đã giúp cho viêc thiết kế các hệ thống
Trang 1Bộ Công Thương
Trường ĐHCN Hà Nội
Báo Cáo:Bài Tập Lớn Môn VĐK
Đề tài:đo tốc độ động cơ hiển thị bằng hyper terminal
Trang 2
Lời Nói Đầu
Với sự ra đời của chip 8051 vào năm 1980 do INTEL sản xuất,nó đã tạo ra bướctiến quoan trọng trong lĩnh vưc vi điều khiển.vói sự ra đó đã giúp cho viêc thiết
kế các hệ thống như đo lường,điều khiển tự động,truyền thông ngày càng đơn giản gọn nhẹ và chính xác hơn.ngày nay các chíp thế hệ sau của 8051 ngay càngđược tăng cường thêm cá tính năng cũng như rung lượng,đã giúp cho họ vi điều khiển 8051 trở thành 1 trong những bộ vi điều khiển 8bit mạnh và linh hoạt nhấttrong những năm gần đây
Đó là việc nghiên cứu và tìm hiểu về vi điều khiển,trong đó đặc biệt là họ vi điều khiển 8051 la điều cần thiết với sinh viên khoa điện tử chúng em nói chung cũng như sinh viên các khoa khác co liên quoan tới môn học.nhưng do thời gian tìm hiểu và kiến thức về môn học còn có nhiều hạn chế,cho nên trong đề tài nghiên cứu về vi điều khiển của chúng em còn gì thiếu sót và hạn chế mong thầychỉ bảo giúp cho chúng em hiểu sâu hơn về môn học này,chúng em xin chân thành cảm ơn
Trang 3I,Giới thiệu tổng quan về họ 8051 (AT89S52):
Với chíp 8051 lần đầu tiên được đưa ra thị trường thì nó có các đặc chưng được tóm tắt như sau:
- Mạch giao tiếp nối tiếp
- Không gian nhớ chương trình (mã) ngoài 64k
- Không gian nhớ rữ liệu ngoài 64k
- Bộ xử lý bit (thao tác trên các bít riêng rẽ)
- 210 vị chí được định địa chỉ,mỗi vị chí 1bit
- Nhân/chia trong 4 micro giây
Còn đối với vi điều khiển 8052 thì nó có thêm bộ định thời thứ 3
Dưới đây là hình dạng thực tế và sơ đồ chân của vi điều khiển AT89S52:
Trang 4
Hình 1.1:hình dạng thực tế và sơ đồ chân của AT89S52
Hình 1.2:sơ đồ khối của vi điều khiển 89s52
1.Chức năng từng chân trong sơ đồ:
Như ta thấy trong sơ đồ hình 1.1 chên 32 trong 40 chân của AT89S52 có công dụng xuất nhập,tuy nhiên 24 trong 32 đường này có 2 mục đích.mỗi đường có thể hoạt động xuất/nhập hoặc hoạt động như một đường điều khiển hoặc hoạt động như một đường địa chỉ/dữ liệu da hợp
a.Port 0(từ chân 32 tới 39)có hai công dụng.một là được sử dụng làm nhiệm vụ xuất nhập,hai là port 0 chở thành bus địa chỉ và bus dữ liệu đa hợp
b.Port 1(từ chân 1 tới chân 8)chỉ có một công dụng là xuất nhập và được dùng
để giao tiếp với thiết bị bên ngoài khi có yêu cầu
Trang 5c.Port 2(từ chân 21 tới 28)có hai công dụng.hoặc làm nhiệm vụ xuất nhập hoặc
là byte địa chỉ cao của bus địa chỉ 16-bit
d.Port 3(từ chân 10 tới chân số 17)có hai công dụng.khi không hoạt động xuất nhập các chân của port 3 có các chức năng riêng
Bảng chức năng các chân của port 3 va 2 chân port 1.0 và port 1.1 của port 1:
Bit tên địa chỉ bit chức năng
P3.0 RxD B0H chân nhận dữ liệu của port nối tiếp
P3.1 TxD B1H chân phát dữ liệu của port nối tiếp
P3.2 INT0 B2H ngõ vào ngắt ngoài 0
P3.3 INT1 B3H ngõ vào ngắt ngoài 1
P3.4 T0 B4H ngõ vào của bộ định thời/đếm 0
P3.5 T1 B5H ngõ vào của bộ định thời/đếm 1
P3.6 WR B6H điều khiển ghi bộ nhớ dữ liệu ngoài
P3.7 RD B7H điều khiển đọc bộ nhớ dữ liệu ngoài
P1.0 T2 90H ngõ vào bộ định thời /đếm 2
P1.1 T2EX 91H nạp lại /thu nhận của bộ định thời 2
e.chân cho phép bộ nhớ trương trình psen:
đây là tín hiệu xuất trên chân 29.Nó điều khiển cho phép ta truy xuất bộ nhớ ttruw[ng trinh ngoài,chân này thường nối với chân cho phép xuất OEtín hiệu psen ở logic 0 trong suốt thời gian tìm nạp lệnh.các mã nhị phân của trương trình được đọc từ EP-ROM,qua bú dữ liệu được chốt vào thang ghi IR của 8051
để được giả mã
f.Chân cho phép chốt địa chỉ ALE:
8051 sử dụng 30 chân,chân xuất tí hiệu cho phép chốt dịa chỉ ALE để giải đa hợp bus dũ liệu và bus địa chỉ.chân ALE xuất yins hiệu để chốt địa chỉ vào thanh ghi ngoài trong suốt ½ đầu của chu kỳ bộ nhớ.sau khi điều này được thực hieenjcacs chân port 0 sẽ xuất nhập dữ liệu hợp hệ trong suốt ½ thứ 2 của chu kỳ
Trang 6h.Chân XTAL1 và XTAL2:
Giao động bên trong của thạch anh được ghép nối với bên ngoài ở 2 chân
XTAL1 và XTAL1 (chân 18 và 19) vói tần số danh dịnh cả thạch anh là
12MHZ
i.Chân truy xuất ngoài EA:
nằm ở chân 31 nó có thể được nối với 5v(logic 1) hoặc GND (logic 0),nếu chân này được nối lên 5v thì 8052/8051 thực thi chương trình trong ROM nội.nếu nốivới GND (và chân psen cũng ở mức logic 0)thì chương trình thực thi chứa ở bộ
Trang 7nhớ ngoài.
II.hoạt động định thời,cổng nối tiếp ,ngắt và xủ ly ngắt của họ 8051:
1.hoạt động đinh thời:như ta đã biết ở trên voi 8051 ta chỉ có 2 timer đó là timer
0 va timer 1 còn đối với 8052 thì chúng ta co thêm bộ định thời thứ 3 là
timer2,các timer này có rất nhiều ứng dụng quoan trọng trong các lĩnh vực như
đo lường,điều khiển
2.cổng nối tiếp:
AT89S52 có một cổng nối tiếp trên chíp có thể hoạt động ở nhiều chế độ khác nhau.chức năng chủ yếu của cổng nối tiếp là chuển đổi song song và nối tiếp vớicác dữ liệu chuyển đổinối tiếp sang song song với dữ liệu nhập để có thể giao tiếp với may tính qua cổng nối tiếp hoặc các thiết bị tương tự
3.ngắ và xử lý ngắt:
Để tận dụng khả năng của cpu chúng ta phải sử dụng đến ngắt,ngắt giúp ta tạm ngừng công việc của cpu để phục vụ việc chao đổi rữ liệu.sau khi hoàn thành việc chao đổi dữ liệu thì cpu phải quoay về làm nốt công việc dang bị gián doạn.điều này giúp cho cpu làm việc hiệu quả hơn rất nhiều
Với AT89S52 ta có 6 nguồn ngắt:
-Ngắt ngòai đến từ chân #INT0
-Ngắt ngoài đến từ chân #INT1
-Ngắt do bộ timer 0
-Ngắt do bộ timer 1
-Ngắt do bộ timer 2
-Ngắt do port nối tiếp
III.Tổng quan về đề tài đo tốc độ động cơ hiển thị bằng hyper terminal:
Trong đề tài chúng em sử dụng 2 timer của tiner 1 và timer 2,trong đó timer 1 tạo tốc độ baud cho port nối tiếp để chuyền dữ liệu lên máy tính.timer 2 dung đểđịnh khoảng thời gian đếm xung mà ở đây khoảng thời gian là 50ms.chúng em còn sử dụng ngắt ngoài của timer 0,ở đây để tính tốc độ ta lấy số xung đếm đượctrong timer 0 trong khoảng thời gian là 50ms chia cho 100 để tính ra só vòng trong thời gian 50ms.chia 100 ở dây là do econdo có 100 xung ra trên 1
vòng,sau đó ta nhân với 20 để gia số vòng trên 1 giây,tiếp đó ta nhân với 60 để tính ra số vòng tren 1 phút.trên mạch thực tế chúng em sử dụng 1 con mã 232 đểnhăm mục đích nối tiếp giữa 8052 với cổng com.thạch anh ở đây sủ dụng có tần
số danh định là 11.0952MHZ
Hình dạng thực tế của max 232:
Trang 8Sơ đồ nguyên lý:
Sơ đồ mạch in:
Trang 9Sơ đồ mô phỏng:
Code do tốc độ động cơ hiển thị bằng màn hình may tính:
Trang 10/*De tai: Thiet ke mach VDK do toc do dong co
Giao Vien Huong dan:Nguyen Anh Dung
sinh vien thuc hien:Phung duc Hiep
Can manh TRung
Thoi Gian Thuc Hien: 01/10/2009
Thoi GIan hoan thanh:
*/
//========================================================
====================================================== // ()=={}:::::::::::::::::::::::::::::::::>
Trang 11nghin=v/1000; // xac dinh so hang nghin
tram=(v%1000)/100; // xac ding so hang cham
truc=((v%1000)%100)/10; // xac dinh so hang chuc
dvi=((v%1000)%100)%10;// xac dinh so hang dvi
while(!TI); //doi co bao truyen cho phep truyen
SBUF=M[nghin]; // truyen so o hang Ngin
TI=0; // xoa co bao truyen xong de tiep tuc truyen
while(!TI);
SBUF=M[tram]; // truyen so o hang Tram
TI=0; // xoa co bao truyen xong de tiep tuc truyen
while(!TI);
SBUF=M[truc]; // truyen so o hang truc
TI=0; // xoa co bao truyen xong de tiep tuc truyen
while(!TI);
SBUF=M[dvi]; // truyen so o hang donvi
TI=0; // xoa co bao truyen xong de tiep tuc truyen
Trang 12IT0=1; // ngat theo suon 1 - 0
T2MOD=0x03;RCAP2H=TH2=-50000/256; //thoi gian dem la 50ms RCAP2L=TL2=-50000%256;
TMOD=0X20; //TIMER 1 lam viec che do 2
MẠCH TẠO DAO ĐỘNG VÀ RESET:
*Mach tạo dao động:
AT89S52 có 1 bộ chia tần số bên trong chip bộ này sẽ cấp xung clock cho các khối trên chip từ nguồn dao động bên ngoài qua 2 chân XTAL1,XTAL2
Mach RESET:
Có 4 cách để reset AT89S52 lần lượt là :
+Reset khi cấp nguồn
+Reset bởi WDT
+Reset bằng phần mềm
+Rsset bằng mạch ngoài qua chân RST
Trong một hệ thống gồm nhiều vi mạch khả trình thì mạch reset tích hợp cả hai cách RESET khi bật nguồn và bởi mạch ngoài thường dược sử dụng:
Trang 14MAX232 và cổng COM:
Như ta đã biết ,bộ vi điều khiển AT89S52 có khả năng giao tiếp với thế giới bênngoài thông qua cổng nối tiếp Vấn đề trở ngai duy nhất khi giao tiếp với máy tính là mức logic ở bộ vi điều khiển và cổng COM của máy tính khác nhau, cụ thể như sau;
Cổng COM (mức232C) 1
0
-12V đến -3V+3V đến +12V
Vi điều khiển ( mức
Khắc phục vấn đề này người ta sử dụng vi mạch MAX232 để chuyển đổi mức điện áp giữa 2 chuẩn Vi mạch này có chứa hai bộ chuyển đổi mức logic từ TTl sang RS232 và ngược lại , tức là:
Vì tín hiệu cổng COM thường ở mức +12V, -12V nên không tương thích với điện áp TTL nên để giao tiếp Vi điều khiển 8051 với máy tính qua cổng COM
ta phải qua một vi mạch biến đổi điện áp cho phù hợp với mức TTL, ta chọn vi mạch MAX232 để thực hiện việc tương thích điện áp
Hình sau la vd về mạch giao tiếp giữa vdk với máy tính qua cổng RS232C sử dụng vi mạch đổi mức MAX232
Trang 151 2
1 4 1 3 5 7
U 2
M A X 2 3 2
1 3 5
* Các chân và đường dẫn được mô tả như sau:
Trang 16Chân Ký hiệu Ý nghĩa
1 DCD Tín hiệu phát hiện mang dữ liệu
2 RcD Nhận dữ liệu
3 TxD truyền dữ iệu
4 DTR Dữ liệu đầu cuối sẵn sàng
5 GND Nối đất
6 DSR Dữ liệu sẵn sàng được gửi
7 RTS Tín hiệu yêu cầu gửi
8 CTS Tín hiệu yêu cầu xoá để gửi tiếp
9 RI Ring indicatior
Trên thực tế có hai loại phích cắm, một loại 9 chân và một loại 25 chân
Việc truyền dữ liệu xảy ra ở trên hai đường dẫn Qua chân cắm ra TXD máy tínhgởi dữ liệu của nó đến Vi điều khiển Trong khi đó các dữ liệu mà máy tính nhận được, lại được dẫn đến chân RXD các tín hiệu khác đóng vai trò như là tín hiệu hổ trợ khi trao đổi thông tin, và vì thế không phải trong mọi trường hợp ứngdụng đều dùng hết
Điện áp quy định với mưc logic 1 nẳm trong khoảng từ -3V đến -12V ; mức logic 0 là +3V đến +12V
-Tốc độ truyền dữ liệu đươc quy định chuẩn gồm các tốc độ sau; 300, 600,
Địa chỉ của các cổng nối tiếp như sau:
-Cổng Com1: địa chỉ cơ bản 3F8H
-Cổng Com2: địa chỉ cơ bản 2F8H
Ở máy tính PC thường có một bộ phát/nhận không đồng bộ vạn năng (gọi tắt là -UART: Universal Asnchronous Receiver/ Transmitter) để điều khiển sự trao đổi thông tin giữa máy tính và các thiết bị ngoại vi
Trang 17Hình ảnh của MAX232:
CÁC THANH GHI CỦA CỔNG NỐI TIẾP:
-Có hai thanh ghi chức năng đặc biệt cho phép phần mềm truy xuất đến cổng nốitiếp là SBUF và SCON
*SCON: thanh ghi điều khiển cổng nối tiếp
chứa các bit điều khiển và trang thái Các bit điều khiển đặt chế độ hoạt động cho cổng nối tiếp, các bit trạng thái báo cáo kết thúc phát hoặc thu 1 ký tự
*SBUF:thanh ghi đệm truyền nhận ở cổng nối tiếp
chức nang đệm các ký tự khi chúng nhận về từ cổng nối tiếp hoặc được truyền
từ cổng nối tiếp
CÁC THANH GHI CỦA BỘ ĐỊNH THỜI:
*Thanh ghi của timer 0,1:
-TMOD: Thanh ghi chế độ định thời ,chứa hai nhóm bốn bit dùng để đặt chế độ làm việc cho Timer0và1
-TCON: Thanh ghi điều khiển Timer,chứa các bit trạng thái và các bit điều khiển cho
Timer0và1
*Thanh ghi của timer 2:
Trang 18-T2CON : chứa các bit điều khiển cho Timer2
-T2MOD:chúa 2 bit DCEN vàT2OE cho phép Timer2 hoạt động nhu1 bộ đếm
lùi hoặc để tạo xung
Thanh ghi TH2 và TL2 , RCAP2L, RCAP2H:chứa giá trị đếm của timer2
NGUỒN XUNG CLOCK:
-Nguồn xung clock cấp cho các bộ định thời có thể lấy từ ngoài qua các chân
T0, T1, T2 lần lượt cho các bộ Timer0, Timer1, Timer2 hoặc lấy từ bộ chia tần trên chip với tần số là 1/12 tần số của bộ dao động thạch anh tuỳ vào bit C/#T đối với bài này chúng ta lấy nguồn xung từ con LM555cungcấp vào chân T0
TỔ CHỨC NGẮT Ở AT89S52:
AT89S52 có 6 nguồn ngắt :
-Ngắt ngoài từ chân #INT0
-Ngắt ngoài từ chân #INT1
-Ngắt do bộ Timer 0
-Ngắt do bộ Timer 1
-Ngắt do bộ Timer 2
-Ngắt do Port nối tiếp
Các nguồn ngắt này được xoá khi reset và được đặt riêng bằng phần mềm bởi
các bit trong các thanh ghi cho phép ngắt (IE), thanh ghi ưu tiên ngắt (IP)
Trang 19while(!TI); SBUF=0x6F;TI=0;
while(!TI); SBUF=0x61;TI=0;
while(!TI); SBUF=0x69;TI=0;
while(!TI); SBUF=0x20;TI=0;
while(!TI); SBUF=0x44;TI=0;
while(!TI); SBUF=0x61;TI=0;
while(!TI); SBUF=0x69;TI=0;
while(!TI); SBUF=0x20;TI=0;
while(!TI); SBUF=0x54;TI=0;
while(!TI); SBUF=0x61;TI=0;
while(!TI); SBUF=0x6E;
Trang 21while(!TI);
Trang 23while(!TI); SBUF=0x61;TI=0;
while(!TI); SBUF=0x69;TI=0;
while(!TI); SBUF=0x20;TI=0;
while(!TI); SBUF=0x54;TI=0;
while(!TI); SBUF=0x61;TI=0;
while(!TI); SBUF=0x6E;TI=0;
while(!TI); SBUF=0x20;TI=0;
while(!TI); SBUF=0x31;TI=0;
while(!TI); SBUF=0x30;TI=0;
while(!TI); SBUF=0x30;TI=0;
while(!TI); SBUF=0x20;TI=0;
while(!TI); SBUF=45;TI=0;
Trang 26while(!TI); SBUF=0x20;TI=0;
while(!TI); SBUF=0x54;TI=0;
while(!TI); SBUF=0x61;TI=0;
while(!TI); SBUF=0x6E;TI=0;
while(!TI); SBUF=0x20;TI=0;
while(!TI); SBUF=0x31;TI=0;
while(!TI); SBUF=0x30;TI=0;
while(!TI); SBUF=0x20;TI=0;
while(!TI); SBUF=45;TI=0;
while(!TI); SBUF=0x20;TI=0;
while(!TI); SBUF=0x31;TI=0;
while(!TI); SBUF=0x30;TI=0;
Trang 28}else if (1000<f&&f<=10000){
xuatkhz();
}else if (f<=10000)
Trang 29}else if (f<=100){
daitan=400;
thuattoan();
f=n/2;
if (f<10){
ngoaidaitan();
}else{xuathz2();
}}
}}
Vì hiển thị lên máy tính thì ta sử dụng phần mềm Hyper terminal
-Từ start->programs>Acessories>Communications>chọn Hyper terminal