循迹小车51单片机参考程序.doc
文本预览下载声明
循迹小车51单片机参考程序
#includeintrins.h
#includereg52.h //头文件/
#define uchar unsigned char
#define uint unsigned int
uchar t=0; // 定时器中断计数器 //
uchar PWM_TL=0 ; //定义左电机的占空比控制变量//
unsigned char PWM_TR=0 ; //定义右电机的占空比控制变量//
uchar code dis1[] = {0123456789};
uchar code dis2[] = {2011.04.28 };
uchar code dis3[] = {time:};
uchar code dis4[] = {date:};
bit flag=0; //标志位,用来判断轮子是否一圈转完,进行占空比控制//
#define temp P2
/*******************************************************
控制口定义
//*******************************************************/
sbit DIN1=P1^0; // 左轮电机端口 1 //
sbit DIN2=P1^1; // 左轮电机端口 2 //
sbit DIN3=P1^2; // 右轮电机端口 1 //
sbit DIN4=P1^3; // 右轮电机端口 2 //
sbit PWML=P1^6; //左轮电机的PWM控制//
sbit PWMR=P1^5; //右轮电机的PWM控制//
sbit LCD_RS = P2^0;
sbit LCD_RW = P2^1;
sbit LCD_EN = P2^2;
/************************************************************
定时器0服务程序、用来产生两路的PWM波
//************************************************************/
void timer0() interrupt 1 // 定时器T0中断服务程序 //
{
// 定时器中断PWM计数 //
if(tPWM_TL)
PWML=1;
else
PWML=0; // 产生左电机的PWM信号 //
if(tPWM_TR)
PWMR=1;
else
PWMR=0; // 产生右电机的PWM信号 //
t++ ;
if(t=100)
t=0; // 1个PWM信号由100次循环产生 //
}
/*************************************************************
循迹程序
*************************************************************/
void xunji(void)
{
switch(te
显示全部