Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 39 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
39
Dung lượng
14,29 MB
Nội dung
ĐỒ ÁN: VIĐIỀUKHIỂN LỜI NÓI ĐẦU Ngày đại đa só lĩnh vực sản xuất, điều khiển, giám sát, đo lường, trang bị hệ thống tự động hóa Một số vi mạch sử dụng kỹ thuật viđiềukhiển Nhờ tính ưu việt viđiềukhiển như: khả lập trình phù hợp với thiết kế nhỏ lớn khả giao tiếp với thiết bị ngoại vi cà máy tính đem lại hoàn hảo, độ xác cao tính mềm dẻo cao thông qua giao tiếp người máy Viđiềukhiển quản lý điềukhiển hoạt động hệ thống thông qua phần mềm, nhờ mà mở rộng thay đổi hoạt động cách dễ dàng cách thay đổi số thông số chương trình Viđiềukhiển hoạt động theo chương trình nạp sẵn, đọc tín hiệu từ bên vào sau lưu trữ xử lý, sở đưa thông báo, tín hiệu điềukhiển thiết bị theo thông số yêu cầu hệ thống Với đồ án viđiểu khiển, đề tài em “game mini trênLCD Nokia 5110” sử dụng viđiềukhiển atmega 328 tích hợp sẵn arduino nano Nội dung báo cáo đề tài gồm phần: Giới thiệt đề tài Giới thiệu viđiềukhiểnvi mạch liên quan Thiết kế thi công mạch Lập trình viđiềukhiển Kết luận Vì thời gian kiến thức hạn chế, tận tình hướng dẫn thầy Nguyễn Danh Ngọc em hoàn thành đề tài yêu cầu nhiên không tránh khỏi sai sót chưa tối ưu Kính mong thầy cô thông cảm, giúp đỡ bảo thêm để em có thêm kiến thức quý báu Em xin chân thành cảm ơn Đà Nẵng, 20 tháng năm 2017 Sinh viên thực Cáp Kim Thảo SVTH: CÁP KIM THẢO – 13CDT2 Trang ĐỒ ÁN: VIĐIỀUKHIỂN MỤC LỤC LỜI NÓI ĐẦU MỤC LỤC CHƯƠNG 1: GIỚI THIỆU VỀ ĐỀ TÀI 1.1 Giới thiệu sơ lược đề tài 1.2 Sơ đồ khối hệ thống 1.3 Hình ảnh sản phẩm 1.4 Hoạt động hệ thống CHƯƠNG 2: GIỚI THIỆU VĐK VÀ CÁC VI MẠCH LIÊN QUAN 2.1 Giới thiệu mạch điềukhiển arduino nano 2.1.1 Giới thiệu tổng quan arduino nano 2.1.2 Cấu tạo, sơ đồ chân arduino nano 2.1.3 Thông số kỹ thuật chi tiết 2.2 Giới thiệu LCD Nokia 5110 2.2.1 Giới thiệu tổng quan LCD Nokia 5110 2.2.2 Cấu tạo, sơ đồ chân LCD Nokia 5110 2.2.3 Giao tiếp với LCD Nokia 5110 CHƯƠNG 3: THIẾT KẾ VÀ THI CÔNG MẠCH 3.1 Sơ đồ mạch 3.2 Khối điềukhiển trung tâm 3.3 Kết nối LCD Nokia 5110 3.4 Kết nối nút nhấn 3.5 Kết nối buzzer led tín hiệu 3.6 Khối nguồn 3.7 Một số hình ảnh trình thi công đề tài CHƯƠNG 4: LẬP TRÌNH VIĐIỀUKHIỂN 4.1 Lưu đồ thuật toán 4.2 Các thư viện sử dụng chương trình 4.3 Code chương trình CHƯƠNG 5: KẾT LUẬN 5.1 Đánh giá đề tài 5.2 Hướng phát triển đề tài PHỤ LỤC TÀI LIỆU THAM KHẢO SVTH: CÁP KIM THẢO – 13CDT2 Trang 4 7 7 9 10 12 12 13 13 14 15 15 16 20 20 21 22 23 23 23 24 40 Trang ĐỒ ÁN: VIĐIỀUKHIỂN GIỚI THIỆU VỀ ĐỀ TÀI CHƯƠNG 1: 1.1 Giới thiệu sơ lược đề tài - Đề tài: Làm game mini LCD Nokia 5110 Hiện nay, mạch ứng dụng sử dụng LCD để hiển thị phổ biến, bắt gặp máy in 3D, máy cắt lazer, mạch ứng dụng thực tế : đồng hồ, khóa điện tử, thiết bị quan trắc,… Các mạch ứng dụng sử dụng LCD để hiển thị tùy chọn thông số nhằm mục đích làm mạch nhỏ gọn hiển thị đầy đủ yêu cầu, chi phí rẻ dễ dàng giao tiếp Với đề tài làm game mini LCD Nokia 5110 giúp em học cách giao tiếp hiển thị LCD5110 nói riêng LCD, GLCD nói chung để sau ứng dụng vào thực tiễn Đồng thời nâng cao khả lập trình, thiết kế mạch tạo sản phẩm nhằm mục đích giải trí 1.2 Sơ đồ khối hệ thống Hình 1: Sơ đồ khối mạch game mini LCD5110 Thành phần chức khối: - Khối nguồn: + Thành phần: Pin 9V, led báo nguồn + Chức năng: cấp kiểm tra nguồn cho tất khối mạch SVTH: CÁP KIM THẢO – 13CDT2 Trang ĐỒ ÁN: VIĐIỀUKHIỂN - Khối điều khiển: + Thành phần: gồm nút nhấn chân + Chức năng: điềukhiển đối tượng game cách thay đổi trạng thái nút nhấn để đưa tín hiệu vào khối xử lý - Khối xử lý: + Thành phần: arduino nano sử dụng chíp atmega 328 + Chức năng: nhận tín hiệu từ khối điều khiển, xử lý liệu, xuất tín hiệu hiển thị game khối hiển thị tín hiệu thông báo đến khối tín hiệu báo - Khối hiển thị: + Thành phần: LCD Nokia 5110 + Chức năng: hiển thị đối tượng bối cảnh game - Khối tín hiệu báo: + Thành phần: buzzer, led báo + Chức năng: buzzer led thay đổi trạng thái điểm kết thúc game 1.3 Hình ảnh sản phẩm Hình 1.2: Các kí hiệu nút nhấn sản phẩm SVTH: CÁP KIM THẢO – 13CDT2 Trang ĐỒ ÁN: VIĐIỀUKHIỂN Hình 1.3: Hình ảnh sản phẩm 1.4 Hoạt động đề tài: - Bắt đầu: Sau bật nguồn, hình hiển thị game icon để người chơi tùy chọn game Lựa chọn game muốn chơi cách nhấn nút (left), (right) để icon game thay đổi Chọn chơi game cách nhấn nút (B) - Chơi game: Dùng nút (left), (right), (up), (down) để di chuyển đối tượng tùy thuộc vào game Led nhấp nháy buzzer phát tiếng còi người chơi tăng điểm số Khi muốn trở lại hình chọn game ta nhấn nút (D) Dùng nút (A) muốn tạm dừng trò chơi (Pause) SVTH: CÁP KIM THẢO – 13CDT2 Trang ĐỒ ÁN: VIĐIỀUKHIỂN Chương 2: GIỚI THIỆU VIĐIỀUKHIỂN VÀ CÁC VI MẠCH LIÊN QUAN 2.1 Giới thiệu mạch điềukhiển arduino nano: 2.1.1 Giới thiệu tổng quan arduino nano: Arduino Nano bo mạch thiết kế với xử lý trung tâm viđiềukhiển AVR temega328 Cấu tạo Arduino Nano bao gồm phần sau: Hình 2.1: Board Arduino Nano + Cổng USB: cổng giao tiếp để upload code từ PC lên viđiềukhiển Đồng thời giao tiếp serial để truyền liệu viđiềukhiển máy tính + Có 14 chân vào/ra số đánh thứ tự từ đến 13, có chân nối đất GND chân điện áp tham chiếu AREF + Viđiềukhiển AVR: xử lý trung tâm toàn board mạch Ở Arduino Nano sử dụng Atmega 328 2.1.2 Cấu tạo, sơ đồ chân arduino nano + Chân RX0, TX0: dùng để giao tiếp UART, sử dụng chân vào/ra dạng số + Chân Reset: dùng để reset viđiềukhiển cần thiết, trạng thái bình thường mức cao, chân RST mức thấp viđiềukhiển reset + Chân GND: nối đất + Chân D2-D13: ngõ vào/ra dạng số, có chân D3, D5, D6, D9, D10, D11 xuất tín hiệu PWM ngõ + Chân D2: INT0 ngắt + Chân D2: INT1 ngắt + Chân VIN: chân cấp nguồn cho arduino nano, điện áp giới hạn đầu vào 6-20V + Chân +5V: dùng để lấy nguồn 5V từ arduino nano cấp nguồn 5V cho arduino nano hoạt động SVTH: CÁP KIM THẢO – 13CDT2 Trang ĐỒ ÁN: VIĐIỀUKHIỂN + Chân A0 – A7: chân ngõ vào dạng analog (tín hiệu tương tự) + Chân AREF: chân điện áp tham chiếu + Chân 3V3: chân lấy nguồn 3V3 từ arduino nano + Ngoài chân có chức nawg khác hỗ trợ giao tiếp I2C, SPI hình Hình 2.2: Chức chân arduino nano 2.1.3 Thông số kĩ thuật chi tiết: + Vi xử lý: + Điện áp hoạt động: + Điện áp đầu vào kiến nghị: + Điện áp đầu vào giới hạn: + Chân vào/ra số: + Chân vào tương tự: + Dòng điện chân vào/ra + Bộ nhớ: + SRAM: + EEPROM: + Kích thước: SVTH: CÁP KIM THẢO – 13CDT2 Atmega328 (phiên V3.0) 5V 7-12V 6-20V 14 (6 chân có khả xuất PWM) chân 40mA 32KB 2kb để nạp bootloader 2KB 1KB 0.73”x1.70” Trang ĐỒ ÁN: VIĐIỀUKHIỂN 2.2 Giới thiệu LCD Nokia 5110 2.2.1 Giới thiệu tổng quan LCD Nokia 5110LCD Nokia 5110 thuộc dòng sản phầm Graphic LCD 84x48 Hình 2.3: LCD Nokia 5110LCD Nokia 5110 hình LCD Graphic đơn giản với nhiều ứng dụng khác Nguồn gốc hình thực chất từ hệ điện thoại di động trước Nó gắn bô PCB dễ dàng hàn gắn với board khác LCD Nokia 5110 sử dụng viđiềukhiển PCD8544, sử dụng với Nokia 3310 LCD trước PCD8544 dạng low power CMOS controller/driver, thiết kế vơi chế độ hiển thị hình graphic 84 cột 48 hàng Tất chức tích hợp sẵn chip, từ cho ta hiệu thiết bị ngoại vi chiếm nguồn tiêu thụ PCD8544 giao tiếp với viđiềukhiển qua loạt chân bus cung cấp sẵn 2.2.2 Cấu tạo, sơ đồ chân LCD Nokia 5110 Qua sơ đồ trên, ta thấy LCD Nokia 5110điềukhiển toàn cổng đầu vào, cổng nguồn, dạng giao tiếp SPI, gồm: SVTH: CÁP KIM THẢO – 13CDT2 Trang ĐỒ ÁN: VIĐIỀUKHIỂN + RST – Tín hiệu Reset, giúp khởi động, reset hình + CE – Tín hiệu Chip Select, giúp đưa tín hiệu chọn chip hoạt động mức tích cực thấp + DC – Tín hiệu Data/Command giúp ta chọn chế độ đưa lệnh vào PCD8544 lệnh điều khiển, hay liệu hiển thị + DIN – Dữ liệu đầu vào lệnh điềukhiển liệu hiển thị hình + CLK – Xung Clock điềukhiển + VCC – Nguồn nuôi + LIGHT – Đất cho đèn LED Backlight + GND – Đất cho nguồn nuôi 2.2.3 Giao tiếp với LCD Nokia 5110 Quá trình gửi liệu từ viđiềukhiển đến LCD NOKIA 5110 chia làm chế độ Chế độ gửi lệnh điiều khiểnLCD chế độ gửi liệu hiển thị LCD Đường tín hiệu DC cho phép chọn chế độ - Nếu DC=0: liệu gửi đến LCD lưu vào ghi Command Thanh ghi Command lưu trữ thực thi lệnh dùng để điềukhiển hoạt động Nokia LCD (dữ liệu không hiển thị hình) - Nếu DC=1: liệu gửi đến LCD lưu vào ghi Data Thanh ghi Data lưu trữ giá trị liệu hiển thị lên hình LCD Tín hiệu reset LCD tạo chân RST kéo xuống mức thâp (tức RST=0) Khi truyền liệu, có tín hiệu reset LCD trình truyền bị hủy Cho đến chân RST mức cao (tức RST=1), chu kì xung clock tiếp theo, SVTH: CÁP KIM THẢO – 13CDT2 Trang ĐỒ ÁN: VIĐIỀUKHIỂN trinh truyền liệu byte vừa bị hủy thực lại Khi đường tín hiệu CE mức cao (tức CE=1), LCD không chấp nhận liệu từ VĐK gửi đến hay liệu lệnh lúc không ảnh hưởng đến LCD Khi đường tín hiệu CE mức thấp (tức CE=0) data gửi đến LCD chấp nhận Sau chu kì xung clock (xung cạnh lên) bit liệu dịch vào LCD chân DIN Chân CE phải giữ mức thấp(tức CE=0) việc gửi liệu đến LCD hoàn tất SVTH: CÁP KIM THẢO – 13CDT2 Trang 10 ĐỒ ÁN: VIĐIỀUKHIỂN delay(300); display.drawBitmap(18, 0, mini6, 48 , 48, 1); display.display(); delay(300); display.clearDisplay(); display.drawBitmap(18, 0, mini5, 48 , 48, 1); display.display(); delay(300); display.clearDisplay(); display.drawBitmap(18, 0, mini4, 48 , 48, 1); display.display(); delay(300); display.clearDisplay(); display.drawBitmap(18, 0, mini3, 48 , 48, 1); display.display(); delay(300); display.clearDisplay(); display.drawBitmap(18, 0, mini2, 48 , 48, 1); display.display(); delay(300); display.clearDisplay(); display.drawBitmap(18, 0, mini1, 48 , 48, 1); display.display(); delay(300); display.clearDisplay(); display.drawBitmap(18, 0, mini0, 48 , 48, 1); display.display(); delay(3000); display.clearDisplay(); } void loop() { display.clearDisplay(); display.setCursor(0,20); display.print(""); DieuKhien(); SVTH: CÁP KIM THẢO – 13CDT2 Trang 25 ĐỒ ÁN: VIĐIỀUKHIỂN switch(Game) // chon game { case 0: { display.drawBitmap(30,5,flappyicon,24,22,BLACK); display.setCursor(10,30); display.print("Flappy Bird"); if(buttonTrai==LOW) Game=1; if(buttonPhai==LOW) Game=2; if(switchB==LOW) flappyBird(); delay(150); break; } case 1:{ display.drawBitmap(30,5,biaicon,24,22,BLACK); display.setCursor(18,30); display.print("Hung bia"); if(buttonTrai==LOW) Game=2; if(buttonPhai==LOW) Game=0; if(switchB==LOW) ThungBiaHung(); delay(150); break; } case 2:{ display.drawBitmap(30,5,snakeicon,24,22,BLACK); display.setCursor(25,30); display.print("Snake"); if(buttonTrai==LOW) Game=0; if(buttonPhai==LOW) Game=1; if(switchB==LOW) Snake(); delay(150); break; } } display.display(); } //===================================== void DieuKhien(){ buttonTren=digitalRead(button1); SVTH: CÁP KIM THẢO – 13CDT2 Trang 26 ĐỒ ÁN: VIĐIỀUKHIỂN buttonPhai=digitalRead(button2); buttonTrai=digitalRead(button3); buttonDuoi=digitalRead(button4); switchA=digitalRead(buttonA); switchB=digitalRead(buttonB); switchC=digitalRead(buttonC); switchD=digitalRead(buttonD); } //===================================== void ThungBiaHung() { Bia thungbia; ChaiBia chaibias[5]; bool Play=true; int mang=3; int diem=0; int lever=25; for(int i=0;i