历史上的今天
今天是:2024年12月06日(星期五)
2020年12月06日 | 基于51单片机超声波避障+蓝牙遥控智能小车
2020-12-06 来源:51hei
单片机源程序如下:
#include #include typedef unsigned char u8; typedef unsigned int u16; typedef unsigned long u32; sbit Sevro_moto_pwm = P2^6; //接舵机信号端输入PWM信号调节速度 sbit ECHO= P1^1; //超声波接口定义 sbit TRIG= P1^0; //超声波接口定义 sbit PWM1 = P2^5; //左电机高电平 sbit PWM2 = P2^4; //右电机高电平 sbit IN1 = P2^3; sbit IN2 = P2^2; //左电机 sbit IN3 = P2^1; sbit IN4 = P2^0; //右电机 sbit A1 = P1^4; //左红外避障模块 sbit A2 = P2^7; //右红外避障模块 //sbit A3 = P1^2; //左红外寻迹模块 //sbit A4 = P1^3; //右红外寻迹模块 sbit K1 = P3^2; //功能转换按键 sbit K2 = P3^3; //加速键 sbit K3 = P3^4; //减速键 u8 connt; //调速周期 u8 PWM_NO; //高电平时间 u8 a=0,c=0; //标志位 u8 COM; u8 pwm_val_left = 0;//变量定义 u8 push_val_left ;//舵机归中,产生约,1.5MS 信号 u32 S=0; //距离变量定义 u32 S1=0; u32 S2=0; u32 S3=0; u32 S4=0; u16 time=0; //时间变量 u16 timer=0; //延时基准变量 u8 non=0,t=0; u8 pon=3; //数码管显示 u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f};//显示0~9的值 /************************************************************************/ void delay(u16 k) //延时函数 { u16 x,y; for(x=0;x } void delay1(u16 j) //延时函数 { u16 x,y; for(x=0;x } /************************************************************************/ void Display(void) //扫描数码管 { P0=smgduan[pon]; if(K2==0) // 加速 { delay1(10); if(K2==0) { pon++; PWM_NO--; } while(!K2); //松键检测 } if(K3==0) //减速 { delay1(10); if(K3==0) { pon--; PWM_NO++; } while(!K3); } } void SC() //刹车 { IN1 = 0; IN2 = 0; IN3 = 0; IN4 = 0; } void QJ() //前进 { IN1 = 1; IN2 = 0; IN3 = 1; IN4 = 0; } void HT() //后退 { IN1 = 0; IN2 = 1; IN3 = 0; IN4 = 1; } void ZZ1() //左大转 { IN1 = 0; IN2 = 1; IN3 = 1; IN4 = 0; } void YZ1() //右大转 { IN1 = 1; IN2 = 0; IN3 = 0; IN4 = 1; } /************************************************************************/ void StartModule() //启动测距信号 { TRIG=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TRIG=0; } void InitUART(void) //串口中断初始化函数 { SCON=0x50; //设置为工作方式1 TMOD=0x20; //设置计数器工作方式2 PCON=0x00; //波特率不加倍 TH1=0xfd; //计数器初始值设置,注意波特率是9600的 TL1=0xfd; ES=1; //打开接收中断 EA=1; //打开总中断 TR1=1; //打开计数器 } /***************************************************/ void Conut(void) //计算距离 { while(!ECHO); //当RX为零时等待 TR1=1; //开启计数 while(ECHO); //当RX为1计数并等待 TR1=0; //关闭计数
史海拾趣
|
1)申请空间非常简单,您只需要用您在论坛里的用户名和密码就可以。如果您已经有了论坛用户名,直接填写进入即可。 2)如果您还未拥有用户名和密码,请先在论坛注册https://bbs.eeworld.com.cn,填写验证码、用户名、密码、确认密码、emai ...… 查看全部问答> |
|
谬误之八――无线装置不能同我的传统主机系统进行整合 无线网络对于过程自动化是个新事物,但对于您的传统DCS、PLC、历史数据记录器或者其它的主机系统就不是了。让他们彼此之间进行对话会产生什么问题吗? 不会的。假如您使用的网关设计可以同多 ...… 查看全部问答> |
|
;------------------------------------------- ;十字路口交通灯控制器 ;MADE BY Leo ;------------------------------------------- ;分别用单片的P1.0-P1.5口控制南北和东西方向的直行/左转/右转红绿灯 ;P1.6-P1.7为人行横道指示灯 ;P0.0 ...… 查看全部问答> |
|
sysgen时的错误: CEBUILD: Running sysgen -p rdp postproc Starting sysgen phase for project ( rdp ) Sysgening platform D:\\WINCE500\\platform\\CEPC Sysgening platform D:\\WINCE500\\platform\\CEPC \\WINCE500\\build.err D:\\WINC ...… 查看全部问答> |
|
偶在写一个Windows程序,问题是这样的: 我有一个设备是用USB连接到主机的,然后USB驱动里又虚拟成一个串口(CP210X),就是说这个串口也是支持热插拨了,但我怎样才能在程序中得到这个设备变化的消息呢?希望各位不吝赐教,如果有代码贴,那就更感 ...… 查看全部问答> |
|
随着交流调速技术发展日新月异,交流变频电机的应用越来越广泛。但与此同时变频电机轴电流导致轴承异常损坏的问题也日益突现。宝钢分公司在实际生产过程中也发生了大量变频电机轴承异常损坏的问题。这些情况的发生,直接导致设备故障,造成巨 ...… 查看全部问答> |
|
话说征文活动时间过半,谢谢各位大虾捧场,你们奉献自己精彩得51学习经历,其中得一些话堪称对51理解得经典,还有一些大侠,因为十一忙于陪伴家人,还没有来得急写出自己得美妙回忆,可要赶紧啊! 现在招募评委得活动已经开始了!   ...… 查看全部问答> |




