项目所需知识 一、 LED灯本项目能够实现循迹、避障、无线蓝牙遥控功能。循迹、避障均采用YL—70壁障传感器,无线蓝牙遥控功能采用HC-05蓝牙模块。小车行走采用模拟PWM控制直流电机转速,行走稳定。
由分析原理图可知 LED通过1K的排阻连接到VCC公共段 VCC ==> 1K电阻 ==> LED ==> P1.0 VCC ==> 1K电阻 ==> LED ==> P1.1 VCC ==> 1K电阻 ==> LED ==> P1.2 所以 P1.0~P1.7输出低电平LED点亮,输出高电平LED熄灭。 代码规范: 1) 对齐 2) 缩进 3) 有必要的注释二、 LED流水灯
C51晶振为11.0592MHz时的毫秒级延时函数: void delay_ms(unsigned int n) { unsigned char i; while(n--) { for(i=0;i<113;i++); } } 延时函数的分析: 本开发板的晶振是11.0592MHz,该时钟频率进入C51内部时会12分频,即频率为 11059200/12Hz。所以每执行一条指令的时间即机器周期为 12/11059200s。 for(i=0;i<113;i++) ==> 有8条指令。 所以for循环执行完毕的时间为 113*8*(12/11059200)s = 0.000980902s ==> 与 0.001相差 0.00002s(十万分之2秒)三、模块化设计
企业做项目开发一般都是团队合作的方式,把一个大任务划分成许多小任务来完成。 嵌入式开发,一般把一个硬件模块作为一个模块来开发。 SmartCar motor.c motor.h infrared.c infrared.h bluetooth.c bluetooth.h main.c 这里的.c文件用来定义各个模块的功能函数,对应的.h文件用来把.c中定义的函数或者 全局变量进行声明。 模块化设计的优势: 1) 实现团队分工合作,大大提高了开发效率。 2) 方便程序的调试以及后期的更新维护。 3) 实现代码(模块)复用,减少程序冗余。 4) 提高代码的可读性,实现无障碍交付。 x & 0 ==> 0 x & 1 ==> x x | 1 ==> 1 x | 0 ==> x #include四、按键#include "led.h" 本质区别: <>在系统指定的标准库路径下搜索头文件(系统自带的头文件) ""在工程目录下搜索头文件(自己写的头文件)
由分析原理图可知,按键是共阴极解法,分别连接到P3.3,P3.4,P3.6,P3.7。 因此,按键按下的输入状态是低电平,松开按键,输入状态为高电平。五、数码管
数码管就是用来显示数字的电子器件 每个“8”都是由8盏不同位置的LED灯构成。 段选: 决定了哪些位置上的灯亮,即显示什么内容。 位选: 段选的公共端称为位选,四位数码码可以显示四个数字,所以有4个位选。 共阳极数码管: 位选流入电流,段选流出电流 共阴极数码管: 段选流入电流,位选流出电流 我们开发板采用的是共阳极数码管。 段选连接到 P0.0~P0.7 ,低电平有效 位选通过三极管PNP再连接到 P1.0~P1.3, 也是低电平有效 视觉暂留原理: 当随着时间的变化,位选和段选都在快速切换,那么我们人眼看到的讲师一个静态的效果。六、电机驱动模块
工业上常见的电机有三类: 直流电机: 通直流电就可以转动,电流越大转速越快,电流方向反转,电机转向反转。 步进电机: 通过电脉冲信号,可以精确控制转动角度,角位移和线位移。 舵机: 也称伺服机,可以精确控制转动角度,而且有一定的力量去维持某个角度(力矩)。 本项目采用的是2个直流电机,但是C51的IO口的输出电流只有15mA左右,不能直接驱动直流 电机。所以我们通过电机驱动模块,该电机驱动模块是一个有源器件,可以驱动两个直流电机。 La ==> P0.0 Lb ==> P0.1 VCC ==> 5V/3V3 GND ==> GND Ra ==> P0.2 Rb ==> P0.3 小车的运动控制分析: 前进: La = 1; Lb = 0; Ra = 1; Rb = 0; 后退: La = 0; Lb = 1; Ra = 0; Rb = 1; 停止: La = 1; Lb = 1; Ra = 1; Rb = 1; 原地左转: La = 0; Lb = 1; Ra = 1; Rb = 0; 原地右转: La = 1; Lb = 0; Ra = 0; Rb = 1; 前进左偏: 左右轮都往前走,但是右轮比左轮快 前进右偏: 左右轮都往前走,但是左轮比右轮快七、红外循迹模块
当模块检测到前方障碍物信号时,电路板上红色指示灯点亮,同时 OUT 端口持续输出低电平信号,该模块检测距离 2~60cm,检测角度 35°,检测距离可 以通过电位器进行调节,顺时针调电位器,检测距离增加;逆时针调电位器,检 测距离减少。 IN1 ==> P0.4 避障左 IN2 ==> P0.5 循迹左 IN3 ==> P0.6 循迹右 IN4 ==> P0.7 避障右 循迹功能的实现: 把探头朝向地面,把黑线夹在中间,根据探头的输入状态,来控制小车运动轨迹, 来实现循迹功能。 避障功能的实现: 把探头安装在小车的左右两边,检测水平面有没有障碍物。八、串口蓝牙模块(HC-05)
HC-05用来实现数据透传。有两种工作模式: 1) AT命令模式: C51通过串口发送给HC-05的数据都当作AT指令。 AT指令: 就是一些设计好了的字符串,用来配置或查询工作。 "AT+NAME=GEC_Liudehuarn" 修改设备名称 2) 自动连接模式: 手机通过蓝牙协议发送给HC-05的数据,会原封不动的转发给C51 C51通过串口发送给HC-05的数据,也会原封不动的转发给手机 PIO8连接了一个LED灯: 如果没有手机跟HC-05通信,则1s闪两次, 有手机跟HC-05通信,则2s闪一次。 配对密码: 1234 PIO11连接了一个按键: 按键按下状态则是 AT命令模式 一旦松开,马上就是自动连接模式项目视频演示
智能小车演示视频
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)