Wifi小车之 - 51单片机无线小车篇
2016-07-17 09:21
218 查看
2011-10-27
红外的数据是不连续的,所以试着用315M无线模块做遥控。在有了红外小车的基础上,无线就很简单了,循环判断按键是否按下就行了。我买的这个遥控套件好像有点问题,有一个按键没反应。。。
而且我这个套件还有另外一个问题,有时候突然没信号,要把天线对准它用力按,然后又有信号了。。。 囧
51单片机程序
控制的方法是,按住1键左转,按住3键右转,同时按住1,3键前进,按住2就后退
/*
电机控制板接P1
IN1 > P10
IN2 > P11
IN3 > P12
IN4 > P13
*/
/*预处理命令*/
#include<reg52.h> //包含单片机寄存器的头文件
#include<intrins.h> //包含_nop_()函数定义的头文件
#define uchar unsigned char
#define uint unsigned int
#define motor P1
/* 函数申明 -----------------------------------------------*/
void delay(uchar x);
/* 变量定义 -----------------------------------------------*/
/*无线数据线接P2*/
sbit key1=P2^4;
sbit key2=P2^5;
sbit key3=P2^6;
sbit key4=P2^7;
/*
********************************************************************************
** 函数名称 : main(void)
** 函数功能 : 主函数
********************************************************************************
*/
main()
{
motor=0;
while(1){
if(key1==1 && key3==1){
motor=0xf5;
}else if(key1==1){
motor=0xfd;
}else if(key3==1){
motor=0xf7;
}else if(key2==1){
motor=0xfa;
}else{
motor=0;
}
//delay(200);
}
}
/*
********************************************************************************
** 函数名称 : delay(uchar x)
** 函数功能 : 延时函数
********************************************************************************
*/
void delay(uchar x) //x*0.14MS
{
uchar i;
while(x--)
{
for(i=0;i<13;i++);
}
}
红外的数据是不连续的,所以试着用315M无线模块做遥控。在有了红外小车的基础上,无线就很简单了,循环判断按键是否按下就行了。我买的这个遥控套件好像有点问题,有一个按键没反应。。。
而且我这个套件还有另外一个问题,有时候突然没信号,要把天线对准它用力按,然后又有信号了。。。 囧
51单片机程序
控制的方法是,按住1键左转,按住3键右转,同时按住1,3键前进,按住2就后退
/*
电机控制板接P1
IN1 > P10
IN2 > P11
IN3 > P12
IN4 > P13
*/
/*预处理命令*/
#include<reg52.h> //包含单片机寄存器的头文件
#include<intrins.h> //包含_nop_()函数定义的头文件
#define uchar unsigned char
#define uint unsigned int
#define motor P1
/* 函数申明 -----------------------------------------------*/
void delay(uchar x);
/* 变量定义 -----------------------------------------------*/
/*无线数据线接P2*/
sbit key1=P2^4;
sbit key2=P2^5;
sbit key3=P2^6;
sbit key4=P2^7;
/*
********************************************************************************
** 函数名称 : main(void)
** 函数功能 : 主函数
********************************************************************************
*/
main()
{
motor=0;
while(1){
if(key1==1 && key3==1){
motor=0xf5;
}else if(key1==1){
motor=0xfd;
}else if(key3==1){
motor=0xf7;
}else if(key2==1){
motor=0xfa;
}else{
motor=0;
}
//delay(200);
}
}
/*
********************************************************************************
** 函数名称 : delay(uchar x)
** 函数功能 : 延时函数
********************************************************************************
*/
void delay(uchar x) //x*0.14MS
{
uchar i;
while(x--)
{
for(i=0;i<13;i++);
}
}
相关文章推荐
- opencv3接收rtsp网络视频流
- yum 源 (2)
- HDMI 2.0概述
- JAVA NIO例子
- win10背景色改成豆沙绿 锁屏后失效修改方式
- OTT业务开放平台介绍
- Android开发——查询/卸载手机里的应用、应用图标创建
- Longest Increasing Subsequence -- Leetcode
- Android开发——查询/卸载手机里的应用、应用图标创建
- declare和typeset DEMO
- 打算安装个Ubuntu双系统,遇到了些基本概念问题(主分区、活动分区、扩展分区、逻辑分区)
- freemarker函数功能的使用之时间处理
- IDE工具的逻辑结构
- 晨昏线
- Stack(栈)的使用
- Selenium+PhantomJS自动续借图书馆书籍(下)
- 华为OTT交流材料
- PHP函数 mysql_real_escape_string 与 addslashes 的区别
- UI系列网站
- Android Notification例子