《小车寻迹51单片机编程》是一本专注于教授如何使用51单片机进行智能小车路径识别与追踪技术学习的手册,适合电子制作爱好者和技术初学者阅读。
51单片机寻迹小车程序
```c
#include
#include
unsigned int thigh_zuo;
unsigned int thigh_you;
unsigned int thigh_zuo1;
unsigned int thigh_you1;
unsigned int count = 0;
sbit en0 = P1^2;
sbit en1 = P1^3;
sbit fan0 = P1^4;
sbit fan1 = P1^5;
void timer_set()
{
TMOD = 0x99; // 设置定时器模式
TH0 = TL0 = TH1 = TL1 = 0; // 初始化计数初值为零
TR0 = TR1 = TR2 = 1; // 启动定时器T0, T1和T2
EX0 = EX1 = ET2 = EA = 1; // 开启外部中断和全局中断使能
IT0 = IT1 = 1; // 设置外部中断为边沿触发方式
RCAP2H = TH2 = 255;
RCAP2L = TL2 = 0;
}
void ex0_int() interrupt 0
{
thigh_zuo = TH0 * 256 + TL0; // 计算计数值
if (thigh_zuo > 500)
en0 = fan0 = !en0;
else
fan0 = !fan0;
TH0 = TL0 = 0; // 清零定时器T1的计数初值
}
void ex1_int() interrupt 2
{
thigh_you = TH1 * 256 + TL1; // 计算计数值
if (thigh_you > 500)
en1 = fan1 = !en1;
else
fan1 = !fan1;
TH1 = TL1 = 0; // 清零定时器T2的计数初值
}
void time2_int() interrupt 5
{
count++;
if (count > 520) {
en0 = en1 = 0;
count = 0;
thigh_zuo1 = thigh_zuo; // 记录上一次中断的计数值
thigh_you1 = thigh_you;
}
if (count > thigh_zuo1)
en0 = !en0;
if (count > thigh_you1)
en1 = !en1;
}
void main()
{
timer_set();
while(1);
}
```
此程序实现了一个基于51单片机的寻迹小车,通过红外传感器检测地面路径,并控制电机驱动轮子前进或后退。定时器用于计时中断处理和数据采集。