Báo cáo đồ án vi xử lý
Thiết kế hệ thống mạch đếm sản phẩm tự
động dùng MCU msp430
Giáo viên hướng dẫn:
ThS. TRẦN HỮU DANH
Sinh viên thực hiện:
HOÀNG VĂN KIÊN
ĐOÀNG HOÀNG DƯ
LÂM VĂN KHẢI
1080858
10808
10808
Nội dung báo cáo
• Giới thiệu LaunchPad Development Board
• Giới thiệu phần mền CCS (Code Composer
Studio v4 Core Edition)
• Sơ lược về MCU msp430g2152
• Sơ đồ khối
• Mach nguyên lý
• Kết quả đạt được
LaunchPad
Development
Board
USB Emulator
Connection
Embedded Emulation
6-pin eZ430 Connector
Crystal Pads
Chip Pinouts
Part and Socket
P1.3 Button
Power Connector
LEDs and Jumpers
P1.0 & P1.6
Reset Button
Lab …
PHẦN MỀM CCS
PHẦN MỀM CCS
Sơ lược về MCU msp430g2152
Timer_A0
Timer_A0
Sơ đồ khối
Lưu đồ
Mô Phỏng
11
R1
1k
2
3
4
5
6
7
8
Q1
PNP
10
Q2
R2
PNP
1k
2
3
4
5
6
7
8
R3
10k
U1
2
3
4
5
6
7
8
13
14
15
16
17
18
19
20
6
5
P1.0/TACLK
P2.0/ACLK
P1.1/TA0
P2.1/INCLK
P1.2/TA1
P2.2/CAOUT/TA0
P1.3/TA2
P2.3/CA0/TA1
P1.4/SMCLK/TCK P2.4/CA1/TA2
P1.5/TA0/TMS
P2.5/ROSC
P1.6/TA1/TDI/TCLK
P1.7/TA2/TDO/TDI
XIN
XOUT
MSP430F1121
RST/NMI
TEST
8
9
10
11
12
3
7
1
10
11
?
?
0
0
motor
motor_phan loai
dem
cb phan loai
Mạch Nguyên Lý
R1
11
Q1
PNP
10
1k
Q2
R2
R3
PNP
4.7K
1k
2
3
4
5
6
7
8
2
3
4
5
6
7
8
U1
2
3
4
5
6
7
8
13
14
15
16
17
18
19
20
6
5
P1.0/TACLK
P2.0/ACLK
P1.1/TA0
P2.1/INCLK
P1.2/TA1
P2.2/CAOUT/TA0
P1.3/TA2
P2.3/CA0/TA1
P1.4/SMCLK/TCK
P2.4/CA1/TA2
P1.5/TA0/TMS
P2.5/ROSC
P1.6/TA1/TDI/TCLK
P1.7/TA2/TDO/TDI
XIN
XOUT
RST/NMI
TEST
8
9
10
11
12
3
10
11
PCO
7
1
MSP430F1121
PC0
C1
10
RL3
5V
1N4148
R11
1k
A
3r
K
LED
R20
A
47k
LEDP5
K
A
LED-RED
K
LED
Q1
C1815
LEDP5
R21
330r
U1:E
LEDT5
74HC14
11
R2
U1:E
LEDT5
74HC14
11
D5
10
1nP
K
A
LED-RED
R20
47k
R21
330r
6) __interrupt
•
•
•
•
•
6) __interrupt
Ví dụ:
#pragma vector = 0x14
__interrupt void my_interrupt_handler(void);
Là hàm dùng chỉ thị tới một hoặc nhiều ngắt.
Khai báo bằng chỉ thị tiền xử lý
• # pragma vetor = (địa chỉ của các véc tơ ngắt).
Các linh kiện sử dụng trong mạch
•
•
•
•
•
Msp430g2152
Transistor pnp, điện trở 220R, 4k7,
74hc14 làm cổng đệm
Led 7seg
Và một số linh kiện phụ
Gọi ngắt
• CCTL0 = CCIE;
// CCR0 interrupt
enabled
• CCR0 = 10000;
// cycles to
overload,TACCRO,CCRO, TACCR0 TACCIFG
• TACTL = TASSEL_2 + MC_1;
// SMCLK,
upmode
• _BIS_SR(GIE);
// interrupt
So sánh phát hiện sp
• while(1)
• {
•
if ((1 & _P2_IN->_BIT.b5))
•
{ Delay(20000);
•
while((1 & _P2_IN->_BIT.b5)) {};
•
{
•
_P2_OUT->_BIT.b3 = 1;
•
}
•
}
•
•
if ((1 & _P2_IN->_BIT.b4))
//co san pham di qua
•
{ Delay(20000);
•
while((1 & _P2_IN->_BIT.b4)) {}; // doi san pham di qua het
Đổi mã hex
• {
i++;
• mDigit[1] = To7Seg(i/10,0);
• mDigit[0] = To7Seg(i%10,0);
•
_P2_OUT->_BIT.b3 = 0;
•
if(i>=99)
•
{
•
i=0;
•
}
• #pragma vector=TIMER0_A0_VECTOR
// #pragma
vector=TIMERA0_VECTOR(msp430)
•
// sua lai TIMER0_A0_VECTOR
• __interrupt void Timer_A (void)
• {
• switch(mDigNo)
• {
• case 0:
•
_P2_OUT->_BIT.b0 =1;
•
_P2_OUT->_BIT.b1 = 0;
•
//TACCR0 = TACCR0 + 10000;
• //_P2_OUT->_BYTE =~0x01;
• break;
• case 1:
•
_P2_OUT->_BIT.b1 = 1;
•
_P2_OUT->_BIT.b0 = 0;
•
//TACCR0 = TACCR0 + 10000;
• //_P2_OUT->_BYTE =~0x02;
• break;
• }
• P1OUT = mDigit[mDigNo];
•
Kết quả
Kiến thức của em có hạn:
Mạch chạy được phần đếm,
Phân loại chưa phân loại được
Cảm ơn thầy và các bạn