使用IAR实现超声波测距,但是用串口在PC机显示时是16进制显示。

#include  <msp430x14x.h>typedef unsigned char uchar;
typedef unsigned int  uint;#define CPU_F ((double)32768)   //外部低频晶振32.768KHZ
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) #define Trig1(a)  if(a==1) P1OUT |= BIT3; else P1OUT &= ~BIT3
#define  RISE  1
#define  FALL  0
void Delays(void);
void PutString(uchar *ptr);
void Hc_sr_Init(void);
void Hc_sr_Open(void);uint TA_Overflow_Cnt;
unsigned int cap_new = 0;           // 首次捕捉的ta0r值
unsigned int cap_old = 0;           // 二次捕捉的ta0r值
char cap_N = 0;                     // 溢出次数
char state = 0x00;
long cap_data = 0;                  // 距离值
uint value = 0;void main(void)
{Hc_sr_Init();                             //初始化定时器WDTCTL = WDTPW + WDTHOLD;                 // 关狗//初始化串口P3SEL |= 0xC0;                            // P3.6,7 = USART1 TXD/RXDME2 |= UTXE1 + URXE1;                     // Enable USART1 TXD/RXDUCTL1 |= CHAR;                            // 8-bit characterUTCTL1 |= SSEL0;                          // UCLK = ACLKUBR01 = 0x03;                             // 32k/9600 - 3.41UBR11 = 0x00;                             UMCTL1 = 0x4A;                            // ModulationUCTL1 &= ~SWRST;                          // Initialize USART state machineIE2 |= URXIE1;                            // Enable USART1 RX interrupt_EINT();while(1){   Hc_sr_Open();while (!(IFG2 & UTXIFG1));TXBUF1 = (int)(cap_data);Delays();}
}void PutString(uchar *ptr)
{while(*ptr != '\0'){while (!(IFG2 & UTXIFG1));                // TX缓存空闲TXBUF1 = *ptr++;                         // 发送数据}while (!(IFG2 & UTXIFG1));TXBUF1 = '\n';
}void Delays(void)
{uchar i=20;uint j;while(i--){j=2000;while(j--);}
}void Hc_sr_Init(void)
{/**  P1.2 为echo引脚             捕获模式*  P1.3 为Trig                 数字i/o模式*/P1OUT &= ~( BIT2 + BIT3 );P1DIR |=  BIT3;P1SEL |=  BIT2;TACTL   = TASSEL_2 + ID_3 + MC_2 + TACLR + TAIE;TACCTL1 = CM_1 + SCS +CAP + CCIE + CCIS_0;
}
void Hc_sr_Open(void)           //生成一个持续10us的高电平
{Trig1(1);__delay_cycles(40);Trig1(0);
}
#pragma vector=TIMERA1_VECTOR
__interrupt void TIMER0_A1_ISR(void)
{switch(TAIV){case 2 :state =  TACCTL1 >> 14;TACCTL1 &= ~CCIFG;if( TACCTL1 & CM_1){cap_new = TACCR1;TACCTL1 &= ~CM_1;TACCTL1 |=  CM_2;}else if ( TACCTL1 & CM_2){cap_old = TACCR1;cap_data = ( cap_old - cap_new ) * 340/2000;    //转化为cm/sTACCTL1 &= ~CM_2;TACCTL1 |=  CM_1;}break;case 4: break;    case 10: TA_Overflow_Cnt++;//溢出标志 break;default:break;}
}

MSP430F149实现超声波测距并通过串口和PC机通信进行显示相关推荐

  1. STM32开发,串口和PC机通信(串口中断、FIFO机制),安富莱+正点原子程序合并

    STM32开发,串口和PC机通信(串口中断.FIFO机制),安富莱+正点原子程序合并 1 概述 1.1 资源概述 1.2 实现功能 2 软件实现 2.1实现步骤 2.2 main()函数代码 2.3 ...

  2. 51单片机进阶案例(1)——基于MATLAB GUI的单片机串口与PC的通信实现实时时钟和双向可调时钟功能(利用DS1302时钟芯片和LCD1602液晶屏)

    目录 一.案例描述 二.实现功能 三.51单片机部分实现 3.1 实时时钟的实现 3.2 串口通信的实现 3.2.1 接收数据 3.2.2 发送数据 四.MATLAB部分实现 4.1 GUI界面 4. ...

  3. STM32学习之旅④ USART串口和上位机通信

    STM32系列博客: STM32学习之旅① 开发环境搭建 STM32学习之旅② 固件库的使用及工程模板的建立 STM32学习之旅③ 从点灯到代码移植 STM32学习之旅④ USART串口和上位机通信 ...

  4. 【 FPGA 】超声波测距小实验(四):数码管显示测距结果

    上篇博文:测了回响脉冲的宽度为多少个10us,这篇博文要算出距离,且用数码管显示距离的十进制结果. 功能框图如下: . 距离计算: 还是先给出程序之后在简单解释吧. 顶层模块: / //工程硬件平台: ...

  5. 基于matlab的串口通信,基于Matlab GUI的单片机串口与PC的通信 附源码

    我也是最近学习单片机和MATLAB的小白平时在看学习的时候 下载了一些有价值的参考文献 概述采用51单片机,atmel的STC89C52RC芯片,主要用到的是七段数码管用来做一个时钟,程序编写软件为k ...

  6. 甲机通过传串口控制乙机的LED显示状态

    一.目标 单片机甲机P1端口外接8位拨码开关:乙机P0外接8只LED.要求使用单片机串行口通信,在查询状态下使单片机乙机的8只LED能够显示甲机8位拨码开关的状态. 二.布线 三.实现 1.首先我们先 ...

  7. 学习并使用HC-SR04超声波测距模块+STM32

    ** 超声波测距原理 ** 参考博客: https://blog.csdn.net/qq_40734815/article/details/105992801 https://blog.csdn.ne ...

  8. 【 FPGA 】超声波测距小实验(一)

    超声波测距原理: 超声波测距原理是在超声波发射装置发出超声波,它的根据是接收器接到超声波时的时间差,与雷达测距原理相似. 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播 ...

  9. 通过串口打印--超声波测距模块测得距离

    通过串口打印--超声波测距模块测得距离 原理 超声波测距模块 串口传输 实战代码 原理 超声波测距模块 在这里首先需要了解超声波测距模块的原理.在我的这篇博客有很多介绍.超声波模块介绍 串口传输 串口 ...

  10. ROS通过串口,读写STM32和HC-SR04超声波测距信息

    ROS通过串口,读写STM32和HC-SR04超声波传感器测距信息,ROS判断距离值,将控制信息通过串口发回给STM32,点亮led灯 ROS可以通过串口与stm32进行通信,以超声波传感器为例实现R ...

最新文章

  1. 拿到WP官方主题Twenty Ten就是一顿nofollow伺候
  2. 用python做系统程序_新手小白做毕设,想用Python做一个系统,那么该学习哪方面的知识?...
  3. 车端激光和双目相机的自动标定算法
  4. 服务器设置为自动登录,Windows Server 2008 R2怎样设置自动登陆(登录)
  5. et超排真正免狗能用版 真正好用的东西_真正合格小户型,收纳都特别能“装”...
  6. Taro+react开发(61) 一条虚线
  7. 计算机绘图的展望,计算机绘图技的术发展与展望.doc
  8. postgreSQL源码分析——索引的建立与使用——GIN索引(3)
  9. 问题二十六:C++全局变量的使用实例
  10. 使用mybaits遇见有大写的sql语句错误的bug分析
  11. SQL:pgsql插入数据
  12. SQL语句设置标识种子
  13. python模拟登录浏览器_Python爬虫常用之登录(二) 浏览器模拟登录
  14. STP的安全特性详解与环路保护机制
  15. HTML5的基础认知 与 css的部分内容
  16. 编写一个Python程序,计算任意圆锥体的体积和表面积。
  17. office excel WORD文档不能打印 提示未安装打印机
  18. [mybatis] sql语句无错误,但是执行多条sql语句时,抛出java.sql.SQLSyntaxErrorException...
  19. 应用Python爬虫技术获取福彩历史数据
  20. 数据分析案例:APP热点标签分析

热门文章

  1. 微信游戏,微信小说系统域名防封是如何做到的
  2. 求助vscode格式化插件beautify的用法
  3. 明翰英语教学系列之雅思写作篇V0.2(持续更新)
  4. C#WinForm程序 窗口不在任务栏显示的处理方法
  5. 自学考试-“软件开发工具”
  6. Java 升级那么快,多个版本如何灵活切换和管理?
  7. nuxt.js 全局 js_使用nuxt js在vuetify js中进行高级颜色管理
  8. pymol安装教程linux,Pymol安装与问题解决
  9. r去掉向量中的空字符串 在R里如何去掉字符串矩阵中的空字符串 r r 识别字符串中的双引号 识别字符串中的双引号 str_detect
  10. [Open3D ERROR] GLFW Error: WGL: Failed to make context current解决方案