Professional Documents
Culture Documents
Báo Cáo Project 2
Báo Cáo Project 2
#1: Nguyn ng An
MSSV: 20111090
K tn: ____________________
MSSV : 20112559
K tn: ___________________
#3: L c L
MSSV: 20111752
K tn: ___________________
MSSV : 20111245
K tn: ____________________
MSSV :20111258
K tn: ____________________
nh gi bo co
Ni dung/ tiu ch
im
H s
Tm tt ti
0 1 2 3 4 5 6 7 8 9 10
X2
0 1 2 3 4 5 6 7 8 9 10
X1
Cc tiu ch cn phi t c
0 1 2 3 4 5 6 7 8 9 10
X2
0 1 2 3 4 5 6 7 8 9 10
X4
Kt lun
0 1 2 3 4 5 6 7 8 9 10
X1
0 1 2 3 4 5 6 7 8 9 10
X1
Ph lc A: ng gp ca tng c nhn
0 1 2 3 4 5 6 7 8 9 10
X2
Ph lc B: M ngun
0 1 2 3 4 5 6 7 8 9 10
X1
Vn phong khoa hc
0 1 2 3 4 5 6 7 8 9 10
X6
im
Tng
Nhn xt:
...
2
Mc Lc
Li m u.................................................................................................................... 4
Tm tt ti.......................................................................................................... 5
I.
1.
a.
b.
S khi :....................................................................................................... 5
2.
Cc tiu ch ca sn phm......................................................................................... 6
3.
Ni dung.............................................................................................................. 7
a.
b.
c.
d.
II.
kt lun............................................................................................................. 13
III.
Phc Lc A: M Ngun................................................................................................... 14
Ph Lc B: Cc bn v thit k, bn v mch in ca sn phm...................................................22
Li m u
iu khin ng c c ng dng vo nhiu lnh vc trong cuc sng
(trong cng ngh ch to robot).mach iu khin ng c c ngha rt quan
trng trong vic iu khin ng c theo mc ch ca ngi s dng.c im ca
mch iu khin l ng c c th quay thun hoc quay nghch ,tc ca ng
c c th tng hoc gim ty theo thch .mch s dng chp vi iu khin ca
hng TI . c bit hn l iu khin ng c t xa. Vic ny c th to ra nhng
robot c th gip con ngi lm vic iu kin mi trng khc nghit, c
hi
I.
Tm tt ti.
b. S khi :
khi pht
RF
Khi thu
RF
Khi hin th
(LCD)
Khi
keypad
(cm ng
Khi x l
(MSP430G2272)
Khi thi
gian thc
Motor driver
(DS1302)
3.3 V
Khi ngun
12V
Cc tiu ch ca sn phm.
(tiu ch sn phm hay cn gi l yu cu phi chc nng)
Ni dung.
ti c chia ra nhiu phn nh:
a. iu khin ng c s dng sng RF
y i tng l morto
Thnh phn chnh to nn mch cu H l 4 kha L1,L2,R1 v R2. iu
kin bnh thng th 4 kha ny m v cu H khng hot ng.Gi s bng
cch no m kha L1 v R2 c ng li (L2 v R1 vn m) ,khi s
c mt dng in chy t V qua kha L1 n u A v xuyn qua morto n
8
10
11
II.
kt lun.
Thng qua n II chng em lm ln ny gip chng em rn lyn thm
cc k nng lp trnh cho kit launchpad MSP430, k nng lm mch in trn
altium. Tm hiu v bit r hn v module thu pht sng RF, bn phm in
dung. ng c encoder . vn dng nhng kin thc hc trn ging ng
vo thc t v ng thi rn luyn c k nng lm vic nhm, lm vic
c lp. Nhng do thi gian c hn, kh nng cn hn ch, ng thi phi
tip xc vi nhng ci mi l nn bn ca chng em cn mc nhiu sai
st , khuyt im.
13
Phc Lc A: M Ngun
Includes ------------------------------------------------------------------*/
#include <msp430.h>
#include "LCD1602.h"
#include "DS1302.h"
/* Private typedef -----------------------------------------------------------*/
typedef unsigned char uchar;
/* Private define ------------------------------------------------------------*/
#define KEY_PORT_OUT P3OUT
#define KEY_PORT_IN
P3IN
/*RF Connection*/
#define RF_PORT P1IN
#define RF_D3 3
#define RF_D2 2
#define RF_D1 1
#define RF_D0 0
#define
#define
#define
#define
#define
RF_D0_IN()
RF_D1_IN()
RF_D2_IN()
RF_D3_IN()
RF_IN()
RF_PORT&(1<<RF_D0)
RF_PORT&(1<<RF_D1)
RF_PORT&(1<<RF_D2)
RF_PORT&(1<<RF_D3)
RF_PORT & 0x0f
/*PWM*/
#define
#define
#define
#define
#define
LEVEL_MAX
PERIOD
DUTY_K
MOTOR_ON()
MOTOR_OFF()
20
800
// f=20KHz
PERIOD/20
P4OUT |= 1<<0
P4OUT &= ~(1<<0)
14
15
LCD_PutS("20");
Display_Change=1;
break;
}
case 2:
{
Set_Pointer(0x09);
LCD_Clr();
LCD_Goto(0x00);
LCD_PutS("TIME-ON :");
LCD_Goto(0x40);
LCD_PutS("TIME-OFF:");
LCD_Goto(0x0C);
LCD_PutC(':');
LCD_Goto(0x4C);
LCD_PutC(':');
Display_Change=1;
break;
}
case 3:
{
Set_Pointer(0x00);
LCD_Clr();
LCD_Goto(0x01);
LCD_PutS("SPEED");
LCD_Goto(0x41);
LCD_PutS("DIRECT");
Display_Change=1;
break;
}
default: menu=0;break;
}
menu_select=(menu<<4)|select;
}
/*
* @brief: SELECT Handle
*/
void BKEY_Handle()
{
select++;
menu_select=(menu<<4)|select;
switch(menu_select)
{
case 0x01:select=0;
case 0x00:break;
//Page 1 : Set Time
case 0x16:select=0;menu_select=0x10;
case 0x10:Set_Pointer(0x4D);break;
case 0x11:Set_Pointer(0x4A);break;
case 0x12:Set_Pointer(0x47);break;
case 0x13:Set_Pointer(0x05);break;
case 0x14:Set_Pointer(0x08);break;
case 0x15:Set_Pointer(0xB);break;
//Page 2: Set ON/OFF Time
case 0x24:select=0;menu_select=0x20;
case 0x20:Set_Pointer(0x09);break;
case 0x21:Set_Pointer(0x0D);break;
case 0x22:Set_Pointer(0x49);break;
case 0x23:Set_Pointer(0x4D);break;
//Page 2: Set Speed & Direct
case 0x32:select=0;menu_select=0x30;
case 0x30:Set_Pointer(0x00);break;
case 0x31:Set_Pointer(0x40);break;
default:
}
}
16
17
case 1:ShowTime();break;
case 2:
{
LCD_Goto(0x0A);
print2Dec(hour_on);
LCD_Goto(0x0E);
print2Dec(min_on);
LCD_Goto(0x4A);
print2Dec(hour_off);
LCD_Goto(0x4E);
print2Dec(min_off);
break;
}
case 3:
{
LCD_Goto(0x0E);
print2Dec(motor_speed);
LCD_Goto(0x49);
if(motor_direct)
LCD_PutS("FORWARD");
else
LCD_PutS("REVERSE");
break;
}
default:
}
}
18
{Lcd_Led_On();Sp_On();}
}
Key_Old=Key_New;
/*Read Time------------------*/
Time_Update_Cnt++;
if(Time_Update_Cnt==20)
{
Time_Update_Cnt=0;
RTC_GetTime(&hour, &min, &sec);
if(sec==0)
if(min==0)
if(hour=0)
RTC_GetDate(&date,&month,&year);
Display_Change=1;
/*LCD Black Light On Delay*/
if(Lcd_Led_Cnt)
{
Lcd_Led_Cnt--;
LCD_LED_PIN_ON();
}
else LCD_LED_PIN_OFF();
}
/*Pointer Blink*/
Pointer_Cnt++;
if(Pointer_Cnt==20)
{
Pointer_Cnt=0;
Pointer_Blink^=0x01;
Update_Pointer();
}
/**/
/**/
TACCR0 += 40000;
/**
* @brief
*/
Main program.
int main(void)
{
uchar i;
WDTCTL = WDTPW + WDTHOLD;
DCOCTL = CALDCO_16MHZ;
BCSCTL1 = CALBC1_16MHZ;
/*PORT Configuration------------*/
//------PORT1--------------------P1DIR=0xf0;
P1.3: RFIN, P1.4: Speaker
SP_PIN_OFF();
First
//------PORT2--------------------P2DIR=0xff;
Led
P2SEL=0x00;
//------PORT3--------------------P3DIR=0x0f;
//------PORT4--------------------P4DIR=0xff;
/*Timer A -----------------------*/
TACCTL0 = CCIE;
TACCR0 = 50000;
// Stop WDT
19
/*Peripheral Initial-------------*/
LCD_Init();
/*Initial First Display*/
LCD_PutS("MOTOR DRIVER...");
for(i=0;i<15;i++)
{
LCD_Goto(0x40+i);
LCD_PutC(0xff);
__delay_cycles(1000000);
}
//motor_speed = RTC_ReadRam(1);
RTC_GetDate(&date,&month,&year);
Set_Pointer(0x10);
LCD_Clr();
LCD_Goto(0x00);
LCD_PutS("TIME");
LCD_Goto(0x08);
LCD_PutS("- -20");
LCD_Goto(0x4A);
LCD_PutS(": :");
Display_Change=1;
__bis_SR_register(GIE);
// Enter LPM0 w/ interrupt
for(;;)
{
/*Item Update---------------------------------------*/
if(Key_Num)
{
Key_Num=0;
Update_Item();
}
/*Display Update-----------------------------------*/
if(Display_Change)
{
Display_Change=0;
Update_Display();
}
/*RF Handle---------------------------------------*/
if(RF_Act)
{
RF_Act=0;
motor_change=1;
switch(RF_New)
{
case 0x01://Key D: DOWN SPEED
if(motor_speed>0)motor_speed--;
break;
case 0x02://Key C: ON/OFF
motor_on ^=0x01;
break;
case 0x04://Key B: UP SPEED
if(motor_speed<LEVEL_MAX)motor_speed++;
break;
case 0x08://Key A: DIRECT
motor_direct ^=0x01;
break;
}
}
20
//P4.1: IO
//P4.2:PWM
//P4.2: IO
//P4.1:PWM
//On/Off
if(motor_on)
MOTOR_ON();
else
MOTOR_OFF();
}
/* Motor Timer Control-------------------*/
if(min_on==min)
{
if(hour_on==hour)
MOTOR_ON();
}
if(min_off==min)
{
if(hour_off==hour)
MOTOR_OFF();
}
}
}
/*
* @brief: Key Scan Program
*/
unsigned char KeyScan()
{
uchar i,key_index;
for(i=0;i<4;i++)
{
KEY_PORT_OUT=1<<i;
if(KEY_PORT_IN & 0xf0)
{
switch(KEY_PORT_IN & 0xf0){
case 0x10:key_index=0x00;break;
case 0x20:key_index=0x01;break;
case 0x40:key_index=0x02;break;
case 0x80:key_index=0x03;break;
21
default:
}
return KeyCode[key_index|(i<<2)];
}
}
return 0;
}
void ShowTime()
{
__disable_interrupt();
LCD_Goto(0x06);
print2Dec(date);
LCD_Goto(0x09);
print2Dec(month);
LCD_Goto(0x0E);
print2Dec(year);
LCD_Goto(0x48);
print2Dec(hour);
LCD_Goto(0x4B);
print2Dec(min);
LCD_Goto(0x4E);
print2Dec(sec);
__enable_interrupt();
}
22
23
24
25
26