资源简介
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驱动DHT11温湿度传感器
- msp430g2553单片机定时器中断例程
- MSP430G2553和DS1302时钟程序
- Nokia5110的程序在msp430G2553上可以
- LaunchPad(MSP430G2553)_官方例程
- MSP430g2553 读写Flash以及串口通讯
- msp430g2553液晶显示程序
- stm32f103rc_hcsr04.rar
- MSP430G2553程序库
- MSP430G2553超声波测距程序
- MSP430G2553使用IIC协议控制OLED显示屏
- msp430g2553红外遥控小程序
- HC-SR04超声波测距模块及原理图
- msp430g2553循迹小车控制程序
- 基于MSP430G2553的蜂鸣器
- MSP430G2553寄存器资料
- MSP430G2553 ADC10测试
- LaunchPad MSP430G2553 官方例程 汉语注释
- 利用msp430g2553进行串口通信
- MSP430G2553串口程序
- HC-SR04 超声波测距C51程序,精度2MM
- HC-SR04+89C52RC+11.0592Mhz高精度驱动程序
- STC15/STC15F2K60S2/STC15W4K32S4系列读取超声
- 51单片机超声波测距HC-SR04程序
- msp430g2553串行控制12864显示正弦波。
- MSP430G2553的DAC7811程序
- 北京市电子设计大赛模块驱动msp430g
- CC2530与HC-SR04超声波模块通信
- MSP430G2553小系统电路原理图及PCB图.z
- HC-SR04超声波测距模块+OLED12864显示
评论
共有 条评论