资源预览内容
第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
第9页 / 共19页
第10页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
下载可编辑多功能小车程序成旺荣2015-4-6/main.c#includeallhead.h#define uchar unsigned char#define uint unsigned intfloat dis=0; /原始距离int distance=0; /距离整数char changeint4=0,1,2,3;void main() maininit(); /全部初始化 while(1) / beer=0; dis=MeasureDistance(); /测量距离 distance=(int)(dis*1); /单位mm disapple(distance); /数码管显示 change_int_to_char(distance); /把距离变成四位字符 send_and_control(); /发送距离的四位字符 Car(s1,s2);delayms(10); /mainint.c初始化#includeallhead.h void maininit() s1=0; s2=0; SCON=0X50;/设置串口工作方式 为工作方式1 包含SM0 SM1 SM2 REN 0101 0000 / SM0=0; /SM1=1; /REN=1; PCON=0X80;/波特率加倍 TMOD=0X21; /计时器0工作1,计时器1工作2 TH0=0; /计数器0 TL0=0; TH1=0XFA; /计数器1初始值设置,注意波特率是9600的 TL1=0XFA; IT0=1; /下降沿触发 EX0=1;/开外部中断 ET0=1; /开定时器0中断 TR0=0; /未打开计数器 ES=1;/打开接收中断 EA=1; /开总中断 TR1=1; /打开计数器 /hc04.c蓝牙模块#includeallhead.h #includemain.hunsigned char flag; char receiveData; /蓝牙接收数据 void sendout() int i;for(i=0;i4;i+) SBUF=changeinti;while(!TI); /等待发送数据完成TI=0; /清除发送完成标志位for(i=0;i2;i+)SBUF=m;while(!TI); /等待发送数据完成TI=0;SBUF=n;while(!TI); /等待发送数据完成TI=0; /* 函 数 名 :Usart() interrupt 4* 函数功能 : 中断输入函数* 输 入 : 无* 输 出 : 无*/void Usart() interrupt 4 int i;/char receiveData; /蓝牙接收数据receiveData=SBUF; /出去接收到的数据RI = 0; /清除接收中断标志位flag=1;/eat.c超声波模块#includeallhead.hfloat i=0.0;float MeasureDistance() TH0=0; TL0=0;Echo=0; Trig=1; /延时 Delay10us(); Trig=0; while(Echo=0); TR0=1; delayms(20); return (i);void counter0(void)interrupt 0 TR0=0; i=(float)TH0*256+(float)TL0)*0.17; /距离,返回值为mm值 TH0=0; TL0=0; if(i300) beer=1; delayms(1); beer=0; delayms(5); void Timer0()interrupt 1 /send_and_control.c输出与控制#includeallhead.hunsigned int s1,s2;void send_and_control() if(distance=30)s2=0; break; /减速case 7 : s2-=5; if(s2=0)s2=10; break; /加速 case 8 : sendout(); break; /case default : s1=5; break; /switchES=1; flag=0; /if/car.c#includeallhead.hvoid Car(unsigned int c,unsigned int d) switch (c) case 1: Go(); delayms(10);Stop();delayms(d); Go(); break; case 2: Back(); delayms(10);Stop();delayms(d); Back(); break; case 3: Turn_left(); delayms(5);Stop();delayms(10); Turn_left(); break; case 4: Turn_Right(); delayms(5);Stop();delayms(10); Turn_Right();break; case 5: Stop(); break; void Turn_left(void) IN1=0; IN2=0; IN3=1; IN4=0;void Turn_Right(void) IN1=1; IN2=0; IN3=0; IN4=0;void Go(void) IN1=1; IN2=0; IN3=1; IN4=0;void Back(void) IN1=0; IN2=1; IN3=0; IN4=1;void Stop(void) IN1=0; IN2=0; IN3=0; IN4=0;/displayable.c数码管显示#includeallhead.h/*/-定义全局变量-/unsigned char code DIG_PLACE8 = 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/位选控制 查表的方法控制unsigned char code DIG_CODE17 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码*/unsigned char code DIG_PLACE4 = /*0x01,0x02,0x04,0x08*/0xfe,0xfd,0xfb,0xf7;unsigned char code DIG_CODE17 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码 /共阴极unsigned char DisplayData4;/用来存放要显示的4位数的值int apple4=0;/* 函 数 名 : disapple* 函数功能 :
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号