企业网站建设和运营,著名的外贸网站,沟通交流型网站广告如何做,一个企业网站ppt怎么做10.1小车的安装
10.2电机模块的开发#xff08;L9110S#xff09; 接通 VCC #xff0c; GND 模块电源指示灯亮#xff0c; 以下资料来源官方#xff0c;但是不对#xff0c;根据下节课实际调试 IA1 输入高电平#xff0c; IA1 输入低电平#xff0c;【 OA1 OB1 】电…10.1小车的安装
10.2电机模块的开发L9110S 接通 VCC GND 模块电源指示灯亮 以下资料来源官方但是不对根据下节课实际调试 IA1 输入高电平 IA1 输入低电平【 OA1 OB1 】电机正转 IA1 输入低电平 IA1 输入高电平【 OA1 OB1 】电机反转 IA2 输入高电平 IA2 输入低电平【 OA2 OB2 】电机正转 IA2 输入低电平 IA2 输入高电平【 OA2 OB2 】电机反转 10.3驱动电机模块让小车动起来前后左右
#include reg52.h
#include intrins.hsbit RightCon1A P3^2;
sbit RightCon1B P3^3;sbit LeftCon1A P3^4;
sbit LeftCon1B P3^5;void Delay1000ms() //11.0592MHz
{unsigned char i, j, k;_nop_();i 8;j 1;k 243;do{do{while (--k);} while (--j);} while (--i);
}void goForward()
{LeftCon1A 0;LeftCon1B 1;RightCon1A 0;RightCon1B 1;
}void goRight()
{LeftCon1A 0;LeftCon1B 1;RightCon1A 0;RightCon1B 0;
}void goLeft()
{LeftCon1A 0;LeftCon1B 0;RightCon1A 0;RightCon1B 1;
}void goBack()
{LeftCon1A 1;LeftCon1B 0;RightCon1A 1;RightCon1B 0;
}void main()
{while(1){goForward();Delay1000ms();Delay1000ms();goBack();Delay1000ms();Delay1000ms();goLeft();Delay1000ms();Delay1000ms();goRight();Delay1000ms();Delay1000ms();}
}
10.4通过串口控制小车方向 1.通过串口调试工具 利用串口中断
#include reg52.h
#include motor.h
#include string.h#define SIZE 12sfr AUXR 0x8E;char buffer[SIZE];void UartInit(void) //9600bps11.0592MHz
{AUXR 0x01;SCON 0x50; //配置串口工作方式1REN使能接收TMOD 0x0F;TMOD | 0x20;//定时器1工作方式位8位自动重装TH1 0xFD;TL1 0xFD;//9600波特率的初值TR1 1;//启动定时器EA 1;//开启总中断ES 1;//开启串口中断
}//通过串口中断的方式进行 M1 前 M2 后 M3左 M4右
void Uart_Handler() interrupt 4
{static int i 0;//静态变量被初始化一次char tmp;if(RI)//中断处理函数中对于接收中断的响应{RI 0;//清除接收中断标志位tmp SBUF;if(tmp M){i 0;}buffer[i] tmp;//灯控指令if(buffer[0] M){switch(buffer[1]){case 1:goForward(); break;case 2:goBack();break;case 3:goLeft();break;case 4:goRight();break;default:stop();break;}}if(i 12){i 0;memset(buffer, \0, SIZE);} }} 2.通过蓝牙 添加点动控制如果 APP 支持按下一直发数据松开就停止发数据蓝牙调试助手的自定义按键不 能实现就能实现前进按键按下后小车一直往前走的功能 10.5利用PWM对小车进行调速 原理 全速前进是 LeftCon1A 0; LeftCon1B 1; 完全停止是 LeftCon1A 0;LeftCon1B 0; 那么单位时 间内比如20ms, 有 15ms 是全速前进 5ms 是完全停止 速度就会比 5ms 全速前进 15ms 完全停止获得的功率多相应的速度更快 开发 借用 PWM 的舵机控制代码 //main.c
extern char speed;
void main()
{
Time0Init();
//UartInit();
while(1){
speed 10;//10份单位时间全速运行30份停止所以慢20ms是40份的500us
Delay1000ms();
Delay1000ms();
speed 20;
Delay1000ms();
Delay1000ms();
speed 40;
Delay1000ms();
Delay1000ms();
}
}
//time.c
#include motor.h
#include reg52.h
char speed;
char cnt 0;
void Time0Init()
{
//1. 配置定时器0工作模式位16位计时
TMOD 0x01;
//2. 给初值定一个0.5出来
TL00x33;
TH00xFE;
//3. 开始计时
TR0 1;
TF0 0;
//4. 打开定时器0中断
ET0 1;
//5. 打开总中断EA
EA 1;
}
void Time0Handler() interrupt 1
{
cnt; //统计爆表的次数. cnt1的时候报表了1
//重新给初值
TL00x33;
TH00xFE;
//控制PWM波
if(cnt speed){
//前进
goForward();
}else{
//停止
stop();
}
if(cnt 40){//爆表40次经过了20ms
cnt 0; //当100次表示1s重新让cnt从0开始计算下一次的1s
}
} 10.6循迹小车 1.循迹模块使用 TCRT5000传感器的红外发射二极管不断发射红外线 当发射出的红外线 没有 被反射回来或被反射回来但强度不够大时 红外接收管一直处于关断状态 此时模块的输出端为高电平 指示二极管一直处于 熄灭状态 被检测物体出现在检测范围内时红外线被反射回来且强度足够大红外接收管饱和 此时模块的输出端为 低电平 指示 二极管被点亮 //main.c#include motor.h
#include delay.h
#include reg52.hsbit Leftxunji P2^7; //左循迹模块
sbit Rightxunji P2^6; //右循迹模块void main()
{while(1){/*下方小车两个模块都能反射回来红外输出低电平灯亮直走
上方小车左模块遇到黑线红外被吸收左模块输出高电平右模块输出低电平左转反之右转*/if(Leftxunji 0 Rightxunji 0){goForward();//前进}if(Leftxunji 1 Rightxunji 1){stop(); //停止}if(Leftxunji 0 Rightxunji 1){goRight(); //向右}if(Leftxunji 1 Rightxunji 0){goLeft(); //向左}}
}//motor.c#include reg52.hsbit RightCon1A P3^2;
sbit RightCon1B P3^3;sbit LeftCon1A P3^4;
sbit LeftCon1B P3^5;void goForward()
{LeftCon1A 0;LeftCon1B 1;RightCon1A 0;RightCon1B 1;
}void goRight()
{LeftCon1A 0;LeftCon1B 1;RightCon1A 0;RightCon1B 0;
}void goLeft()
{LeftCon1A 0;LeftCon1B 0;RightCon1A 0;RightCon1B 1;
}void goBack()
{LeftCon1A 1;LeftCon1B 0;RightCon1A 1;RightCon1B 0;
}void stop()
{LeftCon1A 0;LeftCon1B 0;RightCon1A 0;RightCon1B 0;
}
语音控制小车 SU-03T LD3320 网盘资料 https://pan.baidu.com/s/1dXQSla_8D5O3D7UCsHZ0Dw 提取码 3k5a 这个语音模块不需要编程不需要二次开发 通过厂家给的网站配置后即可使用傻瓜式操作