TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ BỘ MÔN TỰ ĐỘNG HÓA ĐỒ ÁN VI ĐIỀU KHIỂN ĐỀ TÀI: TÌM HIỂU CẤU TRÚC GPIO CỦA MSP430-THIẾT KẾ MẠCH TẠO HIỆU ỨNG TRÊN 16 LED ĐƠN... Thiết kế phần cứn
Trang 1TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ
BỘ MÔN TỰ ĐỘNG HÓA
ĐỒ ÁN VI ĐIỀU KHIỂN
ĐỀ TÀI: TÌM HIỂU CẤU TRÚC GPIO CỦA MSP430-THIẾT
KẾ MẠCH TẠO HIỆU ỨNG TRÊN 16 LED ĐƠN.
NHÓM 5
Nguyễn Khắc Nguyên Nguyễn Hữu Cảnh B1709064
Trương Văn Cường B1709065 Trần Vũ Luân B1709091
Trang 2MỤC LỤC
I.GIỚI THIỆU ĐỀ TÀI 3
a Nội dung 3
b.Các tính năng 3
c.Phương pháp thực hiện 3
II.GPIO 3
III.THỰC HIỆN 4
a.Mô hình hệ thống 4
i Mô tả sơ lược hệ thống: 4
ii Sơ đồ khối hệ thống mạch điện 4
b Thiết kế phần cứng mạch điện: 5
i Sơ lược hoạt động của mạch điện: 5
ii Mạch điện mô phỏng phần cứng: 5
iii Thiết kế chi tiết 6
c Thiết kế phần mềm điểu khiển 6
i Chức năng phần mềm: 6
ii Sơ đồ chính: 7
7
iii Sơ đồ chương trình con: 8
iv Đoạn code chương trình 15
3.kết quả thực hiện 22
a Mô hình thực tế 22
b phần cứng mạch điện 22
c Kết quả 23
d Ưu nhược điểm của hệ thống 24
e Các hướng phát triển 24
4 Tài liệu tham khảo 24
5 Phụ lục 24
a Quá trình thực hiện đề tại 24
b Danh sách các thành viên và bảng phân chia công việc 24
Trang 3I.GIỚI THIỆU ĐỀ TÀI
a Nội dung
Đề tài: Tìm hiểu cấu trúc GPIO của MSP430-thiết kế mạch tạo
hiệu ứng trên 16 led đơn
Mục tiêu: Hiểu được chức năng, cách sử dụng GPIO và thiết kế
mạch tạo hiệu ứng trên 16 led đơn (6 hiệu ứng)
Khi nhấn phím 4: dịch 2 led xen kẻ
Khi nhấn phím 5: chớp tắt 8 led xen kẻ
Khi nhấn phím 6: các led sang dần tắt dần
c.Phương pháp thực hiện
-Lập trình chức năng GPIO cho chip MSP430 sử dụng button, để điều
khiển trạng thái hoạt động của 16 LED đơn,thông qua 2 IC 74HC595
-Sử dụng 3 chân P1.0,P1.1,P1.2 của chip MSP430G2553 kết nối với 3 chân SCK,CLK,DATA của IC 74HC595,ghép 2 IC 74HC595 với nhau
để kết nối với 16 LED đơn Sử dụng 6 chân P2.0-P2.5 của chip MSP430G2553 nhận dữ liệu vào, kết nối với button
II.GPIO
Giới thiệu:
-GPIO là viết tắt General Purpose Input Output ( Cổng đầu vào, ra với mục đích cơ bản) nó là các chân đầu ra, đầu vào đa chức năng
-Số Port tùy thuộc vào loại MCU: 1- 12 Port
-Mỗi bit của port(port pin) có thể điều khiển độc lập
-Pin vào có thể tạo ra tín hiệu ngắt(Ext interupt)
Một số thanh ghi thường được sử dụng:
Thanh ghi cấu hình vào/ra cho port pin
PxDIR.y = 0: bit thứ y của Px là INPUT
PxDIR.y = 1: bit thứ y của Px là OUTPUT
Trang 4 Thanh ghi điều khiển port pin:
PxOUT.y = 0: bit thứ y của Px là 0
PxOUT.y = 1: bit thứ y của Px là 1
Thanh ghi PxIN: đọc trạng thái port pin:
PxIN: chứa trạng thái logic đọc vào của Px
Thanh ghi PxREN: thiết lập điện trợ kéo nội bên trong MCU cho các pin Input:
PxREN.y = 1: bật điện trở kéo tại pin y
PxREN.y = 0: tắt điện trở kéo tại pin y
Thanh ghi PxIE: cho phép ngắt port pin (đối với chân là Input):
PxIE.y = 1: cho phép ngắt tại pin y của Px
PxIE.y = 0: không phép ngắt tại pin y của Px
Thanh ghi PxIES: thiết lập cạnh ngắt của tín hiệu( cạnh lênh hoặc cạnh xuống):
PxIES.y = 1: cho phép ngắt cạnh xuống
PxIES.y = 0: cho phép ngắt cạnh lên
Thanh ghi PxIFG: chứa cờ ngắt (trạng thái tác động của tín hiệu):
PxIFG.y = 1: một ngắt đang chờ xử lý tại pin thứ y
PxIFG.y = 0: không có ngắt (không có tín hiệu tác động)
Trang 5b Thiết kế phần cứng mạch điện:
i Sơ lược hoạt động của mạch điện:
Cấp nguồn cho mạch và nạp dữ liệu vào MSP430G2553 Nối chân port 1 ra IC ghi dịch 74HC595 kết nối các ngõ ra của IC ra 16 led Nối Port 2 với 6 nút ấn, sau đó tác động vào nút ấn điều khiển trạng thái led
ii Mạch điện mô phỏng phần cứng:
Trang 6iii Thiết kế chi tiết
1 Khối xử lí trung tâm
Xử lý tín hiệu thông qua IC ghi dịch
Thông số mạch điện: Nguồn, ngõ/ra vào IC, nhận tính hiệu từ nút nhấn
Kết nối:
+ Chân P1.0,P1.1,P1.2 kết nối với 3 chân CK, Data, Latch
+ Q0 đến Q7 của IC kết nối với led
+ Mách nối tiếp 2 IC (Q7’ nối DS)
2 Khối hiển thị:
Hiển thị hiệu ứng
Nhận tính hiểu ngõ ra của IC
Kết nối:
+ Đầu dương nối điện trở ra IC
+ Đầu âm nối GND
3 Khối điều khiển:
Tác động bằng nút nhấn
Ngõ vào tác động vào các Port của MSP
Kết nối với PORT 2 từ bit 0 đến bit 5
c Thiết kế phần mềm điểu khiển
i Chức năng phần mềm:
Viết code lập trình cho MSP430 bằng phần mềm IAR
Trang 7ii Sơ đồ chính:
Trang 8iii Sơ đồ chương trình con:
Hiệu ứng 1: Chóp tắt
Trang 9 Hiệu ứng 2: Dịch tắt 1 led
Trang 10 Hiệu ứng 3: Dịch sáng 2 led
Trang 11 Hiệu ứng 4:Dịch sáng 2 led xen kẻ
Trang 12 Hiệu ứng 5: 8 Led sáng tắt xen kẻ
Trang 13Hiệu ứng 6: Led sáng dần tắt dần
Trang 14 Tạo xung CK:
Tạo xung chốt:
Lear bit:
Trang 15iv Đoạn code chương trình
#include "msp430g2553.h"
// khai bao IO
#define CK BIT0 //khai bao CK =P1.0
#define DATA BIT1 // DATA=P1.1
#define LATCH BIT2 // LATCH=P1.2
Trang 16P2OUT |= 0x3f; // keo dien tro len cho cac port p2.0-p2.5 P2REN |= 0x3f; // bat dienn tro keo cho port p2.0-p2.5 // -khai bao ngat port 2 -
P2IE |= 0x3f; // cho phep ngat tai P2.0-P2.5 P2IES |= 0x3f; // ngat canh xuong
Trang 17P2IFG |= 0x3f; // xoa co ngat truoc khi vao vong lap chuong trinh
_BIS_SR(GIE); // cho phep ngat toan cuc GIE // vong lap chuong trinh chinh
while(1) { } // end while } // end main // dinh nghia vector ngat
#pragma vector = PORT2_VECTOR interrupt void Port2(void)
mot_led_tat_dich();
} if((P2IN & K3)==0 ) {
dich2led();
} if( (P2IN & K4)==0 ) {
dich2();
} if( (P2IN & K5)==0) {
Trang 18chop_tat_8led_xen_ke();
} if( (P2IN & K6)==0 ) {
sang_dan_tat_dan();
} } void chot() {
P1OUT|=LATCH; //Set P1.2=1 delay_cycles(15000);
P1OUT&=~LATCH; // clear P1.2=0 delay_cycles(15000);
} void xung_ck() {
P1OUT|=CK; // Set P1.0=1 delay_cycles(15000);
P1OUT&=~CK; // clear P1.0=0 delay_cycles(15000);
} void xoa() { P1OUT&=~DATA; // clear p1.1=0 for (int i =0;i<17;i++)
{ xung_ck(); // du lieu xung 1, 0 se duoc dua vao IC }
chot(); // du lieu xung 1, 0 dua ra ngo ra IC }
Trang 19// cac hieu ung // HIEU UNG 1 void chop_tat() { for(int i=0;i<4;i++) { for(int i=0;i<17;i++) { xung_ck();
P1OUT|=DATA;
} chot();
for(int i=0;i<17;i++) { xung_ck();
P1OUT&=~DATA; }
chot();
} } // HIEU UNG 2 void mot_led_tat_dich() { P1OUT|=DATA;
for(int i=0;i<17;i++){
xung_ck();
} chot();
for(int i=0;i<4;i++){
P1OUT&=~DATA; xung_ck();
chot();
for(int i=0;i<17;i++){ P1OUT|=DATA;
Trang 20xung_ck();
chot();
}}}
// HIEU UNG 3 void dich2led() { for(int i=0;i<4;i++) { P1OUT|=DATA;
for(int i=0;i<2;i++) {
xung_ck();
} chot();
for(int i=0;i<9;i++) { P1OUT&=~DATA; for(int i=0;i<2;i++) { xung_ck();
} chot();
}}}
// HIEU UNG 4
void dich2() { for(int i=0;i<8;i++) { P1OUT|=DATA;
for(int i=0;i<2;i++) { xung_ck();
} chot();
P1OUT&=~DATA; for(int i=0;i<2;i++) { xung_ck();
Trang 21} chot();
} xoa();
} // HIEU UNG 5 void chop_tat_8led_xen_ke(){ for (int i=0;i<4;i++){
P1OUT|=DATA;
for (int i=0;i<9;i++){
xung_ck();
} chot();
P1OUT&=~DATA;
for(int i=0;i<9;i++){
xung_ck();
} chot();
xoa();
} } // HIEU UNG 6 void sang_dan_tat_dan(){ for(int i=0;i<4;i++){
for (int i=0;i<17;i++){
P1OUT|=DATA;
xung_ck();
chot();
} for(int i=0;i<17;i++){
Trang 22P1OUT&=~ DATA;
xung_ck();
chot();
} } }
Trang 23 IC 74hc595: Tăng thêm ngõ ra của MSP
Led và nút nhấn: Tác động vào MSP và led sáng tắt theo hiệu ứng
c Kết quả
Chương trình thực hiện được với các hiệu ứng đã đặt ra:
Trang 24 Khi nhấn phím 1: chớp tắt
Khi nhấn phím 2: một led tắt dịch
Khi nhấn phím 3: dịch sáng 2 led
Khi nhấn phím 4: dịch 2 led xen kẻ
Khi nhấn phím 5: chớp tắt 8 led xen kẻ
Khi nhấn phím 6: các led sáng dần tắt dần
d Ưu nhược điểm của hệ thống
Ưu điểm: chương trình hoạt động tốt , đáp ứng được các yêu cầu đề ra
Nhược điểm: các led còn bị nhiễu do cấp nguồn
https://huynhgiaublog.com/kienthucdientu-chipdieukhienmsp430-chucnangio-5 Phụ lục
a Quá trình thực hiện đề tại
i Kế hoạch thời gian: khoảng 2 tuần
ii Những khó khăn và thuận lợi trong quá trình thực hiện
Trương Văn Cường: Viết code mô phỏng
Trần Vũ Luân: Tìm tài liệu soạn file word
6.Trả lời câu hỏi
a.Nguyễn Hữu Cảnh
Câu hỏi: cách kết nối mở rộng port ra 16 led đơn
Trang 25Trả lời: Dùng 2 ic 74hc595 để mở rộng port : Sử dụng 3 chân P1.0,P1.1,P1.2 của chip MSP430G2553 kết nối với 3 chân SCK,CLK,DATA của IC
b Trương Văn Cường
Câu hỏi:chỉ ra chương trình đưa dữ liệu ra ngoài led đơn
Trả lời : code tạo xung để đưa dữ liệu vào ic
code dưa dữ liệu ra led đơn
c Trần Vũ Luân
Câu hỏi: chỉ ra đoạn code thực hiện phím nhấn và 1 hiệu ứng bất kì
Trang 26Trả lời: sử dụng phương pháp dung ngắt để đọc phím nhấn tác động thấp Code xử lí phím nhấn
Code xử lí hiệu ứng chớp tắt: