/*小车用遥控器控制程序 (有差速)
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
基于STC89C52RC单片机的红外遥控小车,c程序+硬件。
最新推荐文章于 2024-08-16 21:44:40 发布