标题:
正交解码 512线小编码器测试源程序与资料下载
[打印本页]
作者:
1844037448
时间:
2018-3-19 19:51
标题:
正交解码 512线小编码器测试源程序与资料下载
512线编码器例程,及数据手册.
0.png
(48.8 KB, 下载次数: 65)
下载附件
2018-3-19 20:02 上传
全部资料51hei下载地址:
mini 512编码器.rar
(4.35 MB, 下载次数: 123)
2018-3-19 19:50 上传
点击文件名下载附件
下载积分: 黑币 -5
系列使用说明书
一、特点
本产品电子部分采用先进的检测技术 , 机械外壳全铝合金构造 ( 转子除外 ) 。
本产品具有以下特点:
● 分辨率有: AB 相正交输出 256 线、 AB 相正交输出 1024 线、步进 + 方向输出 512 线;
● 旋转速度高,最高转速可达 10000rpm ;
● 宽广的工作温度范围: -40 ℃ ~ +125 ℃ 。
● 抗扰性好 。 本产品采用霍尔检测技术 , 属于无接触检测 , 传感器运行不受灰尘或其它杂物影响,很好克服了基于光学检测原理的缺点;
● 体积小巧。直径 D : 14mm 高 H : 18mm 轴径: 3mm ;
● 重量轻。除转轴外,全铝合金构造,净重 11.5 克。
二、应用
● 机器人
● 机械手
● 运动控制系统
● 伺服系统
● 自动化设备
● 办公室设备
● 取代光学编码器
● 智能车
LQ_K60正交解码-MINI编码器测试程序与
512线小编码器单片机源程序如下:
/********************************************************
【平 台】龙丘MC9S12XS128系统板V4.1
【编 写】龙丘
【Designed】by Chiu Sir
【E-mail 】chiusir@yahoo.cn
【软件版本】V1.0
------------------------------------------------
【dev.env.】Code Warrior 5.1
【Target 】MC9S12XS128
【pllclock】64.000MHz
接线方式
编码器------->单片机
GND -------> GND
VCC -------> VCC
LSB -------> T7
DIR -------> A0
蓝牙串口模块------->单片机
RX -------> S0
TX -------> S1
版权龙邱智能科技所有,转载需注明出处!
********************************************************/
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
void SetBus_64M(void);
void PIT_Init(void);
void TimInit (void);
void UART_Init (void);
void uart_putchar ( unsigned char c);
unsigned short CRC_CHECK(unsigned char *Buf, unsigned char CRC_CNT);
void OutPut_Data(void);
void Speed_Read(void);
float OutData[4] = { 0 };
uint num=0;
int Motor_Polse=0;
/****************************************************
函数名称:void SetBus_64M(void)
函数简介:设置总线频率为64M,晶振频率16M
入口参数:
出口参数:
*****************************************************/
void SetBus_64M(void)
{
CLKSEL_PLLSEL=0; //禁止使能锁相环时钟
PLLCTL_PLLON=1; //锁相环电路允许
SYNR=0xc0|0x07; //VCO_clock=2*osc_clock*(SYNR+1)/(REFDV+1)=128MHz
//VCOFRQ[1:0]=1:1,代表VCO_clock在80~120MHz
REFDV=0x80|0x01; //VCO_clock=2*osc_clock*(SYNR+1)/(REFDV+1)=128MHz
//REF_clock=osc_clock/(REFDV+1)
//REFFEQ[1:0]=1:0,代表参考时钟在6~12MHz之间
POSTDIV=0x00; //PLL_clock=VCO_clock
_asm(nop);
_asm(nop); //短暂延时,等待时钟频率稳定
while(!(CRGFLG_LOCK==1))
{
;
}
CLKSEL_PLLSEL=1;
}
//==============================================================
//函数:void PIT_Init(void)
//描述:初始化定时器为1ms中断
//参数:无
//返回:无
//==============================================================
void PIT_Init(void)
{
PITCFLMT=0x00; //禁止使能PIT模块
PITCE_PCE0=1; //使能定时器通道0
PITMUX=0x00; //定时器通道0使用微定时基准0
PITMTLD0=8-1; //设置8位微定时装载寄存器0初值
PITLD0=8000-1; //定时周期=(&PITMTLD0+1)*(&PITLD0+1)
PITINTE=0x01; //使能PIT定时器通道0中断
PITCFLMT=0x80; //使能PIT模块
}
//==============================================================
//函数:void TimInit (void)
//描述:脉冲累加器初始化
//参数:无
//返回:无
//==============================================================
void TimInit (void)
{
PACTL=0X00;
PACNT=0X0000;//设置脉冲累加器初值
PACTL_PAEN=1;
}
//==============================================================
//函数:void UART_Init (void)
//描述:串口初始化,配置串口1,波特率为9600
//参数:无
//返回:无
//==============================================================
void UART_Init (void)
{
SCI0CR2=0x2c; //enable Receive Full Interrupt,RX enable,Tx enable
SCI0BDH=0x01; //busclk 8MHz,19200bps,SCI0BDL=0x1a
SCI0BDL=0xa0; //SCI0BDL=busclk/(16*SCI0BDL)
//busclk 32MHz, 9600bps,SCI0BDL=0xD0
//115200 bps SCI0BDL=0x11
} // 64M 9600 SCI0BDH=0x01; SCI0BDL=0xA0;
//==============================================================
//函数:unsigned short CRC_CHECK(unsigned char *Buf, unsigned char CRC_CNT)
//描述:虚拟示波器上位机接口程序
//参数:
//返回?
//==============================================================
unsigned short CRC_CHECK(unsigned char *Buf, unsigned char CRC_CNT)
{
unsigned short CRC_Temp;
unsigned char i,j;
CRC_Temp = 0xffff;
for (i=0;i<CRC_CNT; i++){
CRC_Temp ^= Buf[i];
for (j=0;j<8;j++) {
if (CRC_Temp & 0x01)
CRC_Temp = (CRC_Temp >>1 ) ^ 0xa001;
else
CRC_Temp = CRC_Temp >> 1;
}
}
return(CRC_Temp);
}
//==============================================================
//函数:void OutPut_Data(void)
//描述:向虚拟示波器发送数据
//参数:无
//返回:无
//==============================================================
void OutPut_Data(void)
{
int temp[4] = {0};
unsigned int temp1[4] = {0};
unsigned char databuf[10] = {0};
unsigned char i;
unsigned short CRC16 = 0;
for(i=0;i<4;i++)
{
temp[i] = (int)OutData[i];
temp1[i] = (unsigned int)temp[i];
}
for(i=0;i<4;i++)
{
databuf[i*2] = (unsigned char)(temp1[i]%256);
databuf[i*2+1] = (unsigned char)(temp1[i]/256);
}
CRC16 = CRC_CHECK(databuf,8);
databuf[8] = CRC16%256;
databuf[9] = CRC16/256;
for(i=0;i<10;i++)
uart_putchar(databuf[i]);
}
//==============================================================
//函数:void uart_putchar ( unsigned char c)
//描述:发送一个字节
//参数:无
//返回:无
//==============================================================
void uart_putchar ( unsigned char c)
{
while(!(SCI0SR1&0x80)) ; //keep waiting when not empty
SCI0DRL=c;
}
//==============================================================
//函数:void main(void)
//描述:工程得主函数
//参数:无
//返回:无
//==============================================================
void main(void)
{
SetBus_64M(); //初始化总线始终64M
PIT_Init(); //设置定时器中断1ms
TimInit (); //初始化脉冲累加器用于编码器计数
UART_Init(); //串口初始化,配置波特率9600
DDRA_DDRA0=0; //配置A0口位输入端口,用于测量编码器选装方向
EnableInterrupts; //打开所有中断
while(1)
{
OutPut_Data(); //向上位机发送数据
}
EnableInterrupts;
}
//==============================================================
//函数Speed_Read(void)
//描述:读取编码器脉冲
//参数:无
//返回:无
//==============================================================
void Speed_Read(void)
{
//uint Motor_Polse=0;
Motor_Polse=PACNT; //读取寄存器得脉冲值
if(PORTA_PA0==1) //判断编码器方向
{
Motor_Polse=-Motor_Polse; //反向取反
}
OutData[0]=Motor_Polse;
_asm(nop) ;
_asm(nop) ;
PACNT=0X0000; //清楚寄存器得脉冲值
// Motor_Polse=0;
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
//==============================================================
//函数interrupt VectorNumber_Vpit0 void PIT_ISR (void)
//描述:定时器中断函数
//参数:无
//返回:无
//==============================================================
interrupt VectorNumber_Vpit0 void PIT_ISR (void)
{
num++;
if(num>10)
{
num=0;
Speed_Read();
}
PITTF_PTF0=1; //清除中断ADtransform();
}
复制代码
作者:
ko44
时间:
2018-3-19 22:17
刚学的单片机,上面的就像看天书.
作者:
yulin3192
时间:
2018-10-4 14:58
看不懂啊
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1