• 大小: 65KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-25
  • 语言: 其他
  • 标签: MSP430G2  HC-SR04  

资源简介

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_linkInfo.xml

     文件      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\objects.mk

     文件      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.ccxml

     文件        806  2017-03-31 22:00  Distance\targetConfigs\readme.txt

     目录          0  2017-04-03 17:41  Distance\.launches

............此处省略7个文件信息

评论

共有 条评论