資源描述:
《藍(lán)牙遙控小車程序》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、多功能小車程序——成旺榮2015-4-610//main.c#include"allhead.h"#defineucharunsignedchar#defineuintunsignedintfloatdis=0;//原始距離intdistance=0;//距離整數(shù)charchangeint[4]={'0','1','2','3'};voidmain(){maininit();//全部初始化while(1){//beer=0;dis=MeasureDistance();//測量距離distance=(int)(dis*1);//單位mmdisapple(distance)
2、;//數(shù)碼管顯示10change_int_to_char(distance);//把距離變成四位字符send_and_control();//發(fā)送距離的四位字符Car(s1,s2);delayms(10);}}//mainint.c初始化#include"allhead.h"voidmaininit(){s1=0;s2=0;SCON=0X50;//設(shè)置串口工作方式為工作方式1包含SM0SM1SM2REN01010000//SM0=0;//SM1=1;//REN=1;PCON=0X80;//波特率加倍TMOD=0X21;//計時器0工作1,計時器1工作2TH0=0;//計
3、數(shù)器0TL0=0;TH1=0XFA;//計數(shù)器1初始值設(shè)置,注意波特率是9600的TL1=0XFA;IT0=1;//下降沿觸發(fā)EX0=1;//開外部中斷ET0=1;//開定時器0中斷TR0=0;//未打開計數(shù)器ES=1;//打開接收中斷EA=1;//開總中斷TR1=1;//打開計數(shù)器}10//hc04.c藍(lán)牙模塊#include"allhead.h"#include"main.h"unsignedcharflag;charreceiveData;//藍(lán)牙接收數(shù)據(jù)voidsendout(){inti;for(i=0;i<4;i++){SBUF=changeint[i];w
4、hile(!TI);//等待發(fā)送數(shù)據(jù)完成TI=0;//清除發(fā)送完成標(biāo)志位}for(i=0;i<2;i++){SBUF='m';while(!TI);//等待發(fā)送數(shù)據(jù)完成TI=0;}SBUF='';while(!TI);//等待發(fā)送數(shù)據(jù)完成TI=0;}/********************************************************************************函數(shù)名:Usart()interrupt4*函數(shù)功能:中斷輸入函數(shù)*輸入:無*輸出:無*************************************
5、******************************************/voidUsart()interrupt4{10inti;//charreceiveData;//藍(lán)牙接收數(shù)據(jù)receiveData=SBUF;//出去接收到的數(shù)據(jù)RI=0;//清除接收中斷標(biāo)志位flag=1;}//eat.c超聲波模塊#include"allhead.h"floati=0.0;floatMeasureDistance(){TH0=0;TL0=0;Echo=0;Trig=1;//延時Delay10us();Trig=0;while(Echo==0);TR0=1;dela
6、yms(20);return(i);}voidcounter0(void)interrupt0{TR0=0;i=((float)TH0*256+(float)TL0)*0.17;//距離,返回值為mm值TH0=0;TL0=0;if(i<300){beer=1;delayms(1);10beer=0;delayms(5);}}voidTimer0()interrupt1{}//send_and_control.c輸出與控制#include"allhead.h"unsignedints1,s2;voidsend_and_control(){if(distance<300){
7、s1=2;}if(flag==1){ES=0;switch(receiveData){case'1':s1=1;break;//前進(jìn)case'2':s1=2;break;//后退case'3':s1=3;break;//左拐case'4':s1=4;break;//右拐case'5':s1=5;break;//后退case'6':s2+=5;if(s2>=30)s2=0;break;//減速case'7':s2-=5;if(s2<=0)s2=10;break;//加速10case'8':{sendout();break;}//casede