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

Lập trình game với kit MSP430G255

36 146 1

Đ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 36
Dung lượng 1,24 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hệ thống nhúng bao gồm các thiết bị phần cứng và phần mềm, được thực hiện trên các chip nhúng, vi xử lí, vi điều khiển.. Trong nội dung Đồ án I với sự hướng dẫn của Thầy Trần Hải Nam, ch

Trang 1

Trường Đại Học Bách Khoa Hà Nội Viện Điện Tử - Viễn Thông

====o0o====

BÁO CÁO ĐỒ ÁN I

Đề tài: Lập trình game với kit MSP430G255

Giảng viên hướng dẫn: ThS Trần Hải Nam

Nhóm sinh viên thực hiện:

Hà Nội, Tháng 12 năm 2017

Trang 2

Bảng Phân Công Công Việc

Nội dung công việc Người đảm nhận

Trang 3

MỤC LỤC

LỜI MỞ ĐẦU 2

Chương I Phân Tích Đề Tài 3

1 Phân tích đề tài, sơ đồ khối 3

2 Chi tiết về điều khiển của các khối 4

2.1 Kit launch pad Msp430G2553 4

2.2 Màn hình LCD Nokia 5110 9

2.3 Nút chuyển 4 hướng Joystick 12

Chương II Lập trình điều khiển 13

1 Lưu đồ thuật toán chương trình 13

2 Lập trình với Energia 14

3 Chi tiết về các khối code chương trình 15

3.1 Các cấu trúc được tạo ra 15

3.2 Khởi tạo rắn và mồi 15

3.3 Thuật toán vẽ rắn 16

3.4 Khối điều khiển 20

3.5 Khối di chuyển 22

3.6 Khỗi xử lý các xự kiện 23

3.7 Khối thực hiện việc vẽ điểm và và vẽ số mạng lên LCD 26

3.8 Khối chương trình chính 27

Chương 3 Chạy thử và hiệu chỉnh 29

1 Một số hình ảnh chạy thử 29

2 Đánh giá kết quả đạt được 30

3 Những khó khăn gặp phải 30

KẾT LUẬN 32

Trang 4

DANH MỤC HÌNH VẼ

Hình 1.1 Sơ đồ khối chung cho hệ thống 3

Hình 1.2 Sơ đồ chân vi điều khiển MSP430G2553 5

Hình 1.3 Kit Launch Pad MSP430G2553 8

Hình 1.4 Cấu trúc điểm ảnh LCD Nokia 5110 9

Hình 1.5 Cách thức vẽ trên LCD Nokia 5110 9

Hình 1.6 Module Joystick 12

Hình 2.1 Lưu đồ thuật toán chương trình 13

Hình 2.2 Giao diên Energia 14

Hình 3.1 Hình chương trình chạy thử 29

Hình 3.2 Hình chương trình chạy thử 29

Hình 3.3 Hình chương trình chạy thử 30

Trang 5

LỜI MỞ ĐẦU

Xuất hiện từ những năm đầu thập niên 1960, hệ thống nhúng đang dần trở thành một ngành phát triển mạnh mẽ trong lĩnh vực công nghệ thông tin (CNTT), với những ứng dụng rộng rãi trong công nghiệp và đời sống Hệ thống nhúng (embedded system) được định nghĩa là một hệ thống chuyên dụng, thường có khả năng tự hành

và được thiết kế tích hợp vào một hệ thống lớn hơn để thực hiện một chức năng chuyên biệt nào đó Khác với máy tính đa năng, hệ thống nhúng thường được thiết

kế thực hiện một chức năng nhất định có tốc độ cao Hệ thống nhúng bao gồm các thiết bị phần cứng và phần mềm, được thực hiện trên các chip nhúng, vi xử lí, vi điều khiển

Trong nội dung Đồ án I với sự hướng dẫn của Thầy Trần Hải Nam, chúng

em được thực hành việc lập trình nhúng trên kit MSP430G2553 kết hợp với màn hình LCD NOKIA 5110 và nút chuyển bốn hướng Joystick

MSP430 là dòng vi điều khiển do hãng TI ( Texas Instruments) sản xuất, có kiến trúc RISC được thiết kế đặc biệt cho siêu năng lượng thấp MSP430 sử dụng nguồn thấp và tích hợp nhiều ngoại vi thông minh Vi điều khiển được sử dụng trong nội dung Đồ án I là họ MSP430G2553

Ngôn ngữ được sử dụng để thực hiện Đồ án I là Energia dựa trên ngôn ngữ C

