• 大小: 7KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-24
  • 语言: 其他
  • 标签: 寻迹  霍尔测速  

资源简介

智能小车寻迹(含霍尔测速)程序,用L5261602液晶动态显示速度,路程

资源截图

代码片段和文件信息

#include 
#include 
/////////////////////////////////////////////////////////////////////
#define U8 unsigned char
#define U16 unsigned int
////////////////电机运动方式定义////////////////////////////////////
#define Zrun {int1=1;int2=0;int3=1;int4=0;} //直走
#define Rz {int1=0;int2=0;int3=1;int4=0;} //左转
#define Lz {int1=1;int2=0;int3=0;int4=0;} //右转

/*-----------------------端口命名------------------------*/
sbit rs=P1^0; //LCD的数据/命令选择端
sbit rw=P1^1; //LCD的读写选择端
sbit lcdcs=P1^2;//LCD的使能信号端
sbit int1=P2^0;
sbit int2=P2^1;
sbit int3=P2^2;
sbit int4=P2^3;
sbit in1 =P2^4;
sbit in2=P2^5;
sbit in3=P2^6;
sbit in4=P2^7;

///////////////函索声明///////////////////////////////////////////
void DelayMs(U8 ms);
void xz();

/*-------------------------------------------------------*/
/*-----------------------定义参数------------------------*/
U16 ijzzhuanmsecx=0s=0; //定义参数
U8 display[]={“ Vs=  cm/500ms“};   //定义显示参数
U8 display1[]={“ s=     cm“};   //定义显示参数
/*-------------------------------------------------------*/
////////////////////主函数入口////////////////////////////

sfr CCON     = 0xD8; //PCA控制寄存器
sfr CMOD     = 0xD9; //PCA模式寄存器
sfr CCAPM0   = 0xDA; //PCA模块0模式寄存器 //模块0对应P1.3/CEX0/PCA0/PWM0(STC12C5A60S2系列)   
sfr CCAPM1   = 0xDB; //PCA模块1模式寄存器 //模块1对应P1.4/CEX1/PCA1/PWM1(STC12C5A60S2系列)
sfr CL       = 0xE9;    //PCA 定时寄存器 低位
sfr CH       = 0xF9; //PCA 定时寄存器 高位
sfr CCAP0L   = 0xEA; //PCA模块0的 捕获寄存器 低位
sfr CCAP0H   = 0xFA;    //PCA模块0的 捕获寄存器 高位
sfr CCAP1L   = 0xEB; //PCA模块1的 捕获寄存器 低位
sfr CCAP1H   = 0xFB; //PCA模块1的 捕获寄存器 高位
sfr PCA_PWM0 = 0xF2; //PCA PWM 模式辅助寄存器0
sfr PCA_PWM1 = 0xF3; //PCA PWM 模式辅助寄存器1
sbit CF   = 0xDF;     //PCA计数溢出标志位
sbit CR   = 0xDE;     //PCA计数器 运行控制位
sbit CCF1 = 0xD9;     //PCA模块1中断标志
sbit CCF0 = 0xD8;     //PCA模块0中断标志

//* CCAPOH = CCAPOL = 0XC0; //模块0输出 占空因数为25%
//* CCAPOH = CCAPOL = 0X80; //模块0输出 占空因数为50%
//* CCAPOH = CCAPOL = 0X40; //模块0输出 占空因数为75%



/*-----------------------毫秒延时------------------------*/
void DelayMs(U8 ms) //在12M晶振下,stc10f系列(单周期指令)的ms级延时
{      
U16 i;
while(ms--)
{
   for(i=0;i<850;i++);
}
}
void delay(U8 ms)
{
U8 ij; //为延时引入ij两参数
for (j=0;j for (i=0;i<120;i++); //延时第二循环
}
/*-------------------------------------------------------*/
/*--------------------向LCD1602写命令--------------------*/
void write_command(U16 command)
{
rs=0; //选择写命令
P0=command; //向LCD写命令
lcdcs=1; //信号使能端高电平
lcdcs=0; //信号使能端低电平
}
/*-------------------------------------------------------*/
/*--------------------向LCD1602写数据--------------------*/
void write_data(U16 data0)
{
rs=1; //选着写数据
P0=data0; //向LCD写数据
lcdcs=1; //信号使能端高电平
lcdcs=0; //信号使能端低电平
}
/*-------------------------------------------------------*/
/*-------------------外部中断0计数程序-------------------*/
void counter(void) interrupt 0
{
EX0=0; //关外部中断0
//初始化计数
z++; //转圈计数加1

评论

共有 条评论