五个中断智能小车红外遥控循迹超声波避障跟随光电码盘计数测速
五个中断智能小车红外遥控循迹超声波避障跟随光电码盘计数测速
通过红外遥控,控制小车的方向,通过循迹前进,通过超声波跟随。通过光电码盘计数测速,把52的五个中断用上了。。。
#include <intrins.h>
#include “reg52.h” //此文件中定义了单片机的一些特殊功能寄存器
#include “lcd.h”
#define uchar unsigned char
#define uint unsigned int
sfr T2MOD= 0xC9;
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
unsigned char code ASCII[15] = {‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,’.’,’-’,‘M’};
//p0,25,26,27 lcd1602
sbit P10=P1^0; //寻迹模块左
sbit P11=P1^1; //寻迹模块中
sbit P12=P1^2; //寻迹模块右
sbit key1=P1^3; //无线端口
sbit key2=P1^4;
sbit key3=P1^5;
sbit key4=P1^6;
sbit RX = P2^1; //超声波端口
sbit TX = P2^0;
sbit IRIN=P3^2; //红外端口
//p35测速端口
sbit SER=P2^3; //8 电机驱动端口
sbit SCK=P2^2; //4 en=0才工作
sbit RCK=P2^4; //12
//sbit PWM2A=P2^3; //未使用 低电平有效 12
//sbit PWM2B=P2^0; //未使用 低电平有效 3
unsigned int time1=0,kop,mm=0,s20=0,s21=0;
bit flag =0,flag1=0,flag3=0;//flag 超声波超时标志,flag1,循迹标志,超声波控制就不循迹。
u8 IrValue[6];
u8 Time;
//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F、H的显示码
char num[16]="CODE: DIR: "; //第一行显示的数据
char num1[16]="IR: . / . "; //第二行显示的数据
/*******************************************************************************
- 函 数 名 : delay
- 函数功能 : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{
while(i–);
}
void delayms(u16 i)//i=1时,时间为1ms
{ int q;
for(q=0;q<i;q++)
{
delay(100);
}
}
void delays(u16 i) //i=1时,时间为1s
{ int q;
for(q=0;q<i;q++)
{
delayms(1000);
}
}
/*******************************************************************************
- 函数名 :DigDisplay()
- 函数功能 :数码管显示函数
- 输入 : 无
- 输出 : 无
*******************************************************************************/
void HC595SendData(unsigned char SendVal)//发一字节
{
unsigned char i;
for(;i<8;i++)
{
SER = SendVal>>7;
SendVal= SendVal<<1;
SCK = 1; _nop_(); _nop_(); SCK = 0; RCK=1; _nop_();
nop();
RCK=0;
}
}
/*******************************************************************************
- 函数名 : IrInit()
- 函数功能 : 初始化红外线接收
- 输入 : 无
- 输出 : 无
*******************************************************************************/
void IrInit()
{
IT0=1;//下降沿触发
EX0=1;//打开中断0允许
EA=1; //打开总中断
IRIN=1;//初始化端口
}
void Chaoshengbo()
{ TMOD |=0x01; //设T0为方式1,GATE=1;
TH0=0;
TL0=0;
ET0=1; //允许T0中断
EA=1; //开启总中断
}
void cesu() //测速初始化
{
TH1=0x00;
TL1=0x00;
ET1=1;
//ET2=1;
TMOD |= 0x50;// 打开定时器和计数器T1,因此矩形脉冲输入端接P3.5
RCAP2H=0x3C;
RCAP2L=0xb0;
- 智能循迹避障小车&抢答器
- 基于51单片机-智能红外遥控寻迹避障小车
- 智能小车循迹避障程序
- 智能循迹避障小车项目总结
- 智能小车32:安装超声波测距
- 智能循迹小车diy
- 51单片机之遥控小车基本之无线光电门区段测速及51单片机介绍
- stm32 智能避障小车(二)之sg90
- 【STM32 .Net MF开发板学习-15】红外遥控智能小车
- 51单片机智能小车C程序 蓝牙遥控+避障+自动寻迹
- stm32 智能避障小车(二)之hc-sr04
- stm32智能避障小车(三)之L298N
- 【STM32 .Net MF开发板学习-15】红外遥控智能小车 推荐
- 智能小车stm32(寻迹测速)
- 智能小车实用 遥控 循迹 切换源码
- 基于UWB和激光雷达的智能跟随与避障系统
- 循迹小车 。。。。。3 光电对管 电压比较器
- 51单片机实现智能小车的寻轨避障功能
- 智能避障小车顺利结束
- 智能小车46:最小系统Atmega328p的中断实验