và C++ với thư viện hàm sẵn có phong phú và sử dụng trình dịch MSPGCC

Trong quá trình thực hiện Đồ án I, nhờ sự hướng dẫn của Thầy Trần Hải Nam, chúng em đã có cái nhìn tổng quan về nguyên lý hoạt động của Kit Lauchpad MSP430G2553, màn hình LCD NOKIA 5110 và nút nhấn bốn hướng Joystick, từ

đó áp dụng vào thực hiện đề tài Đồ án I

Chúng em xin được gửi lời cảm ơn đến Thầy Trần Hải Nam

Trang 6

Chương I Phân Tích Đề Tài

1 Phân tích đề tài, sơ đồ khối

Đề tài Đồ án I theo sự hướng dẫn của Thầy Trần Hải Nam là thực hiện một

game nhỏ trên Kit MSP430G2553 Nhóm chúng em lực chọn thực hiện game con

rắn (game snake) kết hợp với nút chuyển 4 hướng Joystick và màn hình hiển thị

LCD Nokia 5110

Vi điều khiển sẽ đọc tín hiệu điều khiển dạng analog từ Joystick và sử dụng

bộ ADC (Analog Digital Convert) để chuyển đổi thành tín hiệu số, ứng với từng giá trị tương ứng vi điều khiển sẽ thực hiện vẽ lên màn hình LCD Nokia 5110 ( di

chuyển con rắn trên màn hình) Đồng thời vi điều khiển cũng thực hiện cập nhật

điểm và mạng của người chơi và thực hiện vẽ lại lên màn hình, sau mỗi lần có sự

thay đổi

Hình 1.1 Sơ đồ khối chung cho hệ thống

Trong đó:

Người chơi sẽ thực hiện điều khiển trực tiếp thông qua Joystick, Joystick sẽ

gửi tín hiệu điều khiển về cho vi điều khiển MSP430G2553, vi điều khiển sẽ thực hiện xử lý tín hiệu và vẽ lại màn hình LCD

Vi điều khiển MSP430G2553 sẽ đảm nhận chức năng xử lý tín hiệu từ

Joystick và vẽ lên trên màn hình LCD NOKIA 5110 Đồng thời thực hiện

Trang 7

thuật toán chính bao gồm luật của trò chơi, cập nhật điểm và mạng cho người chơi

LCD Nokia 5110 thực hiện việc hiển thị việc di chuyển của con rắn, mồi, điểm và mạng của người chơi Màn hình Lcd sẽ được vẽ lại sau mỗi lần có

sự thay đổi

2 Chi tiết về điều khiển của các khối

2.1 Kit launch pad Msp430G2553

MSP430 là họ vi điều khiển cấu trúc RISC 16-bit được sản xuất bởi công ty

Texas Instruments

MSP là chữ viết tắt của “MIXED SIGNAL MICROCONTROLLER” Là

dòng vi điều khiển siêu tiết kiệm năng lượng, sử dụng nguồn thấp, khoảng điện

• Mức tiêu thụ năng lượng cực thấp:

• Chế độ hoạt động: 270 μA tại 1MHz, 2,2 V

• Chế độ chờ: 0.7 μA

• Chế độ tắt (RAM vẫn được duy trì): 0.1 μA

• Thời gian đánh thức từ chế độ Standby nhỏ hơn 1μs

• Cấu trúc RISC-16 bit, Thời gian một chu kỳ lệnh là 62.5 ns

• Cấu hình các module Clock cơ bản:

• Tần số nội lên tới 16 MHz với 4 hiệu chỉnh tần số +- 1%

• Thạch anh 32 KHz

• Tần số làm việc lên tới 16 MHz

• Bộ cộng hưởng

Trang 8

• Nguồn tạo xung nhịp bên ngoài

• Điện trở bên ngoài

• Timer_A 16 bit với 3 thanh ghi hình, 3 thanh ghi so sánh độ rộng 16 bit

• Timer_B 16 bit với 3 thanh ghi hình, 3 thanh ghi so sánh độ rộng 16 bit

• Giao diện truyền thông nối tiếp:

• Hỗ trợ truyền thông nối tiếp nâng cao UART, tự động dò tìm tốc

độ Baud

• Bộ mã hóa và giải mã IrDA (Infrared Data Associatio)

• Chuẩn giao tiếp động bộ SPI

• Chuẩn giao tiếp I2C

• Bộ chuyển đổi ADC 10 bit, 200 ksps với điện áp tham chiếu nội, Lấy mẫu và chốt Tự động quét kênh, điều khiển chuyển đổi dữ liệu

