用法UART与PC通信实现msp430g2553单片机超声波测距示例__第1页
用法UART与PC通信实现msp430g2553单片机超声波测距示例__第2页
用法UART与PC通信实现msp430g2553单片机超声波测距示例__第3页
用法UART与PC通信实现msp430g2553单片机超声波测距示例__第4页
用法UART与PC通信实现msp430g2553单片机超声波测距示例__第5页
免费预览已结束,剩余3页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用法UART与PC通信实现msp430g2553单片机超声波测距示例_ 这篇文章主要介绍了用法UART与PC通信实现msp430g2553单片机超声波测距示例,需要的伴侣可以参考下. 适用于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 Tri

2、g #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 #d

3、efine 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() /USC

4、I 初始化函数 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)*M

5、IN_UNIT_TO1M); void delay() /粗略延迟 unsigned char i,j; for(i=124;i0;i-) for(j=8;j0;j-); static char * translater(long distance) /将测得的距离以字符串形式存储 static char transACCU_GRD; int i; long f; trans0= ; if(distance) for(i=1,f=MIN_UNIT_TO1M;i if(i=4) transi = .; continue; transi = 0+ distance/f; distance %= f

6、; f /= 10; transACCU_GRD-1 = ; return trans; void once_pro() /发一次超声波 if(TA1CCTL1 COV) TA1CCTL1 = COV; if(!(P1IN BIT3) TA1R = 0; P1OUT |= TRIG; /Trig 10 us 高电平 _EINT(); TA1CTL |= MC_2; /continue mode P1OUT = TRIG; P1OUT |= LED_1; while(TA1CCTL1 CCIFG); /等待 捕捉中断结束 else P1OUT = LED_1; _DINT(); void uar

7、t_txstring(char *string) /UART_TX 发送一个串 int i=0; while(stringi+) switch (i) /过滤无效 0 case 1:if(stringi=0) continue; case 2:if(stringi=0stringi-1=0) continue; UCA0TXBUF = stringi; delay(); /*UART_ISR*/ #pragma vector = USCIAB0TX_VECTOR _interrupt void usci_txdistance() /向 PC 发送 测得的距离 uart_txstring(nr)

8、; uart_txstring( Current ); uart_txstring( distance: ); uart_txstring(translater(cal_distance(); uart_txstring( cm); IE2 = UCA0TXIE; /*TIMER0_INT_ISR*/ #pragma vector = TIMER1_A1_VECTOR _interrupt void capture() current_time = TA1CCR1; TA1CTL = MC_2; TA1CCTL1 = CCIFG; /清CC1中断标记位 IE2 |= UCA0TXIE; /*Main*/ void main() WDTCTL = WDTPW + WDTHOLD; /关狗 DCOCTL = 0; BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; P1OUT = 0; P2OUT = 0; P1REN |= SW_2; P2REN |= TA1_1; P1OUT |= SW_2; P1DIR = SW_2; P1DIR = TRIG + L

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论