51单片机 智能小车

主函数中extern char speed 是在整个工程中与别处的speed共用一个内存

sprintf字串格式化命令,主要功能是把格式化的数据写入某个字符串中。

一、小车组装、用面包板供电、单片机也可以用面包板供电,必须共地、分文件(模块化编程),

二、串口控制小车,串口初始化(pcom、scon配置sm0、1、ren是否接收、配置定时器1、串口通信速度--波特率9600、开始计数TR1 = 1,EA=1、ES = 1)、调用串口中断用tmp buffer【i】= tmp、i= 0;if buffer【i】='M' shitch(buffer[1]) ---case '1'/'2'/'3'/'4',调用电机函数控制上下左右------可以连接蓝牙、电动控制:主函数一直循环stop  当串口中断时会先处理中断

51单片机 智能小车_第1张图片

 三、PWM控制小车速度(原理:在这个时间段内20ms---前进所占比例越大转速越快、、PWM分模块控制左右轮速度---实现转弯功能。(motor--电机控制器分模块、左轮定时器0、右轮定时器1分别控制两个不同转速、主函数传speed过去、)

51单片机 智能小车_第2张图片

 四、循迹模块-------使用两个循迹模块,(总结就是一句话,没反射回来,D0输出高电平,灭灯,D0==高/低  && D1 ==高/低)-----实现左右转动。将循迹模块和PWM结合起来解决轮子一卡一卡问题(!!!!!!!学会观察现场调试-----车子直行 是否平整--可能电压不稳导致的 可以通过降低其中一个轮子的speed速度--占空比来调节速度)

51单片机 智能小车_第3张图片

 五、跟随模块和循迹模块差不多   不用pwm调速

左边跟随模块能返回红外,输出低电平,右边不能返回,输出高电平,说明物体在左边,需要左转
右边跟随模块能返回红外,输出低电平,左边不能返回,输出高电平,说明物体在右边,需要右转

六、舵机要求测距离

如果是dir 距离大于35 则前进,当dir小于35时左右摇头,并测量左右距离-----当不测左右距离时又回到超声波又回到正前方----但是会一卡一卡  用宏定义来解决一卡一卡问题

51单片机 智能小车_第4张图片

 七、测速模块 通过串口发送到上位机显示速度

51单片机 智能小车_第5张图片

 定时器定时一秒钟(定时器中断  每次0.0005当dnt++到两千次则是一秒钟,记录下测速模块跳转了多少次,则是速度多少,赋值给speed给串口使用,并将speedCnt复位0;)

51单片机 智能小车_第6张图片

 外部中断记录电平跳变次数51单片机 智能小车_第7张图片

串口配置  

51单片机 智能小车_第8张图片

 八、测速模块 (将速度显示在OLED上面)通过串口蓝牙发送到手机端 手机蓝牙控制前进后退等,

通过厂家的算法已经配好的函数调用,将是sprintf里面的速度 显示在Oled显示屏上面51单片机 智能小车_第9张图片

 八、WIFI小车,单片机---8266----串口----(将小车 8266模块连接----模块初始化,)定时器一秒 中断电平跳变多少次则是速度,速度通过串口发给wifi模块,用OLED模块显示速度,

1//初始化wifi工作在ap模式(需要上电时间)-----单片机发指令给8266--》8266通过串口反馈,---》单片机检测到SBUF中的值---》标志位往后走
 2//等待客户端的连接

3//发送数据  后延时一秒

51单片机 智能小车_第10张图片

九、SU-03T语音模块的使用,网站   smartpi.cn/#/ 配置语音SDK,用云知声烧录进去,第一次要初始化,

51单片机 智能小车_第11张图片

你可能感兴趣的:(51单片机,51单片机,单片机)