• Hai bộ khuếch đại thuật toán (hoạt động) có thể định cấu hình (Đối với MSP 430x22x4)

• Bảo vệ sụt áp

Hình 1.2 Sơ đồ chân vi điều khiển MSP430G2553

Trang 9

Chip MSP430 có kích thước nhỏ go ̣n, chỉ 20 chân đối với kiểu chân DIP Bao gồ m 2 port IO (hay GPIO general purprose input/ output : cổng nhập xuất chung)

Port 1 : có 8 chân từ P1.0 đến P1.7 tương ứng với các chân từ 2-7 và 14 , 15 Port 2 : cũng gồm có 8 chân P2.0 – P2.7 ứng với các chân 8 – 13 , 18,19

Trang 10

Bảng 1 Chức năng chân của chip MSP430G2553

- Chân số 1 là chân cấp nguồn Vcc (ký hiệu trên chip là DVcc), ở đây nguồn cho chip chỉ được cấp ở mức 3,3V, nếu cấp nguốn cao quá mức này thì chip

có thể hoạt động sai hay cháy chip

- Chân 20 là chân nối cực âm (0V), chân này thì không có gì đặc biệt

- Chân reset : Chính là chân số 16 RST, nếu các bạn đã từng học về PIC thì sẽ thấy chân reset có ký hiệu là MCLR, các bạn để ý thấy dấu gạch ngang trên

có nghĩa là chân này tích cực ở mức thấp Mục đích của việc reset là nhằm cho chương trình chạy lại từ đầu

- Port I/O:

Port 1: có 8 chân từ P1.0 đến P1.7 tương ứng với các chân từ 2-7 và 14 , 15

Trang 11

Port 2: cũng gồm có 8 chân P2.0 – P2.7 ứng với các chân 8 – 13 , 18,19 Trong chế độ nhập (input) thì cả 2 port đều có 1 mạch điều khiển điện trở kéo dương – gọi là PULL UP nhưng giá trị của điện trở này rất lớn khoảng 47K nên gọi là WEAK PULL UP RESISTAN Việc điều khiển PULL UP sẽ

cập ở chương sau

Điều này cũng giống như việc thiết lập input ở port B của vi điều khiển PIC,

ở port B cũng có điện trở kéo lên, và người lập trình phải thao tác qua thanh ghi OPTION_REG

Ma ̣ch na ̣p chi MCU

Msp430 là dòng value line , power low, và low – cost Chính vì vậy mà TI

đã cung cấp cho người dùng 1 mạch nạp code + debug chỉ trên 1 mạch nhỏ gọn Đây chính là hình ảnh của Kit lanchpad:

- Kit có thể nạp được code cho dòng Msp430G: như msp430g2231, 2553,

2452 …

- Kit kết nối với máy tính thông qua cổng USB

Trang 12

2.2 Màn hình LCD Nokia 5110

Cấu tru ́ c điểm ảnh LCD Nokia 5110

Hình 1.4 Cấu trúc điểm ảnh LCD Nokia 5110

LCD Nokia 5110 bao gồm 84x48 điểm ảnh gồm 84 điểm ảnh theo chiều ngang hay trục x và 48 điểm ảnh theo chiều do ̣c hay tru ̣c y) LCD Nokia 5110 được chia thành 6 blank được hiểu như 6 dòng theo chiều do ̣c tru ̣c y, mỗi dòng gồm 8

hàng điểm ảnh

Hình 1.5 Cách thức vẽ trên LCD Nokia 5110

Trang 13

Hình trên cho thấy cách thức bô ̣ nhớ Ram ánh xa ̣ tới mô ̣t điểm ảnh nhất đi ̣nh trên màn hình hiển thi ̣ Mô ̣t byte (8 bits) trong bô ̣ nhớ sẽ được ánh xa ̣ lên 8 điểm ảnh liên tiếp nhau theo chiều do ̣c Mỗi lần thực hiê ̣n vẽ, ta phải vẽ tối thiểu 1 byte, nên không thể vẽ mô ̣t điểm ảnh duy nhất trên màn hình

Giao tiếp vơ ́ i LCD Nokia 5110

• Thứ tự và chức năng các chân LCD NOKIA 5110

1: RST : Chân reset LCD

2: CE: Chân cho phép hoặc không cho phép LCD hoạt động

3: DC: Chân chọn dữ liệu gửi đến LCD là lệnh hay là dữ liệu để hiển thị ra màn hình

