五、系统调试
1、硬件部分 焊接完成后,首先进行的调试是用数字万用表测量各个电路是否焊接正常,是否有虚焊漏焊等现象的出现,以及各个电容是否是正常的未被击穿状态、电阻的阻值是否与设计的原理图上的一致。接通电源,用数字万用表测量当有+5V的各引脚是否有+5V的电压,测量电路中是否出现了不该有的短路现象。接入光电传感器模块,使各个光电检测器的光电对管靠近白纸,观察对应的发光二极管是否发光,不发光表示正常。 然后再使各个光电对管靠近黑线,观察对应的发光二级管是否发光,发光表示正常。 硬件部分的原理图见附录一。 2、软件部分
首先我们先测试了小车的前进,停止,左转和右转。组装信号采集模块后,实现小车的自动循迹功能。 软件部分的程序代码见附录三。
六、实验结果
1、主要功能测试:小车可以在黑色轨迹上完成循迹任务。并且在转弯时,前面的定位发光二极管可以模拟汽车的转向。 2、其他功能测试:二极管的动态显示,红外遥控,防撞等功能将相应程序烧入其中基本上都可以实现。
七、拓展功能
防止掉落地面功能:当小车行驶到悬空的地方时,前面的红外对管检测不到信号就会停止,防止小车掉落。
八、参考资料
《电子信息专业实验教程》 四川大学出版社 《C语言程序设计与应用》 清华大学出版社 《电路理论基础》 科学出版社 《模拟电子技术》 清华大学出版社 《数字电路设计》 四川大学出版社
九、附录
11
附录一:总体电路原理图:
12
附录二:主板和传感器电路焊接装配图:
13
附录三:软件部分程序代码
#include
sbit LeftLed=P2^0; //定义前方左侧指示灯端口 sbit RightLed=P0^7; //定义前方右侧指示灯端口 sbit FontLled=P1^7;
sbit LeftIR=P3^5; //定义前方左侧红外探头端口 sbit RightIR=P3^6; //定义前方右侧红外探头端口 sbit FontIR=P3^7;
sbit M1A=P0^0; sbit M1B=P0^1;
sbit M2A=P0^2; sbit M2B=P0^3;
sbit B1=P0^4; sbit SB1=P0^6;
void tingzhi() {
M1A=0; M1B=0; M2A=0; M2B=0; }
void qianjin() {
M1A=1; M1B=0; M2A=1; M2B=0; }
void houtui() {
M1A=0; M1B=1; M2A=0; M2B=1;
//定义前方正前方红外探头端口 //定义左侧电机驱动A端 //定义左侧电机驱动B端 //定义右侧电机驱动A端 //定义右侧电机驱动B端 //定义语音识识别传感器端口 //定义蜂鸣器端口 //将M1电机A端初始化为0 //将M1电机B端初始化为0 //将M2电机A端初始化为0 //将M2电机B端初始化为0 14
}
void zuozhuan() {
M1A=0; M1B=1; M2A=1; M2B=0; }
void youzhuan() {
M1A=1; M1B=0; M2A=0; M2B=1; }
void delay_nus(unsigned int i) //延时:i>=12 ,i的最小延时单12 us {
i=i/10; while(--i); }
void delay_nms(unsigned int n) //延时n ms {
n=n+1;
while(--n)
delay_nus(900); //延时 1ms,同时进行补偿 }
void ControlCar(unsigned char ConType) //定义电机控制子程序 {
tingzhi();
switch(ConType) //判断用户设定电机形式 {
case 1: //前进 //判断用户是否选择形式1 {
qianjin();
break; }
case 2: //后退 //判断用户是否选择形式2
15