基于单片机的红外遥控小车系统设计.doc

上传人:wj 文档编号:4709042 上传时间:2023-05-07 格式:DOC 页数:30 大小:570KB
下载 相关 举报
基于单片机的红外遥控小车系统设计.doc_第1页
第1页 / 共30页
基于单片机的红外遥控小车系统设计.doc_第2页
第2页 / 共30页
基于单片机的红外遥控小车系统设计.doc_第3页
第3页 / 共30页
基于单片机的红外遥控小车系统设计.doc_第4页
第4页 / 共30页
基于单片机的红外遥控小车系统设计.doc_第5页
第5页 / 共30页
基于单片机的红外遥控小车系统设计.doc_第6页
第6页 / 共30页
基于单片机的红外遥控小车系统设计.doc_第7页
第7页 / 共30页
基于单片机的红外遥控小车系统设计.doc_第8页
第8页 / 共30页
基于单片机的红外遥控小车系统设计.doc_第9页
第9页 / 共30页
基于单片机的红外遥控小车系统设计.doc_第10页
第10页 / 共30页
基于单片机的红外遥控小车系统设计.doc_第11页
第11页 / 共30页
基于单片机的红外遥控小车系统设计.doc_第12页
第12页 / 共30页
基于单片机的红外遥控小车系统设计.doc_第13页
第13页 / 共30页
基于单片机的红外遥控小车系统设计.doc_第14页
第14页 / 共30页
基于单片机的红外遥控小车系统设计.doc_第15页
第15页 / 共30页
基于单片机的红外遥控小车系统设计.doc_第16页
第16页 / 共30页
基于单片机的红外遥控小车系统设计.doc_第17页
第17页 / 共30页
基于单片机的红外遥控小车系统设计.doc_第18页
第18页 / 共30页
基于单片机的红外遥控小车系统设计.doc_第19页
第19页 / 共30页
基于单片机的红外遥控小车系统设计.doc_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的红外遥控小车系统设计.doc

《基于单片机的红外遥控小车系统设计.doc》由会员分享,可在线阅读,更多相关《基于单片机的红外遥控小车系统设计.doc(30页珍藏版)》请在冰点文库上搜索。

基于单片机的红外遥控小车系统设计.doc

红外接收与控件电路原理图:

141

 

红外遥控器原理图:

 

 

红外遥控器实物图:

 

 

红外接收与控制实物图:

 

程序:

 

接收控制主程序:

#include

#include"hongwai.c"

#include"5110.c"

 

sbithy=P0^0;//LED指示灯

sbithz=P2^0;

sbitqy=P1^4;

sbitqz=P3^7;

sbitdjf1=P1^0;//电机1的方向控制

sbitdjd1=P1^1;//电机1的动力控制

sbitdjf2=P1^2;//电机2的方向控制

sbitdjd2=P1^3;//电机2的动力控制

 

unsignedcharflag,flag1,PW;

bitfan,fan1,tf=0;

unsignedcharfafg=0;

unsignedchartime_flag;

unsignedchardatatime[2];

//=====================================

//ms延时

//=====================================

voiddelayms(unsignedintms)

{

 unsignedchari;

 while(ms--)

 for(i=0;i<120;i++);

}

//=====================================

//LED灯闪烁

//=====================================

voidLED(unsignedcharms)