4: DIN: Chân truyền dữ liệu theo chuẩn SPI

5: CLK: Chân truyền xung nhịp theo chuẩn SPI

6: VCC: Chân cấp nguồn cho LCD

7: BL: Chân cấp nguồn cho led nền màn hình LCD

8: GND: Chân mass

Ngoài chuẩn SPI với 3 đường tín hiệu chuẩn ( CS (CE), SCK(CLK),

MOSI(DI) ) thì Nokia LCD này cần thêm 2 đường nữa, đó là D/C (Data/Command)

và RST (Reset)

• Giao tiếp với LCD NOKIA 5110

Quá trình gửi dữ liệu từ vi điều khiển đến LCD NOKIA 5110 được chia làm

2 chế độ Chế độ gửi lệnh điiều khiển LCD và chế độ gửi dữ liệu hiển thị ra LCD Đường tín hiệu DC cho phép chọn 1 trong 2 chế độ này

- Nếu DC=0: dữ liệu gửi đến LCD được lưu vào thanh ghi Command Thanh ghi Command lưu trữ và thực thi các lệnh dùng để điều khiển sự hoạt động của Nokia LCD (dữ liệu này không được hiển thị ra màn hình)

Trang 14

- Nếu DC=1: dữ liệu gửi đến LCD được lưu vào thanh ghi Data Thanh ghi

Data lưu trữ các giá trị dữ liệu hiển thị lên màn hình LCD

- Tín hiệu reset LCD được tạo ra khi chân RST được kéo xuống mức thâp (tức RST=0)

Khi đang truyền dữ liệu, nếu có tín hiệu reset LCD thì quá trình truyền sẽ bị

hủy Cho đến khi chân RST ở mức cao (tức RST=1), trong chu kì xung clock tiếp theo, quá trinh truyền dữ liệu của byte vừa bị hủy sẽ được thực hiện lại

Khi đường tín hiệu CE ở mức cao (tức CE=1), thì LCD sẽ không chấp nhận

bất kỳ một dữ liệu nào từ VĐK gửi đến hay mọi dữ liệu hoặc lệnh lúc này đều

không ảnh hưởng đến LCD

Khi đường tín hiệu CE ở mức thấp (tức CE=0) thì data gửi đến LCD sẽ được

chấp nhận cứ Sau mỗi chu kì của xung clock (xung cạnh lên) thì 1 bit dữ liệu được

dịch vào LCD trên chân DIN

Chân CE phải được giữ ở mức thấp(tức CE=0) cho tới khi việc gửi dữ liệu

đến LCD hoàn tất

Trang 15

2.3 Nút chuyển 4 hướng Joystick

Hình 1.6 Module Joystick

Các chân của Module

• L/R+ kết nối với nguồn 5V của Kit Launch Pad MSP430G2553

• U/D+ kết nối với nguồn 5V của Kit Launch Pad MSP430G2553

• GND kết nối với chân GND của Kit Launch Pad MSP430G2553

• U/D U/D kết nối với chân đo ̣c tín hiê ̣u của Kit Launch Pad MSP430G2553

• L/R L/R kết nối với chân đo ̣c tín hiê ̣u của Kit Launch Pad MSP430G2553

Cấu ta ̣o của Joystick gồm hai biến trở, giá tri ̣ đo ̣c từ mỗi biến trở qua bô ̣ ADC củ a Kit có giá tri ̣ từ 0 – 1024

Trang 16

Chương II Lập trình điều khiển

1 Lưu đồ thuật toán chương trình

Hình 2.1 Lưu đồ thuật toán chương trình

Trang 17

2 Lập trình với Energia

Hình 2.2 Giao diên Energia

Energia là một nền tảng điện tử mã nguồn mở được tạo bởi Robert Wessels năm 2012 với mục tiêu đưa các sản phẩm của Texas Instruments MSP430 LaunchPad dựa trên thiết kế của Arduino Energia IDE là nền tảng được hỗ trợ trên các hệ điều hành Mac, Windows và Linux Energia sử dụng mspgcc biên dịch bởi Peter Bigot

và được dựa trên cơ sở của Arduino Energia bao gồm một môi trường phát triển tích hợp (IDE) Cộng đồng Energia cũng khá lớn mạnh Ngoài việc giá thành của các kit của nó rẻ hơn so với Arduino (so sánh với hàng chính hãng nhé) Hãng TI còn cung cấp miễn phí các kit cho học sinh, sinh viên để nghiên cứu

