Bài giảng vi điều khiển

133 60 2
  • Loading ...
1/133 trang
Tải xuống

Thông tin tài liệu

Ngày đăng: 09/12/2018, 22:32

Mục lục Nội dung Mục lục CHƯƠNG HỌ VI ĐIỀU KHIỂN MCS-51 1.1 Tổng quan 1.2 Phân biệt vi xử lý vi điều khiển 1.3 Họ vi điều khiển MCS-51 1.3.1 Lịch sử phát triển họ MCS-51 1.3.2 Khảo sát vi điều khiển 89S52 .12 1.3.2.1 Tổng quát 12 1.3.2.2 Sơ đồ chân 14 1.3.2.3 Cấu trúc port xuất nhập 19 1.3.2.4 Tổ chức nhớ 19 1.3.2.5 Các ghi có chức đặc biệt 23 1.3.2.6 Bộ nhớ .28 1.3.2.7 Hoạt động Reset 29 1.4 Hoạt động định thời 30 1.4.1 Tổng quát 30 1.4.2 Các ghi điều khiển Timer .31 1.4.3 Các chế độ hoạt động 33 1.5 Hoạt động port nối tiếp .37 1.5.1 Tổng quát 37 1.5.2 Thanh ghi điều khiển port nối tiếp - SCON 38 1.4.3 Các chế độ hoạt động 39 1.6 Hoạt động ngắt 46 1.6.1 Tổng quát 46 1.6.2 Các ghi điều khiển ngắt .47 Bài giảng Vi điều khiển Ứng dụng 1.6.3 Các hoạt động ngắt 47 CHƯƠNG 2: PHẦN MỀM HỖ TRỢ CHO MÔ ĐUN 53 2.1 Phần mềm mô phần cứng: 53 2.1.1 Cài đặt: 53 2.1.2 Hướng dẫn sử dụng: .59 2.1.2.1 Hướng dẫn tạo dự án mới: 60 2.1.2.2 Hướng dẫn vẽ mạch nguyên lý mô phỏng: 64 2.2 Phần mềm lập trình C cho họ MCS-51…………………………………………… 79 2.2.1 Cài đặt phần mềm mikroC for 8051………………………………………………79 2.2.2 Hướng dẫn sử dụng phần mềm mikroC for 8051……………………….……… 83 2.2.3 Tập lệnh C cho họ 8051……………………………………………….…….……93 2.2.3.1 Định nghĩa ………………………………………………………….…….…… 93 2.2.3.2 Biểu diễn số học………………………………………………….…….……… 93 2.2.3.3 Hàm trễ…………………………………………………………….….…………93 2.2.3.4 Khai báo kiểu liệu cho biến…………………………………….……………93 2.2.3.5 Các phép toán…………………………………………………… …………… 94 2.2.3.6 Tập lệnh có cấu trúc……………………………………………… ……………95 2.3 Phần mềm nạp code cho họ 8051…………………………………… …………….97 2.3.1 Cài đặt……………………………………………………………… ……………97 2.3.2 Hướng dẫn sử dụng………………………………………………………………100 CHƯƠNG 3: LẬP TRÌNH ỨNG DỤNG .99 3.1 Lập trình điều khiển led đơn 99 3.2 Lập trình điều khiển RELAY 102 3.3 Lập trình hiển thị LCD 105 3.4 Lập trình điều khiển led đoạn .107 3.4.1 Giới thiệu LED đoạn 107 3.4.2 Mã LED: .107 3.4.3 Lập trình điều khiển LED đoạn: 108 3.4.4 Lập trình điều khiển LED đoạn phương pháp quét……………………….109 Đặng Thành Tựu Trang Bài giảng Vi điều khiển Ứng dụng 3.5 Lập trình giao tiếp phím ấn 113 3.6 Lập trình điều khiển động không đồng pha quay chiều 115 3.7 Lập trình điều khiển đèn giao thông số 118 3.8 Lập trình giao tiếp khơng dây qua Bluetooth 125 3.8.1 Mơ hình giao tiếp .125 3.8.2 Giới thiệu Module HC05: 126 3.8.3 Giao tiếp HC-05 với vi điều khiển họ 8051: .126 3.8.4 Điều khiển thiết bị từ Windows: 129 3.8.4.1 Kết nối Module HC-05 với máy tính: 129 3.8.4.2 Tạo giao diện điều khiển……………………………………………………….131 Tài liệu tham khảo 135 Đặng Thành Tựu Trang Bài giảng Vi điều khiển Ứng dụng CHƯƠNG HỌ VI ĐIỀU KHIỂN MCS-51 1.1 Tổng quan Trong thập niên cuối kỷ XX, từ đời công nghệ bán dẫn, kỹ thuật điện tử có phát triển vượt bậc Các thiết bị điện tử sau tích hợp với mật độ cao cao diện tích nhỏ,nhờ thiết bị nhỏ nhiều chức Các thiết bị điện tử ngày nhiều chức giá thành ngày rẻ hơn, điện tử có mặt khắp nơi Bước đột phát kỹ thuật điện tử tạo thiết bị điện tử Vi điều khiển Một vi điều khiển (microcontroller) xem “một máy tính chip” – mạch điện tích hợp chip, lập trình được, dùng để điều khiển hoạt động hệ thống Vi điều khiển ứng dụng rộng rãi Đa số lĩnh vực ứng dụng vi điều khiển Và khí tự động hố có lẽ gắn liền với vi xử lý Vi điều khiển câu trúc siêu nhỏ, gồm linh kiện điện tử có kích thước micro nano kết hợp với nhau, nối với thiết bị bên ngồi qua chân vi điều khiển hiểu rõ cấu trúc nó, ta hiểu làm việc với gì? Và hoạt động nào? 1.2 Phân biệt vi xử lý vi điều khiển Về hai khái niệm không khác nhiều, “vi xử lý” thuật ngữ chung dùng để đề cập đến kỹ thuật ứng dụng công nghệ vi điện tử, công nghệ tích hợp khả xử lý theo chương trình vào lĩnh vực khác Vào giai đoạn đầu q trình phát triển cơng nghệ vi xử lý, chip (hay vi xử lý) chế tạo tích hợp phần cứng thiết yếu CPU mạch giao tiếp CPU phần cứng khác Trong giai đoạn này, phần cứng khác (kể nhớ) thường khơng tích hợp chip mà phải ghép nối thêm bên Các phần cứng gọi ngoại vi (Peripherals) Về sau, nhờ phát triển vượt bậc cơng nghệ tích hợp, ngoại vi tích hợp vào bên IC người ta gọi vi xử lý tích hợp thêm ngoại vi “vi điều khiển” Đặng Thành Tựu Trang Bài giảng Vi điều khiển Ứng dụng Vi xử lý có khối chức cần thiết để lấy liệu, xử lý liệu xuất liệu sau xử lý Và chức Vi xử lý xử lý liệu, chẳng hạn cộng, trừ, nhân, chia, so sánh.v.v Vi xử lý khơng có khả giao tiếp trực tiếp với thiết bị ngoại vi, có khả nhận xử lý liệu mà thơi Để vi xử lý hoạt động cần có chương trình kèm theo, chương trình điều khiển mạch logic từ vi xử lý xử lý liệu cần thiết theo yêu cầu Chương trình tập hợp lệnh để xử lý liệu thực lệnh lưu trữ nhớ, công việc thực hành lệnh bao gồm: nhận lệnh từ nhớ, giải mã lệnh thực lệnh sau giải mã Để thực công việc với thiết bị cuối cùng, chẳng hạn điều khiển động cơ, hiển thị kí tự hình đòi hỏi phải kết hợp vi xử lý với mạch điện giao tiếp với bên gọi thiết bị I/O (nhập/xuất) hay gọi thiết bị ngoại vi Bản thân vi xử lý đứng khơng có nhiều hiệu sử dụng, phần máy tính, hiệu ứng dụng Vi xử lý lớn Vi xử lý kết hợp với thiết bị khác sử hệ thống lớn, phức tạp đòi hỏi phải xử lý lượng lớn phép tính phức tạp, có tốc độ nhanh Chẳng hạn hệ thống sản xuất tự động công nghiệp, tổng đài điện thoại, robot có khả hoạt động phức tạp v.v Bộ Vi xử lý có khả vượt bậc so với hệ thống khác khả tính tốn, xử lý, thay đổi chương trình linh hoạt theo mục đích người dùng, đặc biệt hiệu toán hệ thống lớn Tuy nhiên ứng dụng nhỏ, tầm tính tốn khơng đòi hỏi khả tính tốn lớn việc ứng dụng vi xử lý cần cân nhắc Bởi hệ thống dù lớn hay nhỏ, dùng vi xử lý đòi hỏi khối mạch điện giao tiếp phức tạp Các khối bao gồm nhớ để chứa liệu chương trình thực hiện, mạch điện giao tiếp ngoại vi để xuất nhập điều khiển trở lại, khối liên kết với vi xử lý thực cơng việc Để kết nối khối đòi hỏi người thiết kế phải hiểu biết tinh tường thành phần vi xử lý, nhớ, thiết bị ngoại vi Hệ thống tạo phức tạp, chiếm nhiều khơng gian, mạch in phức tạp vấn đề trình độ người thiết kế Kết giá thành sản phẩm cuối cao, không phù hợp để áp dụng cho hệ thống nhỏ số nhược điểm nên Đặng Thành Tựu Trang Bài giảng Vi điều khiển Ứng dụng nhà chế tạo tích hợp nhớ số mạch giao tiếp ngoại vi với vi xử lý vào IC gọi Microcontroller-Vi điều khiển Vi điều khiển có khả tương tự khả vi xử lý, cấu trúc phần cứng dành cho người dùng đơn giản nhiều Vi điều khiển đời mang lại tiện lợi người dùng, họ không cần nắm vững khối lượng kiến thức lớn người dùng vi xử lý, kết cấu mạch điện dành cho người dùng trở nên đơn giản nhiều có khả giao tiếp trực tiếp với thiết bị bên Vi điều khiển xây dựng với phần cứng dành cho người sử dụng đơn giản hơn, thay vào lợi điểm khả xử lý bị giới hạn (tốc độ xử lý chậm khả tính tốn hơn, dung lượng chương trình bị giới hạn) Thay vào đó, Vi điều khiển có giá thành rẻ nhiều so với vi xử lý, việc sử dụng đơn giản, ứng dụng rộng rãi vào nhiều ứng dụng có chức đơn giản, khơng đòi hỏi tính tốn phức tạp Vi điều khiển ứng dụng dây chuyền tự động loại nhỏ, robot có chức đơn giản, máy giặt, ơtơ v.v Các dòng vi điều khiển thông dụng: Họ vi điều khiển AMCC: (do tập đoàn "Applied Micro Circuits Corporation" sản xuất) Từ tháng năm 2004, họ vi điều khiển phát triển tung thị trường IBM • 403 PowerPC CPU • PPC 403GCX • 405 PowerPC CPU • PPC 405EP • PPC 405GP/CR • PPC 405GPr • PPC NPe405H/L • 440 PowerPC Book-E CPU • PPC 440GP • PPC 440GX Đặng Thành Tựu Trang Bài giảng Vi điều khiển Ứng dụng • PPC 440EP/EPx/GRx • PPC 440SP/SPe Họ vi điều khiển Atmel: • Dòng 8051 (8031, 8051, 8751, 8951, 8032, 8052, 8752, 8952) • Dòng Atmel AT91 (Kiến trúc ARM THUMB) • Dòng AT90, Tiny & Mega – AVR (Atmel Norway design) • Dòng Atmel AT89 (Kiến trúc Intel 8051/MCS51) • Dòng MARC4 Họ vi điều khiển Cypress MicroSystems • CY8C2xxxx (PSoC) Họ vi điều khiển Freescale Semiconductor Từ năm 2004, vi điều khiển phát triển tung thị trường Motorola • Dòng 8-bit • 68HC05 (CPU05) • 68HC08 (CPU08) • 68HC11 (CPU11) • Dòng 16-bit • 68HC12 (CPU12) • 68HC16 (CPU16) • Freescale DSP56800 (DSPcontroller) • Dòng 32-bit • Freescale 683XX (CPU32) • MPC500 • MPC 860 (PowerQUICC) • MPC 8240/8250 (PowerQUICC II) • MPC 8540/8555/8560 (PowerQUICC III) Họ vi điều khiển Fujitsu • F²MC Family (8/16 bit) • FR Family (32 bit) Đặng Thành Tựu Trang Bài giảng Vi điều khiển Ứng dụng • FR-V Family (32 bit RISC) Họ vi điều khiển Intel • Dòng 8-bit • 8XC42 • MCS48 • MCS51 • 8061 • 8xC251 • Dòng 16-bit • 80186/88 • MCS96 • MXS296 • Dòng 32-bit • 386EX • i960 Họ vi điều khiển Microchip • PIC 8-bit (xử lý liệu 8-bit, 8-bit data bus) • Từ lệnh dài 12-bit (Base-line): PIC10F, PIC12F vài PIC16F • Từ lệnh dài 14-bit (Mid-Range Enhance Mid-Range): PIC16Fxxx, PIC16F1xxx • Từ lệnh dài 16-bit (High Performance): PIC18F • PIC 16-bit (xử lý liệu 16-bit) • PIC điều khiển động cơ: dsPIC30F • PIC có DSC: dsPIC33F • Phổ thơng: PIC24F, PIC24E, PIC24H • PIC 32-bit (xử lý liệu 32-bit): PIC32MX Họ vi điều khiển National Semiconductor • COP8 • CR16 Đặng Thành Tựu Trang Bài giảng Vi điều khiển Ứng dụng Họ vi điều khiển STMicroelectronics • ST 62 • ST7 • STM8 • STM32 (Cortex-Mx) Họ vi điều khiển Philips Semiconductors • LPC2000 • LPC900 • LPC700 1.3 Họ vi điều khiển MCS-51 1.3.1 Lịch sử phát triển họ MCS-51 Năm 1976 Intel giới thiệu vi điều khiển (microcontroller) 8748, chip tương tự vi xử lý chip họ MCS-48 Độ phức tạp, kích thước khả Vi điều khiển tăng thêm bậc quan trọng vào năm 1980 intel tung chip 8051, Vi điều khiển họ MCS-51 chuẩn công nghệ cho nhiều họ Vi điều khiển sản xuất sau Chip 8051 chứa 60000 transistor bao gồm 4K byte ROM, 128 byte RAM, 32 đường xuất nhập, port nối tiếp định thời 16 bit Sau nhiều họ Vi điều khiển nhiều nhà chế tạo khác đưa thị trường với tính cải tiến ngày mạnh Hiện có nhiều họ Vi điều khiển thị trường với nhiều ứng dụng khác nhau, họ Vi điều khiển họ MCS-51 sử dụng rộng rãi giới Việt Nam Vào năm 1980 Intel cơng bố chíp 8051(80C51), vi điều khiển họ vi điều khiển MCS-51 Nó bao gồm 4KB ROM, 128 byte RAM, 32 đường xuất nhập, port nối tiếp định thời 16 bit Tiếp theo sau đời chip 8052, 8053, 8055 với nhiều tính cải tiến Hiện Intel khơng cung cấp loại Vi điều khiển họ MCS-51 nữa, thay vào nhà sản xuất khác Atmel, Philips/signetics, AMD, Siemens, Đặng Thành Tựu Trang Bài giảng Vi điều khiển Ứng dụng Matra&Dallas, Semiconductors cấp phép làm nhà cung cấp thứ hai cho chip họ MSC-51 Chip Vi điều khiển sử dụng rộng rãi giới Việt Nam Vi điều khiển hãng Atmel với nhiều chủng loại vi điều khiển khác Hãng Atmel có chip Vi điều khiển có tính tương tự chip Vi điều khiển MCS-51 Intel, mã số chip thay đổi chút Atmel sản xuất Mã số 80 chuyển thành 89, chẳng hạn 80C52 Intel sản xuất Atmel mã số thành 89C52 (Mã số đầy đủ: AT89C52) với tính chương trình tương tự Tương tự 8051,8053,8055 có mã số tương đương Atmel 89S52,89C53,89C55 Vi điều khiển Atmel sau ngày cải tiến bổ sung thêm nhiều chức tiện lợi cho người dùng Sau khoảng thời gian cải tiến phát triển, hãng Atmel tung thị trường dòng Vi điều khiển mang số hiệu 89Sxx với nhiều cải tiến đặc biệt có thêm khả nạp chương trình theo chế độ nối tiếp đơn giản tiện lợi cho người sử dụng Tất Vi điều khiển có đặc tính giống phần mềm (các tập lệnh lập trình nhau), phần cứng bổ sung với chip có mã số hai số cuối cao hơn, Vi điều khiển sau có nhiều tính vượt trội Vi điều khiển hệ trước Các Vi điều khiển 89Cxx bảng có cấu tạo ROM RAM 98Sxx bảng 2, nhiên 98Sxx bổ sung số tính có thêm chế độ nạp nối tiếp 8051 vi điều khiển bit tức CPU làm việc với bit liệu Dữ liệu lớn bit chia thành liệu bit để xử lý 8051 trở nên phổ biến sau Intel cho phép nhà sản xuất khác (Siemens, Atmel, Philips, AMD, Matra, Dallas, Semiconductor …) sản xuất bán dạng biến thể 8051 mà họ muốn với điều kiện họ phải để mã chương trình tương thích với 8051 Từ dẫn đến đời nhiều phiên 8051 với tốc độ dung lượng ROM chip khác Tuy nhiên, điều quan trọng có nhiều biến thể 8051, khác tốc độ, dung lượng ROM tất lệnh tương thích với 8051 ban Đặng Thành Tựu Trang 10 Bài giảng Vi điều khiển Ứng dụng Giải thuật: Code: #define sw1 p2.b0 #define sw2 p2.b1 #define relay1 p1.b0 #define relay2 p1.b1 void main(void){ relay1=relay2=0; while(1){ if(!sw1) {relay2=0;delay_ms(3000);relay1=1;} if(!sw2) {relay1=0;delay_ms(3000); relay2=1;} }} Bài tập làm thêm Bài tập 3.7.1 Thực lại yêu cầu có thêm nút dừng Bài tập 3.7.2 Thực lại yêu 3.7.1 với yêu cầu sau Về phần cứng: phím ấn Start Stop, LCD hiển thị - Mới cấp nguồn, LCD hiển thị: + Dòng 1: DK moto pha + Dòng 2: Trang thai: D + Trạng thái động cơ: dừng Đặng Thành Tựu Trang 119 Bài giảng Vi điều khiển Ứng dụng - Mỗi ấn phím Start làm thay đổi hiển thị LCD đảo chiều quay động sau: - Ấn Start lần 1: Trạng thái + Dòng 1: DK moto pha + Dòng LCD: Trang thai: T + Động quay thuận - Ấn Start lần 2: Trạng thái + Dòng 1: DK moto pha + Dòng LCD: Trang thai: N + Động quay ngược - Ấn tiếp tục ấn Start đảo trạng thái động - Ấn Stop: Trạng thái dừng + Dòng 1: DK moto pha + Dòng LCD: Trang thai: D + Động dừng - Mỗi đảo chiều phải dừng động giây lâu giây sau đảo chiều động 3.7 Lập trình điều khiển đèn giao thơng số  Yêu cầu: Lập trình điều khiển hệ thống đèn giao thông ngã tư thỏa Trụ đèn Trụ đèn Đỏ sáng 15 giây Xanh sáng 12 giây + Vàng sáng giây Xanh sáng 15 giây + Vàng sáng giây Đỏ sáng 20 giây Giải vấn đề:  Giai đoạn 1: Thiết kế phần cứng Đặng Thành Tựu Trang 120 Bài giảng Vi điều khiển Ứng dụng U1 29 30 31 XTAL2 RST PSEN ALE EA P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 AT89C51 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 E F G 10 11 12 13 14 15 16 17 U2 U4 U3 NOT A B C D E F G 18 XTAL1 A B C D E F G 19 U5 NOT NOT NOT Hình 3.9 Sơ đồ mạch đèn giao thơng trụ Đặng Thành Tựu Trang 121 Bài giảng Vi điều khiển Ứng dụng  Giai đoạn 2: Giải thuật Đặng Thành Tựu Trang 122 Bài giảng Vi điều khiển Ứng dụng  Giai đoạn 3: Viết code Để LED đoạn có thời gian hiển thị giây → ngắt Timer (chọn Timer0) Các bước tạo ngắt Timer: - Bước 1: Vào Tools chọn Interrupt Assistant Hình 3.10 Chọn công cụ tạo ngắt - Bước 2: Chọn loại ngắt → ngắt Timer → ET0 Hình 3.11 Chọn loại ngắt Sau OK code có sẵn chương trình ngắt Để chạy giây = 20 * 50.000 us = 1.000.000 us = 1s → sử dụng Timer mode (mode 16 bit đủ 50.000) + Cài đặt TH0 TL0 đếm 50.000 lần: Nạp vào TH0-TL0 giá trị = 65.535 – 50.000 = 15.535 = 3CAFH → TH0 = 3CH = 0x3C, TL0 = AFH = 0xAF cho biến count đếm 20 lần giây Đặng Thành Tựu Trang 123 Bài giảng Vi điều khiển Ứng dụng Hình 3.12 Chương trình ngắt Timer chạy thời gian 50.000uS Khi vào đầu chương trình phải khai báo cho phép ngắt Code: #define dulieu p2 #define scan p3 // p3.0 P3.3 #define bit_ngan p3.b0 #define bit_tram p3.b1 #define bit_chuc p3.b6 #define bit_donvi p3.b7 #define xanh1 p1.b0 #define vang1 p1.b1 #define do1 p1.b2 #define xanh2 p1.b3 #define vang2 p1.b4 #define do2 p1.b5 int ngan,tram,chuc,donvi; int led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90}; int time_xanh1=15,time_vang1=5, time_xanh2=12,time_vang2=3,time_tru1,time_tru2,i; int count=0; // dem 20 x 50.000 = 1.000.000 us = 1s void ngatT0() iv IVT_ADDR_ET0 ilevel ics ICS_AUTO { TH0=0x3c; TL0=0xaf; count++; } Đặng Thành Tựu Trang 124 Bài giảng Vi điều khiển Ứng dụng void hienthi() { ngan=time_tru1/10; tram=time_tru1%10; chuc=time_tru2/10; donvi=time_tru2%10; dulieu=led[ngan]; bit_ngan=0; delay_ms(10); bit_ngan=1; dulieu=led[tram]; bit_tram=0; delay_ms(10); bit_tram=1; dulieu=led[chuc]; bit_chuc=0; delay_ms(10); bit_chuc=1; dulieu=led[donvi]; bit_donvi=0; delay_ms(10); bit_donvi=1;} void main() { // khai bao ngat timer TF0_bit=0; // xoa cow ngat ET0_bit=1; // cho phep ngat timer0 EA_bit=1; // cho phep ngat toan cuc GATE0_bit=0; C_T0_bit=0; // cai dat che timer M01_bit=0; M00_bit=1; // che dem 16 bit TH0=0x3c; TL0=0xaf; Đặng Thành Tựu Trang 125 Bài giảng Vi điều khiển Ứng dụng TR0_bit=1; // bat dau chay ngat timer do1=xanh1=vang1=do2=xanh2=vang2=0; while(1) { // tru 1: - tru 2: xanh time_tru1=time_xanh2+time_vang2; time_tru2=time_xanh2; do1=xanh2=1; vang1=do2=0; while(time_tru2>0) {while(count0) { while(count0) { while(count0) { while(count
- Xem thêm -

Xem thêm: Bài giảng vi điều khiển, Bài giảng vi điều khiển, CHƯƠNG 1. HỌ VI ĐIỀU KHIỂN MCS-51, CHƯƠNG 2: PHẦN MỀM HỖ TRỢ CHO MÔ ĐUN, CHƯƠNG 3: LẬP TRÌNH ỨNG DỤNG, Bài tập làm thêm:, Hãy kết nối ngõ ra LED đơn với RELAY và đèn tròn 220Vac/75W., Bài tập làm thêm

Mục lục

Xem thêm

Gợi ý tài liệu liên quan cho bạn

Nhận lời giải ngay chưa đến 10 phút Đăng bài tập ngay