用来检测寻迹小车电路的代码

原创 2005年05月03日 00:44:00

/*#################################################
**程序描述:   以串口方式接收从PC机发送的数据做出相应的动作
**           
**硬件连接:   PTA0-7 连 传感器 
**            PTB0-7 连 灯
**            PTD5,PTD4 分别连 L293D的EN1,EN2
**作者:    钱彬丰
**开始时间:   2005/5/2 9:00
**结束时间:  2005/5/2 19:00  
###################################################*/
#include <hidef.h> /* for EnableInterrupts macro */
#include <MC68HC908GP32.h> /* include peripheral declarations */
#define FAST_H 0x80
#define FAST_L 0x00
#define SLOW_H 0x30
#define SLOW_L 0x00
#define END '0'
#define LEFT_MOTO_FAST '1'
#define RIGHT_MOTO_FAST '2'
#define LEFT_MOTO_SLOW '3'
#define RIGHT_MOTO_SLOW '4'
#define LIGHT_ON '5'

void timer_init()
{
 //-----------计时器初始化-------------------
    T1SC=0x26;          //定时器停止,无中断,64分频
    T1MODH=0x96;        //预置数为9600
    T1MODL=0x00;
}
void channel_0_init(byte ch0h,byte ch0l)
{
 //----------0通道初始化---------------------
 T1CH0H=ch0h;
 T1CH0L==ch0l;
    T1SC0=0x16;         //清标志位,无中断,无缓冲PWM,电平翻转,溢出翻转 
}
void channel_1_init(byte ch1h,byte ch1l)
{
 //----------1通道初始化---------------------
 T1CH1H=ch1h;
 T1CH1L=ch1l;
 T1SC1=0x16;         //清标志位,无中断,无缓冲PWM,电平翻转,溢出翻转
}

void sci_init()
{
 //--------------串口寄存器初始化-----------------------
    SCC1=0x40;          //允许SCI,正常输出,8位数据,无校验
    SCC2=0x0C;          // 不允许发送中断,不允许接受中断,允许发送、接受
    SCBR=0x02;          // 波特率9600
}

void run_left_fast()
{
 timer_init();
 channel_0_init(FAST_H,FAST_L);
 T1SC_TSTOP=0;       //计时起开始计时
}

void run_right_fast()
{
 timer_init();
 channel_1_init(FAST_H,FAST_L);
 T1SC_TSTOP=0;       //计时起开始计时
}

void run_left_slow()
{
 timer_init();
 channel_0_init(SLOW_H,SLOW_L);
 T1SC_TSTOP=0;       //计时起开始计时
}

void run_right_slow()
{
 timer_init();
 channel_1_init(SLOW_H,SLOW_L);
 T1SC_TSTOP=0;       //计时起开始计时
}

void end()
{
 T1SC_TSTOP=1;       //计时起停止计时
 PTB=0xff;           //B口初始值为全灭
}

void sent_data(byte data)
{
    while(SCS1_SCTE==0)
    {
    }
    SCDR=data;
}

void get_data(void)
{
 byte data;
    while(SCS1_SCRF==1)
    {
     data=SCDR;
    }
    switch(data)
    {
     case END:
      end();
     break;
    case LEFT_MOTO_FAST:
     run_left_fast();
     break;
    case RIGHT_MOTO_FAST:
     run_right_fast();
     break;
    case LEFT_MOTO_SLOW:
     run_left_slow();
     break;
    case RIGHT_MOTO_SLOW:
     run_right_slow();
     break;
    case LIGHT_ON:
     PTB=0x00;           //B口全亮
     sent_data(PTA);
     break;
    default:
     end();
    } 
}

void main(void) {
 CONFIG1=0x01;       //禁止看门狗
 DDRA=0x00;          //设置A口为输入  
    DDRB=0xff;          //设置B口为输出
    PTB=0xff;           //B口初始值为全灭
   
    sci_init();

 for(;;)
 {
  get_data();
 }
}

寻迹小车代码

  • 2017年05月30日 20:32
  • 5KB
  • 下载

基于STM32的小车红外黑线寻迹代码

  • 2017年05月14日 20:10
  • 5.24MB
  • 下载

51单片机寻迹小车完整程序

哈哈哈,今天终于把小车调成功了耶!!! 费了好大劲去调PWM波把速度降下来,然后写转弯,左转大湾,左转小湾,右转大湾,右转小湾,四个红外收发管,所以就写了四个转弯的状态. P1是用来控制电机的端口...

寻迹小车代码

  • 2013年09月01日 09:41
  • 1KB
  • 下载

国赛题目_寻迹小车调试记录

前几天老师布置了寻迹小车的任务,试着做了一下,现在已经能寻迹了,但是后退因为只有三个光电感应的模块,要效果好的话还得后面再装三个,一直懒得去拿。。。就先放着了。这里总结一下调试中碰到的问题。   我...

电子研发联盟-寻迹小车

作为一名电子爱好者,经历了51/AVR的磨砺,制作过寻迹小车,灭火小车,交通灯,智能收音机,遥控调光灯等,大学的生活充实而快乐着, 工作之后发现电子的世界真是五彩缤纷,看得我是眼花缭乱,FPGA后又是...
  • nawei87
  • nawei87
  • 2013年09月22日 11:42
  • 765

51单片机智能小车C程序 蓝牙遥控+避障+自动寻迹

基于AT89C52的蓝牙小车程序。

智能小车stm32(寻迹测速)

1,小车寻迹 原理:循迹模块我用的是红外传感器。黑线的检测原理是红外发射管发射光线到路面,红外光遇到白底则被反射,接收管接收到反射光,经施密特触发器整形后输出低电平;当红外光遇到黑线时则被...
  • asn1111
  • asn1111
  • 2017年11月18日 17:56
  • 38

C51单片机寻迹小车

  • 2017年10月29日 15:23
  • 2KB
  • 下载

寻迹小车程序

  • 2013年10月23日 18:55
  • 42KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用来检测寻迹小车电路的代码
举报原因:
原因补充:

(最多只允许输入30个字)