Energia là IDE hỗ trợ các dòng sản phẩm MSP430, MSP432, TM4C,

C2000, và CC3200 LaunchPad Việc viết code và nạp cho kit Launchpad hoàn toàn tương tự như Arduino Thậm chí ngay cả đến Library và các Example cũng giống như Arduino (Chỉ khác về phần cốt lõi)

Trang 18

3 Chi tiết về các khối code chương trình

3.1 Các cấu trúc được tạo ra

- Vì Lcd Nokia 5110 tổ chức thành 84x48 điểm ảnh, nên ta cần tạo ra một struct để mô tả vị trí điểm ảnh cần vẽ:

struct Toa_Do{ // struct tọa độ điểm

int x;

int y;

};

- Struct để mô tả đối tượng chính cảu game con rắn:

struct Snake{// struct mô tả rắn

int n; // chiều dài thân hiện tại

Toa_Do Than[20]; // chiều dài rắn tối đa là 20 int tt;//1 right, -1 left , 2 up , down -2 // hướng di chuyển

};

3.2 Khởi tạo rắn và mồi

- Khởi tạo ban đầu con rắn có 9 dốt, đầu ở vị trí tọa độ (10;10), hướng di

chuyển của rắn là từ trái sang phải, mồi ở vị trí tọa độ (15;15)

void khoiTao(struct Snake &snake){ //khoi tao

Trang 19

• Để tránh việc xảy ra hiện tượng trên, ta sẽ thực hiện vẽ từng cột 48 điểm ảnh trên Lcd

Trang 20

• Đầu tiên ta sẽ sắp xếp tất cả các điểm ảnh cần vẽ theo tọa độc x tang dần, nếu các điểm ảnh có tọa độ x giống nhau, thì sắp xếp theo tọa độ

y tang dần

• Sử dụng một mảng 48 phần tử để mô tả cho một cột trên LCD Nokia

5110 Bắt đầu từ tọa độc x nhỏ nhất, hay cột thứ x, ta kiểm tra và đánh dấu những điểm ảnh được vẽ trong cột thứ x Sau đó thực hiện việt vẽ cột thứ x, sau đó chuyển sang côt tiếp theo

- Hàm thực hiện sắp xếp tất cả các điểm ảnh cần vẽ bao gồm rắn và cả mồi void sort(const struct Snake &snake){

for (int i = 0; i < snake.n; i++) {

draw[snake.n] = snake.food;

Trang 21

toSort = snake.n;

} for (int i = 0; i < toSort; i++){

for (int j = i+1; j < toSort + 1; j++){

if (draw[i].x > draw[j].x) swap(draw[i], draw[j]);

else if (draw[i].x == draw[j].x){

if (draw[i].y > draw[j].y) swap(draw[i], draw[j]); }

} }

}

• Mảng draw là mảng toàn cục, lưu trữ tất cả các điểm ảnh cần vẽ

• Biến kiểm tra isBig là một biến toàn cục kiểu bool, được sử dụng để kiểm tra xem mồi có phải là mồi to hay không?

• Hàm swap: Thay đổi vị trí hai điểm ảnh cho nhau:

void swap(struct Toa_Do& a, struct Toa_Do& b){

Trang 22

- Hàm thực hiện vẽ một cột 48 điểm ảnh lên LCD:

void drawColum(int x){

int i = 0;

while (i < 48) {

// Thực hiện chuyển 8 giá trị điểm ảnh thành 1 byte để vẽ lên LCD

if (drawLcd[i] != 0 || drawLcd[i + 1] != 0 || drawLcd[i + 2] != 0 || drawLcd[i + 3] != 0 || drawLcd[i + 4] != 0 || drawLcd[i + 5] != 0

• Đầu vào x là cột thứ x cần vẽ

• Mảng drawLcd là mảng toàn cục 48 phần tử lưu các vị trí cần vẽ trong cột

Trang 23

- Hàm thực hiện vẽ tất cả các cột có giá trị điểm ảnh cần vẽ:

void drawSnake(struct Snake &snake){

} }

• Hàm startLcd thực hiện việc đưa tất cả giả trị của mảng drawLcd về giá trị 0, để thực hiện việc vẽ cột tiếp theo

3.4 Khối điều khiển

- Thực hiện việc đọc giá trị từ Joystick và chuyển hướng đi chuyển cho rắn theo giá trị đọc vào từ Joystick:

void dieuKhien(struct Snake &snake){

sensorValue = analogRead(sensorPin);

Ngày đăng: 13/01/2019, 15:03

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w