资源简介
MSP430G2553单片机,通过HC-SR04红外测距传感器测距,利用中景园0.96的OLED屏幕显示,供大家参考

代码片段和文件信息
#include
#include
#include “oled.h“
#include “bmp.h“
#include
/**
* 超声波测距程序
* 信号触发端口为P15
* 信号捕获端口为P21
* OLED屏幕接线:
* GND 电源地
* VCC 接5V或3.3v电源
* D0 P14(时钟)
* D1 P13(数据)
* RES 接P12
* DC 接P11
* CS 接P10
*/
#define CPU_F ((double)1000000)
//毫秒延时函数
#define delay(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
u32 ac = 0str[4]i[5];
u8 u[5];
int j;
char w=0; //标志进入计数高电平的步骤
char t=0; //在计数时,有几个溢出中断
void CLK_set(void);
void chaoshenbo()//从P1.5输出触发信号
{
P1DIR|=BIT5;
P1OUT|=BIT5;
delay_10us();
P1OUT&=~BIT5;
}
void count()
{
c=a/5.8;//此时输出c为毫米的整数值。
//c=c*10+0.5;
}
void Echo_init()//超声波初始化捕捉模式 TIMER1定时器,需要找到定时器的端口,然后测试距离是否正确。
{
//TA1CTL|=TASSEL_2+MC_1+TAIE+TACLR;
//TA1CCTL0 = CCIE;
P2SEL|=BIT1; //CCI1A捕获
P2DIR&=~BIT1;
TA1CCTL1|=CM_3+SCS+CAP+CCIE+CCIS_0; //选择1M-SMCLK时钟,continuous mode
TA1CTL |=TASSEL_2 + ID_0 + MC_2+ TAIE+TACLR ;
TA1CCR0 = 0; //TEST
_EINT();//开启总中断
}
void jishu()
{
if(TA1CCTL1&CM_1)//上升沿进入中断
{
str[0]=TA1CCR1;//开始时计时器的值
w=1; //开始计高电平
TA1CCTL1=CM_2+SCS+CAP+CCIE;
}
else if(TA1CCTL1&CM_2) //下降沿进入中断
{
str[1]=TA1CCR1;//结束时计时器的值
w=0;
if(t==0)
{
a=str[1]-str[0];
}
else if(t==1)
{
a=0xFFFF-str[0];
a=a+str[1];
}
else
{
a=0xFFFF-str[0];
a=a+str[1]+0xFFFF*(t-1);
}
t=0;
TA1CCTL1=CM_1+SCS+CAP+CCIE;
count();//根据t值的不同,计算高电平持续时间,进而计算出距离
}
}
#pragma vector=TIMER1_A1_VECTOR
__interrupt void Timer_A (void)
{
switch(TA1IV)
{
case 2: jishu();break; //TEST
case 4:break;
case 10:if(w==1) t++;
break;
}
}
int main(void) {
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
CLK_set();
Echo_init();
OLED_Init(); //初始化OLED
OLED_Clear();
OLED_ShowString(300“OLED TEST“);
OLED_ShowString(82“DISTANCE IS :“);//“ZHONGJINGYUAN“
OLED_ShowString(204“12014.“);
OLED_ShowString(764“CM“);
OLED_ShowString(06“MadeBy:“);
OLED_ShowString(636“*** ***“);
OLED_ShowCHinese(000);//中
OLED_ShowCHinese(1801);//景
OLED_ShowCHinese(3602);//园
OLED_ShowCHinese(5403);//电
OLED_ShowCHinese(7204);//子
OLED_ShowCHinese(9005);//科
OLED_ShowCHinese(10806);//技
P1DIR|=BIT6;
while(1)
{
chaoshenbo();
delay(100);
i[0]=c%10;
i[1]=(c/10)%10;
i[2]=(c/100)%10;
i[3]=(c/1000)%10;
i[4]=(c/10000)%10;
u[0] = i[0] +‘0‘;
u[1] = i[1] +‘0‘;
u[2] = i[2] +‘0‘;
u[3] = i[3] +‘0‘;
u[4] = i[4] +‘0‘;
OLED_ShowChar(204u[4]);
OLED_ShowChar(284u[3]);
OLED_ShowChar(364u[2]);
OLED_ShowChar(444u[1]);
OLED_ShowString(524“.“);
OLED_ShowChar(604u[0]);
//距离超过1米之后,点亮P16的LED灯
if(c>1000){
P1OUT |= BIT6;
}else{
P1OUT &= ~BIT6;
}
}
}
void CLK_set(void)
{
BCSCTL1=CALBC1_1MHZ;
DCOCTL=CALDCO_1MHZ;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 512 2017-03-31 22:06 Distance\.ccsproject
文件 22987 2017-03-31 22:06 Distance\.cproject
文件 3670 2017-03-31 22:01 Distance\.launches\Distance.launch
文件 838 2017-03-31 22:00 Distance\.project
文件 62 2017-03-31 22:00 Distance\.settings\org.eclipse.cdt.codan.core.prefs
文件 123 2017-03-31 22:00 Distance\.settings\org.eclipse.cdt.debug.core.prefs
文件 208 2017-03-31 22:01 Distance\.settings\org.eclipse.core.resources.prefs
文件 10871 2017-04-02 15:42 Distance\bmp.h
文件 62 2017-04-02 19:21 Distance\Debug\ccsObjs.opt
文件 20536 2017-04-02 19:21 Distance\Debug\Distance.map
文件 65234 2017-04-02 19:21 Distance\Debug\Distance.out
文件 165868 2017-04-02 19:21 Distance\Debug\Distance_li
文件 33394 2017-04-02 19:21 Distance\Debug\main.obj
文件 1205 2017-04-02 19:21 Distance\Debug\main.pp
文件 3378 2017-04-02 19:21 Distance\Debug\makefile
文件 250 2017-03-31 22:07 Distance\Debug\ob
文件 37479 2017-04-02 19:21 Distance\Debug\oled.obj
文件 443 2017-04-02 19:21 Distance\Debug\oled.pp
文件 1864 2017-04-02 19:21 Distance\Debug\sources.mk
文件 1519 2017-03-31 22:07 Distance\Debug\subdir_rules.mk
文件 589 2017-03-31 22:07 Distance\Debug\subdir_vars.mk
文件 484 2017-04-02 15:03 Distance\delay.h
文件 8191 2017-03-31 22:00 Distance\lnk_msp430g2553.cmd
文件 3202 2017-04-03 17:45 Distance\main.c
文件 8570 2017-04-02 18:50 Distance\oled.c
文件 3140 2017-04-02 15:54 Distance\oled.h
文件 14152 2017-04-03 17:45 Distance\oledfont.h
文件 822 2017-03-31 22:06 Distance\targetConfigs\MSP430G2553.ccxm
文件 806 2017-03-31 22:00 Distance\targetConfigs\readme.txt
目录 0 2017-04-03 17:41 Distance\.launches
............此处省略7个文件信息
- 上一篇:omron plc 控制四层电梯梯形图
- 下一篇:网络脚本生成器nsg2
相关资源
- 基于MSP430G2553的蓝牙控制小车
- HC-SR04超声波模块(包含基于51stm32配套
- MSP430G2553以4线SPI方式控制0.96寸OLED
- MSP430G2系列中文用户手册
- stm32f103精准超声波测距程序_HC-SR04模块
- MSP430G2553快速入门教程
- 基于MSP430G2553的简易频率计
- HC-SR04超声波模块超详细资料
- 基于MSP430的万年历资料
- HC-SR04超声波测距模块STM32源码
- CC2530+DHT11温湿度传感器+HC-SR04超声波传
- 采用HC-SR04实现的超声波测距FPGA源码
- 利用STM32F103驱动HC-SR04超声波模块
- 单片机超声波模块HC-SR04说明
- HC-SR04 STM32程序
- HC-SR04超声波测距 STM32 keil
- STM32F1控制HC-SR04超声波测距
- HC-SR04 全套超声波测距资料
- 关于测距模块HC-SR04的内部电路图 ,
- MSP430G2launchpad -CCS5.1
- HC-SR04超声波测距资料及例程代码 51单
- STM32F103VET6驱动HC-SR04.rar
- STM32HC-SR04程序
- STM32F103VE_Sonic HC-SR04超声波模块程序
- hc-sr04超声波测距
- MSP430G2553_LauchPad及IAR和Proteus使用指南
- 基于STM32的超声波测距程序
- HC-SR04超声波模块+STM32F103
- 基于STM32F103ZET6芯片的超声波模块HC-
- MSP430G2553及扩展板使用指导书及例程从
评论
共有 条评论