{

 unsignedchari;

 for(i=0;i

 {

 delayms(200);

 qz=~qz;

 qy=~qy;

 hz=~hz;

 hy=~hy;

 }

}

//======================================

//控制

//=====================================

voidkongzi(void)

{

 switch(shu[2])

 {

 case0x20:

{//前进

             fafg=1;

             qz=qy=0;

                     hz=hy=1;

             TR1=ET1=1;

             djd1=djd2=1;

             djf1=djf2=0;

                     fan=0;

             break;

            }

 case0x30:

{//后退

             fafg=2;

             qz=qy=1;

                     hz=hy=0;

             TR1=ET1=1;

             djd1=djd2=1;

             djf1=djf2=1;

                     fan=1;

             break;

            }

 case0x40:

{//前左转弯

                      fafg=3;

                      djf1=djf2=0;

                      qz=0;

                      qy=hz=hy=1;

                      djd1=1;

                      djd2=0;

                      fan1=0;

                      TR1=ET1=1;

              break;

                     }

 case0x60:

 {//后左转弯

                      fafg=4;

                      djf1=djf2=1;

                      hz=0;

                      hy=qz=qy=1;

                      djd1=1;

                      djd2=0;

                      fan1=0;

                      TR1=ET1=1;

              break;

             }

 case0x50:

{//前右转弯

                      fafg=5;

                      djf1=djf2=0;

                      qy=0;

                      qz=hy=hz=1;

                      djd1=0;

                      djd2=1;

                      fan1=1;

                      TR1=ET1=1;

              break;

                     }

 case0x70:

 {//后退

                      fafg=6;

                      djf1=djf2=1;

                      hy=0;

                      hz=qz=qy=1;

                      djd1=0;

                      djd2=1;

                      fan1=1;

                      TR1=ET1=1;

              break;

             }

 case0x80:

{

             if(tf==1)

                     {

              qy=qz=hy=hz=1;

              TR1=ET1=0;

              djd1=djd2=0;

                      NOKIA5110_clear();           //清屏

                      W_LCD_chinese(20,0,21);//停

              W_LCD_chinese(40,0,22);//止

                      W_LCD_zifu(15,3,time[1]/10);//

              W_LCD_zifu(23,3,time[1]%10);//

              W_LCD_zifu(33,3,11);//:

              W_LCD_zifu(42,3,time[0]/10);//

              W_LCD_zifu(50,3,time[0]%10);//

                      time[0]=time[1]=0;

                      tf=0;

                     }

             break;

            }

 }

}

//***********************************************

//显示

//************************************************

voidLCD_display(void)

{

 NOKIA5110_clear();        //清屏

 W_LCD_zifu(15,3,time[1]/10);//

 W_LCD_zifu(23,3,time[1]%10);//

 W_LCD_zifu(33,3,11);//:

 W_LCD_zifu(42,3,time[0]/10);//

 W_LCD_zifu(50,3,time[0]%10);//

 if(fafg==1)

 {

 W_LCD_chinese(20,0,0);//前

 W_LCD_chinese(40,0,1);//进

 }

 if(fafg==2)

 {

 W_LCD_chinese(20,0,2);//后

 W_LCD_chinese(40,0,3);//退

 }

 if(fafg==3)

 {

 W_LCD_chinese(5,0,0);//前

 W_LCD_chinese(25,0,4);//左

 W_LCD_chinese(45,0,5);//转

 W_LCD_chinese(65,0,6);//弯

 }

 if(fafg==4)

 {

 W_LCD_chinese(5,0,2);//后

 W_LCD_chinese(25,0,4);//左

 W_LCD_chinese(45,0,5);//转

 W_LCD_chinese(65,0,6);//弯

 }

 if(fafg==5)

 {

 W_LCD_chinese(5,0,0);//前

 W_LCD_chinese(25,0,7);//右

 W_LCD_chinese(45,0,5);//转

 W_LCD_chinese(65,0,6);//弯

 }

 if(fafg==6)

 {

 W_LCD_chinese(5,0,2);//后

 W_LCD_chinese(25,0,7);//右

 W_LCD_chinese(45,0,5);//转

 W_LCD_chinese(65,0,6);//弯

 }

}

//=====================================

//定时器T1

//=====================================

voidwan_T1(void)interrupt3

{

 time_flag++;

 tf=1;

 TH1=(65536-50000)/256;

 TL1=(65536-50000)%256;

 if(time_flag>15)

 {

 time[0]++;

 time_flag=0;

 if(time[0]>59)

 {

  time[0]=0;

  time[1]++;

  if(time[1]>59)time[1]=0;

 }

 }

}

//=====================================

//主函数

//=====================================

voidmain(void)

{

 djd1=djd2=0;

 NOKIA5110_init();

 NOKIA5110_clear();        //清屏

 W_LCD_chinese(0,0,8);//正

 delayms(100);

 W_LCD_chinese(15,0,9);//在

 delayms(100);

 W_LCD_chinese(30,0,10);//初

 delayms(100);

 W_LCD_chinese(45,0,11);//始

 delayms(100);

 W_LCD_chinese(60,0,12);//化

 delayms(100);

 W_LCD_chinese(10,3,13);//请

 delayms(100);

 W_LCD_chinese(25,3,14);//稍

 delayms(100);

 W_LCD_chinese(40,3,2);//后

 delayms(100);

 W_LCD_zifu(60,3,10);//...

 PW=20;

 TH1=(65536-50000)/256;

 TL1=(65536-50000)%256;

 IP=0x09;//设置中断优先级

 IPH=0x08;

 open_interrupt();

 TR1=ET1=0;

 LED(10);

 qy=qz=hy=hz=1;

 NOKIA5110_clear();        //清屏

 W_LCD_chinese(1,0,10);//初

 delayms(100);

 W_LCD_chinese(16,0,11);//始

 delayms(100);

 W_LCD_chinese(31,0,12);//化

 delayms(100);

 W_LCD_chinese(46,0,15);//完

 delayms(100);

 W_LCD_chinese(61,0,16);//成

 delayms(100);

 W_LCD_chinese(0,3,17);//等

 delayms(100);

 W_LCD_chinese(15,3,18);//待

 delayms(100);

 W_LCD_chinese(30,3,19);//信

 delayms(100);

 W_LCD_chinese(45,3,20);//号

 delayms(100);

 W_LCD_zifu(65,3,10);//...

 while

(1)

 {

 kongzi();

 if(tf==1&&time_flag==7)LCD_display();

 }

}

 

 

 

 

 

 

红外解码:

 

/*************************************************************************/

/****   红外解码

/***    晶振:

11.0592MHZ

/***    数据口:

外中断0

/***    计数器:

定时器T0

/************************************************************************/

#include

sbitDat=P3^2; //数据口

bittru;

unsignedcharshu[4];

/****************开中断************************/

voidopen_interrupt(void)

{

 TMOD=0x11; //定时器T0工作在方式1

 IT0=1;   //中断0在下降沿触发

 TR0=1;

 EX0=1;   //开外部中断0

 EA=1;    //开中断

}

/**************接收数据**********************/

voidR_Dat(void)interrupt0

{

 unsignedchari,j;

 unsignedintdtime=0;

 unsignedchartemp;

//P1=0xff;

 TH0=TL0=0;

 while(!

Dat)

 {

 if(TH0*256+TL0>20000) return;

 }

 while(Dat)

 if(TH0*256+TL0>20000)   return;

 dtime=TH0*256+TL0;

 TH0=TL0=0;

 if(8000

 {

 for(i=0;i<4;i++)

 {

  temp=0;

  for(j=0;j<8;j++)

  {

   while(!

Dat)

      {

       if(TH0*256+TL0>20000)return;

      }

   while(Dat)

      {

       if(TH0*256+TL0>20000)return;

      }

      dtime=TH0*256+TL0;

   TH0=TL0=0;

      if(1450>1)|0x80;}//是否为1

   elseif(700>1)|0x00;}//是否为0        

  }

  shu[i]=temp;

 }

 if(shu[0]==~shu[1]&&shu[2]==~shu[3])tru=1;//查错                

 }  

}

