我是单片机小白 现在学校有个活动 我参加了 所以
单片机吧
全部回复
仅看楼主
level 1
我想问几个程序的意思 学校给了我们一个错误的程序 让我们修改[鲁拉]
2012年05月05日 02点05分 1
level 1
那个case 1是不是表示2进制的一串数啊 比如001 是不是啊[Yeah]
2012年05月05日 02点05分 2
level 1
有木有人啊 机吧的人呢 [Love] 有爱一点啊
2012年05月05日 02点05分 3
level 1
case 2 : GoHead(0,38); break; //大左转 //0-100-0//
case 4 : GoHead(0,38); break; //大左转 //0-100-0//
这两个 应该是哪个对呢? 只有case后面有区别的[鲁拉] 快点来个人把
2012年05月05日 02点05分 4
level 1
有没有人啊 求助帖啊 [Love]
2012年05月05日 02点05分 5
level 1
2012年05月05日 02点05分 6
level 1
无爱啊[88]
2012年05月05日 03点05分 7
level 7
你学过C语言吗??
2012年05月05日 04点05分 8
level 1
没学过啊 [啊!]
2012年05月05日 04点05分 9
level 1
难道没学过就被你抛弃了么[不要]
2012年05月05日 05点05分 10
level 7
case 2 : GoHead(0,38); break; //大左转 //0-100-0//
这是C语言里的case语句
2012年05月05日 05点05分 11
level 1
这个我知道是case语句了 我想说的是上面两个case语句哪个对啊
2012年05月05日 05点05分 12
level 1
Goahead ()定义是什么,几个case分别对应什么。。。就两句代码谁知道做什么。。。
2012年05月05日 05点05分 13
level 7
那你得把完整的代码贴出来了
2012年05月05日 05点05分 14
level 1
额 那我复制一段吧
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#include "motor.h"
#include "1602.h"
sbit BUZZER = P1^7; //蜂鸣器
sbit REED = P3^3; //干簧管 INT1
sbit OPT = P3^2; //光敏电阻INT0
uchar ALL_WHITE_FLAG = 0;//全白标志位
uchar ALL_BLACK_FLAG = 0;//全黑标志位
uchar TURN_FLAG=0; //转弯标志
uchar COUNT_FOR_REED=0; //雷区计数标志
/***********道路检测循迹**********************
函数名称: RoadTrack_for_middle
函数输入:
函数输出:
函数功能: 通过检测中间3个传感器进行循迹控制
**********************************************/
void RoadTrack_for_middle(road_status)
{ switch (road_status) //左中右//
{ // P0.0-123//
case 0 : GoBack(35,28); break; //全白后退 //0000// 0 白亮 1黑
case 3 : GoHead(45,43); break; //大左转 //0011//
case 7: GoHead(0,38); break; //直线 //0111//
case 15 : GoHead(36,40); break; //小左转 //1111//
case 14 : GoHead(35,0); break; //大右转 //1110//
case 12 : GoHead(45,43); break; //1100//
case 8 : GoHead(0,35); break; //小右转 //1000//
case 1 : GoHead(45,15); break; //大左转 //0001//
default:break;
}
}
/******蜂鸣器发声xMs,低电平发声*****************/
void Buzzer(uchar x)
{
BUZZER = 0;
DelayMs(x);
BUZZER = 1;
}
/***********趋光**********************
函数名称: Park
函数输入:
函数输出:
函数功能:
**********************************************/
void Park(road_status)
{
switch (road_status) //左右//
{
case 0: GoHead( 0,45); break; //直线偏左 //00//都检测到光
case 1: GoHead(45,20); break; //右转 //10//右边检测到
case 2: GoHead(20,45); break; //左转 //01//左边检测到
case 3: GoRight(45,0); break; //大右转 //11//都没检测到光
default:break;
}
} void Time_Display()
{
DispOneChar(5,0,MinuteH+0x30); //分 十位
DispOneChar(6,0,MinuteL+0x30); //分 个位
DispOneChar(8,0,SecondH+0x30); //秒 十位
DispOneChar(9,0,SecondL+0x30); //秒 个位
} /********************主函数******************/
void main()
{
uchar road_status;
/////////////传感器左1->P0.0以此类推////////////////////////
while(REED==1) //未检测到雷时继续循迹
{
road_status = (P0 & 0x07); //11100//用低三位循迹
RoadTrack_for_middle(road_status); //循迹
}
Buzzer(1000); //检测到雷进行报警
while(!ALL_BLACK_FLAG) //检测到黑则停止
{
if(P0&0X07==0X07)ALL_BLACK_FLAG=1;
road_status = (P1&0xc0)>>6; //读光敏传感器状态
Park(road_status);
} //趋光
Stop(0,0); //停止
Time_Display(); //时间显示
EA=0; //关闭总中断
while(1);
2012年05月05日 05点05分 15
level 1
这是我改过的程序 是做的一个循迹小车的程序 需要道路图么
额 那我复制一段吧
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#include "motor.h"
#include "1602.h"
sbit BUZZER = P1^7; //蜂鸣器
sbit REED = P3^3; //干簧管 INT1
sbit OPT = P3^2; //光敏电阻INT0
uchar ALL_WHITE_FLAG = 0;//全白标志位
uchar ALL_BLACK_FLAG = 0;//全黑标志位
uchar TURN_FLAG=0; //转弯标志
uchar COUNT_FOR_REED=0; //雷区计数标志
/***********道路检测循迹**********************
函数名称: RoadTrack_for_middle
函数输入:
函数输出:
函数功能: 通过检测中间3个传感器进行循迹控制
**********************************************/
void RoadTrack_for_middle(road_status)
{ switch (road_status) //左中右//
{ // P0.0-123//
case 0 : GoBack(35,28); break; //全白后退 //0000// 0 白亮 1黑
case 3 : GoHead(45,43); break; //大左转 //0011//
case 7: GoHead(0,38); break; //直线 //0111//
case 15 : GoHead(36,40); break; //小左转 //1111//
case 14 : GoHead(35,0); break; //大右转 //1110//
case 12 : GoHead(45,43); break; //1100//
case 8 : GoHead(0,35); break; //小右转 //1000//
case 1 : GoHead(45,15); break; //大左转 //0001//
default:break;
}
}
/******蜂鸣器发声xMs,低电平发声*****************/
void Buzzer(uchar x)
{
BUZZER = 0;
DelayMs(x);
BUZZER = 1;
}
/***********趋光**********************
函数名称: Park
函数输入:
函数输出:
函数功能:
**********************************************/
void Park(road_status)
{
switch (road_status) //左右//
{
case 0: GoHead( 0,45); break; //直线偏左 //00//都检测到光
case 1: GoHead(45,20); break; //右转 //10//右边检测到
case 2: GoHead(20,45); break; //左转 //01//左边检测到
case 3: GoRight(45,0); break; //大右转 //11//都没检测到光
default:break;
}
} void Time_Display()
{
DispOneChar(5,0,MinuteH+0x30); //分 十位
DispOneChar(6,0,MinuteL+0x30); //分 个位
DispOneChar(8,0,SecondH+0x30); //秒 十位
DispOneChar(9,0,SecondL+0x30); //秒 个位
} /********************主函数******************/
void main()
{
uchar road_status;
/////////////传感器左1->P0.0以此类推////////////////////////
while(REED==1) //未检测到雷时继续循迹
{
road_status = (P0 & 0x07); //11100//用低三位循迹
RoadTrack_for_middle(road_status); //循迹
}
Buzzer(1000); //检测到雷进行报警
while(!ALL_BLACK_FLAG) //检测到黑则停止
{
if(P0&0X07==0X07)ALL_BLACK_FLAG=1;
road_status = (P1&0xc0)>>6; //读光敏传感器状态
Park(road_status);
} //趋光
Stop(0,0); //停止
Time_Display(); //时间显示
EA=0; //关闭总中断
while(1);
2012年05月05日 05点05分 16
level 7
两段代码完全一样啊,没看到什么区别
2012年05月05日 06点05分 17
level 1
额 是完全一样的…………只不过给你们两个人一个人发一次 都是我改过了的
2012年05月05日 06点05分 18
level 7
你那大段代码里没找到
case 2 : GoHead(0,38); break; //大左转 //0-100-0//
case 4 : GoHead(0,38); break; //大左转 //0-100-0//
只看到
case 1 : GoHead(45,15); break; //大左转 //0001//
case 3 : GoHead(45,43); break; //大左转 //0011//
2012年05月05日 06点05分 19
level 1
那个是和原始程序的一个对比 原始程序是
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#include "motor.h"
#include "1602.h"
sbit BUZZER = P1^7; //蜂鸣器
sbit REED = P3^3; //干簧管 INT1
sbit OPT = P3^2; //光敏电阻INT0
uchar ALL_WHITE_FLAG = 0;//全白标志位
uchar ALL_BLACK_FLAG = 0;//全黑标志位
uchar TURN_FLAG=0; //转弯标志
uchar COUNT_FOR_REED=0; //雷区计数标志
/***********道路检测循迹**********************
函数名称: RoadTrack_for_middle
函数输入:
函数输出:
函数功能: 通过检测中间3个传感器进行循迹控制
**********************************************/
void RoadTrack_for_middle(road_status)
{ switch (road_status) //左中右//
{ // P0.0-123//
case 0 : GoBack(35,28); break; //全白后退 //0000// 0 白亮 1黑
case 3 : GoHead(45,43); break; //大左转 //0011//
case 7: GoHead(0,38); break; //直线 //0111//
case 15 : GoHead(36,40); break; //小左转 //1111//
case 14 : GoHead(35,0); break; //大右转 //1110//
case 12 : GoHead(45,43); break; //1100//
case 8 : GoHead(0,35); break; //小右转 //1000//
case 1 : GoHead(45,15); break; //大左转 //0001//
default:break;
}
}
/******蜂鸣器发声xMs,低电平发声*****************/
void Buzzer(uchar x)
{
BUZZER = 0;
DelayMs(x);
BUZZER = 1;
}
/***********趋光**********************
函数名称: Park
函数输入:
函数输出:
函数功能:
**********************************************/
void Park(road_status)
{
switch (road_status) //左右//
{
case 0: GoHead( 0,45); break; //直线偏左 //00//都检测到光
case 1: GoHead(45,20); break; //右转 //10//右边检测到
case 2: GoHead(20,45); break; //左转 //01//左边检测到
case 3: GoRight(45,0); break; //大右转 //11//都没检测到光
default:break;
}
} void Time_Display()
{
DispOneChar(5,0,MinuteH+0x30); //分 十位
DispOneChar(6,0,MinuteL+0x30); //分 个位
DispOneChar(8,0,SecondH+0x30); //秒 十位
DispOneChar(9,0,SecondL+0x30); //秒 个位
} /********************主函数******************/
void main()
{
uchar road_status;
/////////////传感器左1->P0.0以此类推////////////////////////
while(REED==1) //未检测到雷时继续循迹
{
road_status = (P0 & 0x07); //11100//用低三位循迹
RoadTrack_for_middle(road_status); //循迹
}
Buzzer(1000); //检测到雷进行报警
while(!ALL_BLACK_FLAG) //检测到黑则停止
{
if(P0&0X07==0X07)ALL_BLACK_FLAG=1;
road_status = (P1&0xc0)>>6; //读光敏传感器状态
Park(road_status);
} //趋光
Stop(0,0); //停止
Time_Display(); //时间显示
EA=0; //关闭总中断
while(1);
2012年05月05日 06点05分 20
1 2 尾页