Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 74 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
74
Dung lượng
2,44 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH THỰC TẬP VI ĐIỀU KHIỂN Ths LÊ TIẾN LỘC Tháng 01/2014 MỤC LỤC CHƯƠNG 1: GIỚI THIỆU HỌ VI ĐIỀU KHIỂN AVR 1.1 Cấu trúc phần cứng vi điều khiển AVR 1.1.1 Tính ATMEGA32 1.1.2 Cấu trúc nhớ ATMEGA32 1.1.3 Chức chân VĐK ATMEGA32: 1.2 Phần mềm sử dụng lập trình VĐK ATMEGA32 10 1.2.1 Phần mềm lập trình Codevision 10 1.2.2 Phần mềm nạp Burn_E 14 1.2.3 Phần mềm mô mạch Proteus 15 1.3 Sơ đồ mạch board thí nghiệm vi điều khiển AVR 17 CHƯƠNG 2: NGẮT TIMER, HIỂN THỊ LED ĐƠN, LED ĐOẠN, LED MA TRẬN, LCD, MA TRẬN PHÍM 22 2.1 Thiết lập ngắt timer (bộ định thời) 22 2.1.1 Các ghi thiết lập ngắt Timer0: 22 2.1.2 Mục đích, yêu cầu: 24 2.1.3 Chương trình tham khảo: 24 2.2 Điều khiển led đơn d26 2.2.1 Mục đích, yêu cầu: 26 2.2.2 Chương trình tham khảo: 26 2.3 Hiển thị led đoạn 29 2.3.1 Mục đích, yêu cầu: 29 2.3.2 Chương trình tham khảo: 30 2.4 Hiển thị led matrix 35 2.4.1 Mục đích, yêu cầu: 35 2.4.2 Chương trình tham khảo: 35 2.5 Hiển thị LCD 38 2.5.1 Mục đích, yêu cầu: 38 2.5.2 Chương trình tham khảo: 39 2.6 Giao tiếp ma trận phím (keypad) 40 2.6.1 Mục đích, yêu cầu: 40 2.6.2 Chương trình tham khảo: 41 CHƯƠNG 3: ĐO NHIỆT ĐỘ DÙNG ADC, ĐIỀU KHIỂN ĐỘNG CƠ DÙNG PWM, ĐẾM SỐ VÒNG DÙNG ENCODER 44 3.1 Đo nhiệt độ dùng adc 44 3.1.1 Mục đích, yêu cầu: 44 3.1.2 Chương trình tham khảo: 45 3.2 Điều khiển động DC dùng PWM 47 3.2.1 Mục đích, yêu cầu: 47 3.2.2 Chương trình tham khảo 47 3.3 Điều khiển động bước (Step motor) 50 3.3.1 Mục đích, yêu cầu: 50 3.3.2 Chương trình tham khảo 50 3.4 Dùng ngắt đọc ENCODER 53 3.4.1 Mục đích, yêu cầu: 53 3.4.2 Chương trình tham khảo 53 CHƯƠNG 4: CHUẨN TRUYỀN I2C, 1_WIRE, SPI, USART 58 4.1 Chuẩn truyền I2C 58 4.1.1 Mục đích, yêu cầu: 58 4.1.2 Chương trình tham khảo: 59 4.2 Chuẩn truyền 1_WIRE - lập trình giao tiếp DS1820 61 4.2.1 Mục đích, yêu cầu: 61 4.2.2 Chương trình tham khảo 61 4.3 Chuẩn truyền SPI - lập trình giao tiếp SPI VĐK 63 4.3.1 Mục đích, yêu cầu: 63 4.3.2 Chương trình tham khảo 63 4.4 Giao tiếp UART VĐK 66 4.4.1 Mục đích, yêu cầu: 66 4.4.2 Chương trình tham khảo 66 TÀI LIỆU THAM KHẢO 74 CHƯƠNG 1: GIỚI THIỆU HỌ VI ĐIỀU KHIỂN AVR 1.1 Cấu trúc phần cứng vi điều khiển AVR 1.1.1 Tính ATMEGA32 Vi điều khiển ATmega32 loại vi điều khiển tương đối hãng ATMEL sử dụng kiến trúc RISC (Reduced Instruction Set Computer) ATmega32 với kiến trúc RISC có tiêu chất lượng cao tiêu thụ lượng ít: - 131 lệnh hầu hết thực chu kỳ xung nhịp - 32 ghi làm việc đa - Cung cấp đầy đủ trạng thái hoạt động - Tốc độ xử lý lệnh lên đến 16 triệu lệnh/giây tần số 16MHz Bộ nhớ liệu nhớ chương trình khơng tự liệu: - 32K byte nhớ Flash lập trình hệ thống, nạp xố 10000 lần - 1K byte nhớ EEFROM lập trình hệ thống, ghi xóa 100000 lần - 2K byte nhớ SRAM - Có thể giao tiếp với 64K byte nhớ ngồi - Khóa bảo mật phần mềm lập trình - Giao diện nối tiếp SPI để lập trình hệ thống Các tính ngoại vi: - Hai đếm/ định thời bit với chế độ so sánh chia tần số tách biệt - Hai đếm/ định thời 16 bit với chế độ so sánh, chia tần số tách biệt chế độ bắt mẫu (Capture Mode) - Bộ đếm thời gian thực (RTC) với dao động tách biệt - Bốn điều chế độ rộng xung PWM bit Bộ biến đổi ADC bên kênh 10 bit USART nối tiếp lập trình Có giao thức truyền SPI chủ tớ Bộ định thời Watchdog lập trình với dao động chip Một so sánh Analog Các tính vi điều khiển đặc biệt: - Có mạch power - on reset reset phần mềm - Có nguồn dao động nội tích hợp sẵn bên - - Có nguyên nhân gây ngắt bên bên ngồi - Có chế độ ngủ: nghỉ (Idle) Tiết kiệm lượng (power save) power down, ADC Noise Reduction, Standby and Extended Standby Ngõ vào, ngõ cách đóng vỏ - 32 đường vào lập trình - 40 chân dán kiểu vỏ chữ nhật (PDIP), 44 chân dán kiểu vỏ vuông (TQFP) Điện làm việc: - VCC = 2,7V đến 5,5V ATmega32L - VCC = 4,5V đến 5,5V ATmega32 Vùng tốc độ làm việc: - đến MHz ATmega32L - đến 16 MHz ATmega32 Năng lượng tiêu thụ tần số 1MHz, 3V, 25oC ATmega32L: - Chế độ hoạt động: 1,1mA - Chế độ nghỉ: 0,35mA - Chế độ nguồn giảm: CodeWizardAVR Hình 1.6: Thao tác mở CodeWizardAVR Bảng thơng báo ta chọn dịng AVR cần lập trình Hình 1.7: Lựa chọn dịng AVR 10 #include #include #include #include #include unsigned char h,m,s; unsigned char d,n,t,y; void main(void) { i2c_init(); rtc_init(0,1,0); lcd_init(16); rtc_set_time(15,33,0); rtc_set_date(3,30,10,12); while (1) { rtc_get_time(&h,&m,&s); rtc_get_date(&d,&n,&t,&y); lcd_gotoxy(0,0); lcd_putsf("TIME: "); lcd_putchar(0x30+h/10); lcd_putchar(0x30+h%10); lcd_putsf("/"); lcd_putchar(0x30+m/10); lcd_putchar(0x30+m%10); lcd_putsf("/"); lcd_putchar(0x30+s/10); lcd_putchar(0x30+s%10); lcd_gotoxy(0,1); lcd_putsf("DAY: "); lcd_putchar(0x30+n/10); lcd_putchar(0x30+n%10); 60 lcd_putsf("/"); lcd_putchar(0x30+t/10); lcd_putchar(0x30+t%10); lcd_putsf("/"); lcd_putchar(0x30+y/10); lcd_putchar(0x30+y%10); delay_ms(500); } } 4.2 Chuẩn truyền 1_WIRE - lập trình giao tiếp DS1820 4.2.1 Mục đích, u cầu: Giúp sinh viên nắm phương thức hoạt động chuẩn truyền 1_Wire, thiết kế phần cứng lập trình ứng dụng cần truyền liệu chuẩn 1_Wire DS1820, DHT11… 4.2.2 Chương trình tham khảo Yêu cầu: viết chương trình đọc nhiệt độ từ DS1820 hiển thị lên LCD Hình 4.5: Sơ đồ mạch điều khiển tốc độ động DC Hướng dẫn: 61 Trong chương trình ta khai báo dùng chuẩn truyền 1_Wire với DS1820, khai báo sử dụng LCD16x2 START Khởi tạo LCD Khởi tạo DS1820 Đọc nhiệt độ từ DS1820 Hiển thị nhiệt độ lên LCD END Hình 4.6: Trình tự thực chương trình đọc cảm biến DS1820 hiển thị lên LCD Chương trình tham khảo: #include #include #include #include #include #include //#define MAX_DS1820 unsigned char ds1820_rom_codes[9][9]; char buff[20]; int temp; void main(void) { w1_init(); lcd_init(16); lcd_puts("Nhiet do:"); w1_search(0xf0,ds1820_rom_codes); 62 while (1) { temp=ds1820_temperature_10(&ds1820_rom_codes[0][0]); sprintf(buff,"%d",temp/10); lcd_gotoxy(10,0); lcd_puts(buff); delay_ms(100); }; } 4.3 Chuẩn truyền SPI - lập trình giao tiếp SPI VĐK 4.3.1 Mục đích, yêu cầu: - Giúp sinh viên nắm phương thức hoạt động chuẩn truyền SPI, thiết kế phần cứng lập trình ứng dụng cần truyền liệu chuẩn SPI Game Pad, truyền liệu VĐK… 4.3.2 Chương trình tham khảo - Ví dụ ta có u cầu viết chương trình giao tiếp SPI VĐK Chip Master truyền liệu bit sang chip Slave, chip Slave nhận liệu đưa PORTC với sơ đồ mạch kết nối sau: Hình 4.7: Sơ đồ mơ giao tiếp SPI VĐK Hướng dẫn: Trong chương trình ta khai báo sử dụng chế độ truyền SPI Ở ta cần lập trình cho chip Master truyền liệu qua chip Slave Sau chip Slave nhận liệu hiển thị lên PortC 63 Hình 4.8: Hình thiết lập chế độ SPI cho chip Master Slave Chương trình tham khảo chip Master: #include #include void main(void) { SPCR=0x50; SPSR=0x00; // TWI initialization // TWI disabled TWCR=0x00; while (1) { // Place your code here spi(129); } } Chương trình tham khảo chip Slave: #include // SPI interrupt service routine 64 interrupt [SPI_STC] void spi_isr(void) { unsigned char data; data=SPDR; // Place your code here PORTC=data; } void main(void) { PORTC=0x00; DDRC=0xff; // SPI initialization // SPI Type: Slave // SPI Clock Phase: Cycle Start // SPI Clock Polarity: Low // SPI Data Order: MSB First SPCR=0xC0; SPSR=0x00; // Clear the SPI interrupt flag #asm in r30,spsr in r30,spdr #endasm // TWI initialization // TWI disabled TWCR=0x00; // Global enable interrupts #asm("sei") while (1) { 65 // Place your code here } } 4.4 Giao tiếp UART VĐK 4.4.1 Mục đích, yêu cầu: - Giúp sinh viên nắm phương thức hoạt động chuẩn truyền UART, thiết kế phần cứng lập trình ứng dụng cần truyền liệu chuẩn UART truyền liệu với máy tính, truyền liệu VĐK… 4.4.2 Chương trình tham khảo Ví dụ ta có u cầu viết chương trình giao tiếp UART VĐK Chip Master truyền liệu bit sang chip Slave, chip Slave nhận liệu đưa PORTC với sơ đồ mạch kết nối sau: Hình 4.9: Sơ đồ mô giao tiếp UART VĐK 66 Hướng dẫn: Trong chương trình ta khai báo sử dụng chế độ truyền UART Ở ta cần lập trình cho chip Master truyền liệu qua chip Slave Sau chip Slave nhận liệu hiển thị lên PortC Ta thiết lập chế độ truyền UART theo hình sau: Hình 4.10: Hình thiết lập chế độ UART cho chip Master Slave Chương trình tham khảo chip Master: #include #ifndef RXB8 #define RXB8 #endif #ifndef TXB8 #define TXB8 #endif #ifndef UPE #define UPE #endif #ifndef DOR #define DOR #endif #ifndef FE 67 #define FE #endif #ifndef UDRE #define UDRE #endif #ifndef RXC #define RXC #endif #define FRAMING_ERROR (1