Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
222,5 KB
File đính kèm
mach nguyen ly.rar
(73 KB)
Nội dung
8051 VÀ PHIÊN BẢN CỦA NÓ: a: 8051 : Năm 1981 Intel giới thiệu bộ vi điều khiển 8051. Bộ vi điểu khiển này có 128 byte RAM, 4 kbyte ROM, hai bộ định thời , một cổng nối tiếp, bốn cổng vào/ra song song ( độ rộng 8 bit ) tất cả được đặt trên 1 chip. 8051 là bộ xử lý 8 bit, tức là CPU chỉ có thể làm việc với 8 bit dữ liệu tại 1 thời điếm. Dữ liệu lớn hơn 8 bit được chia thành các dữ liệu 8 bit để xử lý. b: Các đặc tính của họ 8051 Đặc tính 8051 8052 8031 ROM trên chip 4 kbyte 8 kbyte 0 kbyte RAM 128 kbyte 256 kbyte 128 kbyte Bộ định thời 2 3 2 Chân vào ra 32 32 31 Cổng nối tiếp 1 1 1 Nguồn ngắt 6 6 1 c : Phiên bản AT 8951 từ Atmel Corporation: AT8951 là phiên bản 8051 có ROM trên chip ở dạng bộ nhớ Flash. Phiên bản này lý tưởng đối với những phát triển nhanh vì bộ nhớ Flash có thể được xoá trong vài giây. Hãng Atmel đã cho ra đời một phiên bản của AT 89C51 có thể lập trình qua cổng truyền thông COM của máy tính IBM PC. Một số phiên bản cua Atmel: Ký hiệu ROM RAM ChânI/O Timer Ngắt Vcc Đóng vỏ AT89C51 4kbyte 128kbyte 32 2 6 5V 40chân, 2hàng AT89C52 8kbyte 128kbyte 32 3 8 5V 40chân, 2hàng AT89S52 la bộ vi điều khiển thông dụng, giá rẻ có khá nhiều chức năng hay , đăc biệt là có tích hợp sẵn bộ nạp ISP trên chip giúp người sử dụng có thể dễ dàng thực hiện các bài thí nghiệm với chi phí thấp. Bộ VDK At89S52 gồm các khối chức năng chính : -CPU( centralprocessing unit) -Bộ nhớ chương trình( ROM) gồm 8kbyte Flash -Bộ nhớ dữ liệu ( RAM) gồm 256 byte. -Bộ UART ( Universal Asnchronous Receiver/ Transmitter),AT89S52 có thể giao tiếp với cổng nối tiếp của máy tính thông qua bộ UART. -3 bộ Timer/Counter 16 bit thực hiện các chức năng định thời và đếm sự kiện. -WDT ( wait dog timer) :dùng để phục hồi hoạt động của CPU khi nó bị treo bởi một nguyên nhân nào đó. -Khối điều khiển ngắt với hai nguồn ngắt ngoài và 4 nguồn ngắt trong. -Bộ lập trình (ghi chương trình lên Flash ROM cho phép người sử dụng có thể nạp các chương trình cho chip mà không cần các bộ nạp chuyên dụng. -Bộ chia tần số với hệ số là 12. -4Cổng xuất nhập với 32 chân. SƠ ĐỒ CHÂN CỦA 89C52/89S52: U 1 A T 8 9 C 5 2 9 1 8 1 9 2 9 3 0 3 1 1 2 3 4 5 6 7 8 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 3 9 3 8 3 7 3 6 3 5 3 4 3 3 3 2 R S T X T A L 2 X T A L 1 P S E N A L E / P R O G E A / V P P P 1 . 0 / T 2 P 1 . 1 / T 2 - E X P 1 . 2 P 1 . 3 P 1 . 4 P 1 . 5 P 1 . 6 P 1 . 7 P 2 . 0 / A 8 P 2 . 1 / A 9 P 2 . 2 / A 1 0 P 2 . 3 / A 1 1 P 2 . 4 / A 1 2 P 2 . 5 / A 1 3 P 2 . 6 / A 1 4 P 2 . 7 / A 1 5 P 3 . 0 / R X D P 3 . 1 / T X D P 3 . 2 / I N T 0 P 3 . 3 / I N T 1 P 3 . 4 / T 0 P 3 . 5 / T 1 P 3 . 6 / W R P 3 . 7 / R D P 0 . 0 / A D 0 P 0 . 1 / A D 1 P 0 . 2 / A D 2 P 0 . 3 / A D 3 P 0 . 4 / A D 4 P 0 . 5 / A D 5 P 0 . 6 / A D 6 P 0 . 7 / A D 7 Sơ đồ chân /chức năng các chân của AT89S52: Tất cả các port đều có chức năng xuất nhập ,Gồm 8 chân, ngoài ra chúng còn có chức năng riêng như: *port0 ( p0.0-p0.7): Port0 còn là bus đa hợp dữ liệu và địa chỉ. *Port1 ( P1.0-1.7): Ba chân P1.5, P1.6,P1.7 được dùng đẻ nạp ROM theo tiêu chuẩn ISP; hai chân P1.0 và P1.1 được dùng cho bộ timer 2 *Port 2 ( P2.0-2.7): Nó còn là byte cao của bus địa chỉ khi sử dụng bộ nhớ ngoài. *Port3( P3.0-3.7): Chức năng riêng như sau: Bit Tên Chức năng P3.0 RXD Dữ liệu nhận cho Port nối tiếp P3.1 TXD Dữ liệuểtuyền cho Port nối tiếp P3.2 INT0 Ngắt ngoài 0 P3.3 INT1 Ngắt bên ngoài 1 P3.4 T0 Ngõ vào của Timer1/counter 0 P3.5 T1 Ngõ vào của Timer1/counter 1 P3.6 /WR Xung ghi bộ nhớ dữ liệu ngoài P3.7 /RD Xung đọc bộ nhớ dữ liệu ngoài *RST ( reset ): Ngõ vào reset trên chân 9 là ngõ reset của 8501. Khi tín hiệu này được đua lên mức cao , các thanh ghi trong bộ vi điều khiển được tải những giá trị thích hợp để khởi động hệ thống. *XTAL1,XTAL2: AT89S52 có 1 bộ dao động trên chip , nó thường được nối với bộ dao động thạch anh có tần số 12MHz. *Vcc,GND: AT89S52 dùng nguồn 1 chiều có dải điện áp từ 4V đến 5,5V được cấp qua chân 40 và 20. TỔ CHÚC BỘ NHỚ: BỘ nhớ chương trình: AT89S52 có 8kbyte Flash ROM trên chip, tín hiệu điều khiển đọc ROM là tind hiệu /PSEN. Bộ nhớ dữ liệu : AT89S52 có 256kbyte RAM nội : -Các bank thanh ghi có địa chỉ từ 00H đến 1FH. -RAM địa chỉ hoá từng bit có địa chỉ từ 20H đến 2FH. -RAM đa dụng từ 30H đến FFH. -Các thanh ghi chức năng đặc biệt từ 80H đến FFH. 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: MẠCH TẠO XUNG SỬ DỤNG LM555: Khi ta thay đổi biến trở thi xung clock tu chan 3 tao ra xung vuông cung thay đổi theo ( tần số thay đổi) cung cấp vao chân 14( T0) của vi điều khiển. MAX232 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ên ngoà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; Đối tượng Mức logic Mức điện áp tương ứng Cổng COM (mức232C) 1 0 -12V đến -3V +3V đến +12V Vi điều khiển ( mức TTL) 1 0 +5V 0V 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. V C C _ C I R C L E V C C _ C I R C L E C 7 C 5 C A P C 6 C 8 U 1 8 0 5 2 3 1 1 9 1 8 9 1 2 1 3 1 4 1 5 1 2 3 4 5 6 7 8 3 9 3 8 3 7 3 6 3 5 3 4 3 3 3 2 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 1 7 1 6 2 9 3 0 1 1 1 0 4 02 0 E A / V P X 1 X 2 R E S E T I N T 0 I N T 1 T 0 T 1 P 1 . 0 / T 2 P 1 . 1 / T 2 X P 1 . 2 P 1 . 3 P 1 . 4 P 1 . 5 P 1 . 6 P 1 . 7 P 0 . 0 P 0 . 1 P 0 . 2 P 0 . 3 P 0 . 4 P 0 . 5 P 0 . 6 P 0 . 7 P 2 . 0 P 2 . 1 P 2 . 2 P 2 . 3 P 2 . 4 P 2 . 5 P 2 . 6 P 2 . 7 R D W R P S E N A L E / P T X D R X D V C CV S S Y 1 P 1 C O N N E C T O R D B 9 5 9 4 8 3 7 2 6 1 U 2 M A X 2 3 2 1 3 4 5 2 6 1 2 9 1 1 1 0 1 3 8 1 4 7 1 5 1 6 C 1 + C 1 - C 2 + C 2 - V + V - R 1 O U T R 2 O U T T 1 I N T 2 I N R 1 I N R 2 I N T 1 O U T T 2 O U T G N D V C C Cổng nối tiếp RS232 là một giao diện phổ biến rộng rãi nhất. Người ta còn gọi cổng này là cổng COM1, còn cổng COM2 để tự do cho các ứng dụng khác. Việc truyền dữ liệu qua cổng COM được tiến hành theo cách nối tiếp. Nghĩa là các bit dữ liệu được truyền đi nối tiếp nhau trên một đường dẫn. Cổng COM không phải là một hệ thống bus nó cho phép dễ dàng tạo ra liên kết dưới hình thức điểm với điểm giữa hai máy cần trao đổi thông tin với nhau, một thành viên thứ ba không thể tham gia vào cuộc trao đổi thông tin này. * Các chân và đường dẫn được mô tả như sau: Châ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ính gở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 ứng dụ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, 1200, 2400, 4800, 9600,19200, 28800, và 56600 baud. -Độ dài cực đại của cáp kết nối là 15m(trong trường hợp không có các bộ đệm bộ lặp) -Trên máy tính có the có 4 cổng nối tiếp. Nhưng thường chỉ có 2 cổng gọi là cổng Com1 và Com2. Đị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. Hì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ối tiế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: -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 LM555cung cấ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) CHƯƠNG TRÌNH CHÍNH: #include<stdio.h> //#include<reg52.h> #include<at89x52.h> //#include<math.h> char x; int d,daitan,i; float f,n; unsigned char M[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; unsigned char nghin,tram,chuc,donvi; void ngoaidaitan(void) { while(!TI); //doi co bao truyen cho phep truyen SBUF=0x4E; // truyen ki tu N TI=0; while(!TI); SBUF=0x67; TI=0; while(!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; TI=0; while(!TI); SBUF=0x0D; TI=0; } void xuatkhz(void) { nghin = f/1000; tram = (f-nghin*1000)/100; chuc = (f-nghin*1000-tram*100)/10; donvi = f-nghin*1000-tram*100-chuc*10; while(!TI); SBUF=0x44; TI=0; while(!TI); SBUF=0x61; [...]... while(!TI); SBUF=M[tram]; TI=0; while(!TI); SBUF=M[chuc]; TI=0; while(!TI); SBUF=M[donvi]; TI=0; while(!TI); SBUF=0x20; TI=0; while(!TI); SBUF=0x48; TI=0; while(!TI); SBUF=0x7A; TI=0; while(!TI); SBUF=0x0D; TI=0; } void xuathz1(void) { nghin = f/1000; tram = (f-nghin*1000)/100; chuc = (f-nghin*1000-tram*100)/10; donvi = f-nghin*1000-tram*100-chuc*10; while(!TI); SBUF=0x44; TI=0; while(!TI); SBUF=0x61;... while(!TI); SBUF=M[tram]; TI=0; while(!TI); SBUF=M[chuc]; TI=0; while(!TI); SBUF=M[donvi]; TI=0; while(!TI); SBUF=0x20; TI=0; while(!TI); SBUF=0x48; TI=0; while(!TI); SBUF=0x7A; TI=0; while(!TI); SBUF=0x0D; TI=0; } void xuathz2(void) { nghin = f/1000; tram = (f-nghin*1000)/100; chuc = (f-nghin*1000-tram*100)/10; donvi = f-nghin*1000-tram*100-chuc*10; while(!TI); SBUF=0x44; TI=0; while(!TI); SBUF=0x61;... phep truyen SBUF=0x3a; // truyen Ki tu - hai cham TI=0; while(!TI); SBUF=0x20; TI=0; while(!TI); SBUF=M[nghin]; TI=0; while(!TI); SBUF=M[tram]; TI=0; while(!TI); SBUF=M[chuc]; TI=0; while(!TI); SBUF=M[donvi]; TI=0; while(!TI); SBUF=0x20; TI=0; while(!TI); SBUF=0x48; TI=0; while(!TI); SBUF=0x7A; TI=0; while(!TI); SBUF=0x0D; TI=0; } void thuattoan(void) { d=1; RCAP2H = TH2 = -5000/256; RCAP2L = TL2 = -5000%256; . 3 tao ra xung vuông cung thay đổi theo ( tần số thay đổi) cung cấp vao chân 14( T0) của vi điều khiển. MAX232 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ế. 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. đặ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: -T2CON : chứa các bit điều khiển cho Timer2 -T2MOD:chúa