首页 > 代码库 > 嵌入式开发之项目---遥控小车课题设计

嵌入式开发之项目---遥控小车课题设计

C语言控制程序:

   #include<reg52.h>
   #define uchar unsigned char
   #define uint unsigned int

   //此变量用于记录小车目前所处的操作状态
   uint opchoice=0;

   //次变量用于控制小车速度的档位
   uint speed=2;

   //前进
   sbit KF=P3^0;

   //后退
   sbit KB=P3^1;

   //左转
   sbit KL=P3^4;

   //右转
   sbit KR=P3^5;

   //延时子函数
   void DelayMs(uint ms)
   {
    uchar t;
 while(ms--)
 for(t=0;t<120;t++);
   }

   //小车前进
   void forward()
   {
    P2=100*speed;
 DelayMs(10);
 P1=100*speed;
 P0=0x02;
   }

   //小车停止
   void backward()
   {
  P2=0;
  DelayMs(10);
  P1=0;
  P0=0x04;
   }

   //小车左转
   void turnleft()
   {
    P2=100*speed;
 DelayMs(10);
 P1=50*speed;
 P0=0x08;
   }

   //小车右转
   void turnright()
   {
    P2=50*speed;
 DelayMs(10);
 P1=100*speed;
 P0=0x10;
   }

   //主程序
   void main()
   {
    P2=0;
 DelayMs(10);
 P1=0;
 EA=1;     //总中断允许
 IT0=1;     //中断触发方式边沿触发
 EX0=1;     //允许INT0中断
 while(1)
 {
  //上电开始检测KF,KB,KL,KR的状态
  if(KF==0)opchoice=1;
  if(KB==0)opchoice=2;
  if(KL==0)opchoice=3;
  if(KR==0)opchoice=4;
  switch(opchoice)
  {
   case 0:backward();break;
   case 1:forward();break;
   case 2:backward();break;
   case 3:turnleft();break;
   case 4:turnright();break;
   default:;
  }

 }
   }
  
   //换挡中断
   void EX_INT0()interrupt 0
   {
    speed=speed%3+1;
// opchoice=0;
   }

红外控制部分:

 

 遥控小车课题设计

问题:

1、  当A处开关S闭合时,左边电路发射红外线,右边电路检测到红外线后,在OUT输出端得到的是单峰脉冲吧?

A处应加入38kHz的一段脉冲波形(用NE555或单片机),红外接收模块才输出一个脉冲。

2、  A处和B处的器件有什么替代器件么?

A处可以买任意型号的红外发射管,B处可以买任意型号一体化红外接收组件(38kHz,能响应连续的红外载波,三个脚的),电子市场很多,管脚定义可能不同,可以问买家。

 

3、  这个电路可以较好的实现以下功能吗?

功能描述:当左边按键S按下时,在CPU处能得到一个单峰脉冲,表征左边电路按键S按下。

不行,按键S必须接NE555。

硬件电路部分:

遥控小车课题设计

http://blog.sina.com.cn/s/blog_70c2b7560100qskk.html

 

嵌入式开发之项目---遥控小车课题设计