使用UART与PC通信实现msp430g2553单片机超声波测距示例
本文导语: 适用于msp430g2553单片机 使用到了hc-sr04超声测距模块,使用UART与PC通信。 代码如下:#include long current_time;//最近一次测得时间/*MyPro*/#define LED_1 BIT0 #define SW_2 BIT3 #d...
适用于msp430g2553单片机 使用到了hc-sr04超声测距模块,使用UART与PC通信。
#include
long current_time;//最近一次测得时间
/*MyPro*/
#define LED_1 BIT0
#define SW_2 BIT3
#define TA1_1 BIT2 //TA0.1 HC-SR04 Echo
#define TRIG BIT4 //HC-SR04 Trig
#define ACCU_GRD 7 //Accuracy Grade "xxx.x"+''
#define MIN_UNIT_TO1M 1000 //1 m to 1 mm
/*TIMER0*/
#define SOUR_CLK 1045000
#define DIV_CLK_1 1
#define SYS_CLK_SIG_1 SOUR_CLK/DIV_CLK_1
#define DISTANCE 45//dm
#define TIMER_RIG_MAX 0xffff
#define MAX_TIME_1 DISTANCE*2/34*SYS_CLK_SIG_1
#ifdef MAX_TIME_1
#define SYS_CLK SYS_CLK_SIG_1
#endif
#define UART_TXD BIT2
void init_timer1()
{
P2SEL |= TA1_1; //TA1.1 CCI1B be used
P2DIR &= ~TA1_1;
TA1CTL = MC_0 + TASSEL_2; //TimerA_0 stop mode,clock=1Mhz
TA1CCTL1 = CCIE + SCCI + CCIS_1 + SCS + CAP + CM_2; //TA0CC1 capture mode + down edge
}
/*UART*/
void init_uart() //USCI 初始化函数
{
UCA0CTL1 |= UCSWRST; //初始化串口寄存器
UCA0CTL1 |= UCSSEL_2; //选择子系统时钟 1.045MHz
UCA0BR0 = 0x6d; //波特率为9600
UCA0BR1 = 0x00;
P1SEL |= UART_TXD;
P1SEL2 |= UART_TXD;
P1DIR |= UART_TXD; //将P1.2设为第二功能
UCA0CTL1 &= ~UCSWRST; //初始化结束
}
long cal_distance() //通过测得时间计算距离
{
return (long)((340*(0.5000*current_time/SYS_CLK)*MIN_UNIT_TO1M));
}
void delay() //粗略延迟
{
unsigned char i,j;
for(i=124;i>0;i--)
for(j=8;j>0;j--);
}
static char * translater(long distance) //将测得的距离以字符串形式存储
{
static char trans[ACCU_GRD];
int i;
long f;
trans[0]=' ';
if(distance)
for(i=1,f=MIN_UNIT_TO1M;i
您可能感兴趣的文章:
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。