基于STC89C52RC单片机的红外遥控小车,c程序+硬件。

											  /*小车用遥控器控制程序 (有差速)
 L298N的IN1234对应单片机的P1.0123
*/
#include<reg52.h>      //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义h
#define DataPort P0    //定义数据端口 程序中遇到DataPort 则用P0 替换
sbit IR=P3^2;          //红外接口标志 ,ir是红外辐射 的意思
sbit dula=P2^6;        //定义锁存使能端口 段锁存
sbit wela=P2^7;        //                 位锁存

sbit in1=P1^0;
sbit in2=P1^1;
sbit in3=P1^2;
sbit in4=P1^3;

int PWM,time=0,go;

unsigned char code DuanMa[14]={0x3f,0x06,0x5b,0x4f,0x40,0x38,0x31};// 显示段码值0~9
unsigned char  irtime,gao_num,di_num,l,r,back,stop;//红外、PWM用全局变量

bit irpro_ok,irok;      //标志位,处理完成irpro_ok=1,接收完成irok=1
unsigned char IRcord[4];  //红外码值有4个(客户码1+客2+操作码+操作反码),4*8=32位
unsigned char irdata[33]; //32位红外码值+1位引导码,也就是接受一次需要存储的字节数

void Ir_work(void);       //红外散转函数声明
void Ircordpro(void);     //红外码值处理函数声明

void delay(int i)       //延时i ms
{
  int j,k;
  for(j=i;j>0;j--)
    for(k=110;k>0;k--);
}  


void tim0_isr (void) interrupt 1 using 1
{
  irtime++;  //用于计数2个下降沿之间的时间
}


/*------------------------------------------------
                  外部中断0中断处理
------------------------------------------------*/
void EX0_ISR (void) interrupt 0         //外部中断0服务函数
{
  static unsigned char  i;             //接收红外信号处理
  static bit startflag;                //是否开始处理标志位

if(startflag)
   {
    if(irtime<63&&irtime>=33)//引导码 TC
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值