#include<reg52.h>
#include "myproject.h"
#define you 0
#define you_2 1 //表示太偏右了,该进行校正。
#define zuo 2
#define zuo_2 3
#define zhi 4
/* test 位*/
/*
sbit t_zhi= P3^0;
sbit t_zuo = P3^1;
sbit t_zuo_2 = P3^2;
sbit t_you = P3^3;
sbit t_you_2 = P3^4;
sbit t_de = P3^5;
*/
/*
sbit yao_t_de=P1^4;
sbit yao_t_up = P1^5;
sbit yao_t_down= P1^6;
sbit yao_t_right= P1^7;
*/
sbit yaokong_d0_zuo= P3^0;//向左 对应遥控器上的B
sbit yaokong_d1_you =P3^1;//向右对应遥控器上的D
sbit yaokong_d2_qian = P3^2; //向前, 对应遥控器上的 A
sbit yaokong_d3_hou = P3^3;//向后 ,对应遥控器上的C
void t_zonghe();
void main(){
// int temp,i,j;
while(1){
t_zonghe();
}
}
void up(){ //向前的程序
int i;
if(dang==1){
right_gao =1;
right_di =0;
left_gao = 1;
left_di = 0;
for(i=0;i<200;i++);// 延时
right_gao=1;
right_di= 0;
left_gao=0;
left_di=0;
for(i=0;i<100;i++); // 延时
return;
}else{
right_gao = 1;
right_di= 0;
left_gao= 1;
left_di =0;
for(i=0;i<0xff;i++); //延时
for(i=0;i<0xff;i++);
return ;
}
}
void down(){ //向后
int i;
right_gao= 0;
right_di = 1;
left_gao= 0;
left_di =1;
for( i= 0;i<0x200;i++);
right_gao=0;
right_di =1;
left_gao=0;
left_di=0;
for(i=0;i<100;i++);
return ;
}
void dianji_up_init(){ //向前的电机初始化
right_gao =1;
right_di = 0;
left_gao = 1;
left_di = 0;
}
void dianji_down_init(){ //向后的电机初始化
right_gao = 0;
right_di = 1;
left_gao= 0;
left_di = 1;
}
void turn_left(){
int i;
if(dang==1){//如果是一档则执行下面的程序
left_gao = 0;
left_di = 0;
right_gao = 1;
right_di = 0;
//delay(30);
for(i=0;i<200;i++);
left_gao=0;
left_di=0;
right_gao=0;
right_gao=0;
for(i=0;i<100;i++);
//for(i=0;i<0xff;i++);
//for(i=0;i<0xff;i++);
}else{ //如果不是一档,则是二档,则二档的驱动程序如下。
left_gao = 0;
left_di = 0;
right_gao =1;
right_di = 0;
delay(12);
}
}
void turn_right(){
int i;
if(dang==1){//如果是一档则执行下面的程序
left_gao = 1;
left_di = 0;
right_gao = 0;
right_di = 0;
for(i=0;i<200;i++);
left_gao=0;
left_di=0;
right_gao=0;
right_di=0;
for(i=0;i<100;i++);
//delay(30);
/*for(i=0;i<0xff;i++);
left_gao=0;
left_di=0;
right_gao=0;
right_di=0;
// for(i=0;i<0xff;i++);
*/
}else{ //如果不是一档,则是二档,则二档的驱动程序如下。
left_gao = 1;
left_di = 0;
right_gao =0;
right_di = 0;
delay(12);
}
}
void stop(){
left_gao= 0;
left_di = 0;
right_gao=0;
right_di = 0;
}
void delay(int ms){//延时函数。
int i,j,k;
for(i=0;i<ms;i++){
for(j=0;j<0xff;j++){
for(k=0;k<0xff;k++);
}
}
}
int xunji(){// 循迹子程序。
int temp;
int fangxiang= 0; ;//
temp =P2;
temp= temp&0x0f;
P1= P1|(temp<<4);
//P3=0xff;
//delay(1);
switch (temp)
{
case 0x06 : {
fangxiang = zhi;
up();
//t_zhi=0;
break;
}//
case 0x02 :{
fangxiang = you;
turn_left();
//t_you=0;
break;
}
case 0x03 : {
fangxiang = you_2;
turn_left();
//t_you_2=0;
break;
}
case 0x04 :{
fangxiang = zuo;
turn_right();
//t_zuo=0;
break ;
}
case 0x0c :{
fangxiang = zuo_2;
turn_right();
//t_zuo_2 = 0;
break ;
}
case 0x08 : {
fangxiang =zuo_2;
turn_right();
//t_zuo_2 = 0;
break;
}
case 0x01 :{
fangxiang = you_2 ;
turn_left();
//t_you_2 = 0;
break;
}
default : {
fangxiang = zhi ;
//stop();
up();
//up();
//t_de= 0;
break;
}
}
return fangxiang ;
}
void bizhang(){//
if(guang_zuo&&guang_zhong&&guang_you){
// t_zhi=0;
up();
}else{
if(guang_zuo&&guang_zhong&&(!guang_you)){
//turn_left()
// t_zuo= 0;
turn_left();
}else{
if(guang_zuo&&(!guang_zhong)&&(!guang_you)){
//turn_left();
// t_zuo_2 = 0;
turn_left();
}else{
//turn_right();
// t_you= 0;
turn_right();
}
}
}
}
void yaokong(){ // 遥控子程序。
int temp;
int temp2;
// int i,j;
temp2= P3;
temp= temp2|0xf0;
switch (temp){
default :{
up();
break;
}
case 0xf1 :{
turn_left();
break;
}
case 0xf2 :{
turn_right();
break;
}
case 0xf4 :{
up();
break;
}
case 0xf8 :{
down();
break;
}
}
}
void zonghe(){
int temp,temp2; //临时变量
int i,j;
//zonghe_jinggao=0; //警告灯灭
temp2 = P3;
temp= temp2&0xf0;
switch(temp){
case 0xe0 :{// 此时选择遥控模式 1110
yaokong();
break;
}
case 0xd0 :{ // 此时选择循迹模式1101
xunji();
break;
}
case 0xb0 : {
bizhang();// 此时选择壁障模式1011
break;
}
default :{
zonghe_jinggao=0;
break;
}
}
}
void t_zonghe(){
int temp,temp2; //临时变量
int i,j;// 在用户多按键时用于计数
zonghe_jinggao=0; //警告灯灭
temp2 = P3;
temp= temp2&0xf0;
P1=temp;
if(temp==0xb0){ //1011
yaokong();
}else{
if(temp==0xe0){//1110
bizhang();
}else{
if(temp==0xd0){//1101
xunji();
}else{
zonghe_jinggao=1;
for(i=0;i<0xff;i++){
for(j=0;j<0xff;j++);
}
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
智能小车 循迹 壁障 遥控
共6个文件
pwi:1个
h:1个
sdf:1个
3星 · 超过75%的资源 需积分: 10 10 下载量 149 浏览量
2012-05-26
10:59:27
上传
评论
收藏 42KB RAR 举报
温馨提示
循迹 壁障 遥控 只能小车的仿真 和源代码,,仿真的开关是真实的物理器件的抽象,因为protues里面没有遥控器件,也没有壁障器件
资源推荐
资源详情
资源评论
收起资源包目录
贾与季合作的小车.rar (6个子文件)
与他人合作的小车
myxiaoche
xiaoche.DSN 114KB
Last Loaded xiaoche.DBK 114KB
xiaoche.SDF 2KB
xiaoche.PWI 742B
myproject.h 792B
main.c 5KB
共 6 条
- 1
资源评论
- wudihero20052012-12-22差不多一般般
贾熊猫
- 粉丝: 201
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功