蓝牙遥控小车程序_第1页
蓝牙遥控小车程序_第2页
蓝牙遥控小车程序_第3页
蓝牙遥控小车程序_第4页
蓝牙遥控小车程序_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、多功能小车程序成旺荣2015-4-6/main.c#include"allhead.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

2、)(dis*1); /单位mm disapple(distance); /数码管显示 change_int_to_char(distance); /把距离变成四位字符 send_and_control(); /发送距离的四位字符 Car(s1,s2);delayms(10); /mainint.c初始化#include"allhead.h" void maininit() s1=0; s2=0; SCON=0X50;/设置串口工作方式 为工作方式1 包含SM0 SM1 SM2 REN 0101 0000 / SM0=0; /SM1=1; /REN=1; PCON=0X80;

3、/波特率加倍 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蓝牙模块#include"allhead.h" #include"main.h"unsigned char flag; char receiveData;

4、/蓝牙接收数据 void sendout() int i;for(i=0;i<4;i+) SBUF=changeinti;while(!TI); /等待发送数据完成TI=0; /清除发送完成标志位for(i=0;i<2;i+)SBUF='m'while(!TI); /等待发送数据完成TI=0;SBUF='n'while(!TI); /等待发送数据完成TI=0; /* 函 数 名 :Usart() interrupt 4* 函数功能 : 中断输入函数* 输 入 : 无* 输 出 : 无*/void Usart() interrupt 4 int i;/

5、char receiveData; /蓝牙接收数据receiveData=SBUF; /出去接收到的数据RI = 0; /清除接收中断标志位flag=1;/eat.c超声波模块#include"allhead.h"float 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)

6、TH0*256+(float)TL0)*0.17; /距离,返回值为mm值 TH0=0; TL0=0; if(i<300) beer=1; delayms(1); beer=0; delayms(5); void Timer0()interrupt 1 /send_and_control.c输出与控制#include"allhead.h"unsigned int s1,s2;void send_and_control() if(distance<300) s1=2; if(flag=1) ES=0;switch (receiveData) case '1

7、': s1=1; break; /前进 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; /加速 case '8' : sendout(

8、); break; /case default : s1=5; break; /switchES=1; flag=0; /if/car.c#include"allhead.h"void 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)

9、;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; IN

10、2=1; IN3=0; IN4=1;void Stop(void) IN1=0; IN2=0; IN3=0; IN4=0;/displayable.c数码管显示#include"allhead.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,0x

11、39,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* 函数功能 : 转换函数* 输 入 : 无* 输 出 : 无*/void disapple(int j)unsigned char i;unsigned int k;int a1,a2,a3,a4;a1=j/1000;a2=(j%1000)/100;a3=(j%100)/10;a4=j%10; apple0=a1;apple1=a2;apple2=a3;apple3=a4;DisplayData0=DIG_CODEa1;DisplayData

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论