0

TÀI LIỆU VI XỬ LÝ 8051 ĐẦY ĐỦ

36 5 0
  • TÀI LIỆU VI XỬ LÝ 8051 ĐẦY ĐỦ

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Tài liệu liên quan

Thông tin tài liệu

Ngày đăng: 12/05/2022, 19:59

Chương 1: Tổng quan về vi xử lý và vi điều khiển1.1 Giới thiệu chung về vi xử lý và vi điều khiển1.2 Cấu trúc chung của hệ vi xử lý và vi điều khiển1.3 Giới thiệu một số dòng vi điều khiển thông dụngChương 2: Cấu trúc và lập trình cho 80512.1 Cấu trúc và các ngoại vi của 8051 2.2 Ngôn ngữ lập trình cho 8051 2.3 Cấu trúc chương trình và lập trình C cho 80512.4 Hoạt động định thời và hoạt động ngắt của 80512.5 Ghép nối vi điều khiển với các ngoại vi cơ bản2.5.1 Lập trình vàora với các cổng2.5.2 Ghép nối và hiển thị với LED 7 thanh và LCDChương 3: Đo lường và điều khiển với 80513.1. Đo tốc độ, vị trí và lưu lượng sử dụng Encoder.3.2. Đo lường và điều khiển sử dụng bộ chuyển đổi tương tự số (ADC) và số tương tự (DAC).3.3. Đo lường và điều khiển sử dụng các chuẩn giao tiếp nối tiếp3.3.1 Giao tiếp SPI và I2C3.3.2 Giao tiếp 1wire Chương 1: Tổng quan vi xử lý vi điều khiển 1.1 Giới thiệu chung vi xử lý vi điều khiển 1.2 Cấu trúc chung hệ vi xử lý vi điều khiển 1.3 Giới thiệu số dịng vi điều khiển thơng dụng Chương 2: Cấu trúc lập trình cho 8051 2.1 Cấu trúc ngoại vi 8051 2.2 Ngôn ngữ lập trình cho 8051 2.3 Cấu trúc chương trình lập trình C cho 8051 2.4 Hoạt động định thời hoạt động ngắt 8051 2.5 Ghép nối vi điều khiển với ngoại vi 2.5.1 Lập trình vào/ra với cổng 2.5.2 Ghép nối hiển thị với LED LCD Chương 3: Đo lường điều khiển với 8051 3.1 Đo tốc độ, vị trí lưu lượng sử dụng Encoder 3.2 Đo lường điều khiển sử dụng chuyển đổi tương tự - số (ADC) số tương tự (DAC) 3.3 Đo lường điều khiển sử dụng chuẩn giao tiếp nối tiếp 3.3.1 Giao tiếp SPI I2C 3.3.2 Giao tiếp 1-wire Tài liệu bắt buộc 1 Đỗ Duy Phú, Giáo trình vi xử lý, Nhà xuất giáo dục Việt Nam, 2015 Chương 1: Khái quát chung vi xử lý vi điều khiển 1.1 Giới thiệu chung vi xử lý vi điều khiển Vi xử lý: (Micro-Processor): - CPU viết tắt chữ Central Processing Unit , tạm dịch đơn vị xử lí trung tâm - Nhiệm vụ CPU xử lý chương trình vi tính kiện - Vi điều khiển, thực chất, hệ thống bao gồm vi xử lý có hiệu suất đủ dùng giá thành thấp (khác với vi xử lý đa dùng máy tính) kết hợp với khối ngoại vi nhớ, mô đun vào/ra, mô đun biến đổi số sang tương tự tương tự sang số, CPU xem não bộ, phần tử cốt lõi máy vi tính CPU có nhiều kiểu dáng khác Ở hình thức đơn giản nhất, CPU chip với vài chục chân Phức tạp hơn, CPU ráp sẵn mạch với hàng trăm chip khác CPU mạch xử lý liệu theo chương trình thiết lập trước Nó mạch tích hợp phức tạp gồm hàng triệu transistor Vi điều khiển: máy tính tích hợp chíp, thường sử dụng để điều khiển thiết bị điện tử - Vi điều khiển thường dùng để xây dựng hệ thống nhúng Nó xuất nhiều dụng cụ điện tử, thiết bị điện, máy So sánh vi xử lý vi điều khiển Embedded System (hệ thống nhúng) - Bộ xử lý gắn (embedded) vào ứng dụng cụ thể Một sản phẩm embedded sử dụng VXL VĐK để thực thi công việc nhất; - Chỉ có phần mềm ứng dụng ROM; vd:printer, keyboard, video game player & thông thường nộp 1.2 Cấu trúc chung hệ vi xử lý vi điều khiển - CPU cho máy tính - Vd: Intel’s x86, Motorola’s 680x0 (Sơ đồ khối hệ máy tính bản) 1.3 Giới thiệu số dịng vi điều khiển thơng dụng Việc sử dụng loại vi điều khiển vi xử lý thiết bị điện tử tự động Việt Nam đa dạng, phong phú tùy vào yêu cầu kỹ thuật giá thành sản phẩm - Đối với thiết bị máy ATM, máy giặt thường sử dụng vi điều khiển 8051, - Các điều khiển robot công nghiệp, hệ thống ô tô thường sử dụng PIC, AVR, PsoC, - Trong điện thoại sử dụng chip ARM… Tiêu chí chọn vi điều khiển: - - Đáp ứng yêu cầu nhiệm vụ giá thành thi công o Tốc độ, lượng nhớ, cổng I/O, timers, gói, lượng tiêu thụ o Dễ nâng cấp o Giá thành kích cỡ, đóng Các công cụ phát triển phần mềm: Assember, sửa lỗi, trình dịch C, mơ phỏng, hỗ trợ kỹ thuật Thị trường cung cấp sản phẩm tin cậy Chương 2: Cấu trúc lập trình cho 8051 2.1 Cấu trúc 8051/ Sơ đồ khối 8051 - OSC: Bộ phát xung nhịp đồng cho hệ thống, max: 24Mhz -> định tốc độ xử lý 8051 (liên quan đến thời gian/lệnh, Timer, Interrupt ); - ROM: Bộ nhớ chương trình 4K (lưu mã lệnh chương trình), ngày lên tới 128K: AVR 128, 1M: STM32F4 -> không cần quan tâm) - RAM: Bộ nhớ liệu 128 byte(lưu trữ liệu tạm thời, ghi đặc biệt), ngày lên tới 4K: AVR 128, 192K: STM32F4 - Timer/Counter: Bộ đếm thời gian/bộ đếm xung - I/O Port: Cổng vào/ra (P0, P1, P2, P3: bit ~ chân) Interrupt Control: khối điều khiển ngắt BUS Control: khối điều khiển Bus địa (Address Bus), Bus liệu (Address Data), Bus điều khiển (Control Bus) Serial port: Cổng truyền thông nối tiếp Các thành viên họ 8051 a) Sơ đồ chân 8051 - Vcc (40): Chân cung cấp điện (5V) GND (20): Chân nối đất (0V) Port 0, Port1, Port port xuất nhập 8-bit hai chiều Trong hệ thống sử dụng 8751, 89C51 DS5000 ta thường nối cổng P0 tới điện trở kéo cổng P0 tới điện trở kéo Chức vào/ra 8051: U1 U1 19 18 29 30 31 XTAL1 XTAL2 RST PSEN ALE EA P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 12V P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 19 18 XTAL1 XTAL2 RST Q1 R1 MPS6531 10k 29 30 31 D1 LED-RED PSEN ALE EA P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD AT89C51 AT89C51 Output Input 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 R1 10k Port Port xuất nhập 8-bit hai chiều Port làm chức khác AT89C51 Các chức liệt kê sau: Chân Tên Chức P3.0 RxD Ngõ vào Port nối tiếp P3.1 TxD Ngõ Port nối tiếp P3.2 Ngõ vào ngắt P3.3 Ngõ vào ngắt P3.4 T0 Ngõ vào bên định thời P3.5 T1 Ngõ vào bên định thời P3.6 Điều khiển ghi nhớ liệu P3.7 Điều khiển đọc nhớ liệu - Ngõ vào reset (chân 9) Mức cao chân chu kỳ máy dao động hoat động reset 8051 Mạch reset tác động tay tự động reset khởi động máy - XTAL1 XTAL2 (18,19) hai ngõ vào cấu hình để dùng dao động chip - EA (chân 31): External Access o /EA nối mass định code lưu nhớ o /PSEN & ALE dùng cho ROM o Với 8051, 8031, 8032 /EA nối Vcc o “/”: định tác động mức thấp - - PSEN (chân 29): Program Store Enable o Output, cho phép truy xuất nhớ chương trình ngồi o Nối tới chân /OE ROM/EPROM o Khi thực thi chương trình ROM nội, /PSEN mức1 giữ ALE (pin 30:Address Latch Enable o Là chân output cho phép chốt địa để giải đa hợp (demultiplexing) bus liệu bus địa o ALE xuất tín hiệu để chốt địa (byte thấp địa 16-bit) vào ghi suốt nửa đầu chu kỳ nhớ (memory cycle) Trong nửa chu kỳ nhớ lại, P0 xuất/nhập liệu o ALE có f=1/6fclock o Có ngoại lệ: thời gian thực thi lệnh MOVX, xung ALE bị bỏ qua Nguồn cho 8051 hoạt động: VDC Mạch dao động Reset - Chân 31 (EA/VPP) VĐK 8051: Khi thiết kế mạch vi điều khiển khơng sử dụng nhớ ngồi để chứa chương trình (code) thực thi, cần nối chân (EA/VPP) lên nguồn dương (5V) Đây chân chọn nhớ lưu giữ chương trình thực thi vi điều khiển Khi nối lên +5V chọn thực thi chương trình từ nhớ flash bên VĐK - Trở treo cho PORT P0: Đối với VĐK 8051, sử dụng chân port P0 để điều khiển phải sử dụng trở treo cho chân port P0 Thường sử dụng trở băng 10k cho chân port P0 - Đưa chân mạch nạp: Đây điều kiện để mạch hoạt động, thiết kế mạch nên vẽ thêm chân mạch nạp để trình test code nạp trực tiếp onboard (chỉ dùng với dịng 89S có hỗ trợ chuẩn nạp ISP) tiện lợi nhiều bạn phải tháo chip vào, dễ làm gãy chân chip b) Các ngoại vi 8051 - Bàn phím Hex Qt hình LED 7G Chốt hình LED 7G Giao tiếp với hình LCD Ghép nối với ADC 0804 Ghép nối với DAC 0808 Điều khiển động bước Ma trận LED - Các cảm biến 2.2 Ngơn ngữ lập trình cho 8051 Lập trình hợp ngữ Asembly setb P2.0 jump delay_ms clr P2.0 setb P2.1 Lập trình C P2.0=1 delay_ms (1000); P2.0=0; P2.1=1; 2.3 Cấu trúc chương trình lập trình C cho 8051 Giới thiệu Keil-C 2.3.1 Cấu trúc chương trình lập trình C cho 8051 2.3.2 Khai báo biến, phép toán cấu trúc C / Biến số Keil-C Các loại biến: Lập trình C cho VXL Hàm C ( ) vd: int Tong (int a, int b ){ int tong; tong= a + b; return tong; } Cách gọi hàm: int c=0; c= Tong (10, 2); //kết c = 12; Cấu trúc điều khiển Keil-C - Cấu trúc so sánh: if, switch - Vòng lặp: for, while, while Cấu trúc if Vòng lặp for if (điều kiện) { tập lệnh 1; } else { tập lệnh 2; } for (i = 0; i < n ; i++) { khối lệnh; } Vòng lặp for vô tận for (;;) { khối lệnh } 10 Ngắt Timer Ví dụ: Hãy viết chương trình điều khiển LED (D1-D3) nhấp nháy cổng P1 hẹn 10 giây lại bật đèn LED D4 , đèn tắt sau vài giây Hãy sử dụng Timer0 để hẹn giờ, tần số 8051 XTAL = 12MHz C1 U1 22pF CRYSTAL C2 C3 19 X1 18 XTAL1 XTAL2 10nF 22pF R10 29 30 31 10k D1 330 330 330 D2 D3 D4 330 RST P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 PSEN ALE EA P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 2.4.3 Các ứng dụng ngắt Timer a) Ứng dụng đếm sản phẩm hiển thị LED 22 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 C1 10k U1 22pF X1 19 CRYSTAL C2 18 XTAL1 XTAL2 22pF 29 30 31 C3 RST PSEN ALE EA 10nF R10 10k P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 AT89S52 b) Điều khiển ngắt theo mức 23 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 100 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 R17 R4 10k 10k GIAM TĂNG C1 10k U1 22pF X1 19 CRYSTAL C2 18 XTAL1 XTAL2 22pF RST C3 10nF 29 30 31 R10 D1 PSEN ALE EA D2 10k 220 220 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 AT89S52 c) Lập trình đo tần số sử dụng ngắt ngoài, ngắt Timer 24 100 39 38 37 36 35 34 33 32 Ngat R17 R19 10k 10k Thuong 4.4 Giới thiệu toán đo tốc độ động sử dụng Encoder #include #include #define LED1 P2_0 #define LED2 P2_1 #define LED3 P2_2 #define LED4 P2_3 //Khai bao cac ham void delay_ms(unsigned int Time); void hienthi(int n) ; char nghin,tram, chuc, donvi; int time=0; int tocdo,f; int xung=0; static unsigned char LED7SEG[10]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //LED //Khai bao ham phuc vu ngat ngoai INT0 void ngatINT0() interrupt { xung++; } // Khai bao ham phuc vu ngat Timer void timer0() interrupt { // TR0=0; time++; 25 if(time==100){ tocdo=xung*60/100; time=0; xung=0; } // TL0=0x17; //TH0=0xfc; TL0=0xEF; TH0=0xD8; TR0=1; } void main(){ //Khai bao ngat ngoai EX0=1;//Cho phep nhat INT0 chan 3.2 IT0=1;//Cho phap INT0 ngat theo suon xuong //Khai bao ngat timer 10ms TMOD=0x01; //chon timer0, che 1, 16Bit // TL0=0x17; //TH0=0xfc; TL0=0xEF; TH0=0xD8; ET0 =1; //cho phep ngat Timer TR0=1; //khoi dong timer EA=1;//Cho phep ngat toan cuc while(1) { hienthi(tocdo); } } void delay_ms(unsigned int Time) { unsigned int i,j, t; t=Time; for(i=0;i>3)&1; } // -// Ham Gui Lenh Cho LCD void lcd1602_send_command (unsigned char cX ) { lcd1602_send_4bit_data ( cX >>4 ); // send bit high lcd1602_enable() ; lcd1602_send_4bit_data ( cX ); lcd1602_enable() ; } // send bit low // -// Ham Khoi Tao LCD void lcd1602_init ( void ) { lcd1602_send_4bit_data ( 0x00 ); delay_ms(200); LCD_RS=0; LCD_RW=0; LCD_E=0; // che gui lenh lcd1602_send_4bit_data ( 0x03 ); lcd1602_enable() ; lcd1602_enable () ; lcd1602_enable () ; lcd1602_send_4bit_data ( 0x02 ); lcd1602_enable() ; // ket noi bit // ket noi bit lcd1602_send_command( 0x2C ); thi hang, ki tu 5x8 lcd1602_send_command( 0x80); lcd1602_send_command( 0x0C); phep hien thi man hinh lcd1602_send_command( 0x06 ); khung hinh lcd1602_send_command( CLEAR_LCD ); } 33 // giao thuc bit, hien // cho // tang ID, khong dich // xoa toan bo khung hinh // -// Ham Thiet Lap Vi Tri Con Tro void lcd1602_gotoxy(unsigned char x, unsigned char y) { unsigned char address; if(!y) address = (LINE_1+x); else address = (LINE_2+x); delay_ms(3); lcd1602_send_command(address); delay_ms(1); } // -// Ham Xoa Man Hinh LCD void lcd1602_clear(void) { lcd1602_send_command( CLEAR_LCD ); //delay_us(300); } // -// Ham Gui Ky Tu Len LCD void lcd1602_putchar ( unsigned int cX ) { LCD_RS=1; lcd1602_send_command( cX ); LCD_RS=0; } // -// Ham Gui Chuoi Ky Tu Len LCD void lcd1602_puts(char *s) { while (*s) { lcd1602_putchar(*s); s++; } } void chedo1 (void) { D1=0;D2=1;D3=1;D4=1; 34 } void chedo2 (void) { D1=1;D2=0;D3=1;D4=1; } void chedo3 (void) { D1=1;D2=1;D3=0;D4=1; } void chedo4 (void) { D1=1;D2=1;D3=1;D4=0; } Chương 3: Đo lường điều khiển với 8051 3.1 Đo tốc độ, vị trí lưu lượng sử dụng Encoder - Đo tốc độ - Xác định vị trí, khoảng cách - Đo lưu lượng 3.2 Đo lường điều khiển sử dụng chuyển đổi tương tự - số (ADC) số - tương tự (DAC) - Ghép nối ADC0804           /CS: chọn chíp /RD: đọc data /WR: bắt đầu biến đổi /INTR: thơng báo hồn thành q trình chuyển đổi DGND: đất digital AGND: đất analog Vin+, Vin-: đầu vào analog V+: nguồn cấp +5V CLKR, CLKIN: xung nhịp DB0-DB7: Data 35 - Thực toán đo hiển thị nhiệt độ sử dụng cảm biến LM 35 36 ... chung vi xử lý vi điều khiển 1.1 Giới thiệu chung vi xử lý vi điều khiển Vi xử lý: (Micro-Processor): - CPU vi? ??t tắt chữ Central Processing Unit , tạm dịch đơn vị xử lí trung tâm - Nhiệm vụ CPU xử. .. CPU xử lý chương trình vi tính kiện - Vi điều khiển, thực chất, hệ thống bao gồm vi xử lý có hiệu suất đủ dùng giá thành thấp (khác với vi xử lý đa dùng máy tính) kết hợp với khối ngoại vi nhớ,... điện, máy So sánh vi xử lý vi điều khiển Embedded System (hệ thống nhúng) - Bộ xử lý gắn (embedded) vào ứng dụng cụ thể Một sản phẩm embedded sử dụng VXL VĐK để thực thi công vi? ??c nhất; - Chỉ
- Xem thêm -

Xem thêm: TÀI LIỆU VI XỬ LÝ 8051 ĐẦY ĐỦ,