430f149超声波程序Word下载.docx

上传人:b****2 文档编号:15174176 上传时间:2022-10-28 格式:DOCX 页数:7 大小:15.67KB
下载 相关 举报
430f149超声波程序Word下载.docx_第1页
第1页 / 共7页
430f149超声波程序Word下载.docx_第2页
第2页 / 共7页
430f149超声波程序Word下载.docx_第3页
第3页 / 共7页
430f149超声波程序Word下载.docx_第4页
第4页 / 共7页
430f149超声波程序Word下载.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

430f149超声波程序Word下载.docx

《430f149超声波程序Word下载.docx》由会员分享,可在线阅读,更多相关《430f149超声波程序Word下载.docx(7页珍藏版)》请在冰豆网上搜索。

430f149超声波程序Word下载.docx

0;

n--)

for(i=10;

i>

i--);

}

/********************系统时钟初始化****************/

voidinit_clk(void)//初始化系统时钟

BCSCTL1&

=~XT2OFF;

//打开XT2振荡器

BCSCTL2|=SELM_2+SELS;

do

{

IFG1&

=~OFIFG;

//清除错误标志

for(i=0;

i<

0xff;

i++);

//延时等待

}

while((IFG1&

OFIFG)!

=0);

=~OFIFG;

/********************滤波,取十次数据平均值***************/

voiddista_f(unsignedlongintdistance_data)

dista_data_all=dista_data_all+distance_data;

cnt=cnt+1;

if(cnt==10)

cnt=0;

dista_data_sum=dista_data_all/10;

dista_data_all=0;

voidmain(void)

//Stopwatchdogtimertopreventtimeoutreset

WDTCTL=WDTPW+WDTHOLD;

P1DIR=0XFF;

P1OUT|=0XFF;

P2DIR=0XFD;

P2OUT|=0XFF;

P3DIR=0XFF;

P3OUT|=0XFF;

P4DIR|=0XFF;

P4OUT|=0Xff;

P5DIR|=0XFF;

P5OUT|=0Xff;

P6DIR|=0XFF;

P6OUT|=0Xff;

init_clk();

lcd12864_init();

init();

TACTL|=TACLR+TASSEL_2+ID_3;

//定时器A初始化

ge=0;

shi=0;

bai=0;

dian1=0;

dian2=0;

dian3=0;

tim_data=0;

cnt=0;

dista_data=0;

P6DIR|=BIT2;

P6OUT|=BIT2;

P2IE|=BIT1;

//打开P2端口中断

P2IES&

=~BIT1;

//设置为上升沿中断

_EINT();

//打开总中断

while

(1)

trig_h;

//超声波触发

delay

(2);

trig_l;

delay(50);

while(echo);

/*****************************P2口中断*******************/

#pragmavector=PORT2_VECTOR

__interruptvoidport_init(void)

{

if(echo)//上升沿中断

TACTL|=MC_2;

//接收到信号,打开计数器开始计数

P2IES|=BIT1;

//改为P2口下降沿中断

else//下降沿中断

TACTL=0;

//计数结束,停止计数

TACTL|=TASSEL_2+ID_3;

P2IES&

//改为P2口上升沿中断

tim_data=TAR;

//取计数值

dista_data=(tim_data*1000/58);

//计算为距离(厘米=us/58)

dista_f(dista_data);

//取十次平均值

display_shujc(1,0,dista_data_sum);

//在12864上显示距离

P2IFG&

//P2口中断标志清除

 

/*****************************lcd12864*********************************/

#defineucharunsignedchar

#defineuintunsignedint

#defineRS_0(P3OUT&

=~BIT0)

#defineRS_1(P3OUT|=BIT0)

#defineRW_0(P3OUT&

=~BIT1)

#defineRW_1(P3OUT|=BIT1)

#defineEN_0(P3OUT&

=~BIT2)

#defineEN_1(P3OUT|=BIT2)

unsignedlongintdista_data_sum;

/****************延时1ms******************/

voiddelayNms(uchartime)

uinti,j;

time;

i++)

for(j=0;

j<

150;

j++);

/*************IO初始化*****************************/

voidlcd12864_init(void)

P4DIR=0XFF;

P6DIR|=BIT2;

P6DIR|=BIT3;

P3DIR|=0X07;

/**********lcdd写指令**************************/

voidwrite_con(ucharcon)

RS_0;

RW_0;

EN_0;

P4OUT=con;

delayNms

(2);

EN_1;

/****************lcd写数据********************************/

voidwrite_data(uchardata)

RS_1;

P4OUT=data;

/***********lcd初始化****************************/

voidinit()

P6OUT|=0X04;

P6OUT|=BIT3;

write_con(0x30);

//基本指令集

write_con(0x02);

//地址归位

write_con(0x0c);

//显示

write_con(0x01);

//清屏

write_con(0x06);

//点设定

/*****************lcd写指令/数据地址****************************/

voidwrite_ardd(ucharhang,ucharlie)

switch(hang)

case1:

write_con(0x80+lie);

break;

case2:

write_con(0x90+lie);

case3:

write_con(0x88+lie);

case4:

write_con(0x98+lie);

default:

/*********************lcd显示数据串**************************************/

voiddisplay_shujc(ucharhang,ucharlie,unsignedlongintshujc)

uinti;

uchartab[7];

write_ardd(hang,lie);

tab[0]=dista_data_sum/100000;

tab[1]=(dista_data_sum%100000)/10000;

tab[2]=(dista_data_sum%10000)/1000;

tab[3]=0x2e;

tab[4]=(dista_data_sum%1000)/100;

tab[5]=(dista_data_sum%100)/10;

tab[6]=dista_data_sum%10;

3;

write_data(0x30+tab[i]);

write_data(tab[3]);

for(i=4;

7;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1