LCD5110驱动程序:

 

#include

#include"ziku.C"

//-----------------管脚定义-------------------------

sbit   LCD_sce=P2^7; //片选,低最平有效

sbit   LCD_rst=P2^6; //复位,0复位

sbit   LCD_dc =P2^5; //1写数据,0写指令

sbit   LCD_sdin=P2^4; //数据

sbit   LCD_sclk=P2^3; //时钟

 

//**********************************************************************

//NOKIA5110_w_byte :

使用SPI接口写数据到LCD

//输入参数:

data   :

写入的数据;

//          command:

写数据/命令选择;

//**********************************************************************

voidNOKIA5110_w_byte(unsignedchardat,unsignedcharcommand)

{

 unsignedchari;

 LCD_sce=0;       //LCD使能

 LCD_dc=command;//

 for(i=0;i<8;i++) //传输8位数据(1个字节)

 {

 if(dat&0x80)LCD_sdin=1;

 else        LCD_sdin=0;

 dat=dat<<1;

 LCD_sclk=0;

 LCD_sclk=1;

 }

 LCD_sce=1;      //LCD不使能

}

//**********************************************************************

 

//NOKIA5110_init:

LCD初始化

 

//**********************************************************************

voidNOKIA5110_init(void)

{

 unsignedchark;

 LCD_rst=0;

      for(k=0;k<250;k++);

 LCD_rst=1;     

 //-------------------------------------------------------------                     

      NOKIA5110_w_byte(0x21,0);    //使用扩展命令设置LCD模式

      NOKIA5110_w_byte(0xd0,0);    //设置偏置电压

      NOKIA5110_w_byte(0x06,0);    //温度校正

      NOKIA5110_w_byte(0x13,0);    //1:

48

      NOKIA5110_w_byte(0x20,0);    //使用基本命令

      NOKIA5110_w_byte(0x0c,0);    //设定显示模式,正常显示

}

//**********************************************************************

//NOKIA5110_set_XY:

设置LCD坐标函数

//输入参数:

X:

0-83

//          Y:

0-5

//**********************************************************************

voidNOKIA5110_set_XY(unsignedcharx,unsignedchary)

{

      NOKIA5110_w_byte(0x40|y,0);       //列(竖)

      NOKIA5110_w_byte(0x80|x,0);       //行(横)

}

//*********************************************************************

//写汉字到LCD

//*********************************************************************

voidW_LCD_chinese(unsignedcharX,unsignedcharY,unsignedchardat)

{

 unsignedchari;

 NOKIA5110_set_XY(X,Y);

 for(i=0;i<16;i++)NOKIA5110_w_byte(hanzi[dat][i],1);

 NOKIA5110_set_XY(X,Y+1);

 for(i=16;i<32;i++)NOKIA5110_w_byte(hanzi[dat][i],1);

}

//***********************************************************

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2