1.1.Yêu cầu chức năng Giao tiếp Vi Điều Khiển MSP430G2553 với các thiết bị ngoại vi.1.2. Yêu cầu phi chức năng Thiết bị ngoại vi có thể là : •LCD1602.•Ma trận phím 4x4 … Mạch nhỏ gọn, linh kiện sắp xếp hợp lý. 1.3. Các công cụ sử dụng IAR Embedded Workbench . Altium Designer : thiết kế mạch (nguyên lý + Layout).
Trang 1MỤC LỤC
MỤC LỤC 1
LỜI NÓI ĐẦU 2
CHƯƠNG I: MÔ TẢ ĐỀ TÀI 3
1.1 Yêu cầu chức năng 3
1.2 Yêu cầu phi chức năng 3
1.3 Các công cụ sử dụng 3
1.4 Sơ đồ khối của hệ thống 4
CHƯƠNG II: THIẾT KẾ HỆ THỐNG 5
2.1 Khối nguồn 5
2.2 Khối vi điều khiển MSP430G2553 6
2.3 Khối Hiển Thị LCD 16x2 7
2.5 Sơ đồ nguyên lý toàn mạch 9
2.6 Sơ đồ layout mạch 10
2.7 Hình ảnh mạch thật 11
CHƯƠNG III: PHẦN MỀM 12
CHƯƠNG IV: KẾT LUẬN 19
TÀI LIỆU THAM KHẢO 20
Trang 2LỜI NÓI ĐẦU
Kỹ thuật vi xử lý và điều khiển đã xuất hiện rất nhiều trong mọi lĩnh vực khoa học kỹ thuật hiện nay Với sự phát triển mạnh mẽ của công nghệ, nhiều họ vi xử lý và điều khiển cùng với những tính năng mới xuất hiện ngày càng đa dạng Vi Điều Khiển MSP hiện đang được ứng dụng rất rộng rãi trong nhiều lĩnh vực thực tiễn
Để từng bước làm chủ công nghệ và có thể áp dụng chúng vào các ứng dụng thực tiễn, nhằm giải quyết các bài toán cụ thể trong cuộc sống thì cần phải bắt tay vào nghiên cứu và làm mạch thực tế với vi điều khiển MSP430G2553 Chính bởi vậy, nhóm em đã nghiên cứu đề tài : “ Giao tiếp MSP430G2553 với thiết bị ngoại vi” nhằm mục đích tìm hiểu
rõ hơn về cách thức sử dụng dòng vi điều khiển này.
Trang 3CHƯƠNG I: MÔ TẢ ĐỀ TÀI
1.1.Yêu cầu chức năng
- Giao tiếp Vi Điều Khiển MSP430G2553 với các thiết bị ngoại vi.
1.2 Yêu cầu phi chức năng
- Thiết bị ngoại vi có thể là :
- Mạch nhỏ gọn, linh kiện sắp xếp hợp lý
1.3 Các công cụ sử dụng
- IAR Embedded Workbench
- Altium Designer : thiết kế mạch (nguyên lý + Layout)
Trang 41.4 Sơ đồ khối của hệ thống
Hình 1: Sơ đồ khối của mạch.
Trang 5CHƯƠNG II: THIẾT KẾ HỆ THỐNG 2.1 Khối nguồn
Hình 2 Khối nguồn
Khối nguồn sử dụng adapter 5V/1A Điện áp 5V dùng để nuôi LCD 16x2, đi qua AMS1117 3,3V để lấy nguồn 3,3V nuôi vi điều khiển MSP430G2553.
Led nguồn giúp cho chúng ta biết nguồn có đang được cung cấp cho mạch hay không Các tụ có tác dụng chống nhiễu giúp cho nguồn ổn định hơn.
Trang 62.2 Khối vi điều khiển MSP430G2553
Hình 3 Khối vi điều khiển MSP430G2553
Khối điều khiển gồm MSP430G2553, thạch anh và nút Reset Khối điều khiển sẽ giao tiếp và điều khiển các khối hiển thị trong mạch để thực hiện các chức năng của mạch, 1 jump đôi 2 chân sẽ giúp việc lựa chọn sử dụng thạch anh ngoài hay thạch anh nội của vi điều khiển.
Trang 72.3 Khối Hiển Thị LCD 16x2
Hình 4 Khối Hiển Thị LCD 16x2
Khối hiển thị LCD16x2 dùng để hiển thị giá trị phím bấm nhận được từ
ma trận phím 4x4 khi bấm nút.
Biến trở 10K dùng để điều chỉnh độ tương phản của LCD 16x2.
Trang 82.4 Khối Ma Trận Phím 4x4
Hình 5 Khối Ngoại Vi
Khối ma trận phím bao gồm 16 nút bấm được xắp xếp thành ma trận 4x4 gồm bốn hàng và bốn cột Ở bốn hàng mắc thêm 4 con trở 10K nối lên dương nguồn (chống trạng thái floating cho các đầu vào của vi điều khiển).
Trang 92.5 Sơ đồ nguyên lý toàn mạch
Hình 6 Sơ đồ khối toàn mạch
Trang 102.6 Sơ đồ layout mạch
Hình 7 Sơ đồ layout mạch
Layout của mạch được thiết kế trên phần mềm thiết kế mạch Altium Design 10 Việc tối ưu hóa phần cứng và sắp xếp linh kiện hợp lý giúp chúng ta chỉ cần đi dây chủ yếu ở lớp Bottom (ở đây em làm mạch in 1 lớp, những đường dây đỏ là câu dây ở bên trên).
Trang 112.7 Hình ảnh mạch thật
Hình 8 Mặt trên của mạch
Bởi phần cứng được tối ưu khi đi dây 1 lớp bottom vì thế mạch in dễ dàng tự làm được bằng phương pháp cảm quang Vẫn đảm bảo chất
lượng mạch in, thời gian nhanh chóng và tiết kiệm giá thành
Ngoài những linh kiện cắm, thì trên bo mạch còn gồm nhiều linh kiện dán Với những gì đã được học ở trung tâm thực hành thì việc hàn linh kiện dán trở nên rất đơn giản Nên bo mạch nhỏ gọn và dễ thiết kế hơn.
Trang 12CHƯƠNG III: PHẦN MỀM
Code gồm có các file chính :
-Hàm main.c : chứa chương trình chính, nêu rõ thuật toán để thực hiện bài toán
-Hàm main.h: chứa các thư viện driver, định nghĩa các chân I/O
- Các hàm driver: lcd_16x2, key_4x4, delay …
Chương trình chính main.c
#include "main.h"
void main( void )
{
int8_t key;
int8_t buf[30];
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
DDR1 = 0xf0; //cac chan tu 0-3 la dau vao cac chan tu 4-7 la dau ra
DDR2 = 0xff; //cac chan port 2 la dau ra
SEL1= 0x00; //port1 la chan i/o
SEL2 = 0x00; //port2 la chan i/o
LCD_Init();
sprintf(buf,"PROJECT II");
LCD_Gotoxy(3,0);
LCD_Puts(buf);
sprintf(buf,"LE ANH QUANG");
LCD_Gotoxy(1,1);
Trang 13sprintf(buf,"DEMO MATRIX KEY");
LCD_Gotoxy(0,0);
LCD_Puts(buf);
while(1)
{
key = KEY4X4_GetKey();
if(key)
{
sprintf(buf,"KEY = %c",key);
LCD_Gotoxy(0,1);
LCD_Puts(buf);
}
}
}
Trang 14Driver key_4x4.c
#include "key_4x4.h"
static uint8_t KEY_4X4[4][4]={'1','2','3','4',
'5','6','7','8',
'9','a','b','c', '+','-','/',' '};
uint8_t KEY4X4_IsPush(void)
{
if((KEY4X4_ROW1==0)|(KEY4X4_ROW2==0)|(KEY4X4_ROW3==0)|(KEY4X4_ROW4==0))return 1; else return 0;
}
void KEY4X4_CheckCol(uint8_t i)
{
KEY4X4_COL1=KEY4X4_COL2=KEY4X4_COL3=KEY4X4_COL4=1;
if(i==0)
{
KEY4X4_COL1=0;
}
else if(i==1)
{
KEY4X4_COL2=0;
}
else if(i==2)
{
KEY4X4_COL3=0;
}
else
{
Trang 15uint8_t KEY4X4_GetKey(void)
{
uint8_t i;
KEY4X4_COL1=KEY4X4_COL2=KEY4X4_COL3=KEY4X4_COL4=0;
if(KEY4X4_IsPush())
{
delay_ms(5);
if(KEY4X4_IsPush()) {
for(i=0;i<4;i++) {
KEY4X4_CheckCol(i);
if(!KEY4X4_ROW1) return KEY_4X4[i][0];
if(!KEY4X4_ROW2) return KEY_4X4[i][1];
if(!KEY4X4_ROW3) return KEY_4X4[i][2];
if(!KEY4X4_ROW4) return KEY_4X4[i][3];
} }
}
return 0;
}
/******************KET THUC FILE********************
LE ANH QUANG_PHAM THI ANH QUYEN */
Trang 16Driver lcd_16x2.c
#include "lcd_16x2.h"
void LCD_Enable(void)
{
LCD_EN=1;
delay_us(3);
LCD_EN=0;
delay_us(50);
}
//Ham Gui 4 Bit Du Lieu Ra LCD
void LCD_Send4Bit( uint8_t Data )
{
LCD_D4=(Data>>0)&0x01;
LCD_D5=(Data>>1)&0x01;
LCD_D6=(Data>>2)&0x01;
LCD_D7=(Data>>3)&0x01;
}
// Ham Gui 1 Lenh Cho LCD
void LCD_SendCommand (uint8_t command )
{
LCD_Send4Bit ( command >>4 ); /* Gui 4 bit cao */
LCD_Enable () ;
LCD_Send4Bit ( command ); /* Gui 4 bit thap*/
LCD_Enable () ;
}
// Ham Khoi Tao LCD
void LCD_Init ( void )
{
LCD_Send4Bit(0x00);
Trang 17LCD_Send4Bit(0x03);
LCD_Enable();
delay_ms(5);
LCD_Enable();
delay_us(100);
LCD_Enable();
LCD_Send4Bit(0x02);
LCD_Enable();
LCD_SendCommand( 0x28 ); // giao thuc 4 bit, hien thi 2 hang, ki tu 5x8
LCD_SendCommand( 0x0c); // cho phep hien thi man hinh
LCD_SendCommand( 0x06 ); // tang ID, khong dich khung hinh
LCD_Clear(); // xoa toan bo khung hinh
}
//Ham Thiet lap vi tri con tro
void LCD_Gotoxy(uint8_t x, uint8_t y)
{
uint8_t address;
if(!y)
address = (0x80+x);
else
address = (0xC0+x);
delay_ms(1);
LCD_SendCommand(address);
delay_ms(5);
}
// Ham Xoa Man Hinh LCD
void LCD_Clear()
{
LCD_SendCommand(0x01);
Trang 18// Ham Gui 1 Ki Tu Len LCD
void LCD_PutChar ( uint8_t Data )
{
LCD_RS=1;
LCD_SendCommand( Data );
LCD_RS=0;
}
//Ham Gui Mot Chuoi Ki Tu Len LCD
void LCD_Puts (int8_t *s)
{
while (*s)
{
LCD_PutChar(*s);
s++;
}
}
/******************KET THUC FILE********************
LE ANH QUANG_PHAM THI ANH QUYEN */
Trang 19CHƯƠNG IV: KẾT LUẬN
Sau khi hoàn thành đồ án II với đề tài giao tiếp Vi Điều Khiển MSP430G2553 với các thiết bị ngoại vi, nhóm em đạt được một số điểm sau:
- Thực hiện được giao tiếp Vi Điều Khiển MSP430G2553 với LCD1602 và ma trận bàn phím 4x4.
- Tiếp cận và sử dụng được công cụ thiết kế mach Altium10
- Tăng kĩ năng hàn mạch
- Sử dụng linh kiện hàn dán giúp mạch nhỏ gọn hơn
- Hiểu biết thêm giá trị ứng dụng thực tiễn của vi điều khiển nói chung
Bên cạnh đó, với sự hỗ trợ mượn KIT và tuần thực tập đồ án II tại trung tâm đào tạo thực hành của Viện Điện Tử - Viễn Thông trường Đại học Bách Khoa Hà Nội, nhóm em hoàn thành đề tài thuận tiện hơn.
Với đề tài này, chúng em có thể tiếp tục lập trình để có một máy tính cầm tay đơn giản…
Cuối cùng, chúng em xin chân thành cảm ơn sự hướng dẫn của thầy và các thầy cô viện Điện Tử -Viễn Thông đã tạo điều kiện cho chúng em hoàn thành đề tài này Chúng em kính chúc các thầy cô sức khỏe và hạnh phúc!
Trang 20TÀI LIỆU THAM KHẢO
- https://www.google.com.vn
- http://www.ti.com
- http://www.banlinhkien.vn
- http://www.dientuvietnam.net