|
51单片机智能小车红外避障程序以及文档- #include"car_psb.h"
- #define smg P2
- sbit b = P0^4;//蜂鸣器驱动三极管B管脚
- sbit u3_en = P4^4;//u3的使能管脚
- sbit u4_en = P4^5;//u4芯片的使能管脚
- sbit u5_en = P4^6;//u5芯片的使能管脚
- sbit key1 = P0^6;//s1按钮
- sbit key2 = P3^5;//s2按钮
- sbit key3 = P3^6;//s3按钮
- sbit key4 = P3^7;//s4按钮
- sbit DQ = P0^5;//ds18b20数据线
- sbit DATA=P4^7; //双向数据线
- sbit RST=P1^7; //使能线
- sbit SCLK=P0^7; //时钟线
- sbit A1 = P0^3;
- sbit A2 = P0^2;//A1为L293芯片2脚(IN1),A2为L293芯片7脚(IN2),控制右电机
- sbit B1 = P0^1;
- sbit B2 = P0^0;//B1为L293芯片10脚(IN3),B2为L293芯片15脚(IN4),控制左电机
- //注意芯片使能管脚1脚(E1)和9脚(E2)已接vcc高电平,
- //所以不需要单片机控制输出高电平使能
- sbit u5_out2 = P1^6;//右光敏电阻
- sbit u5_out1 = P1^4;//左光敏电阻
- sbit u4_out3 = P1^2;//左红外避障
- sbit u4_out4 = P1^3;//右红外避障
- sbit u4_out1 = P1^0;//右红外循迹
- sbit u4_out2 = P1^1;//左红外循迹
- sbit Echo = P3^3;//超声波信号反馈端
- sbit Tring = P3^4;//超声波信号发送端
- sbit Rt = P3^2;//红外接收管脚,单片机中断0管脚
- unsigned char a[4];//保存红外遥控器的四位数据
- unsigned char code tab1[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//数码管位选
- unsigned char code ds1302_w[]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};//ds1302芯片写字节
- unsigned char code ds1302_r[]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};//ds1302芯片写字节
- /*************************************************************/
- //函数名称:void delayms(unsigned int xms)
- //函数功能:延时xms毫秒
- //xms取值为0-65535
- //调用:为内部调用函数
- /************************************************************/
- void delayms(unsigned int xms)
- {
- unsigned int x,y;
- for(x=xms;x>0;x--)
- for(y=1100;y>0;y--);
- }
- /*************************************************************/
- //函数名称:void c_stop(void)
- //函数功能:小车停止
- //调用:为内部调用函数
- /************************************************************/
- void c_stop(void)
- {A1=0;A2=0;B1=0;B2=0;}//小车停止
- /*************************************************************/
- //函数名称:void c_go(void)
- //函数功能:小车向前
- //调用:为内部调用函数
- /************************************************************/
- void c_go(void)
- {A1=1;A2=0;B1=1;B2=0;}//小车向前
- /*************************************************************/
- //函数名称:void c_bask(void)
- //函数功能:小车后退
- //调用:为内部调用函数
- /************************************************************/
- void c_bask(void)
- {A1=0;A2=1;B1=0;B2=1;}//小车后退
- /*************************************************************/
- //函数名称:void c_left(void)
- //函数功能:小车向左
- //调用:为内部调用函数
- /************************************************************/
- void c_left(void)
- {A1=1;A2=0;B1=0;B2=1;}//小车向左
- /*************************************************************/
- //函数名称:void c_right(void)
- //函数功能:小车向右
- //调用:为内部调用函数
- /************************************************************/
- void c_right(void)
- {A1=0;A2=1;B1=1;B2=0;}//小车向右
- /*************************************************************/
- //函数名称:void bell(unsigned int x,unsigned int time)
- //函数功能:蜂鸣器驱动函数,让蜂鸣器循环响停X次
- // (蜂鸣器响time毫秒,停time毫秒为一次)
- //x取值为0-65535,time取值为0-65535
- //调用:为外部调用函数
- /************************************************************/
- void bell(unsigned int x,unsigned int time)
- {
- unsigned int i;
- for(i=x;i>0;i--)
- {
- b = ~b;
- delayms(time);
- }
- b = 1;
- }
- /*********************数码管****************************************/
- /*************************************************************/
- //函数名称:void display_init()
- //函数功能:0-7位的数码管显示,初始化程序
- //调用:为外部调用函数
- /************************************************************/
- void display_init(void)
- {
- P4SW = 0x70;
- smg = 0xff;
- }
- /*************************************************************/
- //函数名称:void display_07(unsigned char x,unsigned char dat)
- //函数功能:0-7位的数码管显示
- //x取值为0-7,dat取值为0-0xff
- //调用:为外部调用函数
- //调用时如:display_07(0,0xc0);则让0位数码管显示0,(0xc0是共阳数码管“0”的编码)
- /************************************************************/
- void display_07(unsigned char cmd,unsigned dat)
- {
- u5_en = 0;
- u3_en = 0;
- u4_en = 0;//先将两个芯片不使能,数据不能改变
- smg = dat;//将段选的数据赋予P2
- u3_en = 1;//u3使能,数据输入
- u3_en = 0;//稍作延时后将u3不使能
- smg = tab1[cmd];//将需要点亮的数码管数据赋予P2
- u4_en = 1;//u4使能,P2数据进入u4
- delayms(2);//u4使能后稍作延时
- smg = 0x00;
- u3_en = 0;
- u4_en = 0;//将两个芯片不使能,数据不能改变结束一轮数据的输入
- u5_en = 0;
- }
- /*********************led驱动****************************************/
- /*************************************************************/
- //函数名称:void display_led(unsigned char dat)
- //函数功能:8位led的显示
- //dat取值为0-0xff
- //调用:为外部调用函数
- /************************************************************/
- void display_led(unsigned char dat)
- {
- u5_en = 0;
- u3_en = 0;
- u4_en = 0;//先将两个芯片不使能,数据不能改变
- smg = dat;//将段选的数据赋予P2
- u5_en = 1;//u5使能,数据输入
- u5_en = 0;//稍作延时后将u5不使能
- }
- /*********************按钮驱动****************************************/
- /*************************************************************/
- //函数名称:bit k1()
- //函数功能:返回一位数据,当按钮按下时返回1,没有按下时返回0
- //调用:为外部调用函数
- /************************************************************/
- bit k1(void)
- {
- bit dat;
- if(key1==0)
- {
- delayms(2);
- if(key1==0)
- {
- dat = 1;
- }
- }
- else if(key1==1)
- {
- dat = 0;
- }
-
- return dat;
- }
- /*************************************************************/
- //函数名称:bit k2()
- //函数功能:返回一位数据,当按钮按下时返回1,没有按下时返回0
- //调用:为外部调用函数
- /************************************************************/
- bit k2(void)
- {
- bit dat;
- if(key2==0)
- {
- delayms(2);
- if(key2==0)
- {
- dat = 1;
- }
- }
- else if(key2==1)
- {
- dat = 0;
- }
-
- return dat;
- }
- /*************************************************************/
- //函数名称:bit k3()
- //函数功能:返回一位数据,当按钮按下时返回1,没有按下时返回0
- //调用:为外部调用函数
- /************************************************************/
- bit k3(void)
- {
- bit dat;
- if(key3==0)
- {
- delayms(2);
- if(key3==0)
- {
- dat = 1;
- }
- }
- else if(key3==1)
- {
- dat = 0;
- }
-
- return dat;
- }
- /*************************************************************/
- //函数名称:bit k4()
- //函数功能:返回一位数据,当按钮按下时返回1,没有按下时返回0
- //调用:为外部调用函数
- /************************************************************/
- bit k4(void)
- {
- bit dat;
- if(key4==0)
- {
- delayms(2);
- if(key4==0)
- {
- dat = 1;
- }
- }
- else if(key4==1)
- {
- dat = 0;
- }
-
- return dat;
- }
- /*********************DS18B20温度传感器驱动****************************************/
- /***************************************************/
- //函数名称:void delay750us(void);
- //函数功能:延时7500us;
- /***************************************************/
- void delay750us(void)
- {
- unsigned char a,b;
- for(b=112;b>0;b--)
- for(a=17;a>0;a--);
- }
- /***************************************************/
- //函数名称:void delay70us(void);
- //函数功能:延时70us;
- /***************************************************/
- void delay70us(void)
- {
- unsigned char a;
- for(a=192;a>0;a--);
- }
- /***************************************************/
- //函数名称:void delay15us(void);
- //函数功能:延时15us;
- /***************************************************/
- void delay15us(void)
- {
- unsigned char a,b;
- for(b=1;b>0;b--)
- for(a=38;a>0;a--);
- _nop_();
- }
- /***************************************************/
- //函数名称:void delay45us(void);
- //函数功能:延时45us;
- /***************************************************/
- void delay45us(void)
- {
- unsigned char a,b;
- for(b=49;b>0;b--)
- for(a=1;a>0;a--);
- _nop_();
- }
- /***************************************************/
- //函数名称:void delay2us(void);
- //函数功能:延时2us;
- /***************************************************/
- void delay2us(void)
- {
- unsigned char a;
- for(a=4;a>0;a--);
- }
- /***************************************************/
- //函数名称:void delay4us(void);
- //函数功能:延时4us;
- /***************************************************/
- void delay4us(void)
- {
- unsigned char a,b;
- for(b=1;b>0;b--)
- for(a=8;a>0;a--);
- }
- /***************************************************/
- //函数名称:void delay6us(void);
- //函数功能:延时6us;
- /***************************************************/
- void delay6us(void)
- {
- unsigned char a;
- for(a=15;a>0;a--);
- }
- /***************************************************/
- //函数名称:void delay30us(void);
- //函数功能:延时30us;
- /***************************************************/
- void delay30us(void)
- {
- unsigned char a;
- for(a=81;a>0;a--);
- _nop_();
- }
- /***************************************************/
- //函数名称:bit ack_ds18b20(void);
- //函数功能: ds18b20复位答应函数
- /***************************************************/
- bit ack_ds18b20(void)
- {
- bit flag;//返回标志位定义
-
- DQ = 1;//先将数据总线置高电平1
- delayms(2);//延时(延时时间没有太大要求,但尽可能短比较好)
- DQ = 0;//将数据总线拉低
- delay750us();//延时480-960us之内的时间
- DQ = 1;//将总是拉高释放数据线
- delay70us();//将总线拉高后需要等待15-60us后ds18b20会释放一个60-240us的低电平
- if(DQ==0)
- flag = 1;//检测到总是拉低则输出1
- else
- flag = 0;//检测总线是高电平则输出0
- delay750us();//从单片机拉高释放数据线后需要延时大于480us才能结束
- DQ = 1;//将数据线释放
-
- return flag;//返回数据
- }
- /***************************************************/
- //函数名称:write_ds18b20(uchar dat)
- //函数功能: 向ds18b20发送一个字节的数据
- /***************************************************/
- void write_ds18b20(unsigned char dat)
- {
- unsigned char i;
- DQ = 1;//先将总线拉高
- delayms(1);//稍作延时,时间不定
- for(i=0;i<8;i++)
- {
- DQ = 0;//先拉低总线
- delay15us();//延时15us
- DQ = dat&0x01;//按从低位到高位的顺序发送数据,一次发送一位数据
- delay45us();//保存数据状态,延时45us
- DQ = 1;//将总线释放
- dat>>=1;//将数据右移一位,为下一次数据发送做准备
- }
- DQ = 1;//8位数据发送完后释放总线
- }
- /***************************************************/
- //函数名称:read_ds18b20(uchar dat)
- //函数功能: 读取一个字节的数据
- /***************************************************/
- unsigned char read_ds18b20(void)
- {
- unsigned char dat;
- unsigned char i;
- for(i=0;i<8;i++)
- {
- dat >>= 1;//右移一位
- DQ = 1;//总线先拉高
- delay2us();//延时2us
- DQ = 0;//将总线拉低
- delay6us();//延时6us
- DQ = 1;//将总线拉高
- delay4us();//延时4us
- if(DQ == 1)//读取总线的状态,如果是1的,就写进数据里,如果是0就不作处理
- dat |= 0x80;
- delay30us();//延时30us
- }
-
- return dat;//返回读取到的数据
- }
- /*************************************************************/
- //函数名称:unsigned int Rtemp_ds18b20()
- //函数功能:向ds18b20读取温度值,如实际温度为36.5,返回的数据为365
- //调用:为外部调用函数
- /************************************************************/
- unsigned int Rtemp_ds18b20()
- {
- bit k;
- unsigned char temph,templ;//读取的温度高低数据保存
- unsigned int temp;//计算后的温度
- k = ack_ds18b20();//先发送复位信号
- if(k==1)//ds18b20如果有答应,则读取温度
- {
- write_ds18b20(0xcc);//跳过ROM匹配命令
- write_ds18b20(0xbe);//发送读取温度命令
- templ = read_ds18b20();//读取温度低8位
- temph = read_ds18b20();//读取温度高8位
- temp = (temph*256+templ)*0.0625*10;//将读取的温度数据进行计算转换为温度值,
- } //并扩大10倍,将小数点后一位往前移动一位,方便显示
- k = ack_ds18b20();//先发送复位信号
- if(k==1)//ds18b20如果有答应,则发送温度转换命令
- {
- write_ds18b20(0xcc);//跳过ROM匹配命令
- write_ds18b20(0x44);//发送温度转换命令
- }
- return temp;
- }
- /*********************DS1302驱动****************************************/
- void delaynus(unsigned char n)
- {
- unsigned char i;
- for(i=0;i<(n*10);i++);
- }
- /*************************************************************/
- //函数名称:void Write1302(unsigned char dat)
- //函数功能:向ds1302芯片发送一个字节的数据
- //调用:为内部调用函数
- /************************************************************/
- void Write1302(unsigned char dat)//发送一个字节的数据
- {
- unsigned char i;
- SCLK=0; //先将时钟线置位
- delaynus(2);
- for(i=0;i<8;i++)
- {
- DATA=dat&0x01; //先发送低电平
- delaynus(2);
- SCLK=1; //拉高时钟线,时钟芯片在这时候读取数据线上的电平
- delaynus(2);
- SCLK=0; //时钟线复位
- dat>>=1; //数据右移
- }
- }
- /*************************************************************/
- //函数名称:unsigned char Read1302(void)
- //函数功能:向ds1302芯片读取一个字节的数据
- //调用:为内部调用函数
- /************************************************************/
- unsigned char Read1302(void)
- {
- unsigned char i,dat;
- delaynus(2);
- for(i=0;i<8;i++)
- {
- dat>>=1;
- if(DATA==1)
- dat|=0x80;
- SCLK=1;
- delaynus(2);
- SCLK=0;
- delaynus(2);
- }
- return dat;
- }
- /*************************************************************/
- //函数名称:void WriteSet1302(unsigned char Cmd,unsigned char dat)
- //函数功能:向ds1302芯片内部某个字节(Cmd)写入一个数据(dat)
- //参数说明:Cmd为0-6,分别代表"秒,分,时,日,月,周,年"
- //调用:为外部调用函数
- /************************************************************/
- void WriteSet1302(unsigned char Cmd,unsigned char dat)//向时钟写入一个字节的数据
- {
- WriteSet1302(0x8E,0x00); //关闭写保护
- RST=0;
- SCLK=0;
- RST=1;
- delaynus(2);
- Write1302(ds1302_w[Cmd]);
- Write1302(((dat/10)<<4)|(dat%10));
- SCLK=1;
- RST=0;
- }
- /*************************************************************/
- //函数名称:unsigned char ReadSet1302(unsigned char Cmd)
- //函数功能:向ds1302芯片内部某个字节(Cmd)读出一个数据,并将数据返回
- //调用:为外部调用函数
- /************************************************************/
- unsigned char ReadSet1302(unsigned char Cmd)
- {
- unsigned char dat;
- RST=0;
- SCLK=0;
- RST=1;
- Write1302(ds1302_r[Cmd]);
- dat=Read1302();
- SCLK=1;
- RST=0;
-
- return dat;
- }
- /******************************寻光模块*******************************/
- /*************************************************************/
- //函数名称:bit gm_left(void)
- //函数功能:左寻光光敏电阻,当亮度大时返回1,亮度比较小时返回0
- //调用:为外部调用函数
- /************************************************************/
- bit gm_left(void)
- {
- bit dat;
- dat = u5_out1;
- return dat;
- }
- /*************************************************************/
- //函数名称:bit gm_left(void)
- //函数功能:右寻光光敏电阻,当亮度大时返回1,亮度比较小时返回0
- //调用:为外部调用函数
- /************************************************************/
- bit gm_right(void)
- {
- bit dat;
- dat = u5_out2;
- return dat;
- }
- /******************************红外避障模块*******************************/
- /*************************************************************/
- //函数名称:bit hbz_left(void)
- //函数功能:左红外避障,接收到反射回来的信号返回0,没有收到信号返回1
- //调用:为外部调用函数
- /************************************************************/
- bit hbz_left(void)
- {
- bit dat;
- dat = u4_out3;
- return dat;
- }
- /*************************************************************/
- //函数名称:bit hbz_right(void)
- //函数功能:右红外避障,接收到反射回来的信号返回0,没有收到信号返回1
- //调用:为外部调用函数
- /************************************************************/
- bit hbz_right(void)
- {
- bit dat;
- dat = u4_out4;
- return dat;
- }
- /******************************红外循迹模块*******************************/
- /*************************************************************/
- //函数名称:bit hxj_left(void)
- //函数功能:左红外循迹,接收到反射回来的信号返回0,没有收到信号返回1
- //调用:为外部调用函数
- /************************************************************/
- bit hxj_left(void)
- {
- bit dat;
- dat = u4_out2;
- return dat;
- }
- /*************************************************************/
- //函数名称:bit hxj_right(void)
- //函数功能:右红外循迹,接收到反射回来的信号返回0,没有收到信号返回1
- //调用:为外部调用函数
- /************************************************************/
- bit hxj_right(void)
- {
- bit dat;
- dat = u4_out1;
- return dat;
- }
- /******************************超声波模块*******************************/
- /***************************************************/
- //函数名称:void delay20us();
- //函数功能:延时20us;
- /***************************************************/
- void delay20us() //@11.0592MHz
- {
- unsigned char i;
- _nop_();
- _nop_();
- _nop_();
- i = 24;
- while (--i);
- }
- /***************************************************/
- //函数名称:void csb_init(void);
- //函数功能: 超声波模块初始化程序
- //使用定时器1计算时间,
- /***************************************************/
- void csb_init(void)
- {
- EA = 1; //打开中断总开关
- AUXR &= 0xBF; //定时器时钟12T模式
- TMOD &= 0x0F;
- TMOD |= 0x10; //定时器1工作方式1,16位计时模式
- TF1 = 0; //将定时器溢出标志复位
- }
- /***************************************************/
- //函数名称:unsigned int get_distance(void);
- //函数功能: 获取超声波返回的时间,并计算距离,返回计算好的距离
- //使用定时器1计算时间,
- /***************************************************/
- unsigned int get_distance(void)
- {
- unsigned int Distance; //测量到的距离
- unsigned char flag_i=0; //距离测量成果标志位
- TR1 = 0; //先将定时器1关闭
- TH1 = 0;
- TL1 = 0; //将定时器1的计数清零
- Tring = 0; //信号端先置零
- delayms(2); //稍微延时一下
- Tring = 1;
- delay20us();
- Tring = 0; //信号端置位保存大约10us的时间,产生开始信号
-
- while(Echo==0); //等待返回高电平
- TR1 = 1; //启动定时器1开始计数
- while(Echo==1) //当为1时计时
- {
- Distance = TH1*256+TL1;
- if(Distance>27110) //大约4000时间已超出出量距离,返回888
- {
- TR1 = 0;
- flag_i = 2;
- Distance = 888;
- break;
- }
- else
- flag_i = 1;
- }
- if(flag_i==1)
- {
- TR1 = 0; //关闭定时器3;
- Distance = TH1*256+TL1; //读取定时器里的时间
- Distance *= 0.01844; //距离=(时间*速度)/2,时间单位秒,速度单位m/s,距离单位米
- if(Distance>500) //定时器一个计时时间:12/11.0592=1.085
- Distance=888; //时间=(TH1*256+TL1)*1.085,单位微秒,转换为秒需除1000000
- } //距离=(340*(TH1*256+TL1)*1.085)/2/1000000=(TH1*256+TL1)*0.0001844,单位米
- //转化为厘米显示:0.0001844*100=0.01844,单位厘米
- TR1 = 0;//关闭定时器1中断
- return Distance;//将计算出的距离返回
- }
- /******************************红外遥控模块*******************************/
- /***************************************************/
- //函数名称:void hwyk_init(void);
- //函数功能: 超声波模块初始化程序
- //使用定时器1计算时间,
- /***************************************************/
- void hwyk_init(void)
- {
- EA = 1;//打开中断总开关
- ET1 = 1;//允许定时器0中断
- EX0 = 1;//允许外部中断0中断
- IT0 = 1;//下降沿触发外部中断0
- AUXR &= 0xBF; //定时器工作在12T模式
- TMOD &= 0x0f; //将定时器工作模式设置先复位
- TMOD |= 0x10; //设置定时工作在方式1中,16位计时模式
- TH1 = 0;
- TL1 = 0;//将定时器计时溢出清零
- }
- /***************************************************/
- //函数名称:unsigned char get_hwyk(void);
- //函数功能: 返回接收到的红外按键码
- //使用定时器1计算时间,
- /***************************************************/
- unsigned char get_hwyk(void)
- {
- unsigned char i,x;//i为计算接上多少字节的数据,x为计算每一个字节数据的第几位
- unsigned char temp;//临时接到字节数据存储
- unsigned int Ltime,Htime;//波形的高低电平时间存储
- EX0 = 0;//先将中断允许关闭,放在其他的电平造成干扰
- TH1 = 0;
- TL1 = 0;//将定时器的计算寄存器清零
- TR1 = 1;//定时器开始运行计时
- while(Rt==0)//计算低电平时间
- {
- if((TH1*256+TL1)>16000)//如果低电平时间超过16000,则实际时间是16000*1.085=17360us,是引导码9000us的两倍
- {
- Rt = 1;//将管脚释放
- IE0 = 0;//将中断标记位清零
- TR1 = 0;//定时器关闭
- TF1 = 0;
- EX0 = 1;//重新开启外中断
- break;//直接退出中断
- }
- }
- TR1 = 0;
- Ltime = TH1*256+TL1;//记录低电平时间
- TH1 = 0;
- TL1 = 0;//将定时器的计算寄存器清零
- TR1 = 1;//定时器开始运行计时
- while(Rt==1)//计算高电平时间
- {
- if((TH1*256+TL1)>9000)//如果高电平时间超过9000,则实际时间是9000*1.085=9765us,是引导码4500us的两倍
- {
- Rt = 1;//将管脚释放
- IE0 = 0;//将中断标记位清零
- TR1 = 0;//定时器关闭
- TF1 = 0;
- EX0 = 1;//重新开启外中断
- break;//直接退出中断
- }
- }
- TR1 = 0;
- Htime = TH1*256+TL1;//记录高电平时间
-
- if((Ltime>7800)&&(Ltime<8800)&&(Htime>3800)&&(Htime<4500))//如果引导码低电平在9000us左右,高电平在4500us左右,则符合
- {
- for(i=0;i<4;i++)//一共有4个字节数据
- {
- for(x=0;x<8;x++)//每个字节有8位数据
- {
- temp >>= 1;//先接上低位,在接高位,所以需要先左移一位
- while(Rt==0);//跳过低电平
-
- TH1 = 0;
- TL1 = 0;
- TR1 = 1;
- while(Rt==1);
- TR1 = 0;
- Htime = TH1*256+TL1;//测量高电平时间
-
- if((Htime>300)&&(Htime<720))//高电平符合则为0
- temp &= 0x7f;
- if((Htime>1300)&&(Htime<1800))//高电平符合则为1
- temp |= 0x80;
- }
- a[i] = temp;//将每个字节都存储到数组中
- }
- }
- Rt = 1;
- IE0 = 0;
- TR1 = 0;
- TF1 = 0;
- EX0 = 1;//重新启动外部中断
-
- return a[2];//读取遥控编码的第三位,第三位为按键码
- }
- /******************************红外遥控模块*******************************/
- /***************************************************/
- //函数名称:void c_init(void);
- //函数功能: 小车初始化,每个程序都需要保护这个
- /***************************************************/
- void c_init(void)
- {
- unsigned char i=0;
- unsigned char dddd;
- unsigned int vvvv;
- if(i==1)
- {
- c_stop();
- c_go();
- c_bask();
- c_left();
- c_right();
- bell(1,200);
- display_init();
- display_07(0,0);
- display_led(0xaa);
- k1();
- k2();
- k3();
- k4();
- vvvv = Rtemp_ds18b20();
- WriteSet1302(0x80,0x00);
- dddd = ReadSet1302(0x81);
- gm_left();
- gm_right();
- hbz_left();
- hbz_right();
- hxj_left();
- hxj_right();
- csb_init();
- vvvv = get_distance();
- hwyk_init();
- dddd = get_hwyk();
- }
- }
复制代码
|
|