1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo thực hành học phần vi điều khiển

30 1 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 30
Dung lượng 3,49 MB

Nội dung

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG VIỆT- HÀN KHOA KỸ THUẬT MÁY TÍNH VÀ ĐIỆN TỬ BÁO CÁO THỰC HÀNH HỌC PHẦN : VI ĐIỀU KHIỂN SVTH : ĐẶNG HOÀNG NHẬT LINH MSV : 21CE096 PHẠM MINH TÚ MSV : 21CE122 NGUYỄN NGỌC MINH MSV : 21CE101 TƠN THẤT VŨ LÂM MSV : 21CE094 NGUYỄN TỒN PHÚC MSV : 21CE039 ĐÀO NGỌC VŨ MSV : 21CE136 LÊ QUANG DƯƠNG MSV : 21CE080 NGUYỄN THÀNH LỘC MSV : 21CE098 GVHP: ThS Nguyễn Thị Huyền Trang Đà Nẵng, tháng năm 2023 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG VIỆT HÀN KHOA KỸ THUẬT MÁY TÍNH VÀ ĐIỆN TỬ BÁO CÁO THỰC HÀNH HỌC PHẦN : VI ĐIỀU KHIỂN SVTH : ĐẶNG HOÀNG NHẬT LINH MSV : 21CE096 PHẠM MINH TÚ MSV : 21CE122 NGUYỄN NGỌC MINH MSV : 21CE101 TÔN THẤT VŨ LÂM MSV : 21CE094 NGUYỄN TOÀN PHÚC MSV : 21CE039 ĐÀO NGỌC VŨ MSV : 21CE136 LÊ QUANG DƯƠNG MSV : 21CE080 NGUYỄN THÀNH LỘC MSV : 21CE098 GVHP: ThS Nguyễn Thị Huyền Trang Đà Nẵng, tháng năm 2023 LỜI CẢM ƠN Với đề tài học phần , em chân thành cảm ơn giúp đỡ, hướng dẫn tận tình Cơ Nguyễn Thị Huyền Trang giúp đỡ nhóm em hồn thành báo cáo thực hành Nhóm em xin chân thành cảm ơn đến quý Thầy khoa Kỹ Thuật Máy Tính , Trường Đại Học CNTT Truyền Thông Việt - Hàn trực tiếp giảng dạy truyền đạt kiến thức chuyên ngành cho thân em năm tháng vừa qua Mặc dù vận dụng tất kiến thức học tập kinh nghiệm thực tế từ thân để hoàn thành đề tài này, song kiến thức thân cịn hạn chế nên khó tránh mặt thiếu sót Chúng em mong nhận ý kiến đóng góp q Thầy Cơ Xin trân trọng cảm ơn! NHẬN XÉT CỦA GIẢNG VIÊN HỌC PHẦN Đà Nẵng, ngày tháng….năm 2023 Giảng viên học phần MỤC LỤC CHƯƠNG : LAB 1_SOFTWARE TOOLS 1.1 Mạch 1.2 Lưu đồ thuật toán 1.3 Code giải thích 1.4 Tóm tắt CHƯƠNG : LAB 2_BUTTON .4 2.1 Mạch 2.1.1 Lab 2a .4 2.1.2 Lab 2b .4 2.2 Lưu đồ thuật toán 2.3 Code giải thích 2.3.1 Lab .6 2.3.2 Lab .6 2.4 Tóm tắt CHƯƠNG : LAB 3_7 SEG LED 10 3.1 Mạch 10 3.2 Lưu đồ thuật toán 11 3.3 Code giải thích .12 3.4 Tóm tắt 12 CHƯƠNG : LAB 4_MATRIC LED 13 4.1 Mạch 13 4.2 Lưu đồ thuật toán 14 4.3 Code giải thích .14 4.4 Tóm tắt 16 CHƯƠNG : LAB 5_INTERFACING WITH LCD .17 5.1 Mạch 17 5.2 Lưu đồ thuật toán 18 5.3 Code giải thích .19 5.4 Tóm tắt 23 MỤC LỤC HÌNH Ả Hình 1 Sơ đồ mạch .1 Hình Lưu đồ thuật tốn 1Y Hình Sơ đồ mạch led đơn Hình 2 Sơ dồ mạch led đơn .4 Hình Lưu đồ thuật toán leb đơn Hình Sơ đồ mạch .10 Hình Lưu đồ thuật toán 11 Hình 3 Code giải thích chi tiết Hình Sơ đồ mạch Matric led 13 Hình Lưu đồ thuật tốn Hình Sơ đồ mạch LCD 17 Hình Lưu đồ thuật tốn LCD 18 CHƯƠNG : LAB 1_SOFTWARE TOOLS 1.1 Mạch Hình 1 Sơ đồ mạch 1.2 Lưu đồ thuật tốn Hình Lưu đồ thuật tốn 1.3 Code giải thích #include #pragma config FOSC = HS // Cấu hình tần số hoạt động vi điều khiển #pragma config WDTE = OFF // Bật chức bảo vệ đổ vỡ thiết lập lại #pragma config PWRTE = OFF // Tắt chức Power-up Timer #pragma config BOREN = OFF // Tắt chức Brown-out Reset #pragma config LVP = OFF // Tắt chức Lập trình điện áp thấp #pragma config CPD = OFF // Tắt chức Code Protection #pragma config CP = OFF // Tắt chức Code Protection 10 11 #define _XTAL_FREQ 20000000 // Tần số hoạt động vi điều khiển (20MHz) 12 13 khoảng trống () { 14 TRISD = 0x00; // Configure PORTD is start 15 CỔNG = 0x00; // Set the first value of PORTD is 16 17 (1) { 18 CỔNG = 0x01; // Bật LED (D0) 19 delay_ms(500); // Trì hỗn 500 mili giây 20 21 CỔNG = 0x03; // Bật LED LED (D0 D1) 22 delay_ms(500); // Trì hỗn 500 mili giây 23 24 CỔNG = 0x07; // Bật LED 1, LED LED (D0, D1 D2) 25 delay_ms(500); // Trì hỗn 500 mili giây 26 27 CỔNG = 0x00; // Tắt tất đèn LED 28 delay_ms(500); // Trì hỗn 500 mili giây 29 } 30 } 1.4 Tóm tắt PIC16F877A loại vi điều khiển (MCU - Microcontroller Unit) thuộc dòng sản phẩm PIC (Peripheral Interface Controller) hãng Microchip Technology Đây loại MCU 8-bit, có kiến trúc RISC (Máy tính tập lệnh giảm) với nhớ FLASH, sử dụng rộng rãi ứng dụng nhúng Tóm tắt PIC16F877A: Kiến trúc: MCU 8-bit, RISC Bộ xử lý: CPU hoạt động với tốc độ tối đa 20 MHz Bộ nhớ trong: FLASH với dung lượng 14 KB để lưu trữ mã chương trình Bộ nhớ ngoài: RAM với dung lượng 368 byte để lưu trữ liệu thời gian chạy Cổng I/O: 33 chân đầu vào/đầu cấu hình hoạt động Các tính nâng cao: UART, SPI, I2C, PWM, Timers/Counters, Watchdog Timer, v.v Điện áp hoạt động: 2.0V - 5.5V Điện áp nguồn: 4.5V - 5.5V Số lượng ngõ vào/ngõ ra: Chịu 5V Chế độ tiêu thụ điện năng: Chế độ ngủ công suất thấp, chế độ không hoạt động chế độ tắt nguồn Đóng gói: DIP (Dual In-line Package) QFP (Quad Flat Package) PIC16F877A dòng vi điều khiển phổ biến ứng dụng rộng rãi ứng dụng nhúng, điều khiển đơn giản đến phức tạp, từ điện tử gia dụng, ô tô, đồ điện tử, hệ thống an ninh, tắt đèn giao thơng, v.v } } 2.4 Tóm tắt Các tập led đơn vi điều khiển thường có thao tác button sau: "Run" "Compile": dùng để biên dịch chạy chương trình viết vi điều khiển "Upload": dùng để tải chương trình biên dịch lên vi điều khiển để thực thi "Reset" "Clear": dùng để xóa nội dung nhập liệu khơi phục lại chương trình trạng thái ban đầu "Hint" "Show Code": dùng để hiển thị gợi ý mã nguồn chương trình "Save" "Download": dùng để lưu chương trình tải xuống chương trình hồn thành "Share": dùng để chia sẻ chương trình liên kết đến chương trình cho người khác "Settings": dùng để thay đổi cài đặt chương trình tập "Help" "Support": dùng để truy cập trang trợ giúp liên hệ với hỗ trợ kỹ thuật CHƯƠNG : LAB 3_7 SEG LED 3.1 Mạch Hình Sơ đồ mạch 10 3.2 Lưu đồ thuật tốn Hình Lưu đồ thuật tốn 11 3.3 Code giải thích Hình 3 Code giải thích chi tiết 3.4 Tóm tắt Ứng dụng hiển thị đoạn Màn hình bảy đoạn sử dụng rộng rãi thiết bị sống hàng ngày chúng ta, đồng hồ kỹ thuật số nhà đồng hồ điện tử trạm làm việc Nó sử dụng đếm ngược đồng hồ bấm chơi trò chơi thi, v.v Các máy tính sử dụng hình đoạn 12 CHƯƠNG : LAB 4_MATRIC LED 4.1 Mạch Hình Sơ đồ mạch Matric led 13 4.2 Lưu đồ thuật toán Hình Lưu đồ thuật tốn 4.3 Code giải thích #include #define _XTAL_FREQ 4000000 void main() { TRISB= 0x00; 14 TRISD= 0x00; PORTB=0x41; PORTD=0xFE; delay_ms(200); PORTB=0x41; PORTD=0xFD; delay_ms(200); PORTB=0x7F; PORTD=0xFB; delay_ms(200); PORTB=0x41; PORTD=0xF7; delay_ms(200); PORTB=0x41; PORTD=0xEF; delay_ms(200); while(1) { PORTB=0x41; PORTD=0xFE; delay_ms(15); PORTB=0x41; PORTD=0xFD; delay_ms(15); PORTB=0x7F; PORTD=0xFB; delay_ms(15); 15 PORTB=0x41; PORTD=0xF7; delay_ms(15); PORTB=0x41; PORTD=0xEF; delay_ms(15); } } 4.4 Tóm tắt Ma trận LED cơng nghệ hiển thị sử dụng để tạo biểu tượng, hình ảnh chữ số hình sử dụng nhiều đèn LED Mỗi đèn LED ma trận điều khiển độc lập vi điều khiển đèn LED xếp theo hình dạng ma trận Khi đèn LED bật tắt theo cách định, chúng tạo ký tự hình ảnh hình Ma trận LED thường sử dụng ứng dụng biển quảng cáo, bảng tin, điện tử, bảng điểm thể thao, máy tính điều khiển nhiều ứng dụng khác 16 CHƯƠNG : LAB 5_INTERFACING WITH LCD 5.1 Mạch Hình Sơ đồ mạch LCD 17 5.2 Lưu đồ thuật tốn Hình Lưu đồ thuật tốn LCD 18 5.3 Code giải thích #include #include #include #include #define _XTAL_FREQ 8000000 #define delay_ms(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000.0))) // Thiết lập thời gian cho độ trễ LCD #define LCD_delay // ~5mS #define LCD_Startup 15 // ~15mS // Bộ lệnh cho điều khiển hình LCD Hitachi 44780U #define LCD_CLEAR 0x01 // Nó xóa thứ #define LCD_HOME 0x02 // đặt trỏ dòng hàng #define LCD_CURSOR_BACK 0x10 #define LCD_CURSOR_FWD 0x14 #define LCD_PAN_LEFT 0x18 // di chuyển trỏ trở lại vị trí //di chuyển trỏ phía trước // dùng để cuộn văn sang trái để cuộn văn #define LCD_PAN_RIGHT 0x1C // dùng để cuộn văn sang bên phải để cuộn văn #define LCD_CURSOR_OFF 0x0C // dừng hiển thị trỏ hình #define LCD_CURSOR_ON 0x0E // bật hiển thị trỏ #define LCD_CURSOR_BLINK 0x0F // trỏ liên tục nhấp nháy #define LCD_CURSOR_LINE2 0xC0 // di chuyển trỏ đến dòng thứ hai hàng thứ hai // hiển thị lệnh thiết lập điều khiển từ trang 46 bảng liệu Hitachi #define FUNCTION_SET 0x28 // Giao diện bit, dịng, phơng chữ 5x8 19 #define ENTRY_MODE 0x06 // chế độ tăng dần #define DISPLAY_SETUP 0x0C // hiển thị bật, tắt trỏ, nhấp nháy tắt #define LCDLine1() LCDPutCmd(LCD_HOME) // legacy support #define LCDLine2() LCDPutCmd(LCD_CURSOR_LINE2) // legacy support #define shift_cursor() LCDPutCmd(LCD_CURSOR_FWD) // legacy support #define cursor_on() LCDPutCmd(LCD_CURSOR_ON) // legacy support #define DisplayClr() LCDPutCmd(LCD_CLEAR) // Legacy support // bit đơn để chọn ghi lệnh ghi liệu #define instr #define data // Các #defines tạo kết nối chân cắm với hình LCD trường hợp chúng bị thay đổi bảng demo tương lai #define LCD_PORT PORTD #define LCD_PWR PORTDbits.RD7 // Chân nguồn LCD #define LCD_EN PORTDbits.RD6 // Kích hoạt LCD #define LCD_RW PORTDbits.RD5 // Dòng đọc/ghi LCD #define LCD_RS PORTDbits.RD4 // Dòng chọn ghi LCD #define NB_LINES //Số dòng hiển thị #define NB_COL 16 // Số ký tự dòng void LCD_Initialize(void); void LCDPutChar(char ch); void LCDPutCmd(char ch); void LCDPutStr(const char *); void LCDWriteNibble(char ch, char rs); void LCDGoto(char pos, char ln); void main(void) 20 { OSCCON=0x72; // Chọn dao động nội có tần số = 8MHz LCD_Initialize(); LCDGoto(5,0); LCDPutStr("HELLO"); LCDGoto(0,1); LCDPutStr("NGUYEN THANH LOC"); while (1) { // Add your application code } return; } void LCD_Initialize(){ LCD_PORT = 0; // xóa chốt trước bật TRIS bits TRISD = 0x00; LCD_PWR = 1; // bật nguồn LCD delay_ms(LCD_Startup); // yêu cầu điều khiển hình phép ổn định nguồn LCDPutCmd(0x32); // yêu cầu hình khởi tạo LCDPutCmd(FUNCTION_SET); // đặt chế độ giao diện bit 16x2 dòng phơng chữ LCDPutCmd(DISPLAY_SETUP); // bật hình thiết lập trỏ DisplayClr(); LCDPutCmd(ENTRY_MODE); // thiết lập hướng di chuyển trỏ } 21 void LCDWriteNibble(char ch, char rs) { ch = (ch >> 4); // gửi nibble ch = (ch & 0x0F); // che nibble truyền LCD_PORT = (LCD_PORT & 0xF0); // xóa nửa LCD_PORT LCD_PORT = (LCD_PORT | ch); LCD_RS = rs; // di chuyển nibble lên LCD_PORT // đặt bit liệu/instr thành = hướng dẫn; = liệu LCD_RW = 0; // RW - đặt chế độ ghi LCD_EN = 1; // thiết lập enable trước ghi nibble LCD_EN = 0; // tắt enable sau ghi nibble } void LCDPutChar(char ch){ delay_ms(LCD_delay); LCDWriteNibble(ch,data); //gửi nibble cao trước ch = (ch (NB_COL-1))){ // sai dòng cột return; } // LCD_Goto command LCDPutCmd((ln == 1) ? (0xC0 | pos) : (0x80 | pos)); // Đợi LCD chạy xong delay_ms(LCD_delay); } 5.4 Tóm tắt Màn hình LCD 16x2 loại hình hiển thị đơn giản phổ biến sử dụng ứng dụng điện tử Nó có kích thước 16 cột dòng, với khả hiển thị ký tự thông qua ma trận điểm ảnh Màn hình 16x2 có độ phân giải tương đối thấp tiết kiệm lượng thuận tiện để sử dụng thiết bị nhỏ gọn Khác với hình CRT hay OLED, LCD sử dụng nguyên tắc thông qua tế bào kristat lỏng để chuyển đổi tín hiệu điện thành hình ảnh hình LCD 16x2 thường sử dụng ứng dụng đồng hồ số, máy tính xách tay, thiết bị đo lường điều khiển thiết bị gia đình hay công nghiệp 23

Ngày đăng: 24/08/2023, 10:22

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w