Đề cương bài giảng vi điều khiển

75 145 0
Đề cương bài giảng vi điều khiển

Đang tải... (xem toàn văn)

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

Thông tin tài liệu

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN KHOA CƠ KHÍ ĐỘNG LỰC BÀI GIẢNG HỌC PHẦN: VI ĐIỀU KHIỂN SỐ TÍN CHỈ: 02 LOẠI HÌNH ĐÀO TẠO: ĐẠI HỌC CHÍNH QUY NGÀNH: CÔNG NGHỆ KỸ THUẬT Ô TÔ Hưng Yên - 2015 Khoa Cơ khí Động lực – Trường ĐHSPKT Hưng Yên Chƣơng TỔNG QUAN 1.1 Khái niệm 1.2 Các dòng vi điều khiển phổ biến thị trƣờng 1.3 Các hệ thống số 1.3.1 Hệ thống số thập phân 1.3.2 Hệ thống số nhị phân 1.3.3 Hệ thống số bát phân (BCD-Binary Coded Decimal) 1.3.4 Hệ thống số thập lục (H Hexadecimal) 1.3.5 Số bù hai 1.3.6 Các phép toán số học hệ nhị phân 1.3.6.1 Phép cộng nhị phân không dấu 1.3.6.2 Phép trừ nhị phân 1.3.6.3 Phép nhân nhị phân 1.3.6.4 Phép chia nhị phân 1.3.7 Chuyển đổi qua lại hệ thống số 1.3.7.1 Chuyển đổi số thập phân sang nhị phân : 1.3.7.2 Chuyển đổi số nhị phân sang thập phân 1.3.7.3 Chuyển đổi số nhị phân sang Hexa : 1.3.7.4 Chuyển đổi số Hexa sang nhị phân: 1.3.7.5 Mã ASCII: (American Standard Code for Information Interchange ) Chƣơng CẤU TRÚC PHẦN CỨNG VÀ NGÔN NGỮ LẬP TRÌNH C 11 2.1 Cấu trúc phần cứng vi điều khiển 8051 11 2.2 Sơ đồ chân 11 2.2.1 Nhóm chân nguồn, dao động, điều khiển 12 2.2.2 Nhóm chân cổng vào 13 2.3 Tổ chức không gian nhớ 14 2.3.1 Bản đồ nhớ ROM 8051 14 2.3.2 Tổ chức không gian nhớ RAM 8051 15 2.4 Thanh ghi 17 2.4.1 Thanh ghi tích luỹ A: 18 2.4.2 Thanh ghi từ trạng thái PSW (hay gọi ghi cờ) : 18 2.4.3 Thanh ghi điều khiển đếm định thời (TCON) 18 2.4.4 Thanh ghi điều khiển chế độ định thời/bộ đếm (TMOD) 19 2.4.5 Thanh ghi cho phép ngắt IE 20 Khoa Cơ khí Động lực – Trường ĐHSPKT Hưng Yên 2.5 Ngôn ngữ lập trình C cho vi điều khiển 20 2.5.1 Cấu trúc chƣơng trình C 20 2.5.2 Lời thích 21 2.5.3 Các loại kiểu liệu C 21 2.5.4 Các hàm C 23 2.5.5 Các toán tử 24 2.5.6 Phép toán lấy địa biến (&) 26 2.5.7 Phép toán chuyển đổi kiểu (bắt buộc) 26 2.5.8 Các định dạng 26 2.5.9 Cấu trúc điều khiển 27 2.5.9.1 Cấu trúc rẽ nhánh 27 2.5.9.2 Cấu trúc lựa chọn switch 27 2.5.9.3 Vòng lặp có hạn for 28 2.5.9.4 Vòng lặp không xác định while 28 2.5.9.5 Một số thƣ viện chuẩn C 28 2.5.9.6 Các từ khóa C 29 2.5.9.10 trỏ mảng 29 2.6 Thuật toán lƣu đồ thuật toán 33 2.6.1 Khái niệm 33 2.6.2 Biểu diễn thuật toán sơ đồ khối 33 CHƢƠNG LẬP TRÌNH ỨNG DỤNG 34 3.1 Các bƣớc tạo Project 34 3.2 Lập trình ứng dụng 40 3.2.1 Chƣơng trình tạo trễ 40 3.2.2 Ứng dụng điều khiển LED đơn 40 3.2.3 Ứng dụng điều khiển LED đơn 41 3.2.4 Ứng dụng điều khiển LED 43 3.2.5 Ứng dụng điều khiển LED ma trận 47 3.2.6 Ứng dụng sử dụng nút nhấn 48 3.2.7 Ứng dụng sử dụng ngắt 51 3.2.8 Lập trình cho Timer 55 3.2.8.1 Các ghi sở định thời 55 3.2.8.2 Lập trình cho timer chế độ 57 3.2.8.3 Lập trình cho Timer chế độ 59 Khoa Cơ khí Động lực – Trường ĐHSPKT Hưng Yên 3.2.8.4 Lập trình cho đếm 60 3.2.9 Lập trình ngắt timer 62 3.2.10 Lập trình với biến đổi A/D 65 3.2.11 Lập trình giao tiếp máy tính 67 3.2.11.1 Chế độ thu phát 67 3.2.11.2 Giao thức (protocol) 68 3.2.11.3 Tốc độ truyền 69 3.2.11.4 Bố trí chân RS232 69 3.2.11.5 Ghép nối 8051 với RS232 71 3.2.11.6 Lập trình truyền thông nối tiếp cho 8051 71 3.2.11.7 Lập trình 8051 truyền liệu nối tiếp 73 3.2.11.8 Lập trình 8051 nhận liệu nối tiếp 73 3.2.11.9 Truyền liệu ngắt 74 Khoa Cơ khí Động lực – Trường ĐHSPKT Hưng Yên Chƣơng TỔNG QUAN 1.1 Khái niệm Hình 1.1 Cấu trúc chung vi xử lí, vi điều khiển - Vi xử lý: theo nghĩa rộng CPU, khối chức nhƣ nhớ thiết bị ngoại vi khác phải đƣợc ghép từ bên tới chíp vi xử lý để hình thành mạch (board) vi xử lý hoàn chỉnh Hệ thống đƣợc thực theo cách đƣợc gọi máy vi tính mạch (single board) Thí dụ 8085, 8086, 80486 vi xử lý - Vi điều khiển: thiết bị mà tất khối chức (RAM, ROM, CPU) nằm bên vi mạch đơn lẻ Hay gọi máy tính “đơn chíp” - Bộ nhớ: phần vi điều khiển, có chức lƣu trữ liệu - Đơn vị xử lý trung tâm: Khối có chức thực phép tính số học, logic di chuyển liệu từ ô nhớ tới ô nhớ khác - BUS: Các đƣờng dẫn để di chuyển liệu từ khối sang khối khác đƣợc gọi BUS Về mặt vật lý, bus nhóm đƣờng dẫn, thƣờng gồm 8, 16 đƣờng dẫn nhiều Các bus chia làm loại: bus địa bus liệu bus địa bao gồm số đƣờng dẫn tƣơng ứng với dung lƣợng nhớ mà ta muốn định địa Bus liệu có độ rộng độ rộng liệu, thƣờng vi điều khiển bit đƣờng kết nối - Khối vào ra: có chức giao tiếp với thiết bị ngoại vi - Chuyển đổi tƣơng tự sang số (ADC): Khối có nhiệm vụ chuyển đổi thông tin dƣới dạng vài giá trị tƣơng tự thành số nhị phân đƣa tới đơn vị xử lí trung tâm - Chƣơng trình: Sử dụng câu lệnh đƣợc xếp theo quy tắc chặt chẽ, nhằm truyền tải mong muốn ngƣời tới vi điều khiển 1.2 Các dòng vi điều khiển phổ biến thị trƣờng - Họ vi điều khiển 8051 - Vi điều khiển PIC - Vi điều khiển AVR Khoa Cơ khí Động lực – Trường ĐHSPKT Hưng Yên 1.3 Các hệ thống số 1.3.1 Hệ thống số thập phân Hệ đếm thập phân gọi hệ đếm số mƣời đƣợc biểu diễn 10 số từ (0,1,2,3,4,5,6,7,8,9 ) số đƣợc sử dụng nhiều khoa học kỹ thuật nhƣ đời sống hàng ngày, biểu diễn số thập phân dứng sau dãy số thƣờng có chữ D dụ: Ba nghìn Chin trăm Bảy mƣơi Tám đƣợc biểu diễn nhƣ sau 3978 = 3x103 + 9x102 + 7x101 + 8x100 = 3000 + 900 + 70 + 1.3.2 Hệ thống số nhị phân Hệ đếm nhị phân gọi hệ đếm số hai đƣợc biểu diễn số 1, kỹ thuật điện tử số số gọi mức logic thấp ứng với điện áp thấp, số 1gọi mức logic cao tƣơng ứng với điện áp cao Mỗi ký hiệu đƣợc gọi Bit (Binary Digit), biểu diễn số nhị phân dứng sau dãy số phải có chữ B dụ: 1100b gọi nibble 1001 1001b gọi Byte 1010 1011 1100 1101b gọi Word Trong dãy số nhị phân đƣợc biểu diễn số nhị phân sát phải gọi bít LSB số nhị phân sát trái gọi bít MSB Số nhị phân thƣờng đƣợc biểu diễn dạng số nhị phân có dấu số nhị phân không dấu, số nhị phân không dấu biểu diễn số không âm (0) số nhị phân có dấu biểu diễn đƣợc giá trị âm dụ : (1101) = 1x2^3 + 1x2^2 + 0x2^1 + 1x2^0 = + + + = 13 Giải giá trị số có dấu bit là: -128 đến 127 Giải giá trị số có dấu 16 bit là: -32768 đến 32767 Trong biểu diễn dãy số nhị phân có dấu ngƣời ta sử dụng bít MSB để quy ƣớc cho bít dấu, với bít cho dãy số nhị phân dƣơng bít cho dãy số nhị phân âm Khoa Cơ khí Động lực – Trường ĐHSPKT Hưng Yên 1.3.3 Hệ thống số bát phân (BCD-Binary Coded Decimal) Số đếm BCD đƣợc định nghĩa số thập phân nhƣng đƣợc biểu diễn dƣới dạng nhị phân bít, nhƣng dãy số nhị phân bít quy sang hệ thập phân giá trị phải  Trong kỹ thuật điện tử nói chung mã BCD đƣợc sử dụng để giải mã hiển thị LED bảy thanh… dụ: (0011), (0100), (0101), (0110), …(1001) ; gọi số BCD không nén dụ: (00110100), (01010110), … (01111000) ; gọi số BCD nén Dƣới bảng mã BCD Thập phân BCD 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 dụ: số 15 biểu diễn dƣới dạng BCD: 0001 0101 1.3.4 Hệ thống số thập lục (Hexadecimal) Hệ đếm thập phân gọi hệ đếm số mƣời sáu đƣợc biểu diễn 16 ký số (0,1,2,3,4,5,6,7,8,9,B,C,D,E,F) số đƣợc sử dụng nhiều khoa học kỹ thuật đặc biệt khoa học máy tính biểu diễn mã Hexa ngắn gọn, biểu diễn số thập lục phân sau dãy số phải có chữ H dụ: 3978h , 12CCh, 1998h, ABCDh, 2008h … Khoa Cơ khí Động lực – Trường ĐHSPKT Hưng Yên 1.3.5 Số bù hai Trong kỹ thuật Vi xử lý để biểu diễn số dƣới dạng dãy số nhị phân việc biểu diễn số không dấu, số có dấu ngƣời ta sử dụng cách biểu diễn số bù Vậy số bù biểu diễn nhƣ nào? dụ: Hãy biểu diễn dãy số A = 10011001 sang số bù nó: b1: Tìm số bù A(bằng cách lấy bù tất bit A): 01100110 b2: Tìm số bù A (bằng cách lấy số bù cộng cho 1) : 01100111 đến ta nhận thấy số bù số số đối tổng =0 1.3.6 Các phép toán số học hệ nhị phân 1.3.6.1 Phép cộng nhị phân không dấu Quy ƣớc: 0+0=0 0+1=1 + = nhớ dụ: Cho số nhị phân nhƣ sau A = 10010011 ; B = 00111001 tìm tổng Y số nhị phân cho 1.3.6.2 Phép trừ nhị phân Quy ƣớc: 0–0=0 – = mƣợn 1–0=1 1–1=0 dụ : Cho số nhị phân nhƣ sau A = 10010011 ; B = 00111001 tìm hiệu Z số nhị phân cho (Lưu ý phép trừ thực cách biến thành phép cộng cách cộng với số bù ) 1.3.6.3 Phép nhân nhị phân dụ : Cho số nhị phân nhƣ sau A = 00100101 ; B = 00000100 tìm tích F Khoa Cơ khí Động lực – Trường ĐHSPKT Hưng Yên Khi nhân dãy số nhị phân với ta đặt phép toán nhân giống nhƣ nhân số thập phân, kết phép nhân dãy số nhị phân bít thu đƣợc dãy số nhị phân 16 bít, nhƣ ta có F = A*B = 0000000010010100b 1.3.6.4 Phép chia nhị phân dụ : Cho số nhị phân nhƣ sau A = 10010110 ; B = 00000100 tìm thƣơng Khi chia dãy số nhị phân với ta đặt phép toán chia giống nhƣ chia số thập phân, kết phép chia nhƣ phần dƣ (nếu có) thu đƣợc tƣơng tự nhƣ làm phép chia số thập phân, nhƣ ta có M = A/B = 00100101b dƣ 0010b 1.3.7 Chuyển đổi qua lại hệ thống số 1.3.7.1 Chuyển đổi số thập phân sang nhị phân : Để chuyển đổi số thập phân sang số nhị phân ngƣời ta thƣờng dùng phƣơng pháp lấy số thập phân cần chuyển chia liên tiếp đến chia đƣợc dừng dụ : Chuyển số thập phân 25 sang số nhị phân không dấu Thƣơng số Chia Dƣ số 25/2 = 12 12/2 = 6/2 = 3/2 = 1 1/2 = LSB MSB Kết thu đƣợc là: 11001 với số dƣ lần thứ bít có trọng số nhỏ 1.3.7.2 Chuyển đổi số nhị phân sang thập phân Để chuyển đổi số nhị phân sang số thập phân ngƣời ta thƣờng dùng phƣơng pháp lấy tổng tích n số nhị phân cần chuyển nhân với 20 đến 2N-1 hay theo biểu thức tổng quát nhƣ sau: A = B(N-1)* 2(N-1) + B(N-2)* 2(N-2) + B(N-3)* 2(N-3) + … + B(1)* 2(1) + B(0)* 2(0) dụ : Chuyển số nhị phân không dấu 01011110b sang số thập phân A = 0*27 + 1*26 +0*25 + 1*24+ 1*23 + 1*22 + 1*21 + 0*20 = 94 nhƣ ta có 01011110b = 94 1.3.7.3 Chuyển đổi số nhị phân sang Hexa : dụ : Chuyển số nhị phân 1100101011111110 sang số hexa Khoa Cơ khí Động lực – Trường ĐHSPKT Hưng Yên Trƣớc hết ta chia số nhị phân cho thành nhóm 4-bit tính từ bít có trọng số nhỏ nhất, sau thay nhóm 4-bit ký hiệu hexa tƣơng ứng với ta thu đƣợc kết nhƣ sau: 1100 1010 1111 1110 C A F E Kết CAFEh 1.3.7.4 Chuyển đổi số Hexa sang nhị phân: dụ : Chuyển số hexa 2F8h ABBAh sang số nhị phân Tƣơng tự nhƣ trƣờng hợp ta thay ký hiệu hexa 4-bit nhị phân tƣơng ứng với ta thu đƣợc kết nhƣ sau: (tham khảo chuyển đổi nhị phân sang hexa) 1.3.7.5 Mã ASCII: (American Standard Code for Information Interchange ) Quá trình trao đổi thông tin máy tính nói chung nhƣ trình xử lý thông tin vi xử lý, tất thông tin đƣợc biểu diễn dƣới dạng số Mỗi tổ hợp số đƣợc gán ký tự chữ cái, chữ số ký tự đặc biệt Khi thông tin đƣợc truyền đi, đƣợc lƣu giữ nhớ hiển thị hình dƣới dạng ký tự tuân theo loại mã chuẩn đƣợc sử dụng rộng rãi gọi mã ASCII Khoa Cơ khí Động lực – Trường ĐHSPKT Hưng Yên U1 19 18 29 30 31 XTAL1 XTAL2 RST PSEN ALE EA P1.0 D9 P1.1 P1.2 LED-YELLOW 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 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 AT89C51 #include //Khai bao su dung timer0 che void init_T0_M2 () { TMOD = 0x02; //Timer che TL0 = 0; } // Delay du dung timer void delay () { TR0 = 1; // Chay timer while(!TF0) {};// khong lam gi TF0 = 0;// xoa co tran TR0 = 0; // Dung bo dinh thoi } // Chuong trinh chinh main() { init_T0_M2(); while(1)// vong lap vo han { P1_0 = ~P1_0; delay(); } } 3.2.8.4 Lập trình cho đếm - Nếu bít C/T = định thời sử dụng làm đếm 60 Khoa Cơ khí Động lực – Trường ĐHSPKT Hưng Yên Khi bít GATE = ghi TMOD việc khởi động dừng định thời đƣợc thực từ bên qua chân P2.2 P2.3 Việc chạy dừng định thời đƣợc thực qua công tắc chuyển mạch bên - dụ: lập trình cho đếm chế độ hiển thị số đếm cổng P2 29 30 31 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 D1 D0 D0 D1 D2 D3 D4 D5 D6 D7 D2 21 22 23 24 25 26 27 28 D3 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 D4 RST 39 38 37 36 35 34 33 32 D5 XTAL2 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 D7 18 XTAL1 D6 U1 19 D1 D2 D3 D4 D5 D6 D7 D8 LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW 10 11 12 13 14 15 16 17 AT89C51 #include //Khai bao su dung timer1 che 61 Khoa Cơ khí Động lực – Trường ĐHSPKT Hưng Yên void init_C0_M2 () { TMOD = 0x06; //Counter che TL0 = 0; TR0 = 1; // chay counter } // Delay du dung timer void Dem () { while(!TF1) { P2 = TL0; } TF1 = 0;// xoa co tran } // Chuong trinh chinh main() { P3 = 0xff; //P3 lam cong vao init_C0_M2(); while(1)// vong lap vo han { Dem(); } } 3.2.9 Lập trình ngắt timer - Trong phần ta biết, cờ định thời TFx đƣợc đặt lên cao định thời đạt giá trị cực đại quay trở Và để kiểm tra cờ ta dùng lệnh while(!TFx) Phƣơng pháp có nhƣợc điểm trình kiểm tra cờ TF, vi điều khiển làm đƣợc việc khác Để khắc phục nhƣợc điểm này, ta sử dụng phƣơng pháp ngắt - Các bƣớc khai báo ngắt cho timer + Bƣớc 1: Thiết lập giá trị thích hợp cho ghi cho phép ngắt IE (ET0 =1; ET1 = 1) + bƣớc 2: Thiết lập cho định thời theo trình tự bƣớc nêu phần - Cách khai báo, sử dụng ngắt timer Void interrupt_T1 () interrupt Void interrupt_T0 () interrupt { { //write code here //write code here } } - dụ: Tạo xung chân P2_0 sử dụng ngắt T0, chế độ 62 Khoa Cơ khí Động lực – Trường ĐHSPKT Hưng Yên 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 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 D8 LED-YELLOW 10 11 12 13 14 15 16 17 AT89C51 #include //Khai bao su dung timer1 che void init_interrupt_T0_M2 () { TMOD = 0x02; //T0,M2 TL0 = 0; ET0 = 1; // Cho phep ngat T0 EA = 1; // Cho phep ngat TR0 = 1; // chay counter } //Chuong trinh ngat cho T0 void interrupt_T2 () interrupt { P2_0=~P2_0; } // Chuong trinh chinh main() { init_interrupt_T0_M2 (); while(1)// vong lap vo han { }; // Cho ngat } - dụ 2: Ứng dụng ngắt timer điều chế độ rộng xung PWM 63 Khoa Cơ khí Động lực – Trường ĐHSPKT Hưng Yên 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 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 A B C D D8 LED-YELLOW 10 11 12 13 14 15 16 17 AT89C51 #include // Khai bao bien sbit button = P3^0; sbit pulse = P2^0; unsigned int count,rate; //================================================= // chuong trinh tao tre //Khai bao su dung timer1 che 1================== void init_interrupt () { TMOD = 0x20; //T0,M2 TL1 = 0; ET1 = 1; // Cho phep ngat T0 EX0 = 1;// Cho phep ngat ngoai EA = 1; // Cho phep ngat TR1 = 1; // chay counter } //Chuong trinh ngat cho T0========================== void interrupt_T1 () interrupt { count++; if(count == rate) { count = 0; pulse =~pulse; } } //Chuong trinh dem so lan nhan nut============== void interrupt_INT0 () interrupt { 64 Khoa Cơ khí Động lực – Trường ĐHSPKT Hưng Yên rate= rate + 2; if(rate >= 20) rate = 2; } // Chuong trinh chinh================================== main() { P3 = 0xff; count = 0; rate = 2; init_interrupt (); while(1)// vong lap vo han { }; } 3.2.10 Lập trình với biến đổi A/D - Các biến đổi AD chuẩn thƣờng đƣợc sử dụng ứng dụng đòi hỏi tốc độ mức trung bình mức cao dụ ACD 0804, thời gian chuyển đổi biến đổi A/D 100uS - Bộ biến đổi giao tiếp với vi điều khiển thông qua chân sau: DB0~DB7 Tám chân liệu RD Lối vào đọc WR Lối vào ghi INTR Lối ngắt CLKR/CLKIN Các lối vào điều khiển xung nhịp VIN+ - Lối vào Analog dƣơng Chức chân đƣợc giải thích chi tiết nhƣ sau: + DB0~DB7: lối số, liệu chuyển đổi xuất đƣờng Bộ biến đổi bít có 256 khả kết hợp ( từ đến 255) mẫu bít lối Với điện áp toàn dải +5V, biến đổi có độ phân giải 5/256 = 19,53mV dụ mẫu bít lối “00010000” (nghĩa 16 hệ thập phân) tƣơng ứng với 312,48mV Tƣơng tự mẫu bít lối “10100000” (nghĩa 160 hệ thập phân) tƣơng ứng 3124,8mV hay 3,124V + RD: chân điều khiển đọc liệu RD mức thấp liệu xuất chân lối Khi RD mức cao liệu không tồn lối + WR: lối vào WR bình thƣờng mức logic cao lối vào đƣợc kéo xuống mức logic thấp, sau lại trở mức cao để bắt đầu trình chuyển đổi 65 Khoa Cơ khí Động lực – Trường ĐHSPKT Hưng Yên + INTR: lối ngắt biến đổi ADC, sƣờn xung xuống (từ mức cao xuống mức thấp) đƣợc tạo chân trình chuyển đổi kết thúc Lối thƣờng đƣợc sử dụng để tạo ngắt vi điều khiển cho liệu chuyển đổi đƣợc đọc + ADC0804 chứa dao động bên cần có tụ điện điện trở bên nối với chân CLKR CLKIN để khởi động dao động + VIN+: chân lối vào điện áp tƣơng tự - Để thực trình chuyển đổi, hoạt động A/D tóm tắt theo bƣớc sau: + Thiết lập WR RD lên mức HIGH + Bắt đầu trình chuyển đổi cách đặt WR xuống mức LOW + Đặt WR trở mức HIGH + Phát điểm kết thúc trình biến đổi INTR xuống mức LOW (thƣờng đƣợc sử dụng ngắt) + Đặt RD xuống mức LOW đọc liệu từ DB0~DB7 + Đặt RD lên mức cao + Quá trình xử lý đƣợc lặp lại cần đọc lien tục tín hiệu đƣa vào vi điều khiển U1 C1 RV1 150p R1 10k VIN+ VIN- 20 18 17 16 15 14 13 12 11 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 10 11 12 13 14 15 16 17 RD INTR WR D0 VCC DB0(LSB) DB1 DB2 DB3 DB4 DB5 DB6 DB7(MSB) D1 CS RD WR CLK IN INTR A GND D GND VREF/2 CLK R D0 D1 D2 D3 D4 D5 D6 D7 D2 U2 RD WR INTR5 10 19 21 22 23 24 25 26 27 28 D3 PSEN ALE EA P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 D4 29 30 31 RST 39 38 37 36 35 34 33 32 D5 XTAL2 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 D6 18 XTAL1 D7 19 D1 D2 D3 D4 D5 D6 D7 AT89C51 50% ADC0804 1k D8 LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW U2(VIN+) #include // Khai bao bien sbit ADC_RD = P3^2; sbit ADC_WR = P3^4; unsigned char t; // chuong trinh tao tre void delay (long time) { 66 Khoa Cơ khí Động lực – Trường ĐHSPKT Hưng Yên long k; for(k=0;k

Ngày đăng: 24/10/2017, 13